乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 50|回复: 11

[编程交流] cvport变量问题

[复制链接]

15

主题

71

帖子

56

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 16:21:07 | 显示全部楼层 |阅读模式
我正在绘制一个只有两个视口的图形,因此cvport对于paperspace窗口应为1,对于第一个视口应为2,对于第二个视口应为3,但最后一个视口为4。当我尝试转到cvport 3时,它显示输入无效。当我输入(length(vports))时,它返回一个3。
 
你知道这是为什么吗?还有什么方法可以纠正吗?
 
它搞乱了我的一个脚本,该脚本执行一个函数,并在所有视口完成后退出,因此它在退出时没有执行第二个视口,即cvport#3。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:30:55 | 显示全部楼层
我认为模型空间本身被视为CVPORT列表的“视口”条目,如果这有帮助的话。
回复

使用道具 举报

15

主题

71

帖子

56

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 16:34:10 | 显示全部楼层
当您在模型中的线(长度(Vport))为1时,它确实返回一个整数,但这并不影响视口设置为cvport的数量。此外,这是我在这一期中看到的唯一一幅图画。具有典型的一个模型选项卡和一个布局选项卡的每个其他图形都会正确返回数字。有一个命名视图,我将其删除,关闭并重新打开图形,但数字仍然相同。
回复

使用道具 举报

15

主题

71

帖子

56

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 16:39:13 | 显示全部楼层
是否有可以看到错误的if语句?
 
例如,当我将cvport更改为3时,如果返回错误,请转到cvport 4?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:46:11 | 显示全部楼层
CVPORT只是通过其各自的标识号在视口之间切换,因此如果创建两个视口,您将得到如下结果:
 
  1. ((1 (blah blah)) (2 (blah blah)) (3 (blah blah)))

 
但是,如果现在删除一个视口并创建另一个视口,则会出现以下情况:
 
  1. ((1 (blah blah)) (2 (blah blah)) (4 (blah blah)))

 
所以,你可以看到为什么数字会不同
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:52:39 | 显示全部楼层
至于使用CVPORT变量进行切换,不确定是否可以使用以下内容:
 
  1. (foreach v (vports)
  2. (setvar "CVPORT" (car v))
  3. do something here
  4. )
回复

使用道具 举报

15

主题

71

帖子

56

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 16:58:38 | 显示全部楼层
当图形保持打开状态时,删除的视口的cvport不再有效,但当图形关闭并重新打开时,编号系统会自行重置。因此视口编号将是2 3和4,而不是2 3和5。
回复

使用道具 举报

15

主题

71

帖子

56

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 17:03:14 | 显示全部楼层
我发现了问题。该布局选项卡中有其他已关闭的视口。他们没有给(length(vports))添加值,但为变量“cvport”保留了一个插槽。视口与外部边界匹配,外部边界为白色,因此不可见。我假设在创建图形集时,该用户将标题栏从一个图形复制到另一个图形,但将视口带到了一起。擦除视口修复了该问题。
 
有没有办法在当前布局选项卡中找到所有关闭的视口并将其删除(以避免将来出现类似情况)?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:09:07 | 显示全部楼层
这应该可以做到:
 
  1. (defun c:test (/ ss)
  2. (if (setq ss (ssget "X" (list (cons 0 "VIEWPORT")
  3.    (if (getvar "CTAB")(cons 410 (getvar "CTAB"))
  4.       (cons 67 (- 1 (getvar "TILEMODE")))))))
  5.    (progn
  6.      (foreach Obj (mapcar 'vlax-ename->vla-object
  7.               (mapcar 'cadr
  8.                   (ssnamex ss)))
  9.      (if (eq :vlax-false (vla-get-ViewportOn Obj))
  10.    (if (vl-catch-all-error-p
  11.          (vl-catch-all-apply
  12.        'vla-delete (list Obj)))
  13.      (princ "\n<!> Object on Locked Layer <!>")))))
  14.    (princ "\n<!> No Viewports Found <!>"))
  15. (princ))
回复

使用道具 举报

8

主题

24

帖子

16

银币

初来乍到

Rank: 1

铜币
41
发表于 2022-7-5 17:12:29 | 显示全部楼层
一个旧职位,但。。。。。。。
 
 
我正在搜索一个简单的lisp来检查布局中关闭的任何视口。我通过搜索找到了这个帖子。我用if语句对其进行了一些修改,以查看是否有任何视口被关闭。它可以工作,但我相信它可以改进,还希望收到一条消息,通知所有视口都打开了。
 
 
  1. (defun c:test (/ ss dfg)
  2. (if (setq ss (ssget "X" (list (cons 0 "VIEWPORT")
  3. (if (getvar "CTAB")(cons 410 (getvar "CTAB"))
  4. (cons 67 (- 1 (getvar "TILEMODE")))))))
  5. (progn
  6. (foreach Obj (mapcar 'vlax-ename->vla-object
  7. (mapcar 'cadr
  8. (ssnamex ss)))
  9. (if (eq :vlax-false (vla-get-ViewportOn Obj))
  10. (setq dfg T)
  11. (if (= dfg T)
  12. (alert "WARNING! Some or ALL Viewports are turned OFF!"))
  13. )))
  14. )
  15. (princ))

 
 
谢谢你的帮助。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 18:29 , Processed in 2.980599 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表