efan2000 发表于 2002-11-16 21:21:00

[分享]在AutoCAD中可以用VBA创建匿名块

最新发现,在AutoCAD中可以用VBA创建匿名块。

efan2000 发表于 2002-11-16 21:24:00

在AutoCAD中可以用VBA创建匿名块...

本人将陆续研究用VBA创建匿名块的问题,并把结果及时发布,欢迎有志者一同探讨。

efan2000 发表于 2002-11-16 21:26:00

在AutoCAD中可以用VBA创建匿名块(一)

获取块集合中匿名块的数量
Function GetUNBlockCount() As Integer
    Dim BlockObj As AcadBlock
    Dim n As Integer
    For Each BlockObj In ThisDrawing.Blocks
      If Left(BlockObj.Name, 1) = "*" Then
            If BlockObj.Name <> "*Model_Space" And Left(BlockObj.Name, 12) <> "*Paper_Space" Then
                n = n + 1
            End If
      End If
    Next
    GetUNBlockCount = n
    Set BlockObj = Nothing
End Function

fjwok1 发表于 2002-11-17 09:37:00

多多指教啊

多多指教啊

mccad 发表于 2002-11-17 18:21:00

欢迎EFan2000兄常来

efan2000 发表于 2002-11-18 17:05:00

在AutoCAD中可以用VBA创建匿名块(二)

本帖最后由 作者 于 2002-11-18 17:05:13 编辑

其实制作匿名块的方法和制作普通块的方法是一样的。例如:
    Dim iPt(0 To 2) As Double
    iPt(0) = 0: iPt(1) = 0: iPt(2) = 0
    Dim BlockObj As AcadBlock
    Set BlockObj = ThisDrawing.Blocks.Add(iPt, "*U")
    Set BlockObj = Nothing
上面的代码中在块集合生成了一个U开头的匿名块。注意:匿名块的名称只能是*+字母,即第一个为*号,接下来跟一个字母,大小写均可。
然而创建匿名块简单,但如何引用匿名块或者获取匿名块就相对复杂,但匿名块后的数字从是从1开始递增的,可以根据这一点来判断,而不必理会前面的字母是什么。
下例的函数用来获取最新创建的匿名块。

Public Function GetUNBlock() As AcadBlock
    Dim BlockObj As AcadBlock
    Dim n As Integer
    For Each BlockObj In ThisDrawing.Blocks
      If Left(BlockObj.Name, 1) = "*" Then
            If BlockObj.Name <> "*Model_Space" And Left(BlockObj.Name, 12) <> "*Paper_Space" Then
                If Mid(BlockObj.Name, 3) >= n Then
                  n = Mid(BlockObj.Name, 3)
                  Set GetUNBlock = BlockObj
                End If
            End If
      End If
    Next
    Set BlockObj = Nothing
End Function

在块集合中,匿名块的名称从第三位后必为数字,最新创建的匿名块必为最大的数字,但要保证创建后没有删除该块,否则返回的就是以前创建的了。

kite 发表于 2002-12-14 20:34:00

匿名块的作用是什么呀

我曾看到书上介绍了匿名块,但是不知道它的用处呀,肯否指教指教

efan2000 发表于 2002-12-15 18:05:00

Re:匿名块的作用是什么呀

匿名块在CAD中是自动管理的,就是图纸保存退出后,下次加载时,如果该匿名块没有使用,即没有插入到图纸中,那么系统自动清除掉。
再有,对于标注,没有固定的形状,但又不想分解成单个的实体,而能够对其整体进行处理,那么匿名块就正好派上用场了。
页: [1]
查看完整版本: [分享]在AutoCAD中可以用VBA创建匿名块