乐筑天下

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

[编程交流] Lisp替换属性blo

[复制链接]

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 20:20:04 | 显示全部楼层 |阅读模式
 
大家好,
 
有人知道Lisp用于用dwg许多文件替换文件夹的内部块。
 
例如:特定文件夹中有一个“n”文件,其中包含使用相同属性和标记的A3格式块,因此,如果有必要对此格式进行一点详细更正,则有必要对所有这些文件逐个进行替换。
 
提前感谢。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:31:32 | 显示全部楼层
为了明确起见,您希望用另一个块完全替换该块,但保留atribute值或仅更新块的各种属性。
 
第一步是在前后发布一个或两个dwg。
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 20:33:53 | 显示全部楼层
如果要保留所有属性值,那么很容易。
1)为新块创建Wblock。
2)将其保存在您常用的目录中(为方便起见)。
3.)将该目录路径添加到Autocad选项中的支持文件搜索路径。
4)只需确保新块和旧块的基点相同。
5.)创建脚本。
6.)安装script pro。
7.)运行script pro,选择图形和脚本,然后运行。
 
注:首先用1张图纸进行测试。
  1. CMDECHO
  2. 0
  3. ATTREQ
  4. 0
  5. -insert
  6. [color=red]YOUR_NEW_BLOCK_NAME[/color]
  7. 0,0,0
  8. 1.0
  9. 1.0
  10. 0.0
  11. -blockreplace
  12. [color=red]YOUR_OLD_BLOCK_NAME[/color]
  13. [color=red]YOUR_NEW_BLOCK_NAME[/color]
  14. y
  15. erase
  16. l
  17. zoom
  18. e
  19. CMDECHO
  20. 1
  21. ATTREQ
  22. 1
  23. ;

 
已经在200-600张图纸中进行了大约2年的此过程。
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 20:41:51 | 显示全部楼层
 
Bigal,最好的方法是保留所有dwg文件的属性值,因为每个页面都有特定的标题或特定的细节。更改/更正块后,它将在该文件夹中的所有文件中替换为您以前的信息。
 
谢谢
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 20:47:33 | 显示全部楼层
 
 
谢谢你,我会试试的!。。。
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 20:54:09 | 显示全部楼层
 
不客气。
回复

使用道具 举报

28

主题

118

帖子

95

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2022-7-5 20:56:41 | 显示全部楼层
我用这个,李麦克-作品每一次!
 
谢谢李。
 
  1. ;-----------------------------------------------------------------------------------------------------------------
  2. ;http://www.cadtutor.net/forum/archive/index.php/t-52973.html
  3. ;-----------------------------------------------------------------------------------------
  4. (defun ReDef (block / *error* oc spc doc block)
  5. (vl-load-com)
  6. ;; © Lee Mac 2010
  7. (defun *error* (msg)
  8.    (and oc (setvar 'CMDECHO oc))
  9.    (or        (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  10. (princ (strcat "\n** Error: " msg " **"))
  11.    )
  12.    (princ)
  13. )
  14. (setq        spc
  15. (if
  16.    (or
  17.      (eq AcModelSpace
  18.          (vla-get-ActiveSpace
  19.            (setq doc
  20.                   (vla-get-ActiveDocument
  21.                     (vlax-get-acad-object)
  22.                   )
  23.            )
  24.          )
  25.      )
  26.      (eq :vlax-true (vla-get-MSpace doc))
  27.    )
  28.     (vla-get-ModelSpace doc)
  29.     (vla-get-PaperSpace doc)
  30. )
  31. )
  32. (setq oc (getvar 'CMDECHO))
  33. (setvar 'CMDECHO 0)
  34. (if (setq block (findfile block))
  35.    (progn
  36.      (vla-delete
  37. (vla-insertblock
  38.   spc
  39.   (vlax-3D-point '(0. 0. 0.))
  40.   block
  41.   1.
  42.   1.
  43.   1.
  44.   0.
  45. )
  46.      )
  47.      (vl-cmdf "_.attsync" "_N" (vl-filename-base block))
  48.    )
  49. )
  50. (setvar 'CMDECHO oc)
  51. (princ)
  52. )
  53. ;;Call like this:
  54. ;;(Redef "C:\\MyFolder\\MyBlock.dwg")
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 21:07:27 | 显示全部楼层
我也使用了上面李的LISP,但是我认为,它只适用于你的新的和旧的块共享相同的名称。
我认为,重新定义和替换是两个不同的术语。
回复

使用道具 举报

28

主题

118

帖子

95

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2022-7-5 21:09:24 | 显示全部楼层
 
对不起,我没有看完整条线索。
 
给自己的提示:始终阅读线程!
 
干杯
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 21:17:29 | 显示全部楼层
你不必道歉,我的朋友,你发的帖子没有问题,我只解释李Lisp程序的用法。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 08:57 , Processed in 0.979400 second(s), 72 queries .

© 2020-2025 乐筑天下

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