VLISP替代方案。我更喜欢这种方法,只是因为我注意到,如果在有几百层的图形中,你可以用vlax穿透层,速度比tblnext快。至少在我的经验中是这样的。
- (defun c:XT (/)
- (vlax-for layer (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
- (if (wcmatch (vla-get-name layer) "*|*")
- (vlax-put layer 'layeron (~ (vlax-get layer 'layeron)))
- )
- )
- (princ)
- )
- (vl-load-com)
- (princ)
然而,考虑到您真正想要的是什么,您不能真正地说外部参照处于打开或关闭状态,您只能检查外部参照层或组是否处于打开/关闭状态,从而提供所发布的切换例程,包括我自己的。现在,您可以只卸载外部参照,但这很耗时。
另一个更简单的选项是只有两个命令:一个打开所有外部参照图层,另一个关闭所有外部参照图层。我在启动misc宏等时会保留这些,它们有时很有用。
- (defun c:XN (/)
- ;; turn on all xref layers
- (vlax-for layer (vla-get-layers
- (cond (*AcadDoc*)
- ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
- )
- )
- (if (wcmatch (vla-get-name layer) "*|*")
- (vlax-put layer 'layeron 1)
- )
- )
- (princ)
- )
- (defun c:XF (/)
- ;; turn off all xref layers
- (vlax-for layer (vla-get-layers
- (cond (*AcadDoc*)
- ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
- )
- )
- (if (wcmatch (vla-get-name layer) "*|*")
- (vlax-put layer 'layeron 0)
- )
- )
- (princ)
- )
|