Python SolidWorks 二次开发---SolidWorks另存文件为其他格式

Python SolidWorks 二次开发—SolidWorks另存文件为其他格式

Python SolidWorks 二次开发—SolidWorks另存文件为其他格式



一、连接SolidWorks 二次开发

连接SolidWorks见>>Python SolidWorks 二次开发—Python如何连接SolidWorks

二、另存文件函数:SaveAs

使用SaveAs函数进行文件的另存

1.SaveAs函数定义

函数原型如下:

Function SaveAs( _
   ByVal Name As System.String, _
   ByVal Version As System.Integer, _
   ByVal Options As System.Integer, _
   ByVal ExportData As System.Object, _
   ByRef Errors As System.Integer, _
   ByRef Warnings As System.Integer _
) As System.Boolean

参数说明:
Name:另存文件的全路径名称,包含后缀名,包含以下选项
**Version **:另存文件时的格式,包含以下选项

MemberDescription
swSaveAsCurrentVersion0 = This is the typical save behavior.
swSaveAsDetachedDrawing4
swSaveAsFormatProE2
swSaveAsStandardDrawing3
swSaveAsSW98plusObsolete and no longer supported.

Options:另存文件时的选项,包含以下选项

MemberDescription
swSaveAsOptions_AvoidRebuildOnSave8 or 0x8
swSaveAsOptions_Copy2 or 0x2
swSaveAsOptions_DetachedDrawing128 or 0x80; Not a valid option for IPartDoc::SaveToFile2
swSaveAsOptions_IgnoreBiography256 or 0x100; Prune a SOLIDWORKS file’s revision history to just the current file name
swSaveAsOptions_OverrideSaveEmodel32 or 0x20; Saves eDrawings-related information into a section of the file being saved; specifying this setting overrides the Tools, Options, System Options, General, Save eDrawings data in SOLIDWORKS document setting; not a valid option for IPartDoc::SaveToFile2
swSaveAsOptions_SaveEmodelDataObsolete.
swSaveAsOptions_SaveReferenced4 or 0x4; Supports parts, assemblies, and drawings; this setting indicates to save all components (sub-assemblies and parts) in both assemblies and drawings; if a part has an external reference, then this setting indicates to save the external reference
swSaveAsOptions_Silent1 or 0x1
swSaveAsOptions_UpdateInactiveViews16 or 0x10; Not a valid option for IPartDoc::SaveToFile2; this setting is only applicable for a drawing that has one or more sheets; this setting updates the views on inactive sheets

ExportData:另存文件为PDF时的选项

Errors:另存文件出现错误的定义,包含如下选项

MemberDescription
swFileLockError16 or 0x10
swFileNameContainsAtSign8 or 0x8 = File name cannot contain the at symbol (@)
swFileNameEmpty4 or 0x4 = File name cannot be empty
swFileSaveAsBadEDrawingsVersion1024 or 0x400
swFileSaveAsDoNotOverwrite128 or 0x80 = Do not overwrite an existing file
swFileSaveAsInvalidFileExtension256 or 0x100 = File name extension does not match the SOLIDWORKS document type
swFileSaveAsNameExceedsMaxPathLength2048 or 0x800 = File name cannot exceed 255 characters
swFileSaveAsNoSelection512 or 0x200 = Save the selected bodies in a part document. Valid option for IPartDoc::SaveToFile2; however, not a valid option for IModelDocExtension::SaveAs
swFileSaveAsNotSupported4096 or 0x1000 = Save As operation:is not supported was executed is such a way that the resulting file might not be complete, possibly because SOLIDWORKS is hidden; if the error persists after setting SOLIDWORKS to visible and re-attempting the Save As operation, contact SOLIDWORKS API support.
swFileSaveFormatNotAvailable32 or 0x20 = Save As file type is not valid
swFileSaveRequiresSavingReferences8192 or 0x2000 = Saving an assembly with renamed components requires saving the references
swFileSaveWithRebuildErrorObsolete = See swFileSaveWarning_e
swGenericSaveError1 or 0x1
swReadOnlySaveError2 or 0x2

Warnings:另存文件出现警告的定义,包含如下选项

MemberDescription
swFileSaveWarning_AnimatorCameraViews128 or 0x80
swFileSaveWarning_AnimatorFeatureEdits16 or 0x10
swFileSaveWarning_AnimatorLightEdits64 or 0x40
swFileSaveWarning_AnimatorNeedToSolve8 or 0x8
swFileSaveWarning_AnimatorSectionViews256 or 0x100
swFileSaveWarning_EdrwingsBadSelection32 or 0x20
swFileSaveWarning_MissingOLEObjects512 or 0x200
swFileSaveWarning_NeedsRebuild2 or 0x2
swFileSaveWarning_OpenedViewOnly1024 or 0x400
swFileSaveWarning_RebuildError1 or 0x1
swFileSaveWarning_ViewsNeedUpdate4 or 0x4
swFileSaveWarning_XmlInvalid2048 or 0x800

返回值,返回布尔类型,保存成功放回true,失败返回falese

2.SaveAs函数的使用

