SuperDDD 发表于 2022-7-6 22:25:46

VBScript块属性错误

大家好
 
我的VBScript在尝试读取块属性时遇到问题-错误消息不断指出第#34 chr#10行(800A01A8)需要一个对象。
有什么想法吗?。
提前谢谢。
 
DDD
 
 

Dim fso
Dim oFolder
Dim colFiles
Dim oFile
Dim oAcad
Dim pSpace
Dim i
Dim c
Dim ent
Dim varAtt


Set fso = WScript.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(WScript.Arguments(0)) Then
Set oFolder = fso.GetFolder(WScript.Arguments(0))

Set oAcad = CreateObject("AutoCAD.Application")
oAcad.Visible = True

Set colFiles = oFolder.Files
   For each oFile in colFiles
         if Right(oFile.Name, 3) = "dwg" Then
       oAcad.Documents.Open oFile

         Set doc = oAcad.ActiveDocument
         Set pSpace = doc.PaperSpace
         
               For c = 0 To pSpace.Count -1
               Set ent = pSpace.Item(c)
                   If ent.EntityName = "AcDbBlockReference" Then'LINE 30======
                     If ent.HasAttributes Then
                           varAtt = ent.GetAttributes   
                               For i = LBound(varAtt) To UBound(varAtt)
                                 If varAtt.Item(i).TagString = "TITLE1" Then
                                       MsgBox varAtt.TegxtString
                                 End If
                               Next

                     End If
         
                   End If
               
               Next
       End If
   Next
End If


Tyke 发表于 2022-7-6 22:38:15

首先,欢迎来到论坛。
 
首先尝试删除第35行的拼写错误。
应为“MsgBox varAtt.TextString”
在第#33行插入一个中断,并检查varAtt的内容。varAtt似乎为空,因此出现错误消息。

SuperDDD 发表于 2022-7-6 22:48:40

谢谢你的建议。
确实如此-我输入了错误的文本字符串。。。。
当你说“break”时,我假设你的意思是“Exit For”-问题是varAtt变量失去了它的值。。。

BlackBox 发表于 2022-7-6 23:02:50

我相信Tyke的意思是一个断点,比如,你可以检查varAtt的值。
 
也就是说,考虑到VBScript可以在记事本中编码,我不确定在哪个IDE中应用断点。。

Tyke 发表于 2022-7-6 23:10:03

 
RenderMan这两点都正确,谢谢你澄清这一点。
 
是否可以将“varAtt”的值打印到命令行?类似于调试。打印方法。我没有VBScript的任何经验。

BlackBox 发表于 2022-7-6 23:19:52

 
别担心;很乐意帮忙。
 
FWIW-这一直是一个在我的建议框中烧个洞的话题。。。特别是将VBA/VBScript与隔离。NET(甚至可能是ARX?)进入不同的论坛。我不知道有多少次我在一个操作结束时才意识到这是一个关于VBA的帮助请求,我只是比较熟练(我直接从Visual LISP跳到.NET)。
 
 
不确定如何调试。打印,但我知道MsgBox函数运行良好。
 
 
另外,我似乎错了。。。在快速搜索如何调试VBScript之后,显然可以使用Visual Studio作为IDE(oops!)。
 
该线程非常清楚地说明了如何使用Visual Studio 2010进行调试(请参阅OP下面的两个帖子标记作为答案)。这篇文章提供了另一种可能对OP有所帮助的选择。
 
HTH公司

BlackBox 发表于 2022-7-6 23:33:47

 
... 哦,是的,差点忘了一个。。。现在,Autodesk已将DesignScript添加到各种编程语言中。
页: [1]
查看完整版本: VBScript块属性错误