请教视口的显示锁定和打开用一个命令循环切换怎么实现?
现在用两个命令能实现,能否用一个命令循环切换视口的锁定开关呢?;;;图纸空间锁定视图
(DEFUN c:sd ()
(setvar "cmdecho" 0)
(command "mview" "l" "on" "all" "")
(princ)
)
;;;图纸空间解锁视图
(DEFUN c:kf ()
(setvar "cmdecho" 0)
(command "mview" "l" "off" "all" "")
(princ)
)
有点类似切换是否显示菜单栏这个lisp:
(defun c:AA ()
(if (= 0 (getvar "menubar"))
(command "menubar" 1)
(command "menubar" 0))
(princ))
如果对布局中所有视口(自己还有点没想明白,不过结果是没问题的),如下:
(defun c:vssa (/ name lock)
(vlax-for item
(vlax-get-property
(vlax-get-property
(vlax-get-acad-object)
"activedocument"
)
"PaperSpace"
)
(setq name (vlax-get-property item "ObjectName"))
(if (= name "AcDbViewport")
(progn (setq lock (vlax-get-property item "displaylocked"))
(if (= lock :vlax-false)
(vlax-put-property item "displaylocked" :vlax-true)
(vlax-put-property item "displaylocked" :vlax-false)
)
)
)
)
(princ)
) 试试(defun c:vss (/ obj lock)
(setq obj(vlax-ename->vla-object
(ssname (ssget ":e:s" '((0 . "viewport"))) 0)
)
lock (vlax-get-property obj "displaylocked")
)
(if (= lock :vlax-false)
(progn (vlax-put-property obj "displaylocked" :vlax-true)
(alert "未锁变锁")
)
(progn (vlax-put-property obj "displaylocked" :vlax-false)
(alert "锁变未锁")
)
)
(princ)
) 期待大神出手修改一下 很完美,加弹窗提示更加清晰锁定状态。 x_s_s_1 发表于 2019-12-12 19:55
如果对布局中所有视口(自己还有点没想明白,不过结果是没问题的),如下:
多谢考虑如此周全,主要是总需要用布局出图,总会反复修改视口,而且不希望用两个快捷键来回解锁和锁定,你的lisp完美的解决了这个问题。再次感谢 统一命令看似好其实没效率,比如你不知道这个视口是锁了还是开了,统一命令之后你是开了还是锁上了?你自己还要手动去验证,分开命令就可以明确的知道是全开还是全锁,随心所欲 建议分开,视口锁定与视口解锁两个功能,方便实用。
如果再写个视口开/关来缓解视口多会卡,或者视口隔离(除选中视口外,其他视口关闭),视口恢复(打开所有视口,仅此布局选项卡) start4444 发表于 2019-12-14 11:08
统一命令看似好其实没效率,比如你不知道这个视口是锁了还是开了,统一命令之后你是开了还是锁上了?你自己 ...
判断视口是否锁定很简单,双击视口进去滚轮缩放一下就知道了,合并命令主要是为了不想设置过多快捷键,基本上cad都是键盘快捷键驱动命令行,所以太多了记不住,也容易混淆。力求CAD绘图界面除了图层面板不关,其他的全部关闭。 判断视口是否锁定可以在视口线上,以颜色区分
页:
[1]
2