viva 发表于 2006-9-19 05:20:47

VBA 中的查询

大家好,
我是vba的新手。我对VBA心存疑虑。运行程序后,我想检查结果是否正常。运行lisp后,v就可以用了!检查结果的变量。但是我不知道如何检查。有人能帮我吗?
   Dim ssetObj As AcadSelectionSet
   Dim 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
添加了编辑代码标签
**** Hidden Message *****

Kerry 发表于 2006-9-19 06:07:36

您可以在调试模式下运行 IDE 并“监视”变量,这与在 Visual Lisp IDE 中相同。

Arizona 发表于 2006-9-19 06:24:51

对于您正在尝试做的事情,这里是一个很好的起点。下面的代码将所有块移动到第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

Kerry 发表于 2006-9-19 06:30:07

那应该是
objEnt.Layer = "0"吗
? ?

Arizona 发表于 2006-9-19 06:37:02

是的,你是对的。它应该是一个字符串

viva 发表于 2006-9-19 06:40:56

嗨,克里和亚利桑那州,
感谢您的回复。 您的支持使我在学习VBA方面具有一些共同信心。
实际上,我已经编写了lisp来收集折线的坐标并存储在列表中。我正在通过VBA尝试同样的事情。
在VBA中,我已经到达了通过选择集收集折线的方法。现在我想要2个收集坐标。
感谢您的大力支持
,问候
维韦克

Bryco 发表于 2006-9-19 09:24:42

这只是一个名字,任何名字都会做。
使用亚利桑那州的选择集测试
修复你的代码 - grpCode(2)是没有好的
ctrl+g将打开你的即时窗口
调试.Print将打印到那个
(或使用当地人或观看窗口,如Kerry所说。
在下面添加。
Debug.Print ssetObj.count
ssetObj.Delete
ssetObj.Erase-将删除选择集中的项目-您不希望这样。
ssetObj.Delete-将删除选择集,而不是其中的项目。
现在,您可以使用 for 循环来处理 pline。
创建一个集合以添加坐标。
Dim CoordCol As Collection
Set CoordCol = New Collection
现在将您的光标放在 Collection 之后并点击 F1
,这将带您提供帮助
页: [1]
查看完整版本: VBA 中的查询