动态块的参数读写

动态块的参数读写

' 查询动态块的自定义特性
Public Sub DynamicBlock()
    Dim ent As AcadEntity
    Dim blk As IAcadBlockReference
    Dim pnt As Variant
    On Error Resume Next
    ThisDrawing.Utility.GetEntity ent, pnt, "GetBlock:"
    Debug.Print ent.ObjectName
    If ent.ObjectName = "AcDbBlockReference" Then
        Set blk = ent
    Else
        Exit Sub
    End If
    Dim dyBlkPropCol As Variant         ' 自定义特性的集合
    Dim dyBlkProp As AcadDynamicBlockReferenceProperty      ' 自定义特性
    Dim i As Long
    Dim j As Long
    Dim v As Variant        ' 参数值的范围
    If blk.IsDynamicBlock Then
        ' 获得动态块的自定义特性
        dyBlkPropCol = blk.GetDynamicBlockProperties
        For i = 0 To UBound(dyBlkPropCol)
            Set dyBlkProp = dyBlkPropCol(i)
            Debug.Print "-----------------"
            Debug.Print "名称:" & dyBlkProp.PropertyName
            Debug.Print "说明:" & dyBlkProp.Description
            Debug.Print "显示:" & dyBlkProp.show
            Debug.Print "只读:" & dyBlkProp.ReadOnly
            Debug.Print "类型:" & dyBlkProp.UnitsType
            Debug.Print "值:" & dyBlkProp.Value
			'注意写入值的类型、允许值要对应,否则不接受
			dyBlkProp.Value=XXX
            If IsArray(v) And UBound(v) >= 0 Then
                Debug.Print "值范围"
                For j = 0 To UBound(v)
                    Debug.Print v(j)
                Next
            End If
        Next
    End If
End Sub

posted on 2023-03-12 11:36  因思道客  阅读(55)  评论(0)    收藏  举报

导航