1

我正在尝试"c:wd_insym2"从 .NET 调用内置的 AutoCad Electrical LISP 命令。我最近安装了 AutoCad 2016,它现在具有 Editor.Command 和 Editor.CommandAsync 功能,但是我能找到的所有帮助/论坛帖子都指的是使用它来调用 AutoCad 命令,例如 LINE、CIRCLE 等。我想调用lisp 命令,例如:

(c:wd_insym2 "HPB11.dwg" (list 0 0) 1.0 nil)

在 处插入一个按钮符号0, 0

这就是我所得到的(我一直在使用 CommandAsync,因为我之前在使用 Application.Invoke 同步发送该命令时遇到了问题:AutoCad Command Rejected "Undo" when using Application.Invoke()

<CommandMethod("SendCmdAsync", CommandFlags.Modal)>
Async Sub SendCmdAsync()
    Dim doc As Document = DocumentManager.MdiActiveDocument
    Dim ed As Editor = doc.Editor
    Dim cmd As String = "(c:wd_insym2 " & ControlChars.Quote & "HPB11.dwg" & ControlChars.Quote & " (list 0 0) nil nil)"
    ed.WriteMessage(vbNewLine & "Trying to execute: <" & cmd & ">" & vbNewLine)
    Await ed.CommandAsync(cmd)
    ed.WriteMessage(vbNewLine & "Done.")
End Sub

当我运行它时,它显示“LISP 命令不可用”。

我正在做的事情是否可能,如果是,我做错了什么?

4

1 回答 1

0

我解决了这个问题——显然你不能使用 Command 和 CommandAsync 来运行 Lisp 命令——它们只适用于 AutoCAD 命令。

最好的方法是 Application.Invoke:https ://forums.autodesk.com/t5/net/unable-to-find-an-entry-point-in-dll-acad-exe/mp/5522036/highlight /真#M43404

虽然,使用我的特定电气命令 (c:wd_insym2),当我在 AutoCAD 2014 中尝试这种技术时,它给了我一个错误“AutoCAD 命令被拒绝 UNDO”。但是,我刚刚注意到在 AutoCAD 2016 中它运行良好——我猜他们已经在某处更改了 API。

于 2015-12-16T20:12:36.770 回答