乐筑天下

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

[编程交流] 反转层过滤器开/关

[复制链接]

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:12:01 | 显示全部楼层
如果只想打开和关闭外部参照层,而与过滤器无关,那么我编写了代码(lisp而不是宏)和
如果您感兴趣,可以发布
回复

使用道具 举报

2

主题

84

帖子

83

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 07:14:12 | 显示全部楼层
谢谢塔瓦。是的,我很感兴趣。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:19:34 | 显示全部楼层
 
看看这个。
 
  1. (defun c:Xref-on-off (/ on_off l nm layers v e)
  2. ;;--- Tharwat 29. 04. 2013 ---;;
  3. ;; turn on / off xref layers  ;;
  4. (defun on_off (code ent)
  5.    (entmod (subst (cons 62 code) (assoc 62 ent) ent))
  6. )
  7. (while (setq l (tblnext "LAYER" (not l)))
  8.    (if (vl-string-search "|" (setq nm (cdr (assoc 2 l))))
  9.      (setq layers (cons nm layers))
  10.    )
  11. )
  12. (foreach layer layers
  13.    (if (minusp (setq v
  14.                       (cdr (assoc 62 (setq e (entget (tblobjname "LAYER" layer))))
  15.                       )
  16.                )
  17.        )
  18.      (on_off (abs v) e) (on_off (- v) e)
  19.    )
  20. )
  21. (princ)
  22. )
  23. (vl-load-com)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:21:29 | 显示全部楼层
或者简单地说:
  1. (defun c:xonoff ( / col def enx )
  2.    (while (setq def (tblnext "LAYER" (null def)))
  3.        (if (wcmatch (cdr (assoc 2 def)) "*|*")
  4.            (progn
  5.                (setq enx (entget (tblobjname "LAYER" (cdr (assoc 2 def))))
  6.                      col (assoc 62 enx)
  7.                )
  8.                (entmod (subst (cons 62 (- (cdr col))) col enx))
  9.            )
  10.        )
  11.    )
  12.    (princ)
  13. )
回复

使用道具 举报

2

主题

84

帖子

83

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 07:24:51 | 显示全部楼层
谢谢大家的努力!我只想能够关闭和打开图层属性管理器中的反转过滤器选项,而不是图层本身,但这似乎是不可能的。
回复

使用道具 举报

17

主题

193

帖子

179

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-6 07:28:00 | 显示全部楼层
这将是有用的!谢谢Tharwat和Leemac!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:30:11 | 显示全部楼层
 
很高兴听到这个
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:34:14 | 显示全部楼层
 
聪明的
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:36:23 | 显示全部楼层
干杯
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:40:43 | 显示全部楼层
VLISP替代方案。我更喜欢这种方法,只是因为我注意到,如果在有几百层的图形中,你可以用vlax穿透层,速度比tblnext快。至少在我的经验中是这样的。
 
  1. (defun c:XT (/)
  2. (vlax-for layer (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
  3.    (if (wcmatch (vla-get-name layer) "*|*")
  4.      (vlax-put layer 'layeron (~ (vlax-get layer 'layeron)))
  5.    )
  6. )
  7. (princ)
  8. )
  9. (vl-load-com)
  10. (princ)

 
然而,考虑到您真正想要的是什么,您不能真正地说外部参照处于打开或关闭状态,您只能检查外部参照层或组是否处于打开/关闭状态,从而提供所发布的切换例程,包括我自己的。现在,您可以只卸载外部参照,但这很耗时。
另一个更简单的选项是只有两个命令:一个打开所有外部参照图层,另一个关闭所有外部参照图层。我在启动misc宏等时会保留这些,它们有时很有用。
 
  1. (defun c:XN (/)
  2. ;; turn on all xref layers
  3. (vlax-for layer (vla-get-layers
  4.                    (cond (*AcadDoc*)
  5.                          ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  6.                    )
  7.                  )
  8.    (if (wcmatch (vla-get-name layer) "*|*")
  9.      (vlax-put layer 'layeron 1)
  10.    )
  11. )
  12. (princ)
  13. )
  14. (defun c:XF (/)
  15. ;; turn off all xref layers
  16. (vlax-for layer (vla-get-layers
  17.                    (cond (*AcadDoc*)
  18.                          ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  19.                    )
  20.                  )
  21.    (if (wcmatch (vla-get-name layer) "*|*")
  22.      (vlax-put layer 'layeron 0)
  23.    )
  24. )
  25. (princ)
  26. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 16:08 , Processed in 0.427404 second(s), 70 queries .

© 2020-2025 乐筑天下

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