2024年4月28日发(作者:)
动态块顾名思义就是带有动作的图块。把动态块插入图中后,可以利用是先定义的缩放、拉伸、旋转、
翻转等动作改变块中元素的尺寸和可变的属性而保持块的完整性不变。动态块具有灵活性和智能性,可以
很容易地改变图形中的动态块参照。通过自定义夹点或属性,用户可以操作动态块参照中的几何图形。这
使得用户可以根据需要在位调整块,而不用搜索另一个块以插入或重定义现有的块。在绘图时,动态块参
照在与原来的块定义可能显示不同,然而,显示的块参照仍然是原来块定义的参考。
目前用.NET 环境开发还不能自定义约束、关联以及动态块,但是我们可以用.NET 程序访问或者控制
动态块的参数。通过定义可设置词典键/值对(DictionaryEntry),查询DictionaryEntry中属性Key是否与动
态快中PropertyName相同,从而修改相应Value。
下面通过一个简单的例子来介绍通过修改动态块的属性、参数值来改变块中元素的位
置、尺寸和可变的属性而保持块的完整性不变。
图1 CAD动态块
首先,制作好一个简单的矩形块 ,然后给块添加参数和动作,参数是矩形的长,距离为60,动作是
拉伸,即形成动态块(如图3所示)。现在我们要把图3制作的矩形动态块的初始边长60拉伸到200而不
改变原有动态块的完整性,程序只需要找到动态块的参数PropertyName,然后修改相应的Value。关键代
码如下(限于篇幅,本文中的程序将只列出主要代码):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Public Shared Sub SetDynamicValue (ByVal BlockName As String)
Dim DynamicPropertyDic As DictionaryEntry
= "距离": = 200
Dim ed As Editor =
Dim db As Database = gDatabase
Try
Dim opts As New PromptEntityOptions("Select a dynamic block ")
Dim NullId As ObjectId =
Dim res As PromptEntityResult = ity(opts)
If <> Then:Return: Else: NullId = Id:End If
Dim tr As ctionManager=ctionManager
Using Trans As Transaction = ransaction ()
Dim blockRef As BlockReference =ect (NullId, d)
Dim btr As BlockTableRecord = ect (ableRecord, _
d)
Dim ENT As Entity = ect (NullId, te)
Dim dbrProp As DynamicBlockReferenceProperty
If TypeOf ENT Is BlockReference Then
Dim blr As BlockReference = CType (ENT, BlockReference)
If micBlock = True Then
For Each dbrProp In cBlockReferencePropertyCollection
If tyName = DynamicPropertyDic. Key Then
= le(DynamicPropertyDic. Value )
End If:Next:End If: End If: ():End Using
Catch e As ion
ertDialog ("Error occurs when insert Dynamic block: " + BlockName)
End Try
End Sub
发布评论