Hallo Experten,
ich habe mal wieder ein unerklärliches Problem.
In einem Programm, dass schon einige Zeit unverändert und problemlos läuft, tritt auf einmal ein Fehler auf.
Ich öffne mit OpenDoc6 ein Modell als ModelDoc2 und weise dann dieses ModelDoc2 einem PartDoc zu, da ich die Funktion partDoc.RemoveAllDisplayStates benötige.
Dabei tritt seit neuestem ein Ausnahmefehler auf, den ich vorher nicht hatte:
System.InvalidCastException: "Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "SolidWorks.Interop.sldworks.PartDoc"
Die Vorgehensweise ist im Prinzip genaus so in der API Hilfe vorgegeben:
http://help.solidworks.com/2020/English/api/sldworksapi/Clear_Display_States_Example_VBNET.htm
Mein Code:
Code:
Public swModel As SolidWorks.Interop.sldworks.ModelDoc2
Public swPartDoc As SolidWorks.Interop.sldworks.PartDoc
'....
swModel = swApp.OpenDoc6(SWXFilename, swxType, swOpenDocOptions_e.swOpenDocOptions_ReadOnly, "Standard", Warnings, Errors)
ModelTitle = swModel.GetTitle
If Not swModel Is Nothing Then
'....
'Erscheinungsbilder löschen
swPartDoc = swModel 'Hier tritt die Ausnahme auf
boolstatus = partDoc.RemoveAllDisplayStates
'....
End if
Auch TryCast bringt mir als Ergebnis zwar keinen Fehler, aber eben Nothing.
Code:
swPartDoc = TryCast(swModel, SolidWorks.Interop.sldworks.PartDoc)
Ich verstehe nicht, warum jetzt auf einmal dieses Problem auftritt, obwohl an dem Programm nichts verändert wurde.
Als Workaround kann ich das nur auskommentieren bzw. mit Try und Catch klammern, das ist aber keine Lösung.
Kann mir hier jemand auf die Sprünge helfen?
------------------
Klaus
http://www.alko-tech.com | mein Gästebuch
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP