怎样剔除viewport选择集多出的一个图纸空间
各位大侠帮帮忙,这个程序折腾我好几天了!我想写一个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
ok, i got it. If the dxf group 69 of a viewport is equal to 1, it's paper space itself. (SETQ SS
(SSGET "_x"
(LIST '(0 . "VIEWPORT")
'(67 . 1)
'(69 . 1)
(CONS 410 (GETVAR "ctab"))
)
)
)
页:
[1]