乐筑天下

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

[编程交流] Lee Mac lisp修改-Ke

[复制链接]

44

主题

542

帖子

502

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-5 16:18:55 | 显示全部楼层 |阅读模式
嗨,李和其他人,
 
关于李的密码https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/change-all-to-0-layer-by-layer-including-block-and-block-in/td-p/5376995
 
  1. (defun c:blkto0 ( / idx lst sel )
  2. (if (setq sel (ssget '((0 . "INSERT"))))
  3. (repeat (setq idx (sslength sel))
  4. (block->0 (cdr (assoc 2 (entget (ssname sel (setq idx (1- idx)))))))
  5. )
  6. )
  7. (command "_.regen")
  8. (princ)
  9. )
  10. (defun block->0 ( blk / ent enx )
  11. (cond
  12. ( (member blk lst))
  13. ( (setq ent (tblobjname "block" blk))
  14. (while (setq ent (entnext ent))
  15. (entmod (subst-append 8 "0" (subst-append 62 0 (setq enx (entget ent)))))
  16. (if (= "INSERT" (cdr (assoc 0 enx)))
  17. (block->0 (cdr (assoc 2 enx)))
  18. )
  19. )
  20. (setq lst (cons blk lst))
  21. )
  22. )
  23. )
  24. (defun subst-append ( key val lst / itm )
  25. (if (setq itm (assoc key lst))
  26. (subst (cons key val) itm lst)
  27. (append lst (list (cons key val)))
  28. )
  29. )

 
当图纸设置良好时,上述效果非常好,但不幸的是,许多建筑图纸都不符合要求。。。
 
是否可以对此进行修改,使其将所有块/嵌套块的颜色设置为如上所述的“按块”颜色,尽管这样块/嵌套块都保留其原始层(即不转到第0层等)?
 
谢谢
回复

使用道具 举报

44

主题

542

帖子

502

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-5 16:55:57 | 显示全部楼层
我解决了
 
删除图层更改部分(subst append 8“0”及其右括号完成!
 
  1. (defun c:blkto0 ( / idx lst sel )
  2. (if (setq sel (ssget '((0 . "INSERT"))))
  3. (repeat (setq idx (sslength sel))
  4. (block->0 (cdr (assoc 2 (entget (ssname sel (setq idx (1- idx)))))))
  5. )
  6. )
  7. (command "_.regen")
  8. (princ)
  9. )
  10. (defun block->0 ( blk / ent enx )
  11. (cond
  12. ( (member blk lst))
  13. ( (setq ent (tblobjname "block" blk))
  14. (while (setq ent (entnext ent))
  15. (entmod (subst-append 62 0 (setq enx (entget ent))))
  16. (if (= "INSERT" (cdr (assoc 0 enx)))
  17. (block->0 (cdr (assoc 2 enx)))
  18. )
  19. )
  20. (setq lst (cons blk lst))
  21. )
  22. )
  23. )
  24. (defun subst-append ( key val lst / itm )

 
谢谢你的Lisp程序。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:46:57 | 显示全部楼层
你的修改是正确的-做得好。
 
以下是带有适当缩进的代码:
  1. (defun c:blkto0 ( / idx lst sel )
  2.    (if (setq sel (ssget '((0 . "INSERT"))))
  3.        (repeat (setq idx (sslength sel))
  4.            (block->0 (cdr (assoc 2 (entget (ssname sel (setq idx (1- idx)))))))
  5.        )
  6.    )
  7.    (command "_.regen")
  8.    (princ)
  9. )
  10. (defun block->0 ( blk / ent enx )
  11.    (cond
  12.        (   (member blk lst))
  13.        (   (setq ent (tblobjname "block" blk))
  14.            (while (setq ent (entnext ent))
  15.                (entmod (subst-append 62 0 (setq enx (entget ent))))
  16.                (if (= "INSERT" (cdr (assoc 0 enx)))
  17.                    (block->0 (cdr (assoc 2 enx)))
  18.                )
  19.            )
  20.            (setq lst (cons blk lst))
  21.        )
  22.    )
  23. )
  24. (defun subst-append ( key val lst / itm )
  25.    (if (setq itm (assoc key lst))
  26.        (subst (cons key val) itm lst)
  27.        (append lst (list (cons key val)))
  28.    )
  29. )

 
我很高兴你发现这个程序很有用!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:09 , Processed in 0.357632 second(s), 58 queries .

© 2020-2025 乐筑天下

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