Hallo liebe CAD-Freunde,
ich bearbeite gerade eine Projektarbeit in der ich mit Pro/Toolkit einen Converter programmieren soll, welcher ein CAD-Model (Creo) in ein DHM-Model (OpenSim) exportieren soll.
Ich arbeite neben Pro/Toolkit (Creo 1.0) noch mit der OpenSim-API (v3.0) und deshalb mit der 32-bit-Version.
Als IDE und Compiler nutze ich das MS Visual Studio 2010.
Zum Testen nehme ich eine Creo 2.0 Students Version.
Das Programm funktioniert so, dass jedes Features eines Modells und bei Baugruppenfeatures deren Verbindungen analysiert werden und dann in ein für OpenSim lesbares Format übersetzt werden. Dies geschieht mittels der TK-API-Funktion "ProSolidFeatVisit", welche eine von mir geschrieben Funktion auf jedes Feature anwenden sollte.
Das funktioniert im Großen und Ganzen auch. Jedoch habe ich einige Beispiele gefunden, bei denen das Programm abstürzt. Grund dafür ist laut Debugger die Zeile:
"ProSolidFeatVisit((ProSolid)mdl, VisitAssembly, FilterProFeatComponent, &asmData);"
Dieser Befehl ruft "void __cdecl _unlockexit(void)" aus crt0dat.c (VisualStudio-Source-Verzeichnis) auf und dort meldet der Debugger: "Unbehandelte Ausnahme bei 0x76f215de in c2os.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x29c31170"
Lustiger Weise passiert das nur bei bestimmten Baugruppen und auch nur, wenn vorher nicht schon ein Exportvorgang eines anderen Modells erfolgreich war.
Ich poste anbei Quellcode sowie die Bauteile bg2.asm und test_euler.asm (natürlich mit den dazugehörigen Bauteilen). "bg2" lässt sich exportieren, "test_euler" verursacht hingegen den oben angesprochenen Fehler außer "bg2" wurde in der selben Sitzung schon erfolgreich exportiert. Der Quellcode ist etwas abgespeckt, aber immernoch umfassend. Der Fehler tritt in der Funktion "int FunctionCollectAssemblyInfo()" auf (Zeile 178).
Ich hoffe ich habe das Problem ausreichend beschrieben und ihr könnt mir helfen, denn ich habe keine Ahnung warum das passiert. Sollte ich etwas vergessen haben, sagt mir Bescheid, dann liefer ich nach.
Viele Grüße
Dex
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP