- UID
- 5244
- 积分
- 1648
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-5-18
- 最后登录
- 1970-1-1
|
发表于 2003-5-13 12:41:50
|
显示全部楼层
定义选择集的规则
用户可以使用过滤器列表按照特性或对象类型来限制选择集,例如,可以只复制电路板图形上的蓝色对象,或只复制某个图层上的对象。还可以在过滤器列表中组合选择条件,例如,仅当某个对象是蓝色的圆并且位于指定的图层上时,才将其包含在选择集中。可以为 Select、 SelectAtPoint、 SelectByPolygon 和 SelectOnScreen 方法指定过滤器列表。
过滤器列表由成对的参数组成。第一个参数标识过滤器的类型(例如对象),第二个参数指定要过滤的值(例如圆)。过滤器类型是指定使用哪种过滤器的 DXF 组码。下面列出了一些最常用的过滤器类型。
常用过滤器的 DXF 组码
DXF 组码 过滤器类型
0 对象类型(字符串) 例如“Line”、“Circle”、“Arc”等。
2 对象名(字符串) 命名对象的表(给定)名称。
8 图层名(字符串) 例如“图层 0”。
60 对象可见性(整数) 使用 0 = 可见,1 = 不可见。
62 颜色编号(整数) 范围 0 到 256 内的数字索引值。 零表示 BYBLOCK。256 表示 BYLAYER。负值表示图层被关闭。
67 模型/图纸空间标识符(整数) 使用 0 或省略 = 模型空间,1 = 图纸空间。
关于 DXF 组码的完整列表,请参见 DXF 参考中的 “按数字次序排列的组码”。
过滤器参数声明为数组,过滤器类型声明为整数,过滤器值声明为变量。每个过滤器类型都必须与过滤器值成对出现。例如:
FilterType(0) = 0 '表示过滤器是对象类型
FilterData(0) = "Circle" '表示对象类型是“Circle”
因而上面的例子,应该这样编写:
Dim ssetobj As AcadSelectionSet
Set ssetobj = acadObj.ActiveDocument.selectionsets.Add("xpoint1")
Dim filtertype(0) As Integer
Dim filterdata(0) As Variant
filtertype(0) = 0
filterdata(0) = "text"
ssetobj.SelectByPolygon acSelectionSetCrossingPolygon, pointsArray, filtertype, filterdata
注意,构成多边形的四个点xpt1, xpt2, xpt3, xpt4应该将其放入到一个数组中pointsArray,即传递给SelectByPolygon的参数是所有点构成的数组,而不是每一个点。 |
|