新浪博客

CAD选择集的使用

2012-11-22 15:07阅读:

CAD选择集的使用

1PickFirst 选择集是在先选择对象后启动命令的时候创建的

调用 SelectImplied 方法获得 PickFirst 选择集
PromptSelectionResult acSSPrompt;
acSSPrompt = acDocEd.SelectImplied();
SetImpliedSelection 方法用于清除当前的 PickFirst 选择集。
ObjectId[] idarrayEmpty = new ObjectId[0];
acDocEd.SetImpliedSelection(idarrayEmpty);

2、在图形区域中选择对象

用户选择对象可以通过与用户交互式选择对象来完成
1) GetSelection 提示用户从屏幕中拾取对象。
2) SelectAll 在当前空间中选择所有对象,但不包括锁定或冻结的。
3) SelectCrossingPolygon 选择与通过指定点定义的多边形内部和相交的对象。多边形可以是任何形状但不能与它自己相交或接触。
4) SelectCrossingWindow 选择与通过两个点定义的区域内部和相交的对象。
5) SelectFence 选择与选择栅格相交的所有对象。栅格选择与多边形相交选择是相似的,不同的是栅格不能封闭,而且栅格可以与自己相交。
6) SelectLast 选择当前空间中最后创建的对象。
7) SelectPrevious 选择在前一个选择对象提示时选择的所有对象。
8) SelectWindow 选择完全包含在通过两个点定义的矩形内部的所有对象。
9) SelectWindowPolygon 选择完全包含在通过点定义的多边形里面的对象。多边形可以是任何形状但不能与它自己相交或接触。
10) SelectAtPoint 选择经过给定点的对象并将它们放到活动选择集中去。
11) SelectByPolygon 选择栅格内部的对象并将它们放到活动选择集中去。
PromptSelectionResult acSSPrompt = acDoc.Editor.GetSelection();
SelectionSet acSSet = acSSPrompt.Value;

3、遍历选择对象

foreach (SelectedObject acSSObj in acSSet)
{
if (acSSObj != null)
{
Entity acEnt = acTrans.GetObject(acSSObj.ObjectId, OpenMode.ForWrite) as Entity;
if (acEnt != null)
{
acEnt.ColorIndex = 3;
}
}
}

4合并多个选择集

acSSet1 = acSSPrompt.Value;
acObjIdColl = new ObjectIdCollection(acSSet1.GetObjectIds());
acSSet2 = acSSPrompt.Value;
foreach (ObjectId acObjId in acSSet2.GetObjectIds())
{
acObjIdColl.Add(acObjId);
}

5、选取条件设置

常用过滤器的 DXF 组码
DXF
过滤器类型
0 (or DxfCode.Start)
对象类型(字符串)
例如 直线、圆、圆弧等等。
2 (or DxfCode.BlockName)
块名(字符串)
一个插入引用的块名
8 or (DxfCode.LayerName)

图层名(字符串)
例如 Layer 0
60 (DxfCode.Visibility)
可见性(整数)
使用 0 = 可见,1 = 不可见。
62 (or DxfCode.Color)
颜色编号(整数)
范围 0 256 内的数字索引值。
零表示 BYBLOCK256 表示 BYLAYER。负值表示图层被关闭。
67
模型/图纸空间标识符(整数)
使用 0 或省略 = 模型空间,1 = 图纸空间。
TypedValue[] acTypValAr = new TypedValue[3];
acTypValAr.SetValue(new TypedValue((int)DxfCode.Color, 5), 0);
acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, 'CIRCLE'), 1);
acTypValAr.SetValue(new TypedValue((int)DxfCode.LayerName, '0'), 2);
acSSPrompt = acDocEd.GetSelection(acSelFtr);

选择集过滤器列表的关系运算符
运算符
说明
'*'
任何情况(总为真)
'='
等于

我的更多文章

下载客户端阅读体验更佳

APP专享