AE读取CAD图层包括注记
public override void FillDatabase(Teigha.DatabaseServices.Database pDb) { IFeatureClassContainer pFeatureClassContainer = pCADFeatureDataset as IFeatureClassContainer; IEnumFeatureClass pEnumFeatureClass = pFeatureClassContainer.Classes; IFeatureClass pFeatureClass = pEnumFeatureClass.Next(); while (pFeatureClass != null) { LoadLayer(pFeatureClass, pDb); Debug.WriteLine(pFeatureClass.FeatureType.ToString() + "-" + pFeatureClass.AliasName + "-" + pFeatureClass.ShapeType.ToString()); pFeatureClass = pEnumFeatureClass.Next(); } } private void LoadLayer(IFeatureClass pFeatureClass, Teigha.DatabaseServices.Database pDb) { int indx = pFeatureClass.FindField("Layer"); int idxColor = pFeatureClass.FindField("Color"); int idxText = pFeatureClass.FindField("TxtMemo"); int idxHandle = pFeatureClass.FindField("Handle"); pCursor = pFeatureClass.Search(null, false); IFeature pFeature2 = pCursor.NextFeature(); //写入点线 if (pFeatureClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation) { while (pFeature2 != null) { string geoName = "C_" + pFeature2.get_Value(indx).ToString(); string sAnnotation = pFeature2.get_Value(idxText).ToString(); IPoint pPoint = pFeature2.Shape as IPoint; double x = 0, y = 0; pPoint.QueryCoords(out x, out y); Point3d pt = new Point3d(x, y, 0); addTextEnt(modelSpaceId, pt, pt, sAnnotation, 2, TextHorizontalMode.TextLeft, TextVerticalMode.TextTop, LayerNames[geoName], ttfStyleId); pFeature2 = pCursor.NextFeature(); } } else { if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPoint) { while (pFeature2 != null) { IPoint pt = pFeature2.Shape as IPoint; pFeature2 = pCursor.NextFeature(); } } else if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline) { short shtColor = 1; while ((pFeature2 = pCursor.NextFeature()) != null) { string geoName = "C_" + pFeature2.get_Value(indx).ToString(); } } else if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon) { short shtColor = 1; while ((pFeature2 = pCursor.NextFeature()) != null) { string geoName = "C_" + pFeature2.get_Value(indx).ToString(); } } } System.Runtime.InteropServices.Marshal.ReleaseComObject(pCursor); pCursor = null; } }
作者:太一吾鱼水
文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。
欢迎大家留言交流,转载请注明出处。
分类:
ArcGIS Engine
标签:
ArcEngine
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程