如何将Solidworks文件保存为步骤214,并使用VBA包含附件坐标系?

问题描述 投票:0回答:1

目前我有一个工作脚本,可将 Solidworks 零件保存为步骤文件。但是,当我打开该文件时,它没有颜色。我已经读到需要另存为 214 步骤。但是,我找不到它。如果我录制宏,“另存为 214 步骤”和“包含坐标系选项”将不可见。我如何实现这些用户首选项?我尝试了一些在网上找到的代码,但我发现很难正确实现它。

我的代码的一小部分,基本上是它的作用:在已经开放的 Solidworks 装配体中,它保存特定零件并使用扩展名“step”保存它。

Sub SaveFiles()

'Declare variables
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Feature As Object
Dim Step As Long
Dim PathInit, PathCut  As String
Dim instance As ISldWorks

    'Use opened file as active document
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    
    Set SelMgr = Part.SelectionManager
    
    'Open and Save
    Set Part = swApp.OpenDoc6("filenameold.SLDPRT", 1, 0, "", longstatus, longwarnings)

    'Assign correct STEP type DOES NOT WORK
    Set SelMgr = Part.SelectionManager
    Step = swApp.SetUserPreferenceIntegerValue(swStepAP, 214)

    Part.Extension.SetUserPreferenceString swFileSaveAsCoordinateSystem, 0, "Coordinate System1" 'DOES NOT WORK
    SavePart = Part.SaveAs3("filenamenew.STEP", 0, 2)
End sub

如何以及在哪里定义我的步骤文件应为 214 以及要包含什么坐标系?如果有任何不清楚的地方,或者我需要分享更多代码,请告诉我。 预先感谢您。

vba coordinate-systems solidworks step
1个回答
0
投票

下面的代码将打开一个零件文件,其坐标系名为坐标系测试

由于

SaveAs3 Method (IModelDocExtension)
将用于导出到步骤,因此文件被激活,之后我们获得活动文档,如备注此处中所述。请注意,此保存方法与您代码中的保存方法不同。您正在使用现在的已过时
SaveAs3 Method (IModelDoc2)
。奇怪的是,SolidWorks VBA 记录器也使用这种过时的方法...

然后定义所有相关的用户偏好。如果您需要纹理与步骤文件配合,您需要确保选中该选项。

然后使用已经引用的方法保存文件。

使用面为红色、坐标系为 50、50、50 的零件进行测试,效果很好。

Option Explicit

    Dim swApp                   As SldWorks.SldWorks
    Dim swModel                 As SldWorks.ModelDoc2
    Dim swModelActivated        As SldWorks.ModelDoc2
    Dim swModelToExport         As SldWorks.ModelDoc2
    Dim strModelName            As String
    Dim nStatus                 As Long
    Dim nErrors                 As Long
    Dim nWarnings               As Long
    
Sub SaveToStep()

    'Declare variables

    Dim OutputCoordSys As String
    Dim FileToExport As String
    Dim StepFile As String

    Set swApp = Application.SldWorks

    FileToExport = "C:\temp\ExportTestPart.SLDPRT"
    
    OutputCoordSys = "Coordinate System Test"
    
    StepFile = Replace(FileToExport, ".SLDPRT", ".STEP")
    
    'Open
    Set swModel = swApp.OpenDoc6(FileToExport, 1, 0, "", nStatus, nWarnings)
        
    'Activate the model
    strModelName = swModel.GetTitle
    
    Set swModelActivated = swApp.ActivateDoc3(strModelName, False, swRebuildOnActivation_e.swUserDecision, nErrors)
    
    'Get the active model
    Set swModelToExport = swApp.ActiveDoc
    
    'Assign correct STEP
    swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swStepAP, 214
    
    'Set Export appearences option to true
    swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swStepExportAppearances, True

    'Assign Output coordinate system to use
    swApp.SetUserPreferenceStringValue swUserPreferenceStringValue_e.swExportOutputCoordinateSystem, OutputCoordSys
    
    'Save the file as step
    swModelToExport.Extension.SaveAs3 StepFile, 0, 1, Nothing, Nothing, nErrors, nWarnings
    
End Sub

我不确定我是否理解您对 OP 的评论,但台阶上没有纹理并不能告诉我们这是 203 或 214 台阶。如果你有纹理,你可以确定它是一个 214 步骤文件,但反之则不然。

您可以做的是使用文本编辑器打开文件并检查标题。这些是使用我发布的代码创建的文件的前四行:

ISO-10303-21;
HEADER;
FILE_DESCRIPTION (( 'STEP AP214' ),
'1' );
© www.soinside.com 2019 - 2024. All rights reserved.