清理快参照遇到的问题
请问bbs里面的高手们,我在画图的时候想用另外一个CAD里同一个名字的图例替换这个CAD里原先的图例,我想把这个CAD里原先该名图例彻底清除(包括快名称、块)。然后我用purse命令清理块,但是无法清理。我不想通过修改块名称的方法实现,我该怎么办?不能清理此块定义的原因有:
-- 嵌套在另一个块中。
-- 嵌套在图形中。
-- 是附着的外部参照图形。 先将需要的图元复制到剪贴板,进入图块编辑器把里边所有图元删除,再粘贴,保存修改后的块;结束
回复 #2 wenwengg 的帖子
图块编辑器里能够删除包括外部参照的所有图元吗? 块编辑器只能编辑内部块,应当尽量使用内部块外部块的清理方法:可以用VBA编程解决,新建一个块,把外部块的引用指向这个新建块就可以把外部块变成内部块;
这时外部块是清理不掉的,保存图纸,然后关闭 重新打开就没有外部块了。
VBA代码如下:
Sub ReplaceBlockReference()
On Error Resume Next
Dim blockEnt As AcadBlockReference
Dim blkName As String
Dim getobj As Object
Dim p As Variant
Dim I As Integer
blkName = ThisDrawing.Utility.GetString(0, vbCrLf & "替换为:")
If blkName = "" Then
ThisDrawing.Utility.GetEntity getobj, p, "选择要替换后的图块 即新块"
blkName = getobj.Name
Else
End If
'加入选择集
Dim ssetObj As AcadSelectionSet
If Not IsNull(ThisDrawing.SelectionSets.item("Example")) Then
Set ssetObj = ThisDrawing.SelectionSets.item("Example")
ssetObj.Delete
End If
Set ssetObj = ThisDrawing.SelectionSets.Add("Example")
ThisDrawing.Utility.InitializeUserInput 0, "选择要替换的图块:"
ssetObj.SelectOnScreen
'替换
For I = 0 To ssetObj.count - 1
Set blockEnt = ssetObj(I)
blockEnt.Name = blkName
Next
ssetObj.Delete
End Sub
[ 本帖最后由 wenwengg 于 2009-10-26 13:36 编辑 ] 不太懂,帮你踩下吧。。呵呵:D
页:
[1]