davehuhudave 发表于 2010-8-9 11:36:00

关于SetImpliedSelection搜索问题

<p>我想对特定id的块参照进行结构搜索,搜索构成她的名为name的所有块参照,下面语句不知可否:</p>
<p><font face="Verdana">Dim ed As Editor = AcadApp.DocumentManager.MdiActiveDocument.Editor<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acTypValAr(0) As TypedValue<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acTypValAr.SetValue(New TypedValue(DxfCode.BlockName, brfName), 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acSSPrompt As PromptSelectionResult<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim obs(0) As ObjectId<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obs(0) = id<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ed.SetImpliedSelection(obs)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acSSPrompt = ed.SelectAll(acSelFtr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acSSet As SelectionSet = acSSPrompt.Value<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return acSSet.GetObjectIds</font></p>
<p>这样返回好像为空,如果用ed.GetSelection的话需要选择,这样不好,有没有其他方法呀?</p>

雪山飞狐_lzh 发表于 2010-8-9 11:49:00

<p>和SetImpliedSelection无关</p>
<p>&nbsp;</p>
<p>Dim acTypValAr(1) As TypedValue</p>
<p>acTypValAr(0) = New TypedValue(0, "insert")</p>
<p>acTypValAr(1) = New TypedValue(2, brfName)</p>
<p>Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr)</p>
<p>acSSPrompt = ed.SelectAll(acSelFtr)<br/>Return acSSPrompt.Value.GetObjectIds</p>

davehuhudave 发表于 2010-8-9 12:02:00

我搜索特定id下的块参照,怎么体现啊?

davehuhudave 发表于 2010-8-9 12:11:00

我不会去选择任何块参照,只是认为的去对所有块参照进行结构分析而已,

davehuhudave 发表于 2010-8-9 12:11:00

人为的

雪山飞狐_lzh 发表于 2010-8-9 12:19:00

<p>特定id下的块参照?</p>
<p>没看懂,解释下?</p>

davehuhudave 发表于 2010-8-9 12:33:00

<p>比如说如下代码代表 用户去选择一个选择集,然后返回块名为brfName的id集合</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acTypValAr(0) As TypedValue<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acTypValAr.SetValue(New TypedValue(DxfCode.BlockName, brfName), 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acSSPrompt As PromptSelectionResult<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acSSPrompt = ed.GetSelection(acSelFtr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return acSSPrompt.Value.GetObjectIds</p>
<p>我现在不想让用户去选择,而是直接给定选择集的id集合,然后搜索出构成他们的并且块名为brfName的id块参照集合</p>

davehuhudave 发表于 2010-8-9 13:28:00

我好想发觉是这样的:比如说图形上显示的块参照A由块参照B和其他实体构成,那么我要检索出图形上所有B的id的话,不能用上面那些语句,好像检索出来都是空,因为Editor的选择集只为最上层是吧?有什么办法把构成她的块参照也检索

雪山飞狐_lzh 发表于 2010-8-9 15:05:00

<p>用BlockTableRecord.GetBlockReferenceIds Method获取块定义对应的参照集合,即所有的块参照B</p>
<p>然后用Entity.BlockId Property获取参照所在的块定义,比如A</p>
<p>然后调用A的GetBlockReferenceIds </p>

davehuhudave 发表于 2010-8-9 16:28:00

nice
页: [1]
查看完整版本: 关于SetImpliedSelection搜索问题