(setq ss (ssget))
(repeat (setq in (sslength ss))
(redraw (ssname ss (setq in (1- in))) 3)
)
是的,我不得不从互联网上的帮助参考中进行研究,我的acad 2015上关于重画的帮助中唯一的信息是:
“刷新当前视口中的显示。”
此处的参考揭示了有关该函数的更多信息:
是的,我知道,问题是我总是使用sssetfirst来抓取我的选择-唯一的原因是看我选择了什么。
在一些测试之后-实际上用(redraw 3)在SS上迭代看起来/感觉最快,并且要删除突出显示-用(redraw 4)再次迭代。
Regen也会删除突出显示,但我在处理大型图形时尽量避免使用sssetfirst和Regen(它们似乎会降低代码的性能)。
我甚至试着只重新生成活动视口。。。
如何作恶101:
(defun HideAll:CB ( rtr args / e )
(and (equal args '("REGEN")) (setq e (entnext)) (while e (redraw e 2) (setq e (entnext e))) )
); defun HideAll:CB
(HideAll:CB nil '("REGEN"))
(foreach r (cdar (vlr-reactors :vlr-command-reactor)) (if (= "HideAll" (vlr-data r)) (vlr-remove r)))
(vlr-command-reactor "HideAll" '((:vlr-commandEnded . HideAll:CB)))
如果业余Cad用户运气不好,必须为他们编写相反的程序:大声笑:
没那么糟糕,只需关闭(保存)当前图形,并且不再使用该代码。
此外,我在工作时使用它,只处理活动视口要快得多,而不是REGEN命令:
(defun RegenActiveViewport nil
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
)
当反应堆运行时,它会临时绕道而行。
突出显示选择集非常容易。。。首先使用SSSET
(defun c:highlightselsel ( / selset)
(setq selset (ssget))
(sssetfirst nil selset)
)
你好
您可以在sssetfirst语句中代替变量selset并立即用ssget函数替换它,重要的是,如果ssget返回nil,则该函数不会引发任何错误。
我怀疑OP(或任何其他人)会这么做。。。我对这个结论的看法是
-选择集是使用(ssget“X”)、(ssadd或(ssdel)的函数的结果,并且已经在变量中
-该选择集可能需要进一步处理,因此需要将其包含在var中。
-除此之外,使用(sssetfirst nil(ssget))没有多大意义,因为它基本上只是将事情复杂化,以“模拟”简单的选择事情,当然还需要一些更复杂的东西,以确保如果用户不选择任何东西,它不会爆炸。我的2美分。
干杯
页:
1
[2]