判断视口是否最大化
在布局视图中,命令VPMAX可以最大化视口,命令VPMIN可以返回视口。那有没有什么参数,或者其它什么办法,判断当前视口是否处于最大化状态?
还请高手帮忙,谢谢!
guosheyang 发表于 2021-12-27 10:36
(cdr(assoc 41(entget en))) 视口高度 或者宽度判断不了吗?
您这个办法,我不太会用,不太明白怎么判断最大化。
我本来的想法是如下面这段代码
(defun c:tt()
(cond
((= (getvar "tilemode") 1)(princ "目前是模型"))
((= 0 (getvar "VIEWBACKSTATUS"))(princ "目前视口最大化"))
((/= 1 (getvar "CVPORT"))(princ "视口已激活"))
(t (princ "没有激活的视口"))
)
(princ)
)
但是,第2种情况,判断最大化时,大多数情况并不成功,这个参数不合适。
您这个具体是怎么判断,能写成完整的功能吗? guosheyang 发表于 2021-12-27 10:50
先(car(entsel))获取视口的图元名 通过 (cdr(assoc 41(entget en)))获得视口高度值然后运行VPMAX 再次 ...
如果是在视口外面,进入时先查询高度,进入后再查询高度,如果不一致,就说明最大化了,运行返回命令。
这样实际就是,进去后又马上出来了,没有意义的。
实际情况下,大多数操作是,鼠标双击视口进入最大化视口,在里面各种操作,事情做完后,需要判断是否是最大化状态,如果是的话,就返回vpmin退出。
和你的那个操作逻辑还是有些不一样的。
本帖最后由 nyistjz 于 2021-12-28 09:16 编辑
masterlong 发表于 2021-12-27 21:38
如果有两个以上视口
倒是有个简单办法
n=(getvar "CVPORT")
虽然没有看的懂,但还是要感谢您的回复。
我看看,消化一下,试试能不能写成功。
其实我的根本就需求,就是在不需要考虑怎么视口最大化的前提下,能确认目前激活的视口是否为最大化,因为我的有些命令,需要只能在最大化的视口中使用,其它视口情况下无效。
由于本人水平有限,还处于比较初级的阶段,理解上很多时候还是不行的,让望大家见谅。
原视口 和最大化视口下,视口高度和宽度都是不一样的, 通过这个应该可以区别开来可以试试
(setq en(car(entsel)))
(setq skgd(cdr(assoc 41(entget en))));视口高度
(setq skkd(cdr(assoc 40(entget en))));视口宽度
本帖最后由 nyistjz 于 2021-12-27 10:10 编辑
guosheyang 发表于 2021-12-26 08:59
原视口 和最大化视口下,视口高度和宽度都是不一样的, 通过这个应该可以区别开来可以试试
(setq en(car( ...
您这个办法还是有缺陷的,最好是能有参数来查询这个是否最大化的状态。
选择对象为视口对象。 viewbackstatus,这个参数是有缺陷的,更多 时候是无效的。
需要再找其它的办法。
还请大家继续讨论,看有没有合适的解决办法。 (cdr(assoc 41(entget en))) 视口高度 或者宽度判断不了吗? 先(car(entsel))获取视口的图元名 通过 (cdr(assoc 41(entget en)))获得视口高度值然后运行VPMAX 再次运行(cdr(assoc 41(entget en)))获取视口高度值 对于同一视口 如果第二次获取的视口高度值大于第一次的高度值应该就是最大化状态 , 相反如果高度值减少了就是变成了最小化状态 个人觉得应该可以的 双击的时候 ,自动触发一个获取视口图框 图元名并根据图元名获取视口高度 保存下来的反应器 用于后续对比 判断这样也是个思路
页:
[1]
2