明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2006|回复: 14

[提问] 请教视口的显示锁定和打开用一个命令循环切换怎么实现?

[复制链接]
发表于 2019-12-11 10:48:02 | 显示全部楼层 |阅读模式
现在用两个命令能实现,能否用一个命令循环切换视口的锁定开关呢?

;;;图纸空间锁定视图
(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))


发表于 2019-12-12 19:55:12 | 显示全部楼层
如果对布局中所有视口(自己还有点没想明白,不过结果是没问题的),如下:
  1. (defun c:vssa (/ name lock)
  2.   (vlax-for item
  3.                  (vlax-get-property
  4.                    (vlax-get-property
  5.                      (vlax-get-acad-object)
  6.                      "activedocument"
  7.                    )
  8.                    "PaperSpace"
  9.                  )
  10.     (setq name (vlax-get-property item "ObjectName"))
  11.     (if        (= name "AcDbViewport")
  12.       (progn (setq lock (vlax-get-property item "displaylocked"))
  13.              (if (= lock :vlax-false)
  14.                (vlax-put-property item "displaylocked" :vlax-true)
  15.                (vlax-put-property item "displaylocked" :vlax-false)
  16.              )
  17.       )
  18.     )
  19.   )
  20. (princ)
  21. )
回复 支持 1 反对 0

使用道具 举报

发表于 2019-12-12 19:02:56 | 显示全部楼层
试试
  1. (defun c:vss (/ obj lock)
  2.   (setq        obj  (vlax-ename->vla-object
  3.                (ssname (ssget ":e:s" '((0 . "viewport"))) 0)
  4.              )
  5.         lock (vlax-get-property obj "displaylocked")
  6.   )
  7.   (if (= lock :vlax-false)
  8.     (progn (vlax-put-property obj "displaylocked" :vlax-true)
  9.            (alert "未锁变锁")
  10.     )
  11.     (progn (vlax-put-property obj "displaylocked" :vlax-false)
  12.            (alert "锁变未锁")
  13.     )
  14.   )
  15.   (princ)
  16. )

点评

非常感谢,完美解决了,还贴心的加上了弹窗提示。  发表于 2019-12-12 19:35

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
andyzha + 1 + 5 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-12-11 18:02:12 | 显示全部楼层
期待大神出手修改一下
 楼主| 发表于 2019-12-12 19:36:23 | 显示全部楼层
很完美,加弹窗提示更加清晰锁定状态。
 楼主| 发表于 2019-12-12 20:55:54 | 显示全部楼层
x_s_s_1 发表于 2019-12-12 19:55
如果对布局中所有视口(自己还有点没想明白,不过结果是没问题的),如下:

多谢考虑如此周全,主要是总需要用布局出图,总会反复修改视口,而且不希望用两个快捷键来回解锁和锁定,你的lisp完美的解决了这个问题。再次感谢
发表于 2019-12-14 11:08:27 | 显示全部楼层
统一命令看似好其实没效率,比如你不知道这个视口是锁了还是开了,统一命令之后你是开了还是锁上了?你自己还要手动去验证,分开命令就可以明确的知道是全开还是全锁,随心所欲
发表于 2019-12-14 11:51:31 | 显示全部楼层
建议分开,视口锁定与视口解锁两个功能,方便实用。
如果再写个视口开/关来缓解视口多会卡,或者视口隔离(除选中视口外,其他视口关闭),视口恢复(打开所有视口,仅此布局选项卡)
 楼主| 发表于 2019-12-14 16:30:00 | 显示全部楼层
start4444 发表于 2019-12-14 11:08
统一命令看似好其实没效率,比如你不知道这个视口是锁了还是开了,统一命令之后你是开了还是锁上了?你自己 ...

判断视口是否锁定很简单,双击视口进去滚轮缩放一下就知道了,合并命令主要是为了不想设置过多快捷键,基本上cad都是键盘快捷键驱动命令行,所以太多了记不住,也容易混淆。力求CAD绘图界面除了图层面板不关,其他的全部关闭。
发表于 2019-12-18 09:45:26 | 显示全部楼层
判断视口是否锁定可以在视口线上,以颜色区分
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 21:42 , Processed in 0.168052 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表