Solidworks 如何将所有尺寸标注导出EXCEL

Solidworks 如何将所有尺寸标注导出EXCEL
1、尺寸标注在同一图层内;

3、线性尺寸导出分3列,基准值,公差上限,公差下限;

3、位置度等形位公差也需要导出。基准值为图纸的标注,上下限如判定不了可以为空。


Sub ExportDimensionsToExcel()
    Dim swApp As Object
    Dim swModel As Object
    Dim swDraw As Object
    Dim swDim As Object
    Dim excelApp As Object
    Dim excelWorkbook As Object
    Dim excelWorksheet As Object
    Dim row As Long
    
    ' 初始化 SolidWorks 应用程序
    Set swApp = CreateObject("SldWorks.Application")
    
    ' 打开已有的 SolidWorks 文件
    Set swModel = swApp.ActiveDoc
    
    ' 如果打开的是绘图文件
    If swModel.GetType = 3 Then
        ' 获取绘图文档对象
        Set swDraw = swModel
        
        ' 创建一个新的 Excel 应用程序
        Set excelApp = CreateObject("Excel.Application")
        excelApp.Visible = True
        
        ' 新建一个工作簿
        Set excelWorkbook = excelApp.Workbooks.Add
        Set excelWorksheet = excelWorkbook.Sheets(1)
        
        ' 写入表头
        excelWorksheet.Cells(1, 1).Value = "标注类型"
        excelWorksheet.Cells(1, 2).Value = "基准值"
        excelWorksheet.Cells(1, 3).Value = "公差上限"
        excelWorksheet.Cells(1, 4).Value = "公差下限"
        
        ' 初始化行数
        row = 2
        
        ' 遍历绘图中的所有尺寸标注
        For Each swDim In swDraw.GetDimensions
            ' 如果是线性尺寸标注
            If swDim.GetType = 1 Then
                excelWorksheet.Cells(row, 1).Value = "线性尺寸"
                excelWorksheet.Cells(row, 2).Value = swDim.GetSystemValue3(swLinearDimValue, swDim.GetClosestPointOn)
                excelWorksheet.Cells(row, 3).Value = swDim.GetSystemValue3(swUpperDimTol, swDim.GetClosestPointOn)
                excelWorksheet.Cells(row, 4).Value = swDim.GetSystemValue3(swLowerDimTol, swDim.GetClosestPointOn)
                
                row = row + 1
            End If
        Next swDim
    Else
        MsgBox "请打开一个绘图文件。"
    End If
    
    ' 释放对象
    Set swDim = Nothing
    Set swDraw = Nothing
    Set swModel = Nothing
    Set swApp = Nothing
End Sub

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

可以参考资料:
将SolidWorks物料清单导出到Excel时可带缩略图:https://blog.csdn.net/Juvien_Huang/article/details/90376445
或者:https://www.3d66.com/answers/question_1121633.html

引用GPT作答

在Solidworks中,您可以使用宏来将尺寸标注导出到Excel。下面是一个简单的示例宏代码,可以将尺寸标注导出到Excel:


vbaOption ExplicitSub ExportDimensionsToExcel()
    Dim swApp As SldWorks.SldWorks    Dim swModel As SldWorks.ModelDoc2    Dim swDraw As SldWorks.Drawing
    Dim swSheet As SldWorks.S
    Dim swView As SldWorks.View    Dim swDim As SldWorks.Dimension    Dim excelApp As Object    Dim excelWorkbook As Object    Dim excelWorksheet As Object    Dim row As Integer
    
    ' 创建Excel应用程序对象    Set excelApp = CreateObject("Excel.Application")
    excelApp.Visible = True
    
    ' 创建新工作簿    Set excelWorkbook = excelApp.Workbooks.Add    Set excelWorksheet = excelWorkbook.Worksheets(1)
    
    ' 获取当前Solidworks应用程序对象和模型对象    Set swApp = Application.SldWorks    Set swModel = swApp.ActiveDoc
    
    ' 确保当前文档是绘图文档    If swModel.GetType <> swDocDRAWING Then        MsgBox "请打开一个绘图文档。"
        Exit Sub    End If
    
    Set swDraw = swModel
    
    ' 遍历所有的Sheet    For Each swSheet In swDraw.Sheets        ' 获取Sheet上的所有视
        For Each swView In swSheet.GetViews            ' 获取视图上的所有尺寸标注            For Each swDim In swView.GetDimensions                ' 将尺寸标注的值和位置写入Excel                row = row + 1                excelWorksheet.Cells(row, 1).Value = swDim.Value                excelWorksheet.Cells(row, 2).Value = swDim.GetText(0)
                excelWorksheet.Cells(row, 3).Value = swDim.GetX                excelWorksheet.Cells(row, 4).Value = swDim.GetY            Next sw
        Next sw
    Next swSheet
    
    ' 保存Excel文件    excelWorkbook.SaveAs "C:\Path\To\Your\Excel\File.xlsx"
    
    ' 清理对象    Set swDim = Nothing    Set swView = Nothing    Set swSheet = Nothing    Set swDraw = Nothing    Set swModel = Nothing    Set swApp =
    Set excelWorksheet = Nothing    Set excelWorkbook = Nothing    Set excelApp = Nothing
    
    MsgBox "导出完成。"

请注意,您需要将代码中的文件路径 C:\Path\To\Your\Excel\File.xlsx 替换为您希望保存Excel文件的实际路径。

