2301_79407030 2024-11-21 16:21 采纳率: 0%
浏览 31

如何用solidworks内置VBA宏写一段代码,将2D工程图尺寸遍历后导出到EXCEL中

如何用solidworks内置VBA宏写一段代码,将2D工程图尺寸遍历后导出到EXCEL中?
单位出工程后需要提取图纸里面的尺寸,做一份尺寸清单,到目前位置都是用的手工抄录的方法,又慢还容易错,希望哪个高人给点小建议,最好给出示例代码(不接受无脑的AI生成代码,试过很多,都用不了),万分感谢了!

  • 写回答

1条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-11-22 18:14
    关注

    本答案参考 多次询问 ChatGPT-3.5 后选择的最佳回答,若是满意,还请采纳,谢谢

    1. 准备工作
      • 在SolidWorks中打开要处理的2D工程图。
      • 启用宏功能:在SolidWorks中,通过“工具”->“宏”->“新建”来创建一个新的VBA宏。
    2. 代码实现思路
      • 连接到Excel应用程序并创建一个新的工作簿。
      • 遍历工程图中的尺寸,获取尺寸的相关属性(如尺寸值、标注文本等)。
      • 将这些尺寸属性写入到Excel工作表中。
    3. 示例代码如下
    ' 引用SolidWorks类型库
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc
    Dim swSheet As SldWorks.Sheet
    Dim swAnno As SldWorks.Annotation
    Dim excelApp As Object
    Dim excelBook As Object
    Dim excelSheet As Object
    Dim i As Long, j As Long
    
    Sub ExportDimensionsToExcel()
        ' 连接到SolidWorks
        Set swApp = Application.SldWorks
        Set swModel = swApp.ActiveDoc
        If swModel Is Nothing Then
            MsgBox "请先打开一个工程图文件"
            Exit Sub
        End If
        Set swDraw = swModel
        ' 创建Excel应用程序对象
        Set excelApp = CreateObject("Excel.Application")
        excelApp.Visible = True
        ' 创建新的工作簿
        Set excelBook = excelApp.Workbooks.Add
        Set excelSheet = excelBook.Worksheets(1)
        j = 1
        ' 遍历工程图中的每个图纸
        For Each swSheet In swDraw.Sheets
            ' 遍历图纸中的每个注释(包括尺寸)
            For i = 0 To swSheet.GetAnnotationsCount2(- 1)
                Set swAnno = swSheet.GetAnnotation(i)
                If swAnno.GetType = swAnnotationType_e.swDimension Then
                    ' 将尺寸值和标注文本写入Excel
                    excelSheet.Cells(j, 1).Value = swAnno.Text
                    excelSheet.Cells(j, 2).Value = swAnno.GetValue
                    j = j + 1
                End If
            Next i
        Next swSheet
    End Sub
    
    1. 代码解释
      • 首先,代码通过Set swApp = Application.SldWorks获取SolidWorks应用程序对象,并检查是否有打开的工程图文件。
      • 然后,使用CreateObject("Excel.Application")创建Excel应用程序对象,并使其可见(excelApp.Visible = True),接着创建一个新的工作簿并获取第一个工作表。
      • 接下来,通过两个嵌套的循环遍历工程图中的每个图纸(For Each swSheet In swDraw.Sheets)和每个注释(For i = 0 To swSheet.GetAnnotationsCount2(- 1))。当注释类型为尺寸(swAnno.GetType = swAnnotationType_e.swDimension)时,将尺寸的标注文本(swAnno.Text)和尺寸值(swAnno.GetValue)分别写入Excel工作表的两列中。

    请注意:

    • 上述代码在不同版本的SolidWorks和Excel中可能需要根据实际情况进行调整。
    • 在运行宏之前,请确保已经正确设置了SolidWorks和Excel的相关环境和权限。
    评论

报告相同问题?

问题事件

  • 修改了问题 11月21日
  • 创建了问题 11月21日