010集——查询(添加)CAD文件扩展属性(vba代码实现)

 cass文件中图元经常有扩展属性,查询扩展属性代码及方法如下:

打开dwg文件 —> alt+F11打开ide窗口,粘贴如下代码,并运行:

Sub 查看扩展属性()
    '提取块的扩展属性
    '只针对带有属性的图元
    'On Error Resume Next
    Dim sst As AcadSelectionSet
    Set sst = ThisDrawing.SelectionSets.Add("sst113")
    MsgBox "请回cad界面选择图元:"
    sst.SelectOnScreen
    Dim xdataout As Variant, xtypeout As Variant
    Dim ent As AcadEntity
    Dim str
    For Each ent In sst
        ent.GetXData "", xtypeout, xdataout
        On Error GoTo line1
        For i = LBound(xtypeout) To UBound(xtypeout)
            str = str & xtypeout(i) & "--" & xdataout(i) & Chr(10)
        Next
    Next
    ThisDrawing.Utility.Prompt str
line1:
    If Err <> 0 Then
        MsgBox "没有扩展属性", vbOKOnly, "查看扩展属性"
    Else
        MsgBox str, vbOKOnly, "查看扩展属性"
    End If
    sst.Delete
End Sub

以下为手工为图元录入xdata扩展属性并查询的代码(扩展属性应用程序名(1001)一次只能设置一个,若想设置多个,需多次setxdata):

'Public Function creatsel(ByVal selname As String) As AcadSelectionSet
'On Error Resume Next
'Dim sel As AcadSelectionSet
'  For i = 0 To ThisDrawing.SelectionSets.Count - 1
'     Set sel = ThisDrawing.SelectionSets.Item(i)
'     If StrComp(sel.Name, selname, 1) = 0 Then
'        sel.Delete
'        Exit For
'     End If
'  Next i
'Set creatsel = ThisDrawing.SelectionSets.Add(selname)
'End Function
'Sub a()
' Dim xt(0 To 3) As Integer, xd(0 To 3) As Variant
'  Dim xt1(0 To 3) As Integer, xd1(0 To 3) As Variant
' Dim xtypeout(0 To 3) As Integer, xdataout(0 To 3) As Variant
'    xt(0) = 1001: xd(0) = "djh"
'    xt(1) = 1000: xd(1) = 410103 '文本格式的数字,不用加引号“”
'    xt1(0) = 1001: xd1(0) = "qlr"
'    xt(1) = 1000: xd1(1) = "三国社区"
'Dim sel As AcadSelectionSet, str As String
'Dim ent As AcadEntity
'Set sel = creatsel("myse")
''sel.Select acSelectionSetAll '全选
'sel.SelectOnScreen   '窗选
''MsgBox sel.Count
'For Each ent In sel
'    ent.SetXData xt, xd
'    ent.SetXData xt1, xd1
'
'Next
' ent.GetXData "", xtypeout, xdataout
'On Error GoTo 2000
'For i = LBound(xdataout) To UBound(xdataout)
'   str = str & xtypeout(i) & "--" & xdataout(i) & Chr(10)
'Next
'2000:
'If Err <> 0 Then
'        MsgBox "没有扩展属性", vbOKOnly, "查看扩展属性"
'    Else
'        MsgBox str, vbOKOnly, "查看扩展属性"
'    End If
'    mysel.Delete
'End Sub
'
'

Public Function creatsel(ByVal selname As String) As AcadSelectionSet
On Error Resume Next
Dim sel As AcadSelectionSet
  For i = 0 To ThisDrawing.SelectionSets.Count - 1
     Set sel = ThisDrawing.SelectionSets.Item(i)
     If StrComp(sel.Name, selname, 1) = 0 Then
        sel.Delete
        Exit For
     End If
  Next i
Set creatsel = ThisDrawing.SelectionSets.Add(selname)
End Function
Sub 设置查询多个扩展属性()
    Dim sel As AcadSelectionSet
    Set sel = creatsel("mysel")
    sel.SelectOnScreen
    Dim xdataout As Variant, xtypeout As Variant
    Dim ent As AcadEntity
    Dim str As String, i As Integer
    Dim xt(0 To 1) As Integer, xd(0 To 1) As Variant
     xt(0) = 1001: xd(0) = "djh"
     xt(1) = 1000: xd(1) = "310103"

    Dim xta(0 To 1) As Integer, xda(0 To 1) As Variant
       xta(0) = 1001: xda(0) = "qlr"
       xta(1) = 1000: xda(1) = "下和社区"
 
    For Each ent In sel
         ent.SetXData xt, xd
         ent.SetXData xta, xda
         ent.GetXData "", xtypeout, xdataout
        On Error GoTo line1
        For i = LBound(xtypeout) To UBound(xtypeout)
            str = str & xtypeout(i) & "--" & xdataout(i) & Chr(34)
        Next
    Next
    ThisDrawing.Utility.Prompt str
line1:
    If Err <> 0 Then
        MsgBox "没有扩展属性", vbOKOnly, "查看扩展属性"
    Else
        MsgBox str, vbOKOnly, "查看扩展属性"
    End If
    sel.Delete
End Sub




  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值