MexicanCustard 发表于 2012-4-27 09:49:06

嵌套实体选择

我有一个外部参照,我希望我的用户能够使用标准窗口/交叉窗口/栅栏/多边形选择多个实体。我尽量避免使用编辑器。因为它只允许一次选择一个实体,在这种情况下,我的用户可能会选择数百个实体。
有没有一种方法可以在不创建夹具的情况下做到这一点?
如果没有,那么有没有人愿意分享一些代码来实现这一点?
**** Hidden Message *****

MexicanCustard 发表于 2015-6-11 09:44:51

嗨,墨西哥Custard,
如果你把这个整理出来,你愿意/能够分享代码吗?

MexicanCustard 发表于 2015-6-11 13:31:36

哇!这是一个旧的,我必须记住这是什么项目。我相信这是为了选择图层隔离的嵌套实体,如果我没记错的话,我从来没有想出一个让我使用交叉窗口的解决方案。这就是我解决那个问题的方法,   。
公共静态void SomeCommand()。
{。
列出路径;。
if (SelectNestedEntities(ed,out paths))。
{。
//对所选内容进行操作。
}。
}。

私有静态bool SelectNestedEntities(Editor ed,out List路径)。
{。
paths = new List ();。
PromptNestedEntityResult rs。
var pneo = new PromptNestedEntityOptions(" \ n选择要隔离的图层上的对象:"){ allow one = true };。

做。
{。
rs = ed,GetNestedEntity(pneo);。

如果(rs,地位!=提示状态,OK)继续;。
var path = highlight sub entity(RS);。
if(路径!= FullSubentityPath,空)。
{。
路径,添加(路径);。
}。
} while (rs,Status == PromptStatus,OK);。

返回(rs,地位!=提示状态,取消);。
}。

私有静态FullSubentityPath highlight subentity(PromptNestedEntityResult pner)。
{。
var objIds = new List (pner,get containers());。
对象,反向();。
对象,添加(pner,ObjectId);。

var subEnt = new subentity id(subentity type,Null,IntPtr。零);。
var path = new FullSubentityPath(objIds,ToArray()、subEnt);。

var ent = objIds,GetObject(OpenMode,ForRead)作为实体;。

if (ent == null)。
返回FullSubentityPath,Null。

ent,高亮(path,false);。

返回路径;。
}如果我今天做这件事,我可能会使用编辑器,使用编辑器选择和过滤对象,选择事件,这是一个非常困难的解决方案,但是对于用户来说,用一个窗口来选择实体可能更自然。

MexicanCustard 发表于 2015-6-11 14:13:03


这与我现在正在做的事情相似,但用户要求能够进行交叉选择,我想也许你已经解决了!
页: [1]
查看完整版本: 嵌套实体选择