关键词不能为空

当前您在: 主页 > 英语 >

Autocad VBA初级教学文章 (第九课创建选择集)

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 09:36
tags:

-

2021年2月28日发(作者:楔形塞尺)



1.



在创建对象的 同时可以直接引用


.


以前的例程中已经做过多次了


,


现在复习一



,


看例程


:


先随机画


30 0


个圆


,


在画圆时直接引用

< p>
,


然后再把这些圆根本大小


修改颜色


.


Sub c300()


Dim myselect(0 To 300) As AcadEntity '


定义选择集数组



Dim pp(0 To 2) As Double '


圆心坐标



For i = 0 To 300 '


循环

< br>300




pp(0) = 3000 * Rnd: pp(1) = 3000 * Rnd: pp(2) = 0 '


设置圆心坐标



Set myselect(i) = cle(pp, Rnd * 30 + 1) '


画不同大小的圆



Next i



For i = 1 To 300


If myselect(i).Radius > 10 Then '


判断圆的直径是否大于


10


myselect(i).color = Int(255 * Rnd + 1) '


大圆颜色改为随机数



Else


myselect(i).color = 0 '


小圆改为白色



End If


Next i



ZoomExtents '


缩放到显示全部对象




End Sub





pp(0) = 3000 * Rnd: pp(1) = 3000 * Rnd: pp(2) = 0


这一行实际上应该是三条语句


,


用三行合并为一行


,


用冒号分开



rnd


是随机数函数


,


它的数值为


0-1


之间的小数


,3000*rnd


得到的数值就是在

< p>
0-3000


之间的随机数



Set myselect(i) = cle(pp, Rnd * 30 + 1)


这条语句的作用是以


pp


点坐标为圆心


,


画一个圆


,


半径是


1-30


之间的随机数


,



值给


myselect

选择集


.



提标用户在屏幕中选取



选择语句这样写


