Civil 3D中各种ObjectID集合中的对象具体是什么类型?
在Civil 3D程序设计中,
经常会返回一些ObjectIdCollection,
这些ObjectId对应的对象具体是什么类型呢?
在需要打开对象进行操作,
不知道具体类型,
代码可能就写不下去,
using (Transaction tr = doc.TransactionManager.StartTransaction()) { var labelSet = id.GetObject(OpenMode.ForWrite) as AlignmentLabelSetStyle; if (labelSet != null) {
比如这里的AlignmentLabelSetStyle,
这个问题可以使用GetType()方法来解决。
我写了几行测试代码,
有需要的朋友可以研究一下:
[CommandMethod("Test20200513")] public void Test20200513() { Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.CurrentDocument; Editor ed = doc.Editor; var psr = doc.Editor.GetSelection(); if (psr.Status == PromptStatus.OK) { var ss = psr.Value; using (Transaction tr = doc.TransactionManager.StartTransaction()) { foreach (SelectedObject so in ss) { var ent = so.ObjectId.GetObject(OpenMode.ForRead); var t = ent.GetType(); ed.WriteMessage("\nEnt.Type\t{0}", t.FullName); } tr.Commit(); } } }
测试结果类似如下:
命令: TEST20200513 选择对象: 指定对角点: 找到 5 个 选择对象: Ent.Type Autodesk.Civil.DatabaseServices.Alignment Ent.Type Autodesk.Civil.DatabaseServices.FeatureLine Ent.Type Autodesk.AutoCAD.DatabaseServices.Line Ent.Type Autodesk.AutoCAD.DatabaseServices.Circle Ent.Type Autodesk.AutoCAD.DatabaseServices.Polyline
有了这个结果,
我就可以继续写代码了。