I am new to EPDM, just wanted to change the filename variable for each configurations based on the configuration specific properties. I don't know how to change the macro in "Advanced macro options".
I copied the macro code to Visual Studio 2010 a temp file and add the code in multiple configs loop, pasted back the code in the add-in and it fails..
I am pasting the changed code here, and you can find for this below change block in the pasted code..
'------------Changed for different configurations
VarValue = GetVariableValue(docFileName, "Number", vConfNames(i))
VarValue1 = GetVariableValue(docFileName, "Revision", vConfNames(i))
convFileName = "
convFileName = convFileName & "\Configuration Management\CAD\" & VarValue & "-" & VarValue1 & ext
'------------Changed for different configurations
How can debug or test this change...appreciate your help..
'Enterprise PDM 2014 - Default Convert Task Script
'SPR Updates:
'2014 PR1 - SPRs 682792, 538578, 651998
'-----------------------------------------------
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
Dim vault As Object
#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
Private Sub LoginToVault()
On Error GoTo ErrHand
Dim strTempVaultName As String
Dim strVaultName As String
strTempVaultName = "
i = Len(strTempVaultName)
j = InStrRev(strTempVaultName, "\")
strVaultName = Right(strTempVaultName, i - j)
vault = CreateObject("ConisioLib.EdmVault")
vault.LoginAuto(strVaultName, 0)
Exit Sub
ErrHand:
If Not vault Is Nothing Then
Dim errname As String
Dim errdesc As String
vault.GetErrorString(Err.Number, errname, errdesc)
Log("LoginToVault error" & vbCrLf & errname & vbCrLf & errdesc)
Else
Log("Error creating file vault interface.")
End If
End Sub
Private Function GetVariableValue(ByVal FilePath, ByVal VariableName, ByVal Configuration)
On Error GoTo ErrHand
Dim File As Object
'Get the interface of the file (and its parent folder)
Dim Folder As Object
File = vault.GetFileFromPath(FilePath, Folder)
'Obtain the variable interface
Dim pEnumVar As Object
pEnumVar = File.GetEnumeratorVariable
Dim Value As Object
If pEnumVar.GetVar(VariableName, Configuration, Value) Then
GetVariableValue = Value
Else
GetVariableValue = ""
End If
Exit Function
ErrHand:
Dim ename As String
Dim edesc As String
vault.GetErrorString(Err.Number, ename, edesc)
Log("GetvariableValue error" & vbCrLf & ename & vbCrLf & errdesc)
End Function
Private Function CompareLocalvsLatestVersion(ByVal filePath As String)
On Error GoTo ErrHand
Dim File As Object
'Get the interface of the file (and its parent folder)
Dim Folder As Object
File = vault.GetFileFromPath(FilePath, Folder)
If File Is Nothing Then
Exit Function 'No file cached
End If
Dim versionNo As Long
Dim versionLatest As Long
versionLatest = File.CurrentVersion
versionNo = File.GetLocalVersionNo(filePath) 'Obtain the local version
If Not (versionLatest = versionNo) Then
Log("The version of the locally cached file " & filePath & " is " & CStr(versionNo) & " while the latest version is " & CStr(versionLatest) & ".")
Success = False
End If
Exit Function
ErrHand:
Dim ename As String
Dim edesc As String
vault.GetErrorString(Err.Number, ename, edesc)
Log("GetvariableValue error" & vbCrLf & ename & vbCrLf & errdesc)
End Function
Function PathAppend(ByVal path, ByVal 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(ByVal 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("
Else
errorLogPath = errorLogFolder
End If
' Create directory if not exists
SHCreateDirectoryEx ByVal 0&, errorLogPath, ByVal 0&
errorLogPath = PathAppend(errorLogPath, "
' Write error to output file
Open errorLogPath For Append As #1
Print #1, message
Close #1
End Sub
Sub CreatePath(ByVal 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(ByVal path)
On Error GoTo Ignore
If FileSystemObj.FileExists(path & "~\$holder") Then
Kill(path & "~\$holder")
End If
Ignore:
End Sub
Function GetExtension(ByVal docType, ByVal 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 Object
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(ByVal 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(ByVal convFileName, ByVal conf, ByVal i, ByVal 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, "
' 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(ByVal docFileName)
'Get the vault interface
Call LoginToVault()
'Get Variable Value
Dim VarValue
VarValue = GetVariableValue(docFileName, "Number", "Default")
Dim VarValue1
VarValue1 = GetVariableValue(docFileName, "Revision", "Default")
' 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
swModel = swApp.LoadFile4(docFileName, "", Nothing, errors)
docType = swModel.GetType
Else
swDocSpecification = swApp.GetOpenDocSpec(docFileName)
swDocSpecification.DocumentType = docType
swDocSpecification.ReadOnly = True
swDocSpecification.Silent = True
swDocSpecification.ConfigurationName = ""
swDocSpecification.DisplayState = ""
swDocSpecification.IgnoreHiddenComponents = True 'SPR 682792, 538578, 651998
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, "
convFileName = Replace(convFileName, "
convFileName = Replace(convFileName, "
convFileName = Replace(convFileName, "
convFilePath = Left(convFileName, InStrRev(convFileName, "\"))
CreatePath(convFilePath)
convFileName = convFileName & ext
If bSecondOutput = True Then
convFileName2 = Replace(convFileName2, "
convFileName2 = Replace(convFileName2, "
convFilePath2 = Left(convFileName2, InStrRev(convFileName2, "\"))
CreatePath(convFilePath2)
convFileName2 = convFileName2 & ext
End If
' Set conversion options
SetConversionOptions(ext)
swExtension = swModel.Extension
If docType = swDocDRAWING Then
Dim vSheetNames As Object
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 Object
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
End If
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 Object
swDrawing.ActivateSheet(vSheetNames(i))
convFileNameTemp = GetFullFileName(convFileName, vSheetNames(i), i, UBound(vSheetNames))
If LCase(ext) = ".pdf" Then
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, swPDFExport, errors, warnings)
CompareLocalvsLatestVersion(docFileName)
' 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, swPDFExport, errors, warnings)
CompareLocalvsLatestVersion(docFileName)
' 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
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, swPDFExport, errors, warnings)
CompareLocalvsLatestVersion(docFileName)
' 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, swPDFExport, errors, warnings)
CompareLocalvsLatestVersion(docFileName)
' 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 Object
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 Object
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
End If
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)
'------------Changed for different configurations
VarValue = GetVariableValue(docFileName, "Number", vConfNames(i))
VarValue1 = GetVariableValue(docFileName, "Revision", vConfNames(i))
convFileName = "
convFileName = convFileName & "\Configuration Management\CAD\" & VarValue & "-" & VarValue1 & ext
'------------Changed for different configurations
convFileNameTemp = GetFullFileName(convFileName, vConfNames(i), i, UBound(vConfNames))
' Convert the document
Success = swExtension.SaveAs(convFileNameTemp, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, errors, warnings)
CompareLocalvsLatestVersion(docFileName)
' 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)
CompareLocalvsLatestVersion(docFileName)
' 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)
CompareLocalvsLatestVersion(docFileName)
' 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)
CompareLocalvsLatestVersion(docFileName)
' 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 Object
swAssembly = swModel
vComponents = swAssembly.GetComponents(True)
If Not IsEmpty(vComponents) Then
For i = 0 To UBound(vComponents)
Dim swComponent As SldWorks.Component2
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(ByVal 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
FileSystemObj = CreateObject("Scripting.FileSystemObject")
docFileName = "
' Get SW interface object
swApp = Application.SldWorks
swApp.Visible = True 'SPR 682792, 538578, 651998
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
SolidworksSolidworks Pdm enterprise Pdm