乐筑天下

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

[编程交流] 获取最新图纸版本bl

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:38:21 | 显示全部楼层 |阅读模式
大家好,这是我的第一篇帖子,如果我违反了论坛的任何规则,我很抱歉。我感谢你的帮助!
 
我正试图编写一个脚本,从我们的图纸中获取最新版本号,然后将该信息保存到文本或CSV文件中。每个图形都有一个修订块,如下面标记的图像。在LISP中我该怎么做?
 
谢谢
 
183822wxsx52z3p0zo2vno.jpg
回复

使用道具 举报

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 17:55:47 | 显示全部楼层
欢迎来到论坛,我的朋友。感谢上帝,我们社区里有李这样的人。你不需要重新发明轮子,因为李已经完成了这类任务。使用Lee Mac的全局属性提取器和编辑器lisp(使用此lisp,您可以要求从一堆图形中提取某些属性-不一定是所有标记),然后它将在CSV文件中显示最终结果。
 
工藤敬李
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:08:20 | 显示全部楼层
这是一个类似的示例,演示了如何根据标记名更改属性值,但可以使用GET而不是PUT,并将值写入csv
 
  1. ; changes to issued for construction
  2. : thanks to lee mac for original code
  3. (vl-load-com)
  4. ; 1.  Get current date in mm/dd/yy format.
  5. (defun ddmmyy (/ x today)
  6.     (setvar "cmdecho" 0)
  7.     (setq x (getvar "CDATE"))                 ; get current date
  8.     (setq today ( rtos x 2 4))                    ; convert to a string
  9.     (setq date (strcat (substr today 7 2) "."    (substr today 5 2) "." (substr today 3 2) ))
  10. )
  11. (setq oldtag1 "DRAWING_STATUS") ;attribute tag name
  12. (setq newstr1 "ISSUED FOR CONSTRUCTION")
  13. (setq oldtag2 "REV_NO")  ;attribute tag name
  14. (setq newstr2 "0")
  15. (setq ss1 (ssget "x"  '((0 . "INSERT") (2 . "DA1DRTXT"))))
  16. (setq inc (sslength ss1))
  17. (repeat inc      
  18. (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 (setq inc (1- inc)) )) 'getattributes)
  19. (if (= oldtag1 (strcase (vla-get-tagstring att)))
  20. (vla-put-textstring att newstr1)
  21. ) ; end if
  22. (if (= oldtag2 (strcase (vla-get-tagstring att)))
  23. (vla-put-textstring att newstr2)
  24. ) ; end if
  25. ) ; end for
  26. ) ;end repeat
  27. (setq oldtag1 "REV-NO")
  28. (setq newstr1 "0")
  29. (ddmmyy)
  30. (setq oldtag2 "DATE")
  31. (setq newstr2 date)
  32. (setq oldtag3 "AMENDMENT")
  33. (setq newstr3 "ISSUED FOR CONSTRUCTION")
  34. (setq ss2 (ssget "x"  '((0 . "INSERT") (2 . "REVTABLE"))))
  35. (setq inc (sslength ss2))
  36. (repeat inc
  37. (foreach att (vlax-invoke (vlax-ename->vla-object (ssname ss2 (setq inc (1- inc)))) 'getattributes)
  38. (if (= oldtag1 (strcase (vla-get-tagstring att)))
  39. (vla-put-textstring att newstr1)
  40. )
  41. (if (= oldtag2 (strcase (vla-get-tagstring att)))
  42. (vla-put-textstring att newstr2)
  43. )
  44. (if (= oldtag3 (strcase (vla-get-tagstring att)))
  45. (vla-put-textstring att newstr3)
  46. )
  47. )
  48. )
  49. (setq ss1 nil)
  50. ; (setq ss2 nil)
  51. (princ)
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:24:10 | 显示全部楼层
谢谢巴巴吉!我已经下载并运行了脚本。我可以很好地使用编辑器,但当我在名为revision\u text的原始屏幕截图中的块上使用它时,提取器会给我一个错误:
 
  1. bad argument type: VLA-OBJECT nil

 
我注意到,如果我编一个随机块名,我不会得到错误,它只会返回什么。那个街区有什么不对劲吗?
回复

使用道具 举报

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 18:31:58 | 显示全部楼层
 
你能和我们一起住吗?
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:49:39 | 显示全部楼层
实际上,我已经非常接近使用DATAEXTRACTION命令所需的功能。它将我的revision_文本块的内容输出到电子表格。我只需要添加一个文件名或其他东西,这样我就可以将每一行关联到它的绘图文件。知道怎么做吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:37 , Processed in 1.684684 second(s), 67 queries .

© 2020-2025 乐筑天下

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