CAD Select方法如何设置FilterType, FilterData
更新时间:2024-01-12 21:14:01 阅读量: 教育文库 文档下载
- cad是什么推荐度:
- 相关推荐
根据AutoCAD2004 VBA的说明,Select方法的描述为: object.Select Mode[, Point1][, Point2][, FilterType][, FilterData] 如选择所有的圆,可以使用如下代码: Dim gpCode(0) As Integer Dim dataValue(0) As Variant gpCode(0) = 0
dataValue(0) = \
ssetObj.Select acSelectionSetAll, , , gpCode, dataValue
我的问题就是,如果要选择其它的对象,如何设置FilterType, FilterData?比如对象为 Ployline时。
哪位大侠能不能给一个关于此类设置的总结啊? ============================= Mode
============================= acSelectionSetWindow = 0
Selects all objects completely inside a rectangular area whose corners are defined by Point1 and Point2. And meets condition of FilterType and FilterData
acSelectionSetCrossing = 1
Selects objects within and crossing a rectangular area whose corners are defined by Point1 and Point2.And meets condition of FilterType and FilterData acSelectionSetFence = 2
Selects all objects completely inside Fence area whose are defined by Points. And meets condition of FilterType and FilterData acSelectionSetPrevious = 3
Selects the most recent selection set. This mode is ignored if you switch between paper space and model space and attempt to use the selection set. And meets condition of FilterType and FilterData acSelectionSetLast = 4
Selects the most recently created visible objects. And meets condition of FilterType and FilterData acSelectionSetAll = 5
Selects all objects. And meets condition of FilterType and FilterData acSelectionSetWindowPolygon = 6 acSelectionSetCrossingPolygon = 7
***************************************************************************** 参考:
'------------------------------------------------------------------ Option Explicit
'------------------------------------------------------------------ Public Sub Sample()
On Error GoTo ERROR_HANDLER Dim ssetObj As AcadSelectionSet
Set ssetObj = CreateSSet(\
Dim mode As Integer mode = acSelectionSetAll
Dim gpCode(0 To 10) As Integer Dim dataValue(0 To 10) As Variant
gpCode(0) = -4
dataValue(0) = \ gpCode(1) = -4
dataValue(1) = \ gpCode(2) = 0
dataValue(2) = \ gpCode(3) = -4
dataValue(3) = \
gpCode(4) = -4
dataValue(4) = \ gpCode(5) = 0
dataValue(5) = \YLINE\ gpCode(6) = -4
dataValue(6) = \
gpCode(7) = -4
dataValue(7) = \ gpCode(8) = 0
dataValue(8) = \YLINE\ gpCode(9) = -4
dataValue(9) = \
gpCode(10) = -4
dataValue(10) = \
Dim groupCode As Variant, dataCode As Variant groupCode = gpCode dataCode = dataValue
ssetObj.Select mode, , , groupCode, dataCode
MsgBox ssetObj.Count
Exit Sub
ERROR_HANDLER:
Debug.Print \ Err.Description End Sub
'------------------------------------------------------------------ ' 创建选择集
'------------------------------------------------------------------
Private Function CreateSSet(ByVal name As String) As AcadSelectionSet On Error GoTo ERR_HANDLER
Dim ssetObj As AcadSelectionSet Dim SSetColl As AcadSelectionSets
Set SSetColl = ThisDrawing.SelectionSets
Dim index As Integer Dim found As Boolean
found = False
For index = 0 To SSetColl.Count - 1 Set ssetObj = SSetColl.Item(index)
If StrComp(ssetObj.name, name, 1) = 0 Then found = True Exit For End If Next
If Not (found) Then
Set ssetObj = SSetColl.Add(name) Else
ssetObj.Clear End If
Set CreateSSet = ssetObj
Exit Function ERR_HANDLER:
Debug.Print \ Resume ERR_END
ERR_END: End Function
*********************************************************************** 过滤器列表由成对的参数组成。第一个参数标识过滤器的类型(例如对象),第二个参数指
定
要过滤的值(例如圆)。过滤器类型是指定使用哪种过滤器的 DXF 组码。下面列出了一些最常
用的过滤器类型。
================================================================================
常用过滤器的 DXF 组码 <请详查DXF手册>
-------------------------------------------------------------------------------- DXF组码 过滤器类型 缺省值
-------------------------------------------------------------------------------- -1 实体名称(随图档的开启而不同) 不可省略 -------------------------------------------------------------------------------- 0 对象类型(字符串)
例如“Line”、“Circle”、“Arc”等。 不可省略 -------------------------------------------------------------------------------- 2 对象名(字符串) 不可省略 命名对象的表(给定)名称。
-------------------------------------------------------------------------------- 5 处理码 不可省略
--------------------------------------------------------------------------------
6 线型名称(若线型不为bylayer,此群码值会出现) bylayer -------------------------------------------------------------------------------- 8 图层名(字符串) 0 例如“图层 0”。
-------------------------------------------------------------------------------- 48 线型比例(选择) 1.0
-------------------------------------------------------------------------------- 60 对象可见性(整数)
使用 0 = 可见,1 = 不可见。
-------------------------------------------------------------------------------- 62 颜色编号(整数) bylayer 范围 0 到 256 内的数字索引值。
零表示 BYBLOCK。256表示BYLAYER。 负值表示图层被关闭。
-------------------------------------------------------------------------------- 67 模型/图纸空间标识符(整数) 0 使用 0 或省略=模型空间,1=图纸空间。
================================================================================
物件是CIRCLE OR 物件是LINE FilterData
(物件是CIRCLE OR 物件是LINE) AND 圖層位於DIM層
FilterData DIM AND> FilterType -4 -4 0 0 -4 8 -4
物件是CIRCLE OR 物件是LINE) AND NOT(圖層位於DIM層) FilterData
过滤器参数声明为数组,过滤器类型声明为整数,过滤器值声明为变量。每个过滤器类型都必
须与过滤器值成对出现。例如:
FilterType(0) = 0 ' 表示过滤器是对象类型FilterData(0) = \' 表示对象类型 是“Circle”
以下代码指定两个条件:对象必须是圆,并且必须在图层 0 上。代码将 FilterType 和 FilterData 声明为两个元素的数组,并将每个条件指定给一个元素:
Sub Ch4_FilterBlueCircleOnLayer0() Dim sstext As AcadSelectionSet Dim FilterType(1) As Integer Dim FilterData(1) As Variant
Set sstext = ThisDrawing.SelectionSets.Add(\ FilterType(0) = 0
FilterData(0) = \ FilterType(1) = 8 FilterData(1) = \
sstext.SelectOnScreen FilterType, FilterData End Sub
在指定多个选择条件时,AutoCAD 会假设选定的对象必须符合每一个条件。但用户可以按照其
他方式来指定条件。对于数字项,用户可以指定关系运算(例如,圆的半径必须大于或等于 5.0);对于所有项,用户可以指定逻辑运算(例如 Text 或 Mtext)。
使用 -4 DXF 组码来指示过滤器规格中的关系运算符。以字符串的形式来指定运算符。下表显
示了可以使用的关系运算符:
=========================== 选择集过滤器列表的关系运算符 -------------------------- 运算符 说明
--------------------------
\任何情况(总为真) -------------------------- \等于
-------------------------- \不等于
-------------------------- \不等于
-------------------------- \不等于
-------------------------- \小于
-------------------------- \小于或等于 -------------------------- \大于
-------------------------- \大于或等于 --------------------------
\按位与 (AND,仅限于整数组) --------------------------
\按位屏蔽相等(仅限于整数组) ==========================
-4 组码也可以指定过滤器列表中的逻辑运算符,逻辑运算符是字符串但必须成对出现。运算符
以小于号开始 (<),以大于号结束 (>)。下表列出了可以在选择集过滤中使用的逻辑运算符。 ===================================== 选择集过滤器列表的逻辑编组运算符 -------------------------------------
开始运算符 包含的内容 结束运算符 -------------------------------------
\一个或多个运算对象 \ -------------------------------------
\一个或多个运算对象 \ -------------------------------------
\两个运算对象 \ -------------------------------------
\一个运算对象 \
=====================================
************************************************************************* 以下代码指定选择半径大于或等于 5.0 的圆: Sub Ch4_FilterRelational() Dim sstext As AcadSelectionSet Dim FilterType(2) As Integer Dim FilterData(2) As Variant
Set sstext = ThisDrawing.SelectionSets.Add(\ FilterType(0) = 0
FilterData(0) = \ FilterType(1) = -4 FilterData(1) = \
FilterType(2) = 40 FilterData(2) = 5#
sstext.SelectOnScreen FilterType, FilterData End Sub
下例指定选择 Text 或 Mtext 对象:
Sub Ch4_FilterOrTest()
Dim sstext As AcadSelectionSet Dim FilterType(3) As Integer Dim FilterData(3) As Variant
Set sstext = ThisDrawing.SelectionSets.Add(\ FilterType(0) = -4 FilterData(0) = \ FilterType(1) = 0
FilterData(1) = \ FilterType(2) = 0
FilterData(2) = \ FilterType(3) = -4
FilterData(3) = \
sstext.SelectOnScreen FilterType, FilterData End Sub
过滤器列表中的符号名称和字符串可以包含通配符模式。 下表显示了 AutoCAD 能够识别的通
配符以及每个通配符在上下文字符串中的含义:
===================================================================== 通配符
-------------------------------------------------------- 字符 定义
-------------------------------------------------------
# (磅值符号) 匹配任意一个数字 @ (at) 匹配任意一个字母
. (句号) 匹配任意一个非字母数字的字符
* (星号) 匹配任意的字符序列(包括空字符串),它可以用在任何搜索模 式中:包括开头、中间和结尾处
? (问号) 匹配任意一个字符
~ (波浪号) 如果它是模式中的的第一个字符,则匹配除此模式以外的任意内 容
[...] 匹配方括号中的任意一个字符
[~...] 匹配不在方括号中的任意一个字符
- (连字符) 用在方括号中,指定一个字符的取值范围 , (逗号) 分隔两个模式
` (单引号) 避开特殊的字符(直接读取下一个字符)
======================================================================
===
使用单引号 (`) 表示下一个字符不是通配符,而是普通字符。例如,要指定在选择集中只包含
名为“*U2”的匿名块,请使用以下过滤器参数: FilterType(0) = 2 FilterData(0) = \
`*U2\以下代码将选择条件定义为选择包含“The”的所有 Mtext。本例也说明了 SelectByPolygon 选择方法的用法: Sub Ch4_FilterPolygonWildcard() Dim sstext As AcadSelectionSet Dim FilterType(1) As Integer Dim FilterData(1) As Variant
Dim pointsArray(0 To 11) As Double Dim mode As Integer
mode = acSelectionSetWindowPolygon
pointsArray(0) = -12#:pointsArray(1) = -7#:pointsArray(2) = 0 pointsArray(3) = -12#:pointsArray(4) = 10#:pointsArray(5) = 0 pointsArray(6) = 10#:pointsArray(7) = 10#:pointsArray(8) = 0 pointsArray(9) = 10#:pointsArray(10) = -7#:pointsArray(11) = 0 Set sstext = ThisDrawing.SelectionSets.Add(\ FilterType(0) = 0
FilterData(0) = \ FilterType(1) = 1
FilterData(1) = \
sstext.SelectByPolygon mode, pointsArray, FilterType, FilterData End Sub
正在阅读:
CAD Select方法如何设置FilterType, FilterData01-12
《公务员制度讲座》答案(王淑)10-17
建筑构造与识图09-18
最新部编版语文三年级上册《总也倒不了的老屋》教学设计10-21
马克思主义基本原理复习题01-26
英语人生格言,关于英语人生的格言警句大全02-10
安全事故应急预案10-17
高压试题210-14
俄罗斯方块代码03-15
为谁掌权、为谁执法、为谁服务心得体会07-09
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- FilterData
- FilterType
- 设置
- 方法
- Select
- 如何
- CAD
- 2013陕西公务员安康市行政系统面试复审名单
- 函授毕业论文
- 2017考研-法律硕士之民法学案例分析(22)
- 1号楼监理通知
- 1.实验室与基本操作(植物组织培养)
- 2018-2019学年部编人教版七年级语文上册全册精编练习题集(含答案)
- 小学教育论文-浅议农村小学课程改革的目标与存在的问题和对策
- 小学三年级英语单词表
- 《财政学》试题库
- 十一学校数学小升初内部讲义电子版1
- 班主任工作自我鉴定
- 1011-江苏省电力公司变电站倒闸操作规范(修订稿1123)
- 听徐斌老师的课有感
- 四川省广元市广元中学2015-2016学年高二下学期第一次段考
- 三 我的老师 教案
- 中考思想品德试题解题方法与思路
- 微信公众号支付一个页面就搞定
- 兰州大学网络教育大学英语(3)2013秋第四套作业
- 河北省衡水市武邑中学2017届高三(上)第五次调考数学试卷(文科)(解析版)(1)
- 第1课时1--5的认识简案