从C#.NET调用AutoCAD命令

Nic*_*ert 6 .net c# autocad autocad-plugin

我正在尝试编写两种调用AutoCAD的UNDO命令并传入不同参数的方法.第一种方法调用UNDO并传递M,这意味着标记绘图的位置.第二种方法调用UNDO并传递B,这意味着一直撤回到标记位置(如果没有,则返回结束).到目前为止,它们非常简单

        /// <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);
        }
Run Code Online (Sandbox Code Playgroud)

看起来他们应该工作,但由于某种原因,他们没有.当我调用MarkPosition()然后调用BigUndo()时,我得到一个错误,说遇到了Start of Group; 进入撤消结束以进一步返回.测试我的语法.我将MarkPosition改为

public static void MarkPosition() 
{
    doc.SendStringToExecute("circle 2,2,0 4 ", true, false, true);
}
Run Code Online (Sandbox Code Playgroud)

成功画了一个圆圈.这意味着我的语法是正确的,但撤消会发生一些奇怪的事情.

pre*_*ith 0

AutoCAD 不会将您发送的空格识别为新行。您必须先添加新行,然后在另一行发送下一个字符,如下所示:

            doc.SendStringToExecute("._UNDO\n", true, false, true);
            doc.SendStringToExecute("M\n", true, false, true);

            doc.SendStringToExecute("._UNDO\n", true, false, true);
            doc.SendStringToExecute("B\n", true, false, true);
Run Code Online (Sandbox Code Playgroud)