CAD dxf组码 Xdata 写入和读取

   Dim x2, y2 As Double
   Dim DataType(0 To 1) As Integer
   Dim Data(0 To 1) As Variant
   
   For Each acEnt In acSSet    ''根据x,y查找实体,并打上xData标记
     DataType(0) = 1001: Data(0) = "DrillLabel"
     DataType(1) = 1000: Data(1) = TS(i).kh
     acEnt.SetXData DataType, Data

以上便是dxf组码的使用方法,Xdata是CAD开放给用户(程序员)的一个功能接口:你可以往CAD实体上写入/绑定你的个人信息,CAD不会理会/管理你的个人信息,但会保存到DWG文件中。同时你也可以读取这些个人的信息,方便你编程使用。
上面的例子是在实体中写入“DrillLabel”,也即是你的应用程序标识信息,并写入点号。下次我就可以读取Xdata信息,只能是自己的标识和格式。因为只有你自己才知道它们的含义。

 Dim Ftype(0 To 3) As Integer
 Dim Fdata(0 To 3) As Variant
 Dim KMING As String

 
          Ftype(0) = -4: Fdata(0) = "<AND"
          Ftype(1) = 100: Fdata(1) = "AcadBlockReference"
          Ftype(2) = 2: Fdata(2) = KMING
          Ftype(3) = -4: Fdata(3) = "AND>"
    
     KMING = Trim(InputBox("请输入块名(或屏幕选择)", "块名 或 屏幕选择"))
     
     If KMING = "" Then Exit Sub     
     If KMING = "屏幕选择" Then          
          acSSet.SelectOnScreen        
     Else
          Ftype(0) = -4: Fdata(0) = "<AND"
          Ftype(1) = 100: Fdata(1) = "AcadBlockReference"
          Ftype(2) = 2: Fdata(2) = KMING
          Ftype(3) = -4: Fdata(3) = "AND>"
          
          acSSet.Select acSelectionSetAll, , , Ftype, Fdata
         
     End If

    acSSet.Select acSelectionSetAll, , , Ftype, Fdata
 ''----------------------------------------------------
            
    Dim xdataOut As Variant
    Dim xtypeOut As Variant
    
    Dim Parr() As Dhxy
    Dim Temp As Dhxy
    
    i = 1
    
     For Each acEnt In acSSet
     
            ''得到扩展数据,之前由DrillLabel写入的
           acEnt.GetXData "DrillLabel", xtypeOut, xdataOut  
        
           If IsEmpty(xdataOut) Then
              Dhao = ""
           Else
              Dhao = xdataOut(1)
           End If

以上代码(片段)演示了如何得到XData数据,同时也演示了利用组码实现”按块的名称选择块“的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值