明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1569|回复: 2

[讨论] 怎样剔除viewport选择集多出的一个图纸空间

[复制链接]
发表于 2011-1-16 16:41 | 显示全部楼层 |阅读模式
各位大侠帮帮忙,这个程序折腾我好几天了!我想写一个lisp程序列出所有用户自己建立的view port的一些属性,比如layer和scale,但是运行结果却外加了一个AutoCAD自己建立的图纸空间本身。怎样才能判断一个view port是用户自己建立的还是AutoCAD建立的图纸空间本身啊?
以下是程序:

(defun c:listvp (/
  )
  (vl-load-com)
  (if (setq i  -1
     ss (ssget "_X" '((0 . "VIEWPORT")))
      )
    (while (setq ent (ssname ss (setq i (1+ i))))
      (vla-put-displaylocked
(vlax-ename->vla-object ent)
:vlax-true
      )
      (setq thelayer (vla-get-layer (vlax-ename->vla-object ent)))
      (setq thecustomscale
      (vla-get-customscale
        (vlax-ename->vla-object ent)
      )
      )
      (prompt (strcat "\nLayer: " thelayer))
      (prompt (strcat "\nCustomScale: " (rtos thecustomscale)))
    )
  )
  (princ)
)

运行结果:
Command: listvp
Layer: Layer1
CustomScale: 0.0100
Layer: Layer1
CustomScale: 0.0133
Layer: Layer1
CustomScale: 2.0693

运行完一次程序,zoom一下paper space,然后再运行一次,大家可以看到最后一个view port的scale发生改变。最后一个view port就是图纸空间本身。可我在程序中怎样才能剔除掉这个view port呢?
Command: listvp
Layer: Layer1
CustomScale: 0.0100
Layer: Layer1
CustomScale: 0.0133
Layer: Layer1
CustomScale: 0.5055

 楼主| 发表于 2011-1-18 12:23 | 显示全部楼层
ok, i got it. If the dxf group 69 of a viewport is equal to 1, it's paper space itself.
发表于 2013-9-3 16:27 | 显示全部楼层
(SETQ        SS
         (SSGET        "_x"
                (LIST '(0 . "VIEWPORT")
                      '(67 . 1)
                      '(69 . 1)
                      (CONS 410 (GETVAR "ctab"))
                )
         )
  )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 09:15 , Processed in 0.256486 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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