百思不解AcDbBlockReference
<P>拟从图形中提取一个AcDbBlockReference,如:</P><P> BLOCK REFERENCE 图层: ttt</P>
<P> 空间: 模型空间<BR> 颜色: BYLAYER 线型: CONTINUOUS<BR> 句柄 = 1c665<BR> 块名: "tkaaa"</P>
<P> 使用以下代码:</P>
<P>FilterType(0) = 0<BR> FilterData(0) = "Block Reference" '此处不知用什么会有效果。<BR> FilterType(1) = 8<BR> FilterData(1) = "ttt"<BR> mode1 = acSelectionSetAll<BR> Set ssBlockRef = acadDoc.SelectionSets.Add("NewSelectionSet")<BR> ssBlockRef.Select mode1, , , FilterType, FilterData</P>
<P>结果是ssBlockRef.count=0 也就是一个也没有选上。</P>
<P>希大家不吝赐教。</P>
<P>目的主要是快速获取块参照的插入点而已。</P>
<P>有点挠头。</P> <P>用这个笨方法吧,保证 适用</P>
<P>Dim BLKpnt As Variant<BR>Dim blkRef As AcadBlockReference<BR>Dim objEnt As AcadEntity<BR> For Each objEnt In ThisDrawing.ModelSpace<BR> If TypeOf objEnt Is AcadBlockReference Then<BR> '*********可以加入过滤条件<BR> Set blkRef = objEnt<BR> BTLname = blkRef.Name<BR> BLKpnt = blkRef.InsertionPoint<BR> End If<BR> Next<BR></P> <P>谢了,这个方法我用过,感觉遍历整个文件速度太慢所以才想好办法的。</P>
<P>已经成功了,呵呵,就是把过滤条件减少,只过滤一个图层的图元,快了一点。</P> <P>FilterData(0) = "Block Reference" '此处不知用什么会有效果。</P>
<P>改成FilterData(0) ="INSERT"</P>
页:
[1]