如何删除图块对象
假设dwg文件中有很多的图块对象, 图块的名称是" 椅子",请问如何用vba将其全部删除,谢谢! 先删除块参考,再删除块定义。 请具体点好吗,我会删除块对象,但不知如何删除块参照,请作个示例好吗 <p>删除块对象后,块参照对象难道还存在于modelspace中吗?</p><p>先在modelspace里面选择,用select acselectionall,,, filtertype ,filterdata</p><p>其中filtertype=2 filterdata=blockname</p><p>for each entity in sset</p><p>entity.delete</p><p>next</p><p>请高手指正</p><p></p> <p>Sub DeleteBlock()<br/> Dim ObjBlockRef As AcadBlockReference<br/> Dim FilterType(0) As Integer, FilterData(0) As Variant<br/> Dim sset As AcadSelectionSet<br/> <br/> '选中名为"椅子"的块参照并删除<br/> Set sset = ThisDrawing.SelectionSets.Add("test")<br/> FilterType(0) = 2<br/> FilterData(0) = "椅子"<br/> sset.Select acSelectionSetAll, , , FilterType, FilterData<br/> For Each ObjBlockRef In sset<br/> ObjBlockRef.Delete<br/> Next<br/> sset.Delete<br/> <br/> '删除块定义<br/> ThisDrawing.Blocks.Item("椅子").Delete<br/>End Sub</p><p></p> <p>不对啊,始终是选择了所有对象啊,没起到过滤的作用啊朋友们</p><p>Sub DeleteBlock()<br/> Dim ObjBlockRef As AcadBlockReference<br/> Dim FilterType(0) As Integer, FilterData(0) As Variant<br/> Dim sset As AcadSelectionSet<br/> <br/> '选中名为"椅子"的块参照并删除<br/> Set sset = ThisDrawing.SelectionSets.Add("test")<br/> FilterType(0) = 2<br/> FilterData(0) = "椅子"<br/> sset.Select acSelectionSetAll, , , FilterType, FilterData<br/> For Each ObjBlockRef In sset<br/> ObjBlockRef.Delete<br/> Next<br/> sset.Delete<br/> <br/> '删除块定义<br/> ThisDrawing.Blocks.Item("椅子").Delete<br/>End Sub</p><p>不对啊,始终是选择了所有对象啊,没起到过滤的作用啊朋友们</p> <p>在我的机器上试验过,只删除了名为“椅子”的块参照及块定义。</p><p>你可以调试一下,检查 sset.Select acSelectionSetAll, , , FilterType, FilterData 执行之后sset中有哪些图元。</p><p>实在不行,把过滤器搞复杂一些,多设几个条件,比如增加图层之类。</p><p>没有图形文件,我也没有办法帮你更多的忙。</p> <p>呵呵,是我错了,其实楼上朋友的代码是完全正确的,我刚复制到acad中去运行了的;只是我不会vba,其实我正在用vc自动化autocad! 选择集的过滤vba代码是sset.Select acSelectionSetAll, , , FilterType, FilterData 翻译成vc就是sel->Select(acSelectionSetAll,fitertype,fiterdata);同样的函数,同样的参数,vba的完全成功,vc的这句就只能全部选择对象而没得到过滤效果;我已经试过无数次了都是这样,好晕啊!哪位朋友能帮我啊?!</p> 高手们:使用了剪贴板板粘贴块后,指定的块定义删除不了,有没有解决办法? <p>遍历空间所有图形 </p><p>IF图形是块对象</p><p> IF块对象的名字是"椅子"</p><p> 删除块对象</p><p> END IF</p><p>END IF</p>
页:
[1]
2