0 Replies Latest reply on Feb 5, 2015 1:45 PM by Rupesh Gandupalli

    EPDM Convert SWAdd-in question

    Rupesh Gandupalli

      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 = "<VaultPath>"

                          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 = "<VaultPath>"

          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("<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(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, "<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(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, "<Filename>", modelFileName)

          convFileName = Replace(convFileName, "<Extension>", modelExtension)

          convFileName = Replace(convFileName, "<VariableValue>", VarValue)

          convFileName = Replace(convFileName, "<VariableValue1>", VarValue1)

       

       

          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)

       

       

          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 = "<VaultPath>"

                          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 = "<Filepath>"

       

       

          ' 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