VB获取CAD属性值

Dim myAcadApp As AutoCAD.AcadApplication, activeDoc As AutoCAD.AcadDocument, acMS As AutoCAD.AcadModelSpace
    Set myAcadApp = CreateObject("Autocad.Application")
  Set activeDoc = myAcadApp.ActiveDocument

Dim I%
    Dim entry As AcadEntity, blk1 As AcadBlockReference, att1 As AcadAttributeReference
    Dim varAttributes As Variant
    Dim strAttributes As String
    For Each entry In activeDoc.ModelSpace
         If entry.ObjectName = "AcDbBlockReference" Then
          Set blk1 = entry
          if blk1.name="?????" then'你的块名
          varAttributes = entry.GetAttributes
          strAttributes = ""
          For I = LBound(varAttributes) To UBound(varAttributes)
            Set att1 = varAttributes(I)
            strAttributes = strAttributes & "标记:" & att1.TagString & ",值:" & att1.TextString & ""
            '自己想怎么用就怎么用^_^
      Next
      end if          
        End If

    Next

 

转载于:https://www.cnblogs.com/liaocheng/p/4624542.html

### 回答1: 在VB语言,我们可以使用AutoCAD提供的COM接口来操作并提取属性块信息。以下是一个简单的示例来演示如何使用VB提取属性块信息: 首先,我们需要将AutoCAD的类型库引用添加到VB项目。在VB的开发环境,选择“项目”菜单下的“引用”,然后在弹出的对话框找到“Autodesk AutoCAD xx Type Library”并勾选上,点击“确定”即可添加。 接下来,在VB代码创建一个AutoCAD对象并连接到AutoCAD程序: Dim acadApp As AcadApplication Set acadApp = GetObject(, "AutoCAD.Application") 然后,通过调用AutoCAD程序的相关方法,打开需要提取属性块的DWG文件: Dim doc As AcadDocument Set doc = acadApp.Documents.Open("C:\path\to\your\file.dwg") 现在,我们可以通过遍历属性块集合,并逐一访问每个属性块的属性提取信息。例如,假设我们要提取名为“block1”的属性块的属性, Dim blockName As String blockName = "block1" Dim blockRef As AcadBlockReference Set blockRef = doc.ModelSpace.Item(blockName) Dim attrib As AcadAttribute For Each attrib In blockRef.GetAttributes MsgBox attrib.TextString Next attrib 在这个示例,我们通过使用blockName变量来指定所需的属性块名称,并使用GetAttributes方法获取属于该属性块的属性集合。然后,我们使用循环来遍历这些属性,并逐一提取属性。 当代码执行完毕后,我们可以将属性块的属性显示在一个对话框,以便用户查看和分析。 以上是一个简单的示例,可以根据实际的需求和具体问题进行修改和扩展。希望能对您有所帮助! ### 回答2: 使用VB(Visual Basic)编程语言可以提取AutoCAD属性块的属性。以下是一个示例代码: 首先,需要连接到AutoCAD应用程序: ```vb Dim acadApp As AcadApplication Set acadApp = GetObject(, "AutoCAD.Application") acadApp.Visible = True ``` 其次,选择要提取属性的块: ```vb Dim acadDoc As AcadDocument Set acadDoc = acadApp.ActiveDocument Dim acadSelSet As AcadSelectionSet Set acadSelSet = acadDoc.SelectionSets.Add("SelSet") Dim filterType(0) As Integer filterType(0) = 0 acadSelSet.Select acSelectionSetAll, , , filterType If acadSelSet.Count <> 0 Then Dim acadEntity As AcadEntity Set acadEntity = acadSelSet.Item(0) If TypeOf acadEntity Is AcadBlockReference Then Dim acadBlockRef As AcadBlockReference Set acadBlockRef = acadEntity ... End If End If acadSelSet.Delete ``` 然后,使用块引用对象访问属性块的属性: ```vb Dim attribs As Variant attribs = acadBlockRef.GetAttributes If Not attribs Is Nothing Then Dim i As Integer For i = LBound(attribs) To UBound(attribs) Dim attrib As AcadAttribute Set attrib = attribs(i) Dim tag As String Dim value As String tag = attrib.TagString value = attrib.TextString ' 在这里处理属性的标签和 ... Next i End If ``` 最后,使用完毕后需要释放对象并关闭AutoCAD应用程序: ```vb acadBlockRef = Nothing acadEntity = Nothing acadSelSet = Nothing acadApp.Quit Set acadApp = Nothing ``` 这是一个基本的示例代码,可以根据实际需求进行修改和扩展。希望对你有所帮助! ### 回答3: 用VB对AutoCAD属性块进行提取,可以通过AutoCAD的COM接口来实现。以下是一个简单的示例代码,用于提取AutoCAD属性块: ``` Sub ExtractAttributes() Dim acadApp As Object Dim acadDoc As Object Dim blkRef As Object Dim attRef As Object Dim blkAtt As Object ' 启动AutoCAD应用程序 Set acadApp = CreateObject("AutoCAD.Application") ' 打开AutoCAD文档 Set acadDoc = acadApp.Documents.Open("C:\Path\To\Your\Drawing.dwg") ' 循环遍历每个块引用 For Each blkRef In acadDoc.ModelSpace ' 检查是否是属性块 If blkRef.ObjectName = "AcDbBlockReference" Then ' 循环遍历每个属性引用 For Each attRef In blkRef.AttributeReferences ' 获取属性块对象 Set blkAtt = attRef.Object ' 提取属性块信息 Debug.Print "属性块名称: " & blkAtt.Name Debug.Print ": " & blkAtt.TextString Debug.Print "位置: " & attRef.InsertionPoint(0) & ", " & attRef.InsertionPoint(1) & ", " & attRef.InsertionPoint(2) Next attRef End If Next blkRef ' 关闭AutoCAD文档 acadDoc.Close False ' 退出AutoCAD应用程序 acadApp.Quit End Sub ``` 以上代码首先启动AutoCAD应用程序,并打开指定的文档。然后,它遍历模型空间的所有块引用,检查它们是否是属性块。如果是属性块,它会循环遍历每个属性引用,并提取属性块的名称、和位置信息。最后,关闭文档和退出AutoCAD应用程序。 请注意,要运行以上代码,您需要在VB环境设置对AutoCAD的引用。您还需要将代码的文档路径替换为您自己的AutoCAD绘图文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值