2.1除PDF文件外,其他文件另存为新文件只需修改以下代码中的STEP为对应格式后缀名即可,以下代码示例将文件另存为STEP格式

另存为其他文件时需要修改STEP为对应文件格式后缀名

filename=filename[:-6]+‘STEP’

完整代码如下

import win32com.client
import pythoncom

def saveasfile():
    # SolidWorks年份版本
    sldver=2018
    # 建立com连接,如只有一个版本,可以只写"SldWorks.Application"
    swApp=win32com.client.Dispatch(f'SldWorks.Application.{sldver-1992}')
    # 提升API交互效率
    swApp.CommandInProgress =True
    # 显示SolidWorks界面
    swApp.Visible =True
    # 获取当前激活文档对象
    swModel = swApp.ActiveDoc
    # 获取当前激活文件路径
    filename=swModel.GetPathName
    #将当前文件另存为step格式文件,路径为当前文件路径
    filename=filename[:-6]+'STEP'
    # SaveAs在此对象下调用
    swModel=swModel.Extension
    #错误和警告
    Errors=win32com.client.VARIANT(pythoncom.VT_BYREF | pythoncom.VT_I4, -1)
    Warnings=win32com.client.VARIANT(pythoncom.VT_BYREF | pythoncom.VT_I4, -1)
    # 除PDF文件外,其余格式SaveAs第四个参数均使用Nothing
    Nothing = win32com.client.VARIANT(pythoncom.VT_DISPATCH, None)
    boolstatus = swModel.SaveAs(filename,0,0,Nothing, Errors, Warnings)
    if boolstatus:
        print('文件另存成功')
    else:
        print(f'文件另存失败,出现如下错误:{Errors}')
        print(f'文件另存失败,出现如下警告:{Warnings}')

if __name__ == '__main__':
    saveasfile()

2.2PDF文件另存时,需对ExportData进行定义,将后缀名修改为PDF,以下代码示例将文件另存为3D PDF文件格式

相比2.1代码增加的代码如下

# 指定文件类型的数据接口
swExportPDFData = swApp.GetExportFileData(1)
# 将文件另存为3D PDF 格式
swExportPDFData.ExportAs3D = True

完整代码如下

import win32com.client
import pythoncom

def saveasfile():
    # SolidWorks年份版本
    sldver=2018
    # 建立com连接,如只有一个版本,可以只写"SldWorks.Application"
    swApp=win32com.client.Dispatch(f'SldWorks.Application.{sldver-1992}')
    # 提升API交互效率
    swApp.CommandInProgress =True
    # 显示SolidWorks界面
    swApp.Visible =True
    # 获取当前激活文档对象
    swModel = swApp.ActiveDoc
    # 获取当前激活文件路径
    filename=swModel.GetPathName
    #将当前文件另存为step格式文件,路径为当前文件路径
    filename=filename[:-6]+'PDF'
    # SaveAs在此对象下调用
    swModel=swModel.Extension
    #错误和警告
    Errors=win32com.client.VARIANT(pythoncom.VT_BYREF | pythoncom.VT_I4, -1)
    Warnings=win32com.client.VARIANT(pythoncom.VT_BYREF | pythoncom.VT_I4, -1)
    # 指定文件类型的数据接口
    swExportPDFData = swApp.GetExportFileData(1)
    # 将文件另存为3D PDF 格式
    swExportPDFData.ExportAs3D = True
    boolstatus = swModel.SaveAs(filename,0,0,swExportPDFData, Errors, Warnings)
    if boolstatus:
        print('文件另存成功')
    else:
        print(f'文件另存失败,出现如下错误:{Errors}')
        print(f'文件另存失败,出现如下警告:{Warnings}')

if __name__ == '__main__':
    saveasfile()
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
SolidWorks可以通过Python编程语言进行二次开发Python是一种简单易学的脚本语言,拥有丰富的库和模块,可以很好地与Solidworks集成。 首先,为了进行SolidWorks二次开发,我们需要安装SolidWorks API以及Python的相关库。SolidWorks API是一组可用于对SolidWorks进行编程访问的库和接口。Python的相关库包括pywin32和comtypes,用于与SolidWorks的COM接口进行交互。 使用Python进行SolidWorks二次开发可以实现许多功能,如自动化生成零件、装配件和工程图。我们可以使用Python脚本读取和修改SolidWorks文件、创建和操作零件和装配件,以及生成和管理工程图。Python也可以帮助我们进行CAD数据的处理和分析,如提取尺寸信息、计算质量和重心等。 在二次开发中,我们可以编写Python脚本来快速完成重复性的任务,提高工作效率。Python的易学性和代码的简洁性使得二次开发变得更加容易,无需编写繁琐的代码,可以快速实现想要的功能。 除了使用已有的库和模块,我们还可以使用SolidWorks的API文档和示例代码来学习和开发自己的功能。SolidWorks提供了详细的API文档,其中包含各种对象和方法的说明,以及示例代码和教程来帮助我们开始二次开发。 总之,通过使用Python进行SolidWorks二次开发,我们可以实现自动化、快速和高效的CAD任务处理,并且具有灵活性和可扩展性。这极大地促进了CAD工程师在实际工作中的效率和创造力。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值