:Set sset = (

< br>其


中”ss1”是一个选择集名称


,

这个参数可以随意写一个


,


注意不要重复就可以了


.


下面的例程是让用户选择对象


,

< p>
然后把选中的对象改为绿色


,


最后把选择集删除< /p>



Sub mysel()



Dim sset As AcadSelectionSet '


定义选择集对象



Dim element As AcadEntity '


定义选择集中的元素对象



Set sset = (


新建一个选择集




OnScreen '


提示用户选择




For Each element In sset '


在选择集中进行循环



= acGreen '


改为绿色



Next



'


删除选择集



End Sub



3.


选择全部对象


< br>用


select


方法


,


参数为


acSelectionSetAll


,


看例程


,


这个程序选择全部对象


,



示选中的对象


,


并计算对象数


.


Sub allsel()


Dim sel1 As AcadSelectionSet '


定义选择集对象



Set sel1 = (


新建一个选择集



Call (acSelectionSetAll) '


全部选中



ght (True) '


显示选择的对象



sco= '


计算选择集中的对象数



MsgBox


选中对象数


:


显示对话框



End Sub


3.


运用


select


方法



上面的例题已经运用了


select


方法


,


下面讲一下

select



5


种选择方式


:


1:


择全部对象


(acselectionsetall)


2.


选择上次创 建的对象


(acselectionsetlast)


3.< /p>


选择上次选择的对象


(acselectionsetprevi ous)


4.


选择矩形窗口内对象


( acselectionsetwindow)


5.


选择矩形 窗口内以及与边界相交的对象


(acselectionsetcrossing) < /p>


还是看代码来学习


.


其中选择语句是


:


Call (Mode, p1, p2)

< br>Mode


已经定义为


5,


也就是 选择矩形窗口内以及与边界相交的对象


,p1



p2


是两


个点坐标


,


Sub selnew()


Dim sel1 As AcadSelectionSet '


定义选择集对象



Dim p1(0 To 2) As Double '


坐标


1


Dim p2(0 To 2) As Double '


坐标


2


p1(0) = 0: p1(1) = 0: p1(2) = 0 '


设置坐标


1


p2(0) = 300: p2(1) = 300: p2(2) = 0 '


设置坐标


1


Mode = 5 '


把选择模式存入


mode


变量中



Set sel1 = (


新建一个选择集



Call (Mode, p1, p2) '


选择对象



ght (ture) '


显示已选中的对象



End Sub





CAD VBA


过滤器、选择集分享



我看到过 这个问题有好几次了,


当时只是把代码发给了个人,


现在把这些 代码贴出来,


建立


一个专题,


加以自己 的理解进行说明,


希望能对大家在工作中遇到选择集和过滤器问题有所

< br>帮助以供大家使用。这种方法建立选择集和过滤器我使用过千百遍,未出现过任何异常。

< br>


'


——————————————————————— ———————————



'


名称:


BuildFilter


'


作者:罗简单



'


日期:


2008-3-11


'


功能:创建过滤器



'


——————————————————————————————————



Public Sub BuildFilter(TypeArray, DataArray, ParamArray gCodes())



Dim fType() As Integer, fData()



Dim index As Long, i As Long




index = LBound(gCodes) - 1



For i = LBound(gCodes) To UBound(gCodes) Step 2



index = index + 1



ReDim Preserve fType(0 To index)



ReDim Preserve fData(0 To index)



fType(index) = CInt(gCodes(i))



fData(index) = gCodes(i + 1)



Next



TypeArray = fType: DataArray = fData



End Sub


'


——————————————————————— ———————————



'


名称:< /p>


CreateSelectionSet


'


作者:罗简单



'


日期:


2008-3-11


'


功能:创建选择集



'


——————————————————————————————————



Public Function CreateSelectionSet(Optional ssName As String =



Dim ss As AcadSelectionSet



On Error Resume Next



Set ss = ionSets(ssName)



If Err Then Set ss = (ssName)





Set CreateSelectionSet = ss


End Function



'


创建个过程来调用过滤器和选择集



Sub TestBuildFilterAndCteSset()



'


定义过滤器




Dim pType, pData



BuildFilter pType, pData, 0,



'


注意:这里的

< p>
0



8


是通过命令


(entget(car(entsel)))


获取的对象基本




'


特性,例如:




'************************* ************************************************** **


*****



'((-1 . <


图元名


: 7ef83b28>) (0 .


图元名


:



'7ef81cc0>) (5 .



'



'(38 . 0.0) (39 . 0.0) (10 92.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) (210 0.0 0.0 1.0))



'********************************************* ********************************


*****



'


其中比较常用的


(0 .


表示对象类型;


(8 .


表示对象所在层




'


所以还可以扩展或收缩过滤器,如下




'BuildFilter pType, pData, 0,


:建立图上所有的多段线过滤器




'BuildFilter pType, pData, 0,


:建立图层是


JZD


的多段线过 滤器




'BuildFilter pType, pData, 0,


:建立图层是


JZD


、颜色为绿色


的多段线过滤器





'


定义选择集




Dim sset As AcadSelectionSet



Set sset = CreateSelectionSet




'


根据以上指定的过滤器建立选择集






acSelectionSetAll, , , pType, pData


< /p>


'


这里可以通过


Select

< p>


SelectAtPoint



SelectByPolygon



SelectOn Screen


等方法



< p>
'


配合


Mode



Point1



Point2


建立更加用户化的选择集




End Sub


'


当在一个过程中连 续使用两个以上的选择集时,需要重新定义选择集,如下:



'


创建空间选择集的函数


2


Public Function CreateSelectionSet2(Optional ssName As String =



Dim ss2 As AcadSelectionSet



On Error Resume Next



Set ss2 = ionSets(ssName)



If Err Then Set ss2 = (ssName)





Set CreateSelectionSet2 = ss2


End Function


'


创建个过程来调用过滤器和选择集



Sub TestBuildFilterAndCteSset()



'


定义过滤器




Dim pType, pData



BuildFilter pType, pData, 0,



'


注意:这里的

< p>
0



8


是通过命令


(entget(car(entsel)))


获取的对象基本




'


特性,例如:




'************************* ************************************************** **


*****



'((-1 . <


图元名


: 7ef83b28>) (0 .


图元名


:



'7ef81cc0>) (5 .



'



'(38 . 0.0) (39 . 0.0) (10 92.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) (210 0.0 0.0 1.0))



'********************************************* ********************************


*****



'


其中比较常用的


(0 .


表示对象类型;


(8 .


表示对象所在层




'


所以还可以扩展或收缩过滤器,如下




'BuildFilter pType, pData, 0,


:建立图上所有的多段线过滤器




'BuildFilter pType, pData, 0,


:建立图层是


JZD


的多段线过 滤器




'BuildFilter pType, pData, 0,


:建立图层是


JZD


、颜色为绿色


的多段线过滤器





'


定义选择集


-


-


-


-


-


-


-


-



本文更新与2021-02-28 09:36,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/680059.html

Autocad VBA初级教学文章 (第九课创建选择集)的相关文章