乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 72|回复: 6

[编程交流] VBScript块属性错误

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 22:25:46 | 显示全部楼层 |阅读模式
大家好
 
我的VBScript在尝试读取块属性时遇到问题-错误消息不断指出第#34 chr#10行(800A01A8)需要一个对象。
有什么想法吗?。
提前谢谢。
 
DDD
 
 
  1. Dim fso
  2. Dim oFolder
  3. Dim colFiles
  4. Dim oFile
  5. Dim oAcad
  6. Dim pSpace
  7. Dim i
  8. Dim c
  9. Dim ent
  10. Dim varAtt
  11. Set fso = WScript.CreateObject("Scripting.FileSystemObject")
  12. If fso.FolderExists(WScript.Arguments(0)) Then
  13. Set oFolder = fso.GetFolder(WScript.Arguments(0))
  14. Set oAcad = CreateObject("AutoCAD.Application")
  15. oAcad.Visible = True
  16. Set colFiles = oFolder.Files
  17.    For each oFile in colFiles
  18.            if Right(oFile.Name, 3) = "dwg" Then
  19.        oAcad.Documents.Open oFile
  20.            Set doc = oAcad.ActiveDocument
  21.            Set pSpace = doc.PaperSpace
  22.            
  23.                For c = 0 To pSpace.Count -1
  24.                Set ent = pSpace.Item(c)
  25.                    If ent.EntityName = "AcDbBlockReference" Then  'LINE 30======
  26.                        If ent.HasAttributes Then
  27.                            varAtt = ent.GetAttributes   
  28.                                For i = LBound(varAtt) To UBound(varAtt)
  29.                                    If varAtt.Item(i).TagString = "TITLE1" Then
  30.                                        MsgBox varAtt.TegxtString
  31.                                    End If
  32.                                Next
  33.                        End If
  34.            
  35.                    End If
  36.                
  37.                Next
  38.        End If
  39.    Next
  40. End If
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 22:38:15 | 显示全部楼层
首先,欢迎来到论坛。
 
首先尝试删除第35行的拼写错误。
应为“MsgBox varAtt.TextString”
在第#33行插入一个中断,并检查varAtt的内容。varAtt似乎为空,因此出现错误消息。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 22:48:40 | 显示全部楼层
谢谢你的建议。
确实如此-我输入了错误的文本字符串。。。。
当你说“break”时,我假设你的意思是“Exit For”-问题是varAtt变量失去了它的值。。。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:02:50 | 显示全部楼层
我相信Tyke的意思是一个断点,比如,你可以检查varAtt的值。
 
也就是说,考虑到VBScript可以在记事本中编码,我不确定在哪个IDE中应用断点。。
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 23:10:03 | 显示全部楼层
 
RenderMan这两点都正确,谢谢你澄清这一点。
 
是否可以将“varAtt”的值打印到命令行?类似于调试。打印方法。我没有VBScript的任何经验。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 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公司
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:33:47 | 显示全部楼层
 
... 哦,是的,差点忘了一个。。。现在,Autodesk已将DesignScript添加到各种编程语言中。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 11:14 , Processed in 0.377178 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表