Open Cascade Bibliothek um .step Dateien zu lesen



  • Hallo zusammen,

    ich habe einfache CAD Teile im step Format und muss diese in C++ auslesen. Open Cascade bietet hierfür wohl die richtige Funktionen in der Bibliothek. Leider ist es mir noch nichtmal gelungen die passende Bibliothek in mein Projekt in visual studio einzubinden.
    Nach dem Download (https://www.opencascade.com/content/cad-assistant) habe ich einige .dll Bibliotheken erhalten, z.b. TKSTEP.dll
    Ich habe die Datei in mein Projektordner verschoben und in VisualStudio unter Properties -> Linker -> Input -> Additional Dependencies eingeschrieben. In anderen Tutorials ist normal immer noch eine Header-Datei dabei die ich dann am Ende im Code inkludieren kann, bei mir allerdings nicht. Ich weiß nicht ob deshalb überhaupt nichts funktioniert.

    Es wäre super wenn jemand bereit wäre mir zu erklären wie ich eine solche Bilbiothek zum Lesen von step Dateien in mein Projekt bekomme, ich bin hier langsam aber sicher am verzweifeln :(.

    Vielen Dank !!
    Beste Grüße



  • Laut deinem Link ist das ein ausführbares Programm und keine Bibliothek, die man in C++ benutzen kann.



  • Hm okay es wird meistens auf opencascade verwiesen wenn man nach einer Bibliothek zum Lesen von step Dateien sucht. Hat evtl jemand einen Link für eine passende Bibliothek. Ich möchte gerne die Hauptinformationen zum Bauteil aus der step Datei auslesen bspw. maximaler Durchmesser, Länge, Material, usw..



  • Ich denke, du suchst: Open CASCADE Technology 7.3.0. Und mit der Doku solltest du dann weiterkommen.



  • Danke für deine Antwort. Ich habe das jetzt runtergeladen. Ich verstehe das System so dass es verschiedenste Bibliotheken je nach Anwendungszweck gibt und darüber hinaus auch eine eigene Oberfläche von OpenCascade.
    Ist es nicht so dass ich jetzt für meinen Fall bspw. die Datei TKSTEP.lib in mein Projekt einbinden muss? Ich blicke leider gefühlt immer weniger durch. Was ist denn das grundsätzliche Vorgehen wenn ich mit einer Bibliothek von open cascade arbeiten will? Die Doku habe ich jetzt auch schon mehrmals ohne erfolg bemüht..



  • Hast du schon mal den "Samples"-Ordner angeschaut und einige Projekte geladen (z.B. "ImportExport")? Da müßtest du ja sehen, welche Libs gelinkt werden.



  • Danke für deine Antworten 🙂
    Ich habe das ImportExport Header- und cpp-File in mein Projekt integriert und alle weiteren Files die innerhalb des ImportExport Files inkudiert werden. Allerdings sind fast alle Variablen in den Files nicht definiert, ich denke da die weiteren Files wiederum andere Files inkludieren die ich noch nicht mit rein genommen habe, da ich nicht weiß ob mein Vorgehen richtig ist und es extrem viele verschiedene .h und .cpp Files im Open CASCADE Technology 7.3.0 Ordner gibt.
    Das letzte mal als ich eine Bibliothek eingefügt habe, habe ich es nach dem Prinzip im Video gemacht und es hat funktioniert, war allerdings eine viel kleinere Bib.
    --> https://www.youtube.com/watch?v=VmRO1-X6zTc&t=281s
    Ich weiß es ist sehr viel verlangt mir das nochmal genauer zu erklären aber ich wäre sehr dankbar, ich habe schon viel Zeit mit der OpenCascade Bib verbracht und recht wenig erreicht.
    Nochmal, alles was ich gerne tun würde ist eine Step Datei per C++ lesen zu können
    Vielen Dank!



  • Hat schon jemand die Open Cascade Bibs in sein C++ Code integriert und kann mir bitte weiterhelfen? Ich bin sonst auch sehr offen für andere Bibliotheken die ich zum Lesen von step Dateien benutzen könnte.
    Beste Grüße, simpie



  • Ich kenne die Bibliothek nicht.

    .cpp-Dateien aus dem Download sollten in deinem Projekt eher nicht vorkommen. Es sollten .lib-Dateien vorhanden sein, die zu deinem Programm gebunden werden.



  • Hm okay danke. Kennt jemand eine kleine library um eine Step-Datei zu lesen? Mit OpenCascade komme ich leider nicht klar.



  • So schwer sollte es mit Open Cascade nicht sein, wenn ich mir diesen Code anschaue: Reading STEP file c++ [Crash] (der Crash kommt wohl wegen seiner speziellen STEP-Datei).

    Ich bezweifle auch, daß die ganzen Includes gebraucht werden.
    M.E. sollte folgendes ausreichen:

    #include <iostream>
    #include "STEPControl_Reader.hxx"
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
        if (argc < 2)
        {
            cout << "Usage: Extract Information" << endl;
            cout << "InputFile: a file in STP format" << endl;
            return 1;
        }
    
        //read the STEP file
        STEPControl_Reader reader;
        reader.ReadFile(argv[1]);
    
        //check step file --> invalid or incomplete entities
        IFSelect_PrintCount mode = IFSelect_ItemsByEntity;
        reader.PrintCheckLoad(false, mode);
    
        //Loads file
        int NbRoots = reader.NbRootsForTransfer();
    
        return 0;
    }
    

    Wenn das ersteinmal bei dir kompiliert, dann noch die fehlenden Libs hinzufügen.



  • Danke für deine Antwort.
    ich bekomme den Code leider nicht zum kompilieren. Die Variablen im STEPControl_Reader sind nicht definiert und es werden wieder viele weitere Files inkludiert. Wenn ich diese inkludiere hab ich dort dasselbe Problem

    #ifndef _STEPControl_Reader_HeaderFile
    #define _STEPControl_Reader_HeaderFile
    
    #include <Standard.hxx>
    #include <Standard_DefineAlloc.hxx>
    #include <Standard_Handle.hxx>
    
    #include <XSControl_Reader.hxx>
    #include <Standard_Boolean.hxx>
    #include <Standard_Integer.hxx>
    #include <TColStd_SequenceOfAsciiString.hxx>
    #include <TColStd_Array1OfAsciiString.hxx>
    #include <TColStd_Array1OfReal.hxx>
    class XSControl_WorkSession;
    class StepData_StepModel;
    class StepRepr_RepresentationContext;
    

    Hat denn schon jemand hier OpenCascade hier benutzt?



  • Eine einfache kleine Lib zum Lesen von STEP-Dateien wirst du nicht finden, da STEP nunmal kein kleiner niedlicher Standard ist^^

    OpenCASCADE habe ich schon benutzt und das funktioniert auch. Ich würde dir empfehlen, erstmal das Tutorial durchzuarbeiten, wo man per Code ein Art Flachmann erzeugt.
    Zum Laden von STEP-Dateien brauchst du mehrere Packages von OC, nicht nur TKSTEP, da dieses auf andere aufbaut.

    Wenn du nach Code-Beispielen suchst, achte auch darauf, dass es mit Version 7 ein paar kleine Änderungen in der API gab, weswegen viele OC 6.x-Beispiele nicht gleich kompilieren.



  • Okay Danke. Das werde ich jetzt mal versuchen. Ich glaube fast, dass ich mich als Maschinenbauer mal ins Informatik-Institut begeben muss. Das ganze Thema verlangt wohl doch deutlich mehr Einarbeitung...



  • Wenn ich es nicht vergesse, krame ich zu Hause mal ein altes Testprojekt raus, wo auch nur eine STEP-Datei geladen wird. Von der Arbeit aus habe ich da keinen Zugriff.
    Aber OpenCASCADE erst einmal zum Laufen zu bringen ist nicht unbedingt der einfachste Einstieg^^ Von daher ist deine Idee, dir da Hilfe zu holen, sicherlich nicht verkehrt 🙂



  • Super danke, das würde mich freuen



  • @pellaeon sagte in Open Cascade Bibliothek um .step Dateien zu lesen:

    Aber OpenCASCADE erst einmal zum Laufen zu bringen ist nicht unbedingt der einfachste Einstieg^^

    OpenCASCADE runterladen unter DOWNLOAD OPEN CASCADE TECHNOLOGY 7.3.0: opencascade-7.3.0-vc14-64.exe (237 061 168 bytes)

    Installieren mit Standardeinstellungen.

    In den Visual Studio 2017 Projekteinstellungen

    C:\OpenCASCADE-7.3.0-vc14-64\opencascade-7.3.0\inc zu den Include-Dirs hinzufügen,
    C:\OpenCASCADE-7.3.0-vc14-64\opencascade-7.3.0\win64\vc14\lib zu den Lib-Dirs,

    in Th69's Beispiel #include "STEPControl_Reader.hxx" gegen #include <STEPControl_Reader.hxx> tauschen,

    gegen TKernel.lib, TKXSBase.lib und TKSTEP.lib linken, kompilieren und sich freuen?



  • @Swordfish
    Danke habe ich so probiert. Wenn ich mit der x86-Voreinstellung debug, bekomme ich den Error LNK2019 und für die drei gelinkten libs jeweils die Warnung LNK4272 --> library machine type 'x64' conflicts with target machine type 'x86'

    mit x64 Debug findet er den STEPControl_Reader.hxx nicht. Zuvor mit x86 hingegen schon.

    Weißt du was da los ist? Vielen Dank



  • @simpie sagte in Open Cascade Bibliothek um .step Dateien zu lesen:

    Error LNK2019 und für die drei gelinkten libs jeweils die Warnung LNK4272 --> library machine type 'x64' conflicts with target machine type 'x86'

    x86 Binaries sind bei diesem Installer nicht dabei. Musst Du wohl selbst bauen, wenn Du sie wirklich brauchst.

    @simpie sagte in Open Cascade Bibliothek um .step Dateien zu lesen:

    mit x64 Debug findet er den STEPControl_Reader.hxx nicht. Zuvor mit x86 hingegen schon.

    Die Einstellungen für Include-Dirs und Lib-Dirs gelten pro Konfiguration. Du hast sie offenbar für x64 Release und Debug nicht eigetragen.



  • @Swordfish
    ich habe die Einstellungen für x64 durchgeführt, die Konsole öffnet und es scheint eigentlich zu funktiornieren, dann kommt aber direkt eine Windows-Fehlermeldung
    --> Das Programm kann nicht gestartet werden, da TKSTEP.dll auf dem Computer fehlt. Installieren Sie das Programm erneut, um das Problem zu beheben.

    Ich habe OpenCascade neu runtergeladen --> gleiche Fehlermeldung
    Und aus der Google Suche werde ich auch nicht wirklich schlau 😞


Log in to reply