有人知道如何在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个划分)。 如果有人有更好的想法做同样的目的随意建议。
非常感谢!
答案 0 :(得分:0)
要执行的发送字符串是异步的,这意味着您将无法预测它何时会实际运行。通常,您需要从com中调用或使用send命令。在某些情况下,您可以在编辑器中设置选择,然后运行命令。
答案 1 :(得分:0)
为什么不手动计算它们?或者您可以使用同步执行的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" });
}
这是您可以使用的扩展方法。或者只是转换为方法。