EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

萧闫子 发表于 2014-1-8 15:22:18

[资料] 得到选择集ID的类

之前用VB的时候,创建选择集比较方便见:http://hi.baidu.com/kakanimo/blog/item/0288d5321e0d034bad4b5fb5.html,现在C#写了个类,使用起来也异常方便:如下
    ClassSset Ssetql = new ClassSset(0,"LINE", 8,"桥梁分段");
                foreach (ObjectId id in Ssetql.ids)
                {
               。。。对选择集内的对象操作
                }
创建的时候现在很方便,任意对组码成对出现就行了,如上面0,及对应的"LINE",8及对应的"桥梁分段"等等。关于组码的意思可见http://hi.baidu.com/kakanimo/blog/item/793dbf1a45912b118618bf9e.html。
ClassSset见下面:


    class ClassSset
    {
      publicObjectId[] ids=new ObjectId;//返回的选择集ID
      public ClassSset(params object[] list)
      {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;

            TypedValue[] values = new TypedValue;
            for (int i = 0; i <list.Length;i=i+2 )
            {
                TypedValue valuetemp = new TypedValue((int)list, (string)list);
                values.SetValue(valuetemp,i/2);//过滤器的条件
            }

            SelectionFilter sfilter = new SelectionFilter(values);//构造过滤器

            PromptSelectionResult resSel = ed.SelectAll(sfilter);//用过滤器构造选择集
            SelectionSet sSet = resSel.Value;//得到选择集
            //这个时候可能选择集中没有任何东西
            try
            {
                ids = sSet.GetObjectIds();//选择集中对象ID
            }
            catch
            {
                ids = ObjectId.Null;
            }
      }
    }
页: [1]
查看完整版本: [资料] 得到选择集ID的类