乐筑天下

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

[编程交流] 将属性数据块复制到

[复制链接]

2

主题

18

帖子

16

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:53:44 | 显示全部楼层 |阅读模式
你好
在autocad工作了几年后,我从未真正对lisps有过那么多的了解。
然而,我意识到我应该朝着这个方向迈出第一步。
因此,我寻求帮助!!
问题是:
我进入了一个新的位置,他们正在使用一个基本的模板。
它几乎是一个A4、A3和A1标题栏,在不同的版面上都具有相同的属性。
所有者:xxxx
位置:YYYY
图纸编号:ZZZZ
等等等等
似乎有点老派,我想建立一个SSM或其他这样的方法,以便于在未来使用。但我目前的问题是,是否可以编辑A4块并相应地更新所有布局?
实现这一点的最佳方法是什么。
干杯
回复

使用道具 举报

2

主题

18

帖子

16

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:59:02 | 显示全部楼层
我知道这很琐碎,但如果我不需要手动操作就可以完成,那就太好了,省得我多次打字,这就是我现在正在做的。
也许我应该看看如何将标题栏链接到电子表格!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:02:08 | 显示全部楼层
您可以使用属性创建顺序创建一个通用lisp,该lisp将处理任何块,然后您只需输入值属性顺序,lisp就会找到所有发生的情况。
 
以下示例将更新dwg中某个属性的每个标题栏。
 
  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)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:07:21 | 显示全部楼层
下面是另一个示例,演示如何在布局之间同步属性值:
上述程序使用我的属性函数库中的函数。
 
代码当前将迭代驻留在除当前布局之外的布局中的所有属性块,并使用与所选源块中找到的标记匹配的标记填充所有属性;因此,通过在ssget过滤器列表中包含块名过滤器,可以提高程序的效率,但是,我不知道您正在使用的块名,因此将其保留为通用。
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:08:46 | 显示全部楼层
另一种方法是,如果你有XXXX-yyyy-ZZZZ,只需使用FIND,它将替换手边的每个事件,如果你拼写了wromng。
回复

使用道具 举报

17

主题

193

帖子

179

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-5 20:13:45 | 显示全部楼层
我觉得这篇文章很有用,李的代码也很管用
但是,如果我有两个属性标记,一个为空,另一个有值,它将填充这两个标记
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:16:42 | 显示全部楼层
 
两个属性在块中是否具有相同的标记名?
回复

使用道具 举报

17

主题

193

帖子

179

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-5 20:18:38 | 显示全部楼层
 
是的,李。
 
我编辑块并更改其标记名。
 
现在工作正常。
谢谢!这将非常有用
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:24:11 | 显示全部楼层
不客气!
 
为了便于将来参考,我始终强烈建议不要使用重复的属性标记,因为属性标记用于区分块所持有的属性-对于重复的属性标记,任何程序都必须仅依赖于在块内遇到属性的顺序。
 
回复

使用道具 举报

2

主题

18

帖子

16

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:27:41 | 显示全部楼层
谢谢盖伊,我已经运行了李的代码和它的要求选择块。我选择A4模板(包含我要复制的值)
 
命令:
ATTSYNC
输入选项[?/Name/Select]:
选择块:
ATTSYNC块A4模板23-6-08?[是/否]:
ATTSYNC完成。
 
 
此时lsp breaksdown返回:
ATTSYNC块A4模板23-6-08?[是/否]:
ATTSYNC完成。
 

"
我不知道您使用的块名,所以将其保留为通用名称。
"
 
多亏了你的lsp第一部分,我成功了得到了完整的名单
A4模板23-6-08、A3模板23-6-08、A1模板23-6-08、现场设计模板26-6-08
 
我会在白天做一些家庭作业,我很感激!看我是不是想不出来,我还有希望!
 
当做
绿色用户
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 00:44 , Processed in 0.777617 second(s), 72 queries .

© 2020-2025 乐筑天下

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