WPerciful 发表于 2022-7-5 23:57:29

我如何获得命令原因

我编写了一个子例程来更新图形边框。CADWorx中有一个名为IGO的命令,用于创建等轴测图形。我想让这个命令调用我的函数来更新边界。但我的代码不起作用。
 
(defun c:igo ( / )
(setvar "cmdecho" 0)
(command "igo")
(setvar "cmdecho" 1)
(runisoborderupdate)
(princ)
)

MSasu 发表于 2022-7-6 00:08:14

首先,通过对函数使用相同的名称,可以重写所述CADWorx的定义。
在AutoLISP中调用IGO命令将受到定义方式的影响-如果来自AutoLISP包,则应使用:
(command "igo") (c:igo)

WPerciful 发表于 2022-7-6 00:11:20

 
我不太明白你的意思。因为当我试图用line命令测试你说的话时:
 
(c:line)
 
不起作用。但这确实:
 
(command "line")
 
我正在尝试运行IGO命令,以便让它运行我的更新功能。

Tharwat 发表于 2022-7-6 00:17:16

如果要运行的命令是Lisp函数,则应该这样调用它(c:igo),但如果它是内置命令,则应该使用命令函数调用它
(命令行)。

WPerciful 发表于 2022-7-6 00:24:13

 
非常感谢。虽然(c:igo)不起作用,但我尝试了(c:isogenout),结果成功了。
 
但它仍然会弹出对话框。我尝试了(c:-异基因)和(c:u异基因),但没有成功。
 
有什么想法吗?

Tharwat 发表于 2022-7-6 00:30:21

这是什么意思?
它是另一个Autodesk程序中的Lisp函数还是命令调用?
 
需要更多信息。

WPerciful 发表于 2022-7-6 00:39:19

ISOGenOut是CADWorx工厂中的一个命令(更多信息请参见此处)。CADWorx Plant基本上是AutoCAD的附加软件。等轴测图创建在CADWorx Plant中创建的三维模型的等轴测图。
当您运行ISOGenOut时,它会弹出一个“选择ISOGEN样式”对话框,允许您选择可以创建输出的不同样式。
然后提示用户选择对象。然后创建模型的等轴测图。
我编写代码来更新它创建的图形的标题栏,但我希望ISOGenOut命令触发我编写的代码。这样,用户只需在第二步执行一个命令。

MSasu 发表于 2022-7-6 00:42:06

因为您能够这样调用它,这意味着它实际上是一个AutoLISP函数;除了联系所述工具的程序员,请求他们在代码中包含该工具的开关外,没有其他方法可以阻止对话框出现。

WPerciful 发表于 2022-7-6 00:47:18

有没有办法在lisp完成后让它运行我的例程?

MSasu 发表于 2022-7-6 00:52:44

一种解决方案是使用反应堆,尽管我不确定是否可以将其附加到第三方命令。
页: [1] 2
查看完整版本: 我如何获得命令原因