目前我有一个工作脚本,可将 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 以及要包含什么坐标系?如果有任何不清楚的地方,或者我需要分享更多代码,请告诉我。 预先感谢您。
下面的代码将打开一个零件文件,其坐标系名为坐标系测试
由于
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' );