Recently just purchased EPDM 2014 and we are in the process of setting up the work flow. Everything was going smooth until I tested the fist project. During the automated PDF creation in one of the sub assemblies on the drawing view a part goes missing, its almost like it's suppressed and the dimensions to it are dangling. This seems to happen to at least one view on any multiple sheet drawings we make when we try to use their PDF creator.
However save as PDF manually works and when I use the macro I have been using for years (which also does a save as with parameters) it works as well. Here is the code EPDM is using
'Enterprise PDM 2014 - Default Convert Task Script
'SPR Updates:
'2014 PR1 - SPRs 682792, 538578, 651998 - Enable swApp.Visible and IgnoreHiddenComponents options
'2014 SP4 - SPR 765910 - Add swSaveAsOptions_UpdateInactiveViews save option
'-----------------------------------------------
Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim swDrawing As SldWorks.DrawingDoc
Dim swAssembly As SldWorks.AssemblyDoc
Dim swExtension As SldWorks.ModelDocExtension
Dim swConfMgr As SldWorks.ConfigurationManager
Dim swPDFExport As SldWorks.ExportPdfData
Dim swDocSpecification As SldWorks.DocumentSpecification
Dim FileSystemObj as Object
Dim errors As Long
Dim warnings As Long
#If VBA7 Then
Private Declare PtrSafe Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
Private Declare PtrSafe Function PathIsRelative Lib "shlwapi.dll" Alias "PathIsRelativeA" (ByVal pszPath As String) As Long
#Else
Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
Private Declare Function PathIsRelative Lib "shlwapi.dll" Alias "PathIsRelativeA" (ByVal pszPath As String) As Long
#End If
Function PathAppend(path, more) As String
If Not Right(path, 1) = "\" Then
path = path & "\"
End If
If Left(more, 1) = "\" Then
more = Mid(more, 2)
End If
PathAppend = path & more
End Function
Sub Log(message)
Dim errorLogFolder As String
Dim errorLogPath As String
' Determine error log output path
errorLogFolder = "[ErrorLogPath]"
' Trim \ from the start
If Left(errorLogFolder, 1) = "\" Then
errorLogFolder = Mid(errorLogFolder, 2)
End If
' Build full root
If PathIsRelative( errorLogFolder ) = 1 Then
errorLogPath = PathAppend("<VaultPath>", errorLogFolder)
Else
errorLogPath = errorLogFolder
End If
' Create directory if not exists
SHCreateDirectoryEx ByVal 0&, errorLogPath, ByVal 0&
errorLogPath = PathAppend(errorLogPath, "<TaskInstanceGuid>.log")
' Write error to output file
Open errorLogPath For Append As #1
Print #1, message
Close #1
End Sub
Sub CreatePath(path)
' Create directory if not exists
If SHCreateDirectoryEx(ByVal 0&, path, ByVal 0&) = 0 Then
' Create temp file
Open path & "~$holder" For Append As #1
Close #1
End If
End Sub
Sub KillHolder(path)
On Error Goto Ignore
If FileSystemObj.FileExists(path & "~$holder") Then
Kill path & "~$holder"
End If
Ignore:
End Sub
Function GetExtension(docType, fileFormat)
first = InStr(1, fileFormat, "(")
last = InStr(first, fileFormat, ")")
extensions = Mid(fileFormat, first + 1, last - first - 1)
If InStr(1, extensions, ";") > 0 Then
Dim all As Variant
all = Split(extensions, ";")
If UBound(all) >= docType - 1 Then
ext = all(docType - 1)
Else
ext = "*." ' Nothing
End If
Else
ext = extensions
End If
GetExtension = Mid(Trim(ext), 2)
End Function
Sub SetConversionOptions(ext)
' PDF options
If LCase(ext) = ".pdf" Then
swApp.SetUserPreferenceToggle swPDFExportInColor, [PdfInColor]
swApp.SetUserPreferenceToggle swPDFExportEmbedFonts, [PdfEmbedFonts]
swApp.SetUserPreferenceToggle swPDFExportHighQuality, [PdfHighQuality]
swApp.SetUserPreferenceToggle swPDFExportPrintHeaderFooter, [PdfPrintHeaderFooter]
swApp.SetUserPreferenceToggle swPDFExportUseCurrentPrintLineWeights, [PdfUsePrinterLineWeights]
' IGES
ElseIf LCase(ext) = ".igs" Then
swApp.SetUserPreferenceToggle swIGESExportSolidAndSurface, [IgesExportSolidSurface]
swApp.SetUserPreferenceIntegerValue swIGESRepresentation, [IgesRepresentation]
swApp.SetUserPreferenceToggle swIGESExportAsWireframe, [IgesExportWireframe]
swApp.SetUserPreferenceIntegerValue swIGESCurveRepresentation, [IgesCurveRepresentation]
swApp.SetUserPreferenceIntegerValue swIGESSystem, [IgesSystem]
swApp.SetUserPreferenceToggle swIGESExportFreeCurves, [IgesExportFreeCurves]
swApp.SetUserPreferenceToggle swIGESExportSketchEntities, [IgesExportSketchEntities]
swApp.SetUserPreferenceToggle swIGESHighTrimCurveAccuracy, [IgesHighCurveAccuracy]
swApp.SetUserPreferenceToggle swIGESComponentsIntoOneFile, [IgesComponentsIntoOneFile]
swApp.SetUserPreferenceToggle swIGESFlattenAssemHierarchy, [IgesFlattenAssemblyHierarchy]
' ACIS
ElseIf LCase(ext) = ".sat" Then
swApp.SetUserPreferenceIntegerValue swAcisOutputGeometryPreference, [AcisGeometry]
swApp.SetUserPreferenceIntegerValue swOutputVersion, [AcisVersion]
swApp.SetUserPreferenceIntegerValue swAcisOutputUnits, [AcisOutputAsUnit]
' STEP
ElseIf LCase(ext) = ".step" Then
swApp.SetUserPreferenceIntegerValue swAcisOutputGeometryPreference, [StepGeometry]
swApp.SetUserPreferenceIntegerValue swStepAP, [StepVersion]
' Parasolid
ElseIf LCase(ext) = ".x_t" Or LCase(ext) = ".x_b" Then
swApp.SetUserPreferenceIntegerValue swParasolidOutputVersion, [ParasolidVersion]
swApp.SetUserPreferenceToggle swXTAssemSaveFormat, [ParasolidFlattenHierarchy]
' VRML
ElseIf LCase(ext) = ".wrl" Then
swApp.SetUserPreferenceIntegerValue swExportVrmlUnits, [VrmlOutputAsUnit]
swApp.SetUserPreferenceToggle swExportVrmlAllComponentsInSingleFile, [VrmlSaveAssemblyAsOneFile]
' STL
ElseIf LCase(ext) = ".stl" Then
swApp.SetUserPreferenceToggle swSTLBinaryFormat, [StlOutputAs]
swApp.SetUserPreferenceIntegerValue swExportStlUnits, [StlOutputAsUnit]
swApp.SetUserPreferenceIntegerValue swSTLQuality, [StlQuality]
swApp.SetUserPreferenceToggle swSTLDontTranslateToPositive, [StlDontTranslatePositive]
swApp.SetUserPreferenceToggle swSTLComponentsIntoOneFile, [StlComponentsIntoOneFile]
swApp.SetUserPreferenceToggle swSTLCheckForInterference, [StlCheckForInterferences]
' TIF or PSD
ElseIf LCase(ext) = ".tif" Or LCase(ext) = ".psd" Then
swApp.SetUserPreferenceIntegerValue swTiffImageType, [TifImageType]
swApp.SetUserPreferenceIntegerValue swTiffCompressionScheme, [TifCompressionScheme]
' eDrawings
ElseIf LCase(ext) = ".eprt" Or LCase(ext) = ".easm" Or LCase(ext) = ".edrw" Then
swApp.SetUserPreferenceToggle swEDrawingsOkayToMeasure, [EdrwOkayToMeasure]
swApp.SetUserPreferenceToggle swEDrawingsExportSTLOkay, [EdrwAllowExportOfSTL]
swApp.SetUserPreferenceToggle swEDrawingsSaveShadedDataInDrawings, [EdrwSaveShadedData]
swApp.SetUserPreferenceToggle swEDrawingsSaveBOM, [EdrwSaveBOM]
swApp.SetUserPreferenceToggle swEDrawingsSaveAnimationOkay, [EdrwSaveMotionStudies]
swApp.SetUserPreferenceToggle swEDrawingsSaveAnimationToAllConfigs, [EdrwSaveMotionStudiesToAllConfs]
swApp.SetUserPreferenceToggle swEDrawingsSaveAnimationRecalculate, [EdrwRecalcMotionStudies]
End If
End Sub
Function GetFullFileName(convFileName, conf, i, itemCount)
' Configuration name may include backslash. Remove it since otherwise saving will
' fail due a missing directory
conf = Replace(conf, "\", "")
conf = Replace(conf, "/", "")
finalFileName = Replace(convFileName, "<Configuration>", conf)
' If no configuration
If finalFileName = convFileName And itemCount > 0 Then
finalFileName = Left(convFileName, InStrRev(convFileName, ".") - 1) & "_" & i & Mid(convFileName, InStrRev(convFileName, "."))
End If
' Remove illegal characters from filename
finalFileName = Replace(finalFileName, "<", "")
finalFileName = Replace(finalFileName, ">", "")
finalFileName = Left(finalFileName, 2) + Replace(finalFileName, ":", "", 3) ' Don't start from begin since drive has :
finalFileName = Replace(finalFileName, "*", "")
finalFileName = Replace(finalFileName, "?", "")
finalFileName = Replace(finalFileName, """", "")
finalFileName = Replace(finalFileName, "|", "")
GetFullFileName = finalFileName
End Function
Sub Convert(docFileName)
' Constants for some SolidWorks error/warning returns that may be encountered during a convert operation.
Const swerr_InvalidFileExtension = 256 ' the file extension differs from the SW document type.
Const swerr_SaveAsNotSupported = 4096 ' the options selected for this convert aren't supported, output may be incomplete.
Const swwarn_MissingOLEObjects = 512 ' the document contains OLE objects and must be opened and converted in SolidWorks.
' Determine type of SolidWorks file based on file extension
If LCase(Right(docFileName, 7)) = ".sldprt" Or LCase(Right(docFileName, 4)) = ".prt" Then
docType = swDocPART
ElseIf LCase(Right(docFileName, 7)) = ".sldasm" Or LCase(Right(docFileName, 4)) = ".asm" Then
docType = swDocASSEMBLY
ElseIf LCase(Right(docFileName, 7)) = ".slddrw" Or LCase(Right(docFileName, 4)) = ".drw" Then
docType = swDocDRAWING
Else
docType = swDocNONE
If bIsSupportedExtension(Mid(docFileName, InStrRev(docFileName, ".") + 1)) = False Then
Log "The file extension '" & Mid(docFileName, InStrRev(docFileName, ".") + 1) & "' is not supported."
Exit Sub
End If
End If
' Open document
If docType = swDocNONE Then
Set swModel = swApp.LoadFile4(docFileName, "", Nothing, errors)
docType = swModel.GetType
Else
Set swDocSpecification = swApp.GetOpenDocSpec(docFileName)
swDocSpecification.DocumentType = docType
swDocSpecification.ReadOnly = True
swDocSpecification.Silent = True
swDocSpecification.ConfigurationName = ""
swDocSpecification.DisplayState = ""
swDocSpecification.IgnoreHiddenComponents = True 'SPR 682792, 538578, 651998
Set swModel = swApp.OpenDoc7(swDocSpecification)
errors = swDocSpecification.Error
' Set swModel = swApp.OpenDoc6(docFileName, docType, swOpenDocOptions_Silent Or swOpenDocOptions_ReadOnly, "", errors, warnings)
End If
If errors = swFutureVersion Then
Log "Document '" & docFileName & "' is future version."
Exit Sub
End If
' Load failed?
If swModel Is Nothing Then
Log "Method call ModelDoc2::OpenDoc7 for document '" & docFileName & "' failed. Error code " & errors & " returned."
Exit Sub
End If
If Val(Left(swApp.RevisionNumber, 2)) >= 18 Then
swApp.Frame.KeepInVisible = True
End If
swApp.ActivateDoc2 docFileName, True, errors
modelPath = swModel.GetPathName()
If modelPath = "" Then
modelPath = docFileName
End If
modelFileName = Mid(modelPath, InStrRev(modelPath, "\") + 1)
modelFileName = Left(modelFileName, InStrRev(modelFileName, ".") - 1)
modelExtension = Mid(modelPath, InStrRev(modelPath, ".") + 1)
' Build destination filenames
convFileName = "[OutputPath]"
Dim convFileName2 As String
convFileName2 = "[OutputPath2]"
Dim convFilePath2 As String
Dim convFileNameTemp2 As String
Dim bSecondOutput As Boolean
bSecondOutput = False
If (Len(convFileName2) > 0) Then
bSecondOutput = True
End If
ext = GetExtension(docType, "[FileFormat]")
convFileName = Replace(convFileName, "<Filename>", modelFileName)
convFileName = Replace(convFileName, "<Extension>", modelExtension)
convFilePath = Left(convFileName, InStrRev(convFileName, "\"))
CreatePath convFilePath
convFileName = convFileName & ext
If bSecondOutput = True Then
convFileName2 = Replace(convFileName2, "<Filename>", modelFileName)
convFileName2 = Replace(convFileName2, "<Extension>", modelExtension)
convFilePath2 = Left(convFileName2, InStrRev(convFileName2, "\"))
CreatePath convFilePath2
convFileName2 = convFileName2 & ext
End If
' Set conversion options
SetConversionOptions ext
Set swExtension = swModel.Extension
If docType = swDocDRAWING Then
Dim vSheetNames As Variant
Set swDrawing = swModel
' All sheets?
If ([OutputSheets] And 2) = 2 Then
vSheetNames = swDrawing.GetSheetNames
' Last active sheet?
ElseIf ([OutputSheets] And 4) = 4 Then
ReDim vSheetNames(0 to 0) As Variant
vSheetNames(0) = swDrawing.GetCurrentSheet.GetName()
' Named sheet
ElseIf ([OutputSheets] And 8) = 8 Then
Dim vSheetNamesTemp As Variant
vSheetNamesTemp = swDrawing.GetSheetNames
removed = 0
For i = 0 To UBound(vSheetNamesTemp)
vSheetNamesTemp(i-removed) = vSheetNamesTemp(i)
sheetName = vSheetNamesTemp(i)
If Not sheetName Like "[NamedSheet]" Then
removed = removed + 1
EndIf
Next i
If (UBound(vSheetNamesTemp) - removed) >= 0 Then
ReDim Preserve vSheetNamesTemp(0 To (UBound(vSheetNamesTemp) - removed))
vSheetNames = vSheetNamesTemp
End If
End If
If Not IsEmpty(vSheetNames) Then
' Save sheets one per file
If ([FileSheets] And 4) = 4 Then
For i = 0 To UBound(vSheetNames)
Dim varSheetName As Variant
swDrawing.ActivateSheet vSheetNames(i)
convFileNameTemp = GetFullFileName(convFileName, vSheetNames(i), i, UBound(vSheetNames))
If LCase(ext) = ".pdf" Then
Set swPDFExport = swApp.GetExportFileData(1)
varSheetName = vSheetNames(i)
swPDFExport.SetSheets swExportData_ExportSpecifiedSheets, varSheetName
ElseIf LCase(ext) = ".edrw" Then
swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveActive
End If
' Convert the document
Success = swExtension.SaveAs(convFileNameTemp, swSaveAsCurrentVersion, swSaveAsOptions_Silent + swSaveAsOptions_UpdateInactiveViews, swPDFExport, errors, warnings)
' Save failed?
If Success = False Then
If errors = swerr_InvalidFileExtension Then
Log "The file '" & docFileName & "' and sheet '" & vSheetNames(i) & "' can't be converted to the file extension '" & ext & "'."
Else
Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp & "' and sheet '" & vSheetNames(i) & "' failed. Error code " & errors & " returned."
If (((errors And swerr_SaveAsNotSupported) <> 0) And ((warnings And swwarn_MissingOLEObjects) <> 0)) Then
Log "This document contains OLE objects. Such objects can't be converted outside of SolidWorks. Please open the document and perform the conversion from SolidWorks."
End If
End if
End If
If bSecondOutput = True Then
convFileNameTemp2 = GetFullFileName(convFileName2, vSheetNames(i), i, UBound(vSheetNames))
Success = swExtension.SaveAs(convFileNameTemp2, swSaveAsCurrentVersion, swSaveAsOptions_Silent + swSaveAsOptions_UpdateInactiveViews, swPDFExport, errors, warnings)
' Save failed?
If Success = False Then
If errors = swerr_InvalidFileExtension Then
Log "The file '" & docFileName & "' and sheet '" & vSheetNames(i) & "' can't be converted to the file extension '" & ext & "'."
Else
Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp2 & "' and sheet '" & vSheetNames(i) & "' failed. Error code " & errors & " returned."
If (((errors And swerr_SaveAsNotSupported) <> 0) And ((warnings And swwarn_MissingOLEObjects) <> 0)) Then
Log "This document contains OLE objects. Such objects can't be converted outside of SolidWorks. Please open the document and perform the conversion from SolidWorks."
End If
End if
End If
End If
Next i
' Save PDF sheets to one file
ElseIf ([FileSheets] And 2) = 2 Then
If LCase(ext) = ".pdf" Then
Set swPDFExport = swApp.GetExportFileData(swExportPdfData)
swPDFExport.SetSheets swExportData_ExportSpecifiedSheets, vSheetNames
ElseIf LCase(ext) = ".edrw" Then
If ([OutputSheets] And 2) = 2 Then ' All sheets?
swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveAll
ElseIf ([OutputSheets] And 4) = 4 Then ' Last active sheet?
swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveActive
ElseIf ([OutputSheets] And 8) = 8 Then ' Named sheet
swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveSelected
selectedSheets = Join(vSheetNames, vbLf)
swApp.SetUserPreferenceStringListValue swEmodelSelectionList, Trim(selectedSheets)
End If
End If
convFileNameTemp = GetFullFileName(convFileName, "All", 0, 0)
' Convert the document
Success = swExtension.SaveAs(convFileNameTemp, swSaveAsCurrentVersion, swSaveAsOptions_Silent + swSaveAsOptions_UpdateInactiveViews, swPDFExport, errors, warnings)
' Save failed?
If Success = False Then
Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp & "' failed. Error code " & errors & " returned."
End If
If bSecondOutput = True Then
convFileNameTemp2 = GetFullFileName(convFileName2, "All", 0, 0)
Success = swExtension.SaveAs(convFileNameTemp2, swSaveAsCurrentVersion, swSaveAsOptions_Silent + swSaveAsOptions_UpdateInactiveViews, swPDFExport, errors, warnings)
' Save failed?
If Success = False Then
Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp2 & "' failed. Error code " & errors & " returned."
End If
End If
End If
Else
Log "Document '" & docFileName & "' didn't contain any sheets named '[NamedSheet]'."
End If
Else
Dim vConfNames As Variant
Set swConfMgr = swModel.ConfigurationManager
' All configurations?
If ([OutputConfs] And 2) = 2 Then
vConfNames = swModel.GetConfigurationNames
' Last active conf?
ElseIf ([OutputConfs] And 4) = 4 Then
ReDim vConfNames(0 to 0) As Variant
vConfNames(0) = swConfMgr.ActiveConfiguration.Name
' Named confs
ElseIf ([OutputConfs] And 8) = 8 Then
Dim vConfNamesTemp As Variant
vConfNamesTemp = swModel.GetConfigurationNames
removed = 0
For i = 0 To UBound(vConfNamesTemp)
vConfNamesTemp(i-removed) = vConfNamesTemp(i)
confName = vConfNamesTemp(i)
If Not confName Like "[NamedConf]" Then
removed = removed + 1
EndIf
Next i
If (UBound(vConfNamesTemp) - removed) >= 0 Then
ReDim Preserve vConfNamesTemp(0 To (UBound(vConfNamesTemp) - removed))
vConfNames = vConfNamesTemp
End If
End If
If Not IsEmpty(vConfNames) Then
If ([FileConfs] And 4) = 4 Then
' Save configurations
For i = 0 To UBound(vConfNames)
swModel.ShowConfiguration vConfNames(i)
convFileNameTemp = GetFullFileName(convFileName, vConfNames(i), i, UBound(vConfNames))
' Convert the document
Success = swExtension.SaveAs(convFileNameTemp, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, errors, warnings)
' Save failed?
If Success = False Then
If errors = swerr_InvalidFileExtension Then
Log "The file '" & docFileName & "' and configuration '" & vConfNames(i) & "' can't be converted to the file extension '" & ext & "'."
Else
Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp & "' and configuration '" & vConfNames(i) & "' failed. Error code " & errors & " returned."
If (((errors And swerr_SaveAsNotSupported) <> 0) And ((warnings And swwarn_MissingOLEObjects) <> 0)) Then
Log "This document contains OLE objects. Such objects can't be converted outside of SolidWorks. Please open the document and perform the conversion from SolidWorks."
End If
End If
End If
If bSecondOutput = True Then
convFileNameTemp2 = GetFullFileName(convFileName2, vConfNames(i), i, UBound(vConfNames))
Success = swExtension.SaveAs(convFileNameTemp2, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, errors, warnings)
' Save failed?
If Success = False Then
If errors = swerr_InvalidFileExtension Then
Log "The file '" & docFileName & "' and configuration '" & vConfNames(i) & "' can't be converted to the file extension '" & ext & "'."
Else
Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp2 & "' and configuration '" & vConfNames(i) & "' failed. Error code " & errors & " returned."
Log "warnings1 = " & warnings
If (((errors And swerr_SaveAsNotSupported) <> 0) And ((warnings And swwarn_MissingOLEObjects) <> 0)) Then
Log "This document contains OLE objects. Such objects can't be converted outside of SolidWorks. Please open the document and perform the conversion from SolidWorks."
End If
End If
End If
End If
Next i
ElseIf ([FileConfs] And 2) = 2 Then
If LCase(ext) = ".eprt" Or LCase(ext) = ".easm" Then
If ([OutputConfs] And 2) = 2 Then ' All confs?
swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveAll
ElseIf ([OutputConfs] And 4) = 4 Then ' Last active conf?
swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveActive
ElseIf ([OutputConfs] And 8) = 8 Then ' Named confs
swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveSelected
selectedConfs = Join(vConfNames, vbLf)
swApp.SetUserPreferenceStringListValue swEmodelSelectionList, Trim(selectedConfs)
End If
End If
convFileNameTemp = GetFullFileName(convFileName, "All", 0, 0)
' Convert the document
Success = swExtension.SaveAs(convFileNameTemp, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, errors, warnings)
' Save failed?
If Success = False Then
Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp & "' failed. Error code " & errors & " returned."
End If
If bSecondOutput = True Then
convFileNameTemp2 = GetFullFileName(convFileName2, "All", 0, 0)
Success = swExtension.SaveAs(convFileNameTemp2, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, errors, warnings)
' Save failed?
If Success = False Then
Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp2 & "' failed. Error code " & errors & " returned."
End If
End If
End If
Else
Log "Document '" & docFileName & "' didn't contain any configurations named '[NamedConf]'."
End If
End If
KillHolder convFilePath
KillHolder convFilePath2
' Process virtual components
If docType = swDocASSEMBLY Then
Dim vComponents As Variant
Set swAssembly = swModel
vComponents = swAssembly.GetComponents(True)
If Not IsEmpty(vComponents) Then
For i = 0 To UBound(vComponents)
Dim swComponent As SldWorks.Component2
Set swComponent = vComponents(i)
If swComponent.IsVirtual Then
Convert swComponent.GetPathName()
End If
Next i
End If
End If
' Close document
swApp.QuitDoc swModel.GetTitle
End Sub
Function bIsSupportedExtension(oExtension) As Boolean
oExtension = LCase( oExtension )
If oExtension = "prt" Then
bIsSupportedExtension = True
ElseIf oExtension = "asm" Then
bIsSupportedExtension = True
ElseIf oExtension = "drw" Then
bIsSupportedExtension = True
ElseIf oExtension = "dxf" Then
bIsSupportedExtension = True
ElseIf oExtension = "dwg" Then
bIsSupportedExtension = True
ElseIf oExtension = "psd" Then
bIsSupportedExtension = True
ElseIf oExtension = "ai" Then
bIsSupportedExtension = True
ElseIf oExtension = "lfp" Then
bIsSupportedExtension = True
ElseIf oExtension = "sldlfp" Then
bIsSupportedExtension = True
ElseIf oExtension = "prtdot" Then
bIsSupportedExtension = True
ElseIf oExtension = "asmdot" Then
bIsSupportedExtension = True
ElseIf oExtension = "drwdot" Then
bIsSupportedExtension = True
ElseIf oExtension = "x_t" Then
bIsSupportedExtension = True
ElseIf oExtension = "x_b" Then
bIsSupportedExtension = True
ElseIf oExtension = "xmt_txt" Then
bIsSupportedExtension = True
ElseIf oExtension = "xmt_bin" Then
bIsSupportedExtension = True
ElseIf oExtension = "igs" Then
bIsSupportedExtension = True
ElseIf oExtension = "iges" Then
bIsSupportedExtension = True
ElseIf oExtension = "step" Then
bIsSupportedExtension = True
ElseIf oExtension = "stp" Then
bIsSupportedExtension = True
ElseIf oExtension = "sat" Then
bIsSupportedExtension = True
ElseIf oExtension = "vda" Then
bIsSupportedExtension = True
ElseIf oExtension = "wrl" Then
bIsSupportedExtension = True
ElseIf oExtension = "stl" Then
bIsSupportedExtension = True
ElseIf oExtension = "cgr" Then
bIsSupportedExtension = True
ElseIf oExtension = "wrl" Then
bIsSupportedExtension = True
ElseIf oExtension = "xpr" Then
bIsSupportedExtension = True
ElseIf oExtension = "xas" Then
bIsSupportedExtension = True
ElseIf oExtension = "ipt" Then
bIsSupportedExtension = True
ElseIf oExtension = "iam" Then
bIsSupportedExtension = True
ElseIf oExtension = "par" Then
bIsSupportedExtension = True
ElseIf oExtension = "psm" Then
bIsSupportedExtension = True
ElseIf oExtension = "ckd" Then
bIsSupportedExtension = True
ElseIf oExtension = "emn" Then
bIsSupportedExtension = True
ElseIf oExtension = "brd" Then
bIsSupportedExtension = True
ElseIf oExtension = "bdf" Then
bIsSupportedExtension = True
ElseIf oExtension = "idb" Then
bIsSupportedExtension = True
ElseIf oExtension = "3dm" Then
bIsSupportedExtension = True
Else
bIsSupportedExtension = False
End If
End Function
Sub main()
On Error GoTo Fail:
Set FileSystemObj = CreateObject("Scripting.FileSystemObject")
docFileName = "<Filepath>"
' Get SW interface object
Set swApp = Application.SldWorks
swApp.Visible = True
Convert docFileName
Exit Sub
Fail:
Log "Error while converting file '" & docFileName & "': " & vbCrLf & _
"An unexpected error occurred while executing the generated script. Script syntax error?" & vbCrLf & _
"Error number: " & Err.Number & vbCrLf & _
"Error description: '" & Err.Description & "'" & vbCrLf
End Sub