broncos15 发表于 2022-7-5 17:58:14

暂停ssget函数

我有一个关于ssget的快速问题。是否需要暂停功能,以便在每次单独选择后执行代码?我询问的原因是,我希望用户能够在选择时看到对选择的更改(就像matchprop命令的工作方式一样),而不是在选择完成后执行更改。

Jef! 发表于 2022-7-5 18:20:46

嗨,野马队。
 
我认为唯一可行的方法是使用选择模式字符串“模拟”(ssget)函数。R.K.McSwain的一个例子
 
(defun foo ()
(setq a (getpoint "\nSelect first corner "))
(setq b (getcorner a "\nSelect second corner"))
(setq ss1 (ssget "w" a b))
ss1
)
您需要在while函数中使用它。(当用户继续进行窗口选择时,您对该选择执行更改)

Lee Mac 发表于 2022-7-5 18:23:22

无法拦截标准ssget函数的操作:AutoLISP不允许多线程,因此,当调用ssget函数时,仅当ssget函数的评估完成时,调用程序的评估才会继续-此逻辑适用于所有AutoLISP函数。
 
然而,您也可以滚动自己的ssget函数,从而准确地控制该函数在用户交互后的行为。

Stefan BMR 发表于 2022-7-5 18:37:38

嗨broncos15
您可以使用此结构查看您的动作:
(while
(setq ss (ssget ":S"))
(your_function ss)
)

BIGAL 发表于 2022-7-5 18:57:14

选择十个红色圆圈,当你在每个单独的项目上使用ssname时,一定要说chprops蓝色圆圈,暂停一下,比如按回车键进入下一个或退出键。考虑更多的改变是或否,使用中间的放大。

broncos15 发表于 2022-7-5 19:05:07

谢谢大家的帮助!我想我可能会做一些类似斯特凡推荐的与比加尔结合的事情。Jef和Lee感谢您提供这些线程和函数的链接。为了更好地理解LISP,他们对学习非常感兴趣。
页: [1]
查看完整版本: 暂停ssget函数