AnsweredAssumed Answered

PDME API varEnum.CloseFile corrupts AutoCAD file, DwgFmtServer.exe Causes Sharing violation

Question asked by Kent Keller on Aug 17, 2010
Latest reply on Aug 17, 2010 by Jeff Sweeney

I am cycling through AutoCAD files in a custom Import routine that has successfully worked for 5958 files.


However, on some, seemingly random cases, when I make a call to update custom variables using this code


Dim varEnum As IEdmEnumeratorVariable8 ' declare enumerator
varEnum = ThisFile.GetEnumeratorVariable ' set to destination file
varEnum.SetVar("Description", "", strDescription) ' set variable
varEnum.SetVar("Number", "", strNumber) ' set variable
varEnum.SetVar("Make_Buy", "", strMake_Buy) ' set variable
varEnum.SetVar("Supplier", "", strSupplier) ' set variable
varEnum.SetVar("SupplierID", "", strSupplier_ID) ' set variable
varEnum.SetVar("DwgType", "", strDwgType) ' set variable
varEnum.SetVar("DPGC", "", strDPGC) ' set variable
varEnum.SetVar("DSGC", "", strDSGC) ' set variable
varEnum.SetVar("DTGC", "", strDTGC) ' set variable
varEnum.CloseFile(True) ' close file


I get a com exeption


System.Runtime.InteropServices.COMException was unhandled

Message="The server threw an exception."


At this point, the PDME Checked out file goes to 0 bytes and DwgFmtServer.exe locks the file.  No checkout, no open, no file replace.  If I undo the checkout, it will restore the file but will be unable to be opened due to a sharing violation.


In short, I'm borked.


Why is DwgFmtServer.exe locking the file?  Is there any API that I can use to close it?  Error handling on this seems impossible?


Any suggestions out there?