我在写两个调用AutoCAD的UNDO命令并传入不同参数的方法。第一种方法调用UNDO并传递M,这意味着标记图形的位置。第二种方法调用UNDO并传递B,这意味着撤销一直回到标记的位置(或者如果没有一个,则结束)。到目前为止,他们是非常简单的从C#.NET调用AutoCAD命令
/// <summary>
/// Method to mark the current position of the AutoCAD program
/// </summary>
public static void MarkPosition()
{
doc.SendStringToExecute("._UNDO M", true, false, true);
}
/// <summary>
/// Method to step AutoCAD back int steps
/// </summary>
public static void BigUndo()
{
doc.SendStringToExecute("._UNDO B", true, false, true);
}
这些看起来像他们应该工作,但由于某种原因,他们没有。当我调用MarkPosition(),然后调用BigUndo()时,我收到一个错误,表示遇到组的开始;进入撤销结束以进一步返回。测试我的语法。我将MarkPosition更改为
public static void MarkPosition()
{
doc.SendStringToExecute("circle 2,2,0 4 ", true, false, true);
}
它成功画了一个圆圈。这意味着我的语法是正确的,但有些奇怪的是与撤消。
大概在AutoCAD中直接输入命令会给你想要的响应吗? – ZombieSheep 2015-03-31 16:56:27
是的,这是正确的 – 2015-03-31 17:08:26
SendStringtoExecute是异步的。它们在.net代码结束后执行。你确定你正在测试正确的东西吗?尝试在标记和背面之间通过此方法绘制圆圈 http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-F4A36181-39FB-4923-A2AF-3333945DB289 – Alain 2015-04-01 05:54:55