明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1471|回复: 2

[转帖]用VBA创建匿名块

[复制链接]
发表于 2004-9-22 17:44:00 | 显示全部楼层 |阅读模式
AutoCAD中,可以用VBA创建匿名块,那么如何创建呢?其实制作匿名块的方法和制作普通块的方法是一样的。如:
< class=txt14>Dim iPt(0 To 2) As Double


< class=txt14>iPt(0) = 0: iPt(1) = 0: iPt(2) = 0


< class=txt14>Dim BlockObj As AcadBlock


< class=txt14>Set BlockObj = ThisDrawing.Blocks.Add(iPt, "*U")


< class=txt14>上面的代码中在块集合生成了一个匿名块。看了上面的代码,是不是觉得制作匿名块其实很简单。但是如何获取刚创建的块的名称呢?其实匿名块的名称是以*+字母开头的,后面是从1开始递增的数字,那么如果是第一次创建匿名块,那名称就是“*U1”。下面的代码返回最后创建的匿名块:


< class=txt14>ublic Function GetUNBlock() As AcadBlock


< class=txt14>Dim BlockObj As AcadBlock


< class=txt14>Dim n As Integer


< class=txt14>For Each BlockObj In ThisDrawing.Blocks


< class=txt14>If Left(BlockObj.Name, 1) = "*" Then


< class=txt14>If BlockObj.Name &lt;&gt; "*Model_Space" And Left(BlockObj.Name, 12) &lt;&gt; "*Paper_Space" Then


< class=txt14>If Mid(BlockObj.Name, 3) &gt;= n Then


< class=txt14>n = Mid(BlockObj.Name, 3)


< class=txt14>Set GetUNBlock = BlockObj


< class=txt14>End If


< class=txt14>End If


< class=txt14>End If


< class=txt14>Next


< class=txt14>Set BlockObj = Nothing


< class=txt14>End Function
 楼主| 发表于 2004-9-22 18:10:00 | 显示全部楼层
要插入该匿名块
Set BlkObj = ThisDrawing.ModelSpace.InsertBlock(P, GetUNBlock, 1, 1, 1, 0) 程序修改如下: Public Function GetUNBlock() As String '此处修改了,该为获取块名
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)
GetUNBlock = BlockObj.Name '此处修改了
End If
End If
End If
Next
Set BlockObj = Nothing
End Function
发表于 2004-9-22 21:34:00 | 显示全部楼层
创建匿名块确实与创建普通块在AX方法中是一样的。
匿名块的特殊性:
1.创建时名称由系统定。也就是在系统中还是有名称的。
2.如果匿名块没有被插入图中,在第二次打开图形时匿名块会被自动删除掉。
3.匿名块只能通过程序插入,不能直接在界面操作插入。原因有2:A在界面对话框中看不到匿名块,B块名前加*是表示插入块的同时炸开块。

因为匿名块在系统中还是有名称的,所以在插入块后可以通过.Name属性来取得匿名块的名称,而且可以通过InsertBlock方法来插入。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 01:34 , Processed in 0.170840 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表