0

有谁知道如何在 SendStringtoExecute 之后选择对象?对我来说最好的是使用栅栏或点选择对象。

这是我的代码的一部分:

foreach (ObjectId objId in NormalblkTblRec)
{
    if (objId.ObjectClass.Name == "AcDbArc")
    {
        Entity en1 = (Entity)trans.GetObject(objId, OpenMode.ForWrite);
        Arc arcs = (Arc)(Object)en1;
        Point3d[] arcpoints = new Point3d[] { arcs.StartPoint, arcs.EndPoint };
        Point3dCollection arcptcol = new Point3dCollection(arcpoints);
        doc.SendStringToExecute("_DIVIDE" + "\n", true, false, false);
        ed.SelectFence(arcptcol);
    }

}

上面的代码不起作用。这段代码的目的是获取每条弧的分割坐标(比如 10 个分割)。如果有人对做同样的目的有更好的想法,请随时提出建议。

非常感谢你们!

4

2 回答 2

1

为什么不手动计算呢?或者您可以使用同步执行的 com 文档对象。

public static void SendCommandSynchronously(this Document doc,string command)
    {
        var acadDoc = doc.AcadDocument;
        acadDoc.GetType().InvokeMember(
            "SendCommand",
            System.Reflection.BindingFlags.InvokeMethod,
            null,
            acadDoc,
            new[] { command + "\n" });
    }

这是您可以使用的扩展方法。或者只是转换为一种方法。

于 2015-02-17T21:32:06.693 回答
0

发送要执行的字符串是异步的,这意味着您将无法预测它何时实际运行。通常,您需要 pinvoke 或使用来自 com 的发送命令。在某些情况下,您可以在编辑器中设置选择,然后运行命令。

于 2015-02-16T12:59:09.803 回答