CAD Select方法如何设置FilterType, FilterData.doc_第1页
CAD Select方法如何设置FilterType, FilterData.doc_第2页
CAD Select方法如何设置FilterType, FilterData.doc_第3页
CAD Select方法如何设置FilterType, FilterData.doc_第4页
CAD Select方法如何设置FilterType, FilterData.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

根据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) = Circle 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 FilterDataacSelectionSetCrossing = 1Selects objects within and crossing a rectangular area whose corners are defined by Point1 and Point2.And meets condition of FilterType and FilterDataacSelectionSetFence = 2Selects all objects completely inside Fence area whose are defined by Points. And meets condition of FilterType and FilterDataacSelectionSetPrevious = 3Selects 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 FilterDataacSelectionSetLast = 4Selects the most recently created visible objects. And meets condition of FilterType and FilterDataacSelectionSetAll = 5Selects all objects. And meets condition of FilterType and FilterDataacSelectionSetWindowPolygon = 6acSelectionSetCrossingPolygon = 7*参考:-Option Explicit-Public Sub Sample() On Error GoTo ERROR_HANDLER Dim ssetObj As AcadSelectionSet Set ssetObj = CreateSSet(MySelection) 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) = Or gpCode(1) = -4 dataValue(1) = gpCode(4) = -4 dataValue(4) = gpCode(7) = -4 dataValue(7) = gpCode(10) = -4 dataValue(10) = Or Dim groupCode As Variant, dataCode As Variant groupCode = gpCode dataCode = dataValue ssetObj.Select mode, , , groupCode, dataCode MsgBox ssetObj.Count Exit SubERROR_HANDLER: Debug.Print Error In GetIntersectionPoints: & Err.Number & , & Err.DescriptionEnd 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(ssetO, 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 FunctionERR_HANDLER: Debug.Print Error in sub CreateSSet: & Err.Number & - ; Err.Description Resume ERR_END ERR_END:End Function*过滤器列表由成对的参数组成。第一个参数标识过滤器的类型(例如对象),第二个参数指定要过滤的值(例如圆)。过滤器类型是指定使用哪种过滤器的 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 物件是LINEFilterData FilterType -4 0 0 -4 (物件是CIRCLE OR 物件是LINE) AND 圖層位於DIM層FilterData AND DIM AND FilterType -4 -4 0 0 -4 8 -4 物件是CIRCLE OR 物件是LINE) AND NOT(圖層位於DIM層)FilterData AND AND FilterType -4 -4 0 0 -4 -4 8 -4 -4 过滤器参数声明为数组,过滤器类型声明为整数,过滤器值声明为变量。每个过滤器类型都必须与过滤器值成对出现。例如: FilterType(0) = 0 表示过滤器是对象类型FilterData(0) = Circle 表示对象类型是“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(SS4) FilterType(0) = 0 FilterData(0) = Circle FilterType(1) = 8 FilterData(1) = 0 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(SS5) FilterType(0) = 0 FilterData(0) = Circle FilterType(1) = -4 FilterData(1) = = FilterType(2) = 40 FilterData(2) = 5# sstext.SelectOnScreen FilterType, FilterDataEnd 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(SS6) FilterType(0) = -4 FilterData(0) = sstext.SelectOnScreen FilterType, FilterDataEnd Sub过滤器列表中的符号名称和字符串可以包含通配符模式。 下表显示了 AutoCAD 能够识别的通配符以及每个通配符在上下文字符串中的含义: =通配符-字符 定义-# (磅值符号) 匹配任意一个数字 (at) 匹配任意一个字母. (句号) 匹配任意一个非字母数字的字符* (星号) 匹配任意的字符序列(包括空字符串),它可以用在任何搜索模式中:包括开头、中间和结尾处? (问号) 匹配任意一个字符 (波浪号) 如果它是模式中的的第一个字符,则匹配除此模式以外的任意内容. 匹配方括号中的任意一个字符. 匹配不在方括号中的任意一个字符- (连字符) 用在方括号中,指定一个字符的取值范围, (逗号) 分隔两个模式 (单引号) 避开特殊的字符(直接读取下一个字符)=使用单引号 () 表示下一个字符不是通配符,而是普通字符。例如,要指定在选择集中只包含名为“*U2”的匿名块,请使用以下过滤器参数: FilterType(0) = 2FilterData(0) = *U2以下代码将选择条件定义为选择包含“The”的所有 Mtext。本例也说明了 SelectByPolygon 选择方法的用法: Sub Ch4_FilterPolygonWildcard() Dim sstext As AcadSe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论