我在寫兩個調用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