|
之前用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
- {
- public ObjectId[] ids=new ObjectId[1];//返回的选择集ID
- public ClassSset(params object[] list)
- {
- Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
- TypedValue[] values = new TypedValue[list.Length/2];
- for (int i = 0; i <list.Length;i=i+2 )
- {
- TypedValue valuetemp = new TypedValue((int)list, (string)list[i+1]);
- 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[0] = ObjectId.Null;
- }
- }
- }
复制代码 |
|