itacad 发表于 2022-7-5 15:07:06

连续运行命令

您好,我想知道是否有任何方法可以自动顺序运行一系列命令。
我的问题是,我想在之前启动的命令结束后自动运行缩放扩展。。。
该命令是autocad应用程序命令的一部分,它通过选择对象来工作。。。例如,像erase命令。。。
我启动擦除命令,选择一个对象,确认,然后进行缩放。
有可能吗?甚至可能是一系列命令。。。
许多问候!

ronjonp 发表于 2022-7-5 15:21:29

使用命令反应堆:
(vl-load-com)
(or *endcommandreactor*
   (setq *endcommandreactor* (vlr-command-reactor nil '((:vlr-commandended . endcmd))))
)
(defun endcmd (calling-reactor endcmdinfo)
(and (wcmatch (car endcmdinfo) "ERASE") (vla-zoomextents (vlax-get-acad-object)))
)

BIGAL 发表于 2022-7-5 15:29:42

看看宏,这就是他们的目的。另外还有一个脚本或lisp,但如果在某些地方停止或出错,则必须小心。用lisp输入替换所有输入,检查输入的内容是否有效,然后使用所有正确的值运行命令或entmake。不要在“命令”内提问,答案1错了,一切都会分崩离析。如果你想的话,你可以用菊花链Lisp程序,但我会用脚本。
 
可以从lisp调用脚本,这只是对命令的另一个调用
 

(defun myy ()
(command "script" "MYYYYSCRIPT")
)

itacad 发表于 2022-7-5 15:44:13

多亏了这两个人,不幸的是,我对你的建议感到困惑
对于罗恩琼普:你能发布一个完整的Lisp程序吗?我试图整合你的代码,但我造成了错误。。。
对于比格尔:我从未使用过脚本,我想学习,你能从基础开始给我必要的指示吗?
再次感谢你

ronjonp 发表于 2022-7-5 15:51:24

这是完整的代码?当图形打开时加载它,然后尝试“擦除”命令。在我看来,这很让人分心,但这是你想要的。

BIGAL 发表于 2022-7-5 15:58:24

像罗恩琼普一样,你的要求有点含糊。但要说“删除并最大化显示”,请将其复制粘贴到命令
线路和类型e3。

(defun C:e3 ( / ss)
(command "erase" (ssget) "")
(command "Zoom" "extents")
)

itacad 发表于 2022-7-5 16:08:52

非常感谢。它起作用了!我做了以下“更正”

(command "_.erase" (ssget) "")
(command "Zoom" "e")

非常感谢你!
页: [1]
查看完整版本: 连续运行命令