1

"c:wd_insym2".NET から組み込みの AutoCad Electrical LISP コマンドを呼び出そうとしています。最近、AutoCad 2016 をインストールしました。AutoCad 2016 には Editor.Command および Editor.CommandAsync 関数が含まれていますが、見つけることができるすべてのヘルプ/フォーラムの投稿は、それを使用して LINE、CIRCLE などの AutoCad コマンドを呼び出すことを参照しています。次のようなlispコマンド:

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

に押しボタン記号を挿入し0, 0ます。

これが私が得たものです(以前にApplication.Invokeを使用してそのコマンドを同期的に送信するのに問題があったため、CommandAsyncを使用しています: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 /true#M43404

ただし、特定の電気コマンド(c:wd_insym2)を使用して、AutoCAD 2014 でこの手法を試すと、「AutoCAD コマンドは UNDO を拒否しました」というエラーが表示されます。ただし、AutoCAD 2016 では正常に動作することに気付きました。API がどこかで変更されたと思います。

于 2015-12-16T20:12:36.770 に答える