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:Autodesk.AutoCAD.EditorInput.Editor.Command 处的 eInvalidInput( Object[] 参数)在 AutoCAD_Adapter.MyCommands.MarkPosition() 在 c:\Users\nickg\Documents\All Code\autocad-adapter\IOAutoCADHandler\myCommands.cs:Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorker(MethodInfo 的第 186 行mi, Object commandObject, Boolean bLispFunction) 在 Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorkerWithExceptionFilter(MethodInfo mi, Object commandObject, Boolean bLispFunction) 在 Autodesk.AutoCAD.Runtime.PerDocumentCommandClass.Invoke(MethodInfo mi, Boolean bLispFunction) 在 Autodesk.AutoCAD。 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 回答
1

使用CommandFlags.Session时不能使用 ed.command()

于 2018-03-23T20:27:06.257 回答
0

用这个:

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