3

押されたときに図面の位置をマークするボタンを作成しようとしています。現在、メソッドは次のようになっています。

[CommandMethod("MARKPOS", CommandFlags.Session)]
public void MarkPosition()
{
    Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
    ed.Command("UNDO", "M");
}

ただし、メソッドを実行しようとすると、下の図のエラーが発生し、その理由を特定できません。

ここに画像の説明を入力

************** 例外テキスト ************** Autodesk.AutoCAD.Runtime.Exception: eInvalidInput at Autodesk.AutoCAD.EditorInput.Editor.Command( c:\Users\nickg\Documents\All Code\autocad-adapter\IOAutoCADHandler\myCommands.cs:186 行目 Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorker(MethodInfo) の AutoCAD_Adapter.MyCommands.MarkPosition() の Object[] パラメータ) Autodesk.AutoCAD.Runtime.PerDocumentCommandClass.Invoke(MethodInfo mi, Boolean bLispFunction) の Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorkerWithExceptionFilter(MethodInfo mi, Object commandObject, Boolean bLispFunction) の mi, Object commandObject, Boolean bLispFunction)。 Runtime.CommandClass.CommandThunk.Invoke()

4

3 に答える 3

1

SendStringToExecute は AutoCAD 2014 まで機能します。AutoCAD 2015 (およびそれ以降) では、これは Editor.Command または Editor.CommandAsync に置き換えられました。

元のコードについては、試してみてください

[CommandMethod("MARKPOS")]
public static void MarkPosition()
{
  Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
  ed.Command(new object[]{"UNDO", "M"});
}
于 2015-04-29T12:46:40.400 に答える
0

これを使って:

Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.SendStringToExecute
于 2015-04-15T16:50:26.140 に答える