- 积分
- 10513
- 明经币
- 个
- 注册时间
- 2002-6-3
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 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
在块集合中,匿名块的名称从第三位后必为数字,最新创建的匿名块必为最大的数字,但要保证创建后没有删除该块,否则返回的就是以前创建的了。 |
|