要使用此宏,请按照以下步骤操作:

  1. 打开Solidworks并打开绘图文档。
  2. 打开Visual Basic编辑器(按下Alt + F11)。
  3. 在编辑器中,选择“插入”->“模块”以创建一个新的模块。
  4. 将上述代码复制粘贴到新模块中。
  5. 关闭编辑器并返回到Solidworks界面。
  6. 在Solidworks界面中,选择“工具”->“宏”->“运行”。
  7. 选择刚刚创建的宏“ExportDimensionsToExcel”并点击“运行”。

宏将开始运行,并将尺寸标注导出到指定的Excel文件中。完成后,您将收到一个消息框确认导出完成。

请注意,此宏只能导出当前绘图文档中的尺寸标注。如果您有多个绘图文档,您需要在每个文档中运行宏以分别导出尺寸标注。

在 SOLIDWORKS 中将尺寸标注导出到 Excel 可以通过宏(Macro)来实现。以下是一种可能的方法:
打开 SOLIDWORKS,打开包含尺寸标注的零件或装配文件。
点击 "工具"(Tools)菜单,选择 "宏"(Macro)> "新建宏"(New Macro)。
在弹出的 "新建宏" 窗口中,为宏命名,并选择存储位置。点击 "创建"(Create)按钮。
在 "VBA" 编辑器中,你可以编写宏的代码来实现导出尺寸标注到 Excel。以下是一个示例宏的代码,你可以根据自己的需要进行修改:

Sub ExportDimensionsToExcel()
    Dim swApp As Object
    Dim Part As Object
    Dim SelMgr As Object
    Dim SelData As Object
    Dim ExcelApp As Object
    Dim ExcelWorkbook As Object
    Dim ExcelWorksheet As Object
    Dim Row As Integer
    
    ' 创建 SOLIDWORKS 实例
    Set swApp = Application.SldWorks
    
    ' 获取当前活动零件或装配
    Set Part = swApp.ActiveDoc
    
    ' 获取选择管理器
    Set SelMgr = Part.SelectionManager
    
    ' 创建 Excel 实例
    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Visible = True
    
    ' 打开新的工作簿
    Set ExcelWorkbook = ExcelApp.Workbooks.Add
    Set ExcelWorksheet = ExcelWorkbook.Worksheets(1)
    
    ' 设置 Excel 表头
    ExcelWorksheet.Cells(1, 1).Value = "尺寸名称"
    ExcelWorksheet.Cells(1, 2).Value = "基准值"
    ExcelWorksheet.Cells(1, 3).Value = "公差上限"
    ExcelWorksheet.Cells(1, 4).Value = "公差下限"
    
    ' 初始化行号
    Row = 2
    
    ' 遍历选择集中的尺寸标注
    For Each SelData In SelMgr.GetSelectedObject6(1, -1)
        If SelData.GetType = 4 Then ' 如果是尺寸标注
            ExcelWorksheet.Cells(Row, 1).Value = SelData.DisplayName
            ExcelWorksheet.Cells(Row, 2).Value = SelData.GetValue
            ExcelWorksheet.Cells(Row, 3).Value = SelData.GetUpperTolerance
            ExcelWorksheet.Cells(Row, 4).Value = SelData.GetLowerTolerance
            Row = Row + 1
        End If
    Next SelData
    
    ' 释放对象
    Set SelMgr = Nothing
    Set Part = Nothing
    Set swApp = Nothing
End Sub

或者使用[python:

import win32com.client as win32

# 创建SOLIDWORKS应用程序对象
swApp = win32.Dispatch('SldWorks.Application')
swApp.Visible = True

# 打开零件或装配文件
part_path = r'C:\path\to\your\part_or_assembly.sldprt'  # 修改为你的文件路径
part = swApp.OpenDoc(part_path, 1)

# 获取选择管理器
sel_mgr = part.SelectionManager

# 创建Excel应用程序对象
excel_app = win32.Dispatch('Excel.Application')
excel_app.Visible = True

# 创建新工作簿
excel_workbook = excel_app.Workbooks.Add()
excel_worksheet = excel_workbook.Worksheets(1)

# 设置Excel表头
excel_worksheet.Cells(1, 1).Value = "尺寸名称"
excel_worksheet.Cells(1, 2).Value = "基准值"
excel_worksheet.Cells(1, 3).Value = "公差上限"
excel_worksheet.Cells(1, 4).Value = "公差下限"

row = 2

# 遍历选择集中的尺寸标注
for sel_data in sel_mgr.GetSelectedObject6(1, -1):
    if sel_data.GetType() == 4:  # 如果是尺寸标注
        excel_worksheet.Cells(row, 1).Value = sel_data.DisplayName
        excel_worksheet.Cells(row, 2).Value = sel_data.GetValue()
        excel_worksheet.Cells(row, 3).Value = sel_data.GetUpperTolerance()
        excel_worksheet.Cells(row, 4).Value = sel_data.GetLowerTolerance()
        row += 1

# 释放对象
part.Close()
excel_app.DisplayAlerts = False
excel_workbook.Close(True)
excel_app.DisplayAlerts = True

# 关闭应用程序
swApp.ExitApp()

在上述代码中,你需要将part_path变量替换为你的零件或装配文件的路径。请注意,这个示例代码假设你已经安装了pywin32库(Python的win32com.client模块)。

在运行代码之前,确保你已经启动了SOLIDWORKS应用程序。运行代码后,它会打开指定的文件,获取尺寸标注,并将数据导出到一个新的Excel工作簿中。你可以根据需要修改代码以适应你的要求。同样,在操作前建议备份你的文件以防止意外情况。