给cad设置并查询扩展属性xdata——vba实现

cad图形设置扩展属性可采用vba插件实现,如下:

使用方法:cad命令行输入“vbaman”加载此插件,“vbarun”运行此插件,根据提示选对应的图形即可设置扩展属性。

扩展属性可根据自己需求输入。

部分代码如下:

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 4) As Integer, xd(0 To 4) As Variant
     xt(0) = 1001: xd(0) = "south"
     xt(1) = 1000: xd(1) = "社区名称"
     xt(2) = 1000: xd(2) = "上河社区"
     xt(3) = 1000: xd(3) = "宗地号"
     xt(4) = 1000: xd(4) = "310103"
 
    For Each ent In sel
         ent.SetXData xt, xd
        
         ent.GetXData "", xtypeout, xdataout
        On Error GoTo line1
        For i = LBound(xtypeout) To UBound(xtypeout)
            str = str & xtypeout(i) & "内容是:" & xdataout(i) & vbCrLf
        Next
    Next
    ThisDrawing.Utility.Prompt str
line1:
    If Err <> 0 Then
        MsgBox "没有扩展属性", vbOKOnly, "查看扩展属性"
    Else
        MsgBox str, vbOKOnly, "查看扩展属性"
    End If
    sel.Delete
End Sub

如果实体没属性,用isempty函数可找到该图形

        Set SelectA = ThisDrawing.SelectionSets.Add("mysel")

             fType(0) = 0: fData(0) = "*Polyline"
        SelectA.Select acSelectionSetAll, , , fType, fData
'        SelectA.Highlight (True)
        For Each Entry In SelectA
            Entry.GetXData "", XDType, xData
'            MsgBox Entry.ObjectName
'          ThisDrawing.Regen acActiveViewport
If not IsEmpty(xData) Then
   *******************
    Else
endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值