收藏 分享(赏)

cad vba过滤器选择集(CAD VBA filter selection set).doc

上传人:dreamzhangning 文档编号:2791470 上传时间:2018-09-27 格式:DOC 页数:14 大小:21.68KB
下载 相关 举报
cad vba过滤器选择集(CAD VBA filter selection set).doc_第1页
第1页 / 共14页
cad vba过滤器选择集(CAD VBA filter selection set).doc_第2页
第2页 / 共14页
cad vba过滤器选择集(CAD VBA filter selection set).doc_第3页
第3页 / 共14页
cad vba过滤器选择集(CAD VBA filter selection set).doc_第4页
第4页 / 共14页
cad vba过滤器选择集(CAD VBA filter selection set).doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、cad vba过滤器选择集(CAD VBA filter selection set)Paste: CAD VBA filter selection set classification: VB programming skills 2009-10-17 18:49- - - - - - - - - - - - - -Name: BuildFilterAuthor: Luo simpledate: 2008-3-11function: creating filters- - - - - - - - - - - - - -Public Sub BuildFilter (TypeArray, Da

2、taArray, ParamArray gCodes ()Dim fType () As Integer, fData ()Dim index As Long, I As LongIndex = LBound (gCodes) - 1For I = LBound (gCodes) To UBound (gCodes) Step 2Index = index + 1ReDim Preserve fType (0 To index)ReDim Preserve fData (0 To index)FType (index) = CInt (gCodes (I)FData (index) = gCo

3、des (I + 1)NextTypeArray = fType: DataArray = fDataEnd Sub- - - - - - - - - - - - - -Name: CreateSelectionSetAuthor: Luo simpledate: 2008-3-11function: creating selection sets- - - - - - - - - - - - - -Public Function CreateSelectionSet (Optional ssName As String = SS) As AcadSelectionSetDim SS As A

4、cadSelectionSetOn Error Resume NextSet SS = ThisDrawing.SelectionSets (ssName)If Err Then Set SS = ThisDrawing.SelectionSets.Add (ssName)Ss.ClearSet CreateSelectionSet = SSEnd Functioncreate a procedure to call the filter and selection setSub TestBuildFilterAndCteSset ()Define filterDim pType, pData

5、BuildFilter pType, pData, 0, “LWPOLYLINE“, 8, “JZD“Notice: 0 and 8 here are the objects that are acquired through the command (entget (car (entsel)characteristics, for example:*(-1. ) (0. “LWPOLYLINE“) (330. ) (5. “425“) (100. “AcDbEntity“) (67) (410. “Model“) (8.)“JZD“) (6. “Continuous“) (100. “AcD

6、bPolyline“) (90.2) (70.128) (43.0.0)(38.0.0) (39.0.0) (1092.5011. 35.6905) (40.0.0) (41.0.0) (42.0.0) (10)208.946 102.652) (40.0.0) (41.0.0) (42.0.0) (2100, 0, 1)*more commonly used (0. LWPOLYLINE ) represents the object type; (8. JZD ) represents the layer of the objectSo, you can extend or shrink

7、the filter as followsBuildFilter pType, pData, 0, “LWPOLYLINE“: set up all the multi line filters on the graphBuildFilter pType, pData, 0, “LWPOLYLINE“, 8, “JZD“: the layer is the multi line filter of JZDBuildFilter pType, pData, 0, “LWPOLYLINE“, 8, “JZD“, 62,3: set up layer is JZD, color is green m

8、ulti segment line filter定义选择集The acadselectionset dim SSETSet SSET = createselectionset根据以上指定的过滤器建立选择集Clear SSET.SSET. Select acselectionsetall, ptype, pdata这里可以通过select、selectatpoint、selectbypolygon、selectonscreen 等方法配合 mode和 point1、point2 建立更加用户化的选择集End Sub当在一个过程中连续使用两个以上的选择集时, 需要重新定义选择集, 如下:创建空间选

9、择集的函数 2Public function createselectionset2 (optional ssname the string = “acadselectionset SS2)The acadselectionset dim SS2On error summarized nextSet SS2 = thisdrawing.selectionsets (ssname)If err then set SS2 = thisdrawing.selectionsets.add (ssname)Clear SS2.Set createselectionset2 = SS2End functi

10、on创建个过程来调用过滤器和选择集Testbuildfilterandctesset (sub)定义过滤器Dim ptype, pdataBuildfilter ptype, pdata, 0, “lwpolyline,“ 8, “JZD“注意: 这里的 0与 8是通过命令 (entget (car (entsel) 获取的对象基本特性, 例如:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

11、* * * * * * * * * * * * * * * * * * *(- 1. ) (0. “ Lwpolyline “) (330). ) (5). “ 425) (100. “ Acdbentity “) (67. 0) (410). Model “(8).“JZD“) (6. “ Continuous “) (100.“ Acdbpolyline “) (90). 2) (70). (128) 43. 0.0)(38). 0.0) (39). 0.0) (10 92.5011 35.6905) (40). 0.0) (41). 0.0) (42). 0.0) (10208.946

12、102.652) (40). 0.0) (41). 0.0) (42). 0.0) (210 0.0 0.0 1.0)* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *其中比较常用的 (0. “ Lwpolyline “) 表示对象类型; (8.“ JZD 表示对象所在层 “)所以还可以扩展或收缩过滤器, 如下buildf

