VBA中的查询
大家好      ;我是vba的新手 ;我对VBA有疑问 ;运行程序后,我想检查结果是否正常。运行lisp后,v可以使用!用于检查结果的变量。但是;我不知道怎么查。有人能帮我吗 Dim ssetObj As AcadSelectionSetDim mode As Integer
Dim grpCode(1) As Integer
Dim dataVal(1) As Variant
Set ssetObj = ThisDrawing.SelectionSets.Add("SS01") --- why they had add "SSO1".
mode = acSelectionSetAll
grpCode(0) = 0
dataVal(0) = "LWPOLYLINE"
grpCode(2) = 8
dataVal(2) = "route"
ssetObj.Select mode, , , grpCode, dataVal
'ssetObj.Erase
'ssetObj.Delete
编辑-添加代码标记
您可以在调试模式下运行IDE,并;手表;变量,与您在Visual Lisp IDE中可以使用的变量相同。 对于你正在尝试做的事情,这里是一个很好的起点。下面的代码将所有块移动到第0层。它首先查看该名称的选择集是否存在,如果存在,则将其删除。然后创建所有实体的选择集,然后根据类型进行过滤。然后将这些实体移动到零层并删除选择集
希望这有帮助Option Explicit
Public Sub TestSet(objDoc As AcadDocument)
Dim objSelSet As AcadSelectionSet
Dim objSelCol As AcadSelectionSets
Dim objLayer As AcadLayer
Dim intType(0) As Integer
Dim varData(0) As Variant
Dim objEnt As AcadEntity
Set objSelCol = objDoc.SelectionSets
For Each objSelSet In objSelCol
If objSelSet.Name = "test1" Then
objSelSet.Delete
Exit For
End If
Next objSelSet
Set objSelSet = objSelCol.Add("test1")
intType(0) = 0
varData(0) = "INSERT"
objSelSet.Select 5, filtertype:=intType, _
filterdata:=varData
For Each objEnt In objSelSet
Set objLayer = objEnt.Layer
If Not objLayer.Freeze And objLayer.LayerOn Then
objEnt.Layer = 0
End If
Next objEnt
Set objSelCol = Nothing
objSelSet.Delete
End Sub
应该是吗objEnt.Layer = "0" ? 是的,你说得对。应该是字符串 您好,克里和亚利桑那州             ;谢谢你的回复 ;你的支持给了我一些学习VBA的想法
;实际上,我编写了lisp来收集多段线的坐标并存储在列表中。我正在通过VBA尝试同样的事情
在VBA中,我通过selectionset收集多段线。现在我想要2个收集坐标
感谢您的大力支持和问候 这只是一个名字,任何名字都可以
使用亚利桑那州#039;s selectionset test修复代码-grpCode(2)不好
ctrl+g将立即打开调试窗口。打印将打印到该位置(或者像Kerry说的那样使用局部变量或观察窗口。添加到下面。Debug.Print ssetObj.count。Delete将删除您不想要的选择集中的项目。Delete将删除选择集而不是其中的项目。现在您可以使用for循环来处理您的PLINE。制作一个集合以添加your坐标
将CoordCol设置为集合
将CoordCol设置为新集合现在将光标放在集合后并点击F1,这将为您提供帮助
页:
[1]