ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
BABenjamin Abshire05/04/2012

I’m having trouble getting Pro/E files to check back in after a variable is updated. The code below checks out and updates the variable correctly for SolidWorks and Pro/E files (as evidenced in the Data Card). It then checks in a SolidWorks file just fine but fails on all Pro/E files with the error: E_EDM_INVALID_FILE, The format is not recognized. But the file is already in the vault so obviously it is a recognized format.

I am using Enterprise PDM 2012 SP1.0 with the EPDM Addin “Add/Renamer” from SolidWorks and the Pro/E Connector for Wildfire 5.0. I'm compiling the .NET 4.0 code in MSVB 2010 Express and using Interop.EdmLib 5.15.

Note: If I comment out the Update the Variable section, the Pro/E files check out and in just fine. The error only occurs when I change something.

Here is the code

Imports EdmLib

Module Module1

    Sub Main()
        On Error GoTo Err_Main
        Dim Vault As IEdmVault7 'Vault object
        Vault.Login("Admin", "PassWord", "PDM_Vault")

        Dim myFileObj As IEdmFile5 = Nothing
        Dim MyRetFldrObj As IEdmFolder5 = Vault.RootFolder
        Dim FilePath As String = "C:\PDM_Vault\Projects\Test Area\CAD\101-A20020.drw"
        'Dim FilePath As String = "C:\PDM_Vault\Projects\Test Area\CAD\101-A20020.slddrw"

        Dim loc As Integer = Len(FilePath) - InStr(FilePath, ".")
        Dim FileExt As String = UCase(Microsoft.VisualBasic.Right(FilePath, loc))

        MyRetFldrObj = Vault.RootFolder
        myFileObj = Vault.GetFileFromPath(FilePath, MyRetFldrObj) 'Get the interface of the file and its parent folder

        myFileObj.LockFile(MyRetFldrObj.ID, 0) 'Check out the file

        '***************Update the variable***************

        Dim varEnum As IEdmEnumeratorVariable8
        varEnum = myFileObj.GetEnumeratorVariable

        Select Case FileExt
            Case Is = "SLDDRW"
                varEnum.SetVar("Revision", "@", NewRev)
            Case Is = "DRW"
                varEnum.SetVar("Revision", "generic", NewRev) '<-- Not sure if "generic" is the correct configuration name to use. It does update the datacard correctly.
        End Select
        varEnum.Flush()
        varEnum.CloseFile(True)

        '***************Update the variable***************

        Dim NewRev As String = "A"
        myFileObj.UnlockFile(0, "Revision variable updated to " & NewRev & ".") 'Check in the file with comment  *** Here is where if fails ***
        Exit Sub

Err_Main:
        Dim ErrName As String = ""
        Dim ErrDesc As String = ""
        If Not Vault Is Nothing Then
            Vault.GetErrorString(Err.Number, ErrName, ErrDesc)
            MsgBox("ErrHld initiated. Errors: " & ErrName & " " & "Description: " & ErrDesc)
        Else
            MsgBox("Error Number: " & Err.Number & " Description:" & Err.Description)
        End If
    End Sub

End Module

Any Suggestions?