13、ilter ptype, pdata, 0, “建立图上所有的多段线过滤器 lwpolyline“:buildfilter ptype, pdata, 0, “lwpolyline,“ 8, “JZD 建立图层是 jzd的多段线过滤器“:buildfilter ptype, pdata, 0, “lwpolyline,“ 8, “JZD“, 建立图层是 jzd、颜色为绿色的多段线过滤器 62.3:定义选择集The acadselectionset dim SSETSet SSET = createselectionset根据以上指定的过滤器建立选择集Clear SSET.SSET. Selec

14、t acselectionsetall, ptype, pdata这里可以通过select、selectatpoint、selectbypolygon、selectonscreen 等方法配合 mode和 point1、point2 建立更加用户化的选择集再调用 createselectionset2The acadselectionset dim sset2Set sset2 = createselectionset2 注意这里是调用createselectionset2, 依次类推Clear sset2.Sset2.selectonscreen ptype, pdataEnd SubAut

15、oCAD VBA,选择集,20:40 在 AutoCAD程序中使用选择集复制时出错,搜索了一下。发现 AutoCAD自带的例子没有删除选择集,因此在反复使用时出错(后来就放弃了) 。http:/ DWG文档中有一个选择集集合对象,引用方式:thisdrawing。selectionsets。选择对象前,先向该集合中添加一个选择集,然后再调用选择集的方法,选择集添加对象。处理完毕,记得删除创建的选择集对象。简单的例子如下:公共子 exmsel1()昏暗的 SS1为 acadselectionset弱模式为整数错误 errorhandle”错误处理,出错时跳转到最后删除选择集集 SS1 = thi

16、sdrawing。selectionsets。添加(“selectset1” )的添加空选择集ss1.selectonscreen”用屏幕选择方法,向选择集添加对象“对象处理ErrorHandle:thisdrawing。selectionsets。项目(“删除”删除选择集selectset1”) 。端子selectonscreen方法让用户手动选择对象,和平常操作一样,可以一个一个选,也可以用窗口选择。有时我们需要有条件地选择对象,比如选择所有的圆等,这需要为selectonscreen方法增加过滤器参数,过滤器是两个数组参数,一个是整形数组,一个是可变类型数组,维数相同,整形数组指定过滤类

17、型,可变类型数组指定过滤值,它们一一对应。下面的例程只选择圆对象:“用过滤器,选择圆公共子 exmsel2()昏暗的 SS1为 acadselectionset弱模式为整数昏暗的过滤式(0)为整数昏暗的 filterdata(0)变异过滤式(0)= 0 按类型选择filterdata(0)=“圆”的选择圆,与过滤式对应错误 errorhandle”错误处理,出错时跳转到最后删除选择集集 SS1 = thisdrawing。selectionsets。添加(“selectset1” )的添加空选择集ss1.selectonscreen过滤式,filterdata”用屏幕选择方法,向选择集添加对象

18、“对象处理ErrorHandle:thisdrawing。selectionsets。项目(“删除”删除选择集selectset1”) 。端子可以用关系运算符指定复杂的过滤器,下面的例子选择半径大于等于 100的圆“选择半径大于或等于 100的圆公共子 exmsel3()昏暗的 SS1为 acadselectionset弱模式为整数昏暗的过滤式(2)为整数昏暗的 filterdata(2)变异过滤式(0)= 0filterdata(0)=“圈子”过滤式(1)= - 4 - 4 表示对应的过滤式是运算符filterdata(1)=“=”过滤式(2)= 40 的 40在 DXF组码中表示半径fil

19、terdata(2)= 100 #”指定过滤的半径值错误 errorhandle”错误处理,出错时跳转到最后删除选择集集 SS1 = thisdrawing。selectionsets。添加(“selectset1” )的添加空选择集ss1.selectonscreen filtertype, filterdata 用屏幕选择方法, 向选择集添加对象对象处理errorhandle:thisdrawing.selectionsets.item (“selectset1“).delete 删除选择集than sub- 4 dxf 组码来指示过滤器规格中的关系运算符.下面的例子用 or (或) 运算

20、符选择圆和圆弧选择圆或圆弧public sub exmsel4 ()dim ssi as acadselectionsetdim mode as integerdim filtertype (3) as integerdim filterdata (3) as variantfiltertype (0) = - 4filterdata (0) = “ 之前的条件为并列filtertype (1) = 0filterdata (1) = “circle“filtertype (2) = 0filterdata (2) = “arc“filtertype (3) = - 4filterdata (

21、3) = or “或运算结束on error goto errorhandle 错误处理, 出错时跳转到最后删除选择集seen ssi = thisdrawing.selectionsets.add (“selectset1“) 添加空选择集ss1.selectonscreen filtertype, filterdata 用屏幕选择方法, 向选择集添加对象对象处理errorhandle:thisdrawing.selectionsets.item (“selectset1“).delete 删除选择集than subselectionset对象还可以用 additems、 select、 selectatpoint、selectbypolygon 等方法添加对象. 这 4种方法由程序参数控制, 除 additems外都支持过滤器参数.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 机械制造 > CAD/CAE/CAM

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报