明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1639|回复: 17

[提问] 判断视口是否最大化

[复制链接]
发表于 2021-12-25 17:30:03 | 显示全部楼层 |阅读模式
在布局视图中,命令VPMAX可以最大化视口,命令VPMIN可以返回视口。
那有没有什么参数,或者其它什么办法,判断当前视口是否处于最大化状态?

还请高手帮忙,谢谢!
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2021-12-27 10:43:14 | 显示全部楼层
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种情况,判断最大化时,大多数情况并不成功,这个参数不合适。

您这个具体是怎么判断,能写成完整的功能吗?
 楼主| 发表于 2021-12-27 11:01:04 | 显示全部楼层
guosheyang 发表于 2021-12-27 10:50
先(car(entsel))获取视口的图元名 通过 (cdr(assoc 41(entget en)))获得视口高度值  然后运行VPMAX   再次 ...

如果是在视口外面,进入时先查询高度,进入后再查询高度,如果不一致,就说明最大化了,运行返回命令。
这样实际就是,进去后又马上出来了,没有意义的。

实际情况下,大多数操作是,鼠标双击视口进入最大化视口,在里面各种操作,事情做完后,需要判断是否是最大化状态,如果是的话,就返回vpmin退出。

和你的那个操作逻辑还是有些不一样的。
 楼主| 发表于 2021-12-28 09:08:06 | 显示全部楼层
本帖最后由 nyistjz 于 2021-12-28 09:16 编辑
masterlong 发表于 2021-12-27 21:38
如果有两个以上视口
倒是有个简单办法
n=(getvar "CVPORT")

虽然没有看的懂,但还是要感谢您的回复。
我看看,消化一下,试试能不能写成功。

其实我的根本就需求,就是在不需要考虑怎么视口最大化的前提下,能确认目前激活的视口是否为最大化,因为我的有些命令,需要只能在最大化的视口中使用,其它视口情况下无效。

由于本人水平有限,还处于比较初级的阶段,理解上很多时候还是不行的,让望大家见谅。

发表于 2021-12-26 08:59:25 | 显示全部楼层
原视口 和最大化视口下,视口高度和宽度都是不一样的, 通过这个应该可以区别开来  可以试试
(setq en(car(entsel)))
(setq skgd(cdr(assoc 41(entget en))));视口高度
(setq skkd(cdr(assoc 40(entget en))));视口宽度
 楼主| 发表于 2021-12-26 09:33:17 | 显示全部楼层
本帖最后由 nyistjz 于 2021-12-27 10:10 编辑
guosheyang 发表于 2021-12-26 08:59
原视口 和最大化视口下,视口高度和宽度都是不一样的, 通过这个应该可以区别开来  可以试试
(setq en(car( ...

您这个办法还是有缺陷的,最好是能有参数来查询这个是否最大化的状态。

发表于 2021-12-26 09:40:44 | 显示全部楼层
选择对象为视口对象。
 楼主| 发表于 2021-12-27 10:08:20 | 显示全部楼层
viewbackstatus,这个参数是有缺陷的,更多 时候是无效的。
需要再找其它的办法。

还请大家继续讨论,看有没有合适的解决办法。
发表于 2021-12-27 10:36:57 | 显示全部楼层
(cdr(assoc 41(entget en))) 视口高度 或者宽度  判断不了吗?
发表于 2021-12-27 10:50:49 | 显示全部楼层
先(car(entsel))获取视口的图元名 通过 (cdr(assoc 41(entget en)))获得视口高度值  然后运行VPMAX   再次运行(cdr(assoc 41(entget en)))获取视口高度值   对于同一视口   如果第二次获取的视口高度值大于第一次的高度值  应该就是最大化状态 , 相反如果高度值减少了  就是变成了最小化状态   个人觉得应该可以的
发表于 2021-12-27 11:20:42 | 显示全部楼层
双击的时候 ,自动触发一个获取视口图框 图元名  并根据图元名  获取视口高度 保存下来的反应器    用于后续对比 判断  这样也是个思路   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-16 05:12 , Processed in 0.168476 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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