将实体添加到 Autocad 命令选择集中
Add entities to an Autocad commands selection set
我想做的是类似于下面的代码。但我不想从选择集中删除实体,而是想添加包含某些扩展数据的实体。这是可能的还是我要月亮?下面的 link 适用于此处显示的代码。
public class MyCommands
{
[CommandMethod("MyReactor")]
public void MyReactor()
{
Editor ed = acApp.DocumentManager.MdiActiveDocument.Editor;
ed.SelectionAdded += new SelectionAddedEventHandler(ed_SelectionAdded);
}
void ed_SelectionAdded(object sender, SelectionAddedEventArgs e)
{
string cmds = (string)acApp.GetSystemVariable("CMDNAMES");
if (!cmds.StartsWith("COPY"))
return;
int i = 0;
List<int> indices = new List<int>();
foreach (SelectedObject selObj in e.AddedObjects)
{
if (selObj.ObjectId.ObjectClass == RXClass.GetClass(typeof(Circle)))
indices.Insert(0, i);
i++;
}
foreach (int current in indices)
e.Remove(current);
}
}
你尝试过这样的事情吗?
ObjectId acObjId = //the object id of the xdata object
SelectedObject obj = new SelectedObject(acObjId, null);
e.Add(obj);
我想做的是类似于下面的代码。但我不想从选择集中删除实体,而是想添加包含某些扩展数据的实体。这是可能的还是我要月亮?下面的 link 适用于此处显示的代码。
public class MyCommands
{
[CommandMethod("MyReactor")]
public void MyReactor()
{
Editor ed = acApp.DocumentManager.MdiActiveDocument.Editor;
ed.SelectionAdded += new SelectionAddedEventHandler(ed_SelectionAdded);
}
void ed_SelectionAdded(object sender, SelectionAddedEventArgs e)
{
string cmds = (string)acApp.GetSystemVariable("CMDNAMES");
if (!cmds.StartsWith("COPY"))
return;
int i = 0;
List<int> indices = new List<int>();
foreach (SelectedObject selObj in e.AddedObjects)
{
if (selObj.ObjectId.ObjectClass == RXClass.GetClass(typeof(Circle)))
indices.Insert(0, i);
i++;
}
foreach (int current in indices)
e.Remove(current);
}
}
你尝试过这样的事情吗?
ObjectId acObjId = //the object id of the xdata object
SelectedObject obj = new SelectedObject(acObjId, null);
e.Add(obj);