AutoLISP锁定视口,ch
首先,我要说的是,我根本没有AutoLISP编程知识。我在让我所有的人用他们的视口做一些特定的事情上有点困难。我已经多次要求他们做以下事情:
[列表=1]
[*]锁定所有视口
[*]将所有视口视觉样式更改为二维线框
[*]将所有视口放在“视口”层上
[/列表]
可能是我要求太多了,但我的几个人仍然有未锁定的视口,由于视觉样式的原因无法正确打印。它们已经变得更好了,但也有一些会时不时地出现,所以我正在寻找一种代码来完成上面列出的任务。我已经尝试过搜索代码,但它看起来不存在。
你们中的一位Lisp程序的大师会很乐意帮助一个CAD猴子同伴吗? 对于层问题,我编写了一个reactor,它将在定义的层上放置视口/图像/外部参照。对此感兴趣?编写您想要的代码不会太难。 艾伦,很快就画好了,你能检查一下我标记的那条线吗?
vla put VisualStyle似乎也没有文档记录。 当视觉风格的问题可能被解决,也许作为一个节省反应堆?
(defun c:VPortFix ( / doc ss vl )
(vl-load-com)
(setq vl "VIEWPORTS") ;; VP Layer
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(or (tblsearch "LAYER" vl)
(vla-Add (vla-get-layers doc) vl)
)
(cond
( (ssget "_X" '((0 . "VIEWPORT")))
(vlax-for vport (setq ss (vla-get-ActiveSelectionSet doc))
(vla-put-VisualStyle vport 1)
(vla-put-layer vport vl)
(vla-put-DisplayLocked vport :vlax-true)
)
(vla-delete ss)
)
)
(princ)
)
(defun c:VPortReactor nil
(vl-load-com)
((lambda ( data foo / react )
(if (setq react
(vl-some
(function
(lambda ( reactor )
(if (eq data (vlr-data reactor)) reactor)
)
)
(cdar (vlr-reactors :vlr-editor-reactor))
)
)
(if (vlr-added-p react)
(vlr-remove react)
(vlr-add react)
)
(setq react
(vlr-editor-reactor data
(list
(cons :vlr-beginsave foo)
)
)
)
)
(princ
(if (vlr-added-p react)
"\n** Reactor Activated **"
"\n** Reactor Deactivated **"
)
)
react
)
"VPort-Reactor"
'VPort-CallBack
)
(princ)
)
(defun VPort-CallBack ( reactor arguments ) (c:VPortFix))
(c:VPortReactor)
反应器在加载时启动,可以通过键入“VPortReactor”来关闭 在我这边有效。1是2D线框,2是3D隐藏。设置属性,激活视口并键入VSCurrent。
哦,对了-不确定我当时在做什么
感谢您的测试。 当然可以 我只是出于测试目的才这么说的。
顺便说一句,对于布局中现有的视口,您将如何处理? 我将进行此更改以考虑剪裁的视口。。。
2
犯错误
(无意义的文本,以便我可以发布回复)
页:
[1]
2