朝日敦夕月 发表于 2009-10-24 10:33

清理快参照遇到的问题

请问bbs里面的高手们,我在画图的时候想用另外一个CAD里同一个名字的图例替换这个CAD里原先的图例,我想把这个CAD里原先该名图例彻底清除(包括快名称、块)。然后我用purse命令清理块,但是无法清理。我不想通过修改块名称的方法实现,我该怎么办?
不能清理此块定义的原因有:
-- 嵌套在另一个块中。
-- 嵌套在图形中。
-- 是附着的外部参照图形。

wenwengg 发表于 2009-10-24 14:08

先将需要的图元复制到剪贴板,进入图块编辑器把里边所有图元删除,再粘贴,保存修改后的块;结束

朝日敦夕月 发表于 2009-10-24 18:25

回复 #2 wenwengg 的帖子

图块编辑器里能够删除包括外部参照的所有图元吗?

wenwengg 发表于 2009-10-26 13:12

块编辑器只能编辑内部块,应当尽量使用内部块
外部块的清理方法:可以用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 编辑 ]

hedarkson 发表于 2009-10-27 11:13

不太懂,帮你踩下吧。。呵呵:D
页: [1]
查看完整版本: 清理快参照遇到的问题