entsel过滤器
你好我想使用:
(setqenaPline (car (entsel "\nSelect paperspace Viewport: ")))
(setq VpScaleRatio(vla-get-customscale (vlax-ename->vla-object enaPline)))
然而,为了找到视口的自定义比例,如果我创建视口,我不能使用上面的代码
“mview”然后“object”(换句话说,从pline生成视口)
我认为这是因为视口也是“多段线”和“视口”。
所以我想解决这个问题的方法是使用entsel制作一个过滤器,
因此,仅选择视口而不是多段线。
有没有一种方法可以使用entsel制作一个过滤器(仅用于“视口”)呢?
谢谢 某种程度上。仍然有两个实体,但它们有点“联系”在一起。通过使用LIST命令可以看到这一点。
你可以这样做。
(if (setq ss (ssget '((0 . "VIEWPORT"))))
(setq obj (ssname ss 0))
(setq obj nil)
)
您应该查看我的AT:Entsel子例程。它提供了ssget中dxf过滤的几乎所有功能,可以忽略锁定层,转换为vla对象,选择主对象或嵌套对象,并接受关键字。
链接:http://www.cadtutor.net/forum/showpost.php?p=271389&postcount=26
这有什么帮助?
我试着这样使用它:
(AT:Entsel nil nil '("LV" (0 . "VIEWPORT")) nil)
...我一直在说“不,继续努力!”
谢谢 它是锁定的还是多段线(剪裁的视口)?对我来说很好:
Command: (AT:Entsel nil nil '("LV" (0 . "VIEWPORT")) nil)
Select object: #<VLA-OBJECT IAcadPViewport2 21612944>
我一直在使用这个程序,我无法想象为什么它不适合你。
还有一种方法
(while (not (and (setq entVport (entsel "\nSelect paperspace Viewport: "))
(eq "VIEWPORT" (cdr (assoc 0 (entget (setqenaPline (car entVport))))))))
(princ "\n\t\t>>>\tSelected is not a Viewport, try again\t<<<"))
在:Entsel:
(and (setq ent (car (entsel)))
(setq vp (cdr (assoc 330 (entget ent))))
)
不完美,我仍然会检查assoc 330是否匹配(0。“视口”) 尤里卡-我现在有了非常感谢
(and (setq ent (car (at:entsel nil nil '((0 . "LWPOLYLINE")(102 . "{ACAD_REACTORS")) nil)))
(setq vp (cdr (assoc 330 (entget ent))))
)
或
(if (setq ss (ssget ":s" '((0 . "viewport"))))
(setq enname (ssname ss 0))
(setq enname nil)
)
(setq VptObj (vlax-ename->vla-object enname ))
(setq VpScaleRatio(vla-get-customscale VptObj))
顺便说一句,如果您的对象不是视口,那么在尝试将nil转换为vla对象时会出错。
页:
[1]
2