[分享]在AutoCAD中可以用VBA创建匿名块
最新发现,在AutoCAD中可以用VBA创建匿名块。在AutoCAD中可以用VBA创建匿名块...
本人将陆续研究用VBA创建匿名块的问题,并把结果及时发布,欢迎有志者一同探讨。在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
多多指教啊
多多指教啊欢迎EFan2000兄常来
在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
在块集合中,匿名块的名称从第三位后必为数字,最新创建的匿名块必为最大的数字,但要保证创建后没有删除该块,否则返回的就是以前创建的了。
匿名块的作用是什么呀
我曾看到书上介绍了匿名块,但是不知道它的用处呀,肯否指教指教Re:匿名块的作用是什么呀
匿名块在CAD中是自动管理的,就是图纸保存退出后,下次加载时,如果该匿名块没有使用,即没有插入到图纸中,那么系统自动清除掉。再有,对于标注,没有固定的形状,但又不想分解成单个的实体,而能够对其整体进行处理,那么匿名块就正好派上用场了。
页:
[1]