基於Teigha.Net實現CAD到SHP的轉換方案


CAD在測繪領域運用廣泛,所以,現在有很多成果都是CAD格式,但其自身存在很多局限性,需將其轉為支持更加廣泛,存儲更加完善的 SHP文件。ArcGIS中直接提供相關轉換工具,但不能轉換Xdata,ArcObject似乎也沒相關的操作接口。

通常,以前我的解決方法有兩個:一是使用FME,FME是萬能的空間數據轉換器,支持的格式廣泛,用它可以輕松將CAD擴展屬性直接轉到shp文件的屬性表,以前,我通常用它來將南方CASS的擴展屬性轉換SHP屬性;二是使用CAD.net二次開發組件,也可以實現讀取和編輯。但這都有一個缺撼,就是不能脫離CAD或ArcGIS環境。

現在找到了一種解決方案,就是Teigha.Net,需要要的可以嘗試一下。先用它將xdata讀取出來,然后Shapelib等將其他寫到shp文件的屬性中。

using Teigha.DatabaseServices;
using Teigha.Runtime;

namespace CAD2Shp
{
    public static class TeighaHelper
    {
        /// <summary>
        /// 加載CAD文件
        /// </summary>
        /// <param name="filePath">路徑</param>
        /// <param name="passWord">密碼</param>
        /// <returns></returns>
        public static Database LoadCad(string filePath,string passWord="")
        {
            using (Services svcs = new Services())
            {
                Database database = new Database(false, false);
                database.ReadDwgFile(filePath, FileOpenMode.OpenForReadAndAllShare, false, passWord);
                return database;
            }
        }

        public static void ReadXdata(Database database)
        {
            using (Services svcs = new Services())
            {
                BlockTableRecord btab = (BlockTableRecord)database.CurrentSpaceId.GetObject(OpenMode.ForRead);
                foreach (ObjectId btr in btab)
                {
                    using (Transaction tr = database.TransactionManager.StartTransaction())
                    {
                        DBObject obj = tr.GetObject(btr, OpenMode.ForWrite);
                        switch (obj.GetType().Name)
                        {
                            case "Polyline":
                                Polyline dwgpl = (Polyline) obj;
                                break;
                            default:
                                break;

                        }
                    }
                }
            }

        }

    }
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM