• 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("
    Ent.Type	{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

    有了这个结果,

    我就可以继续写代码了。

  • 相关阅读:
    软工实践4
    软工实践3
    软工实践1
    《暗时间》读书笔记
    关系规范化(数据库)
    关于Git的初步使用
    软件体系结构模式
    第六周编程总结
    第五周编程总结
    第四周编程总结
  • 原文地址:https://www.cnblogs.com/myzw/p/12880353.html
Copyright © 2020-2023  润新知