Übergabe eines Dateinamens aus der Benutzeroberfläche an Funktion



  • Hallo alle zusammen

    Vorweg möchte ich anmerken, dass das mein erstes user interface ist, das ich in C++ entwickle. Bisher hab ich das nur in LabView und Matlab gemacht.
    Folgendes möchte ich mache: Mein Benutzer soll beim Start des Programmes die Möglichkeit haben eine Datei im .stl Format zu suchen. Diese Datei wird anschließend von meinem Programm verarbeitet und das Programm spuckt ein Programm für einen Industrieroboter aus.
    Bisher hab ich alles nur als Console Application programmiert. Hier funktioniert auch alles. Nur schreib ich das Programm für Maschinenbauer, bei denen am besten so wenige Knöpfe vorhanden sind wie möglich. Der bisherige Aufruf des Programms in dem Command Window sieht so aus:

    Prg.exe -slicesize 3 -infill 5 -model cube.stl -ascii -eulerangles 0 0 0
    

    Dabei musste die Datei aber im selben Ordner liegen wie das Programm. Für das User Interface ist folgende geplant:
    1 Button: Datei öffnen
    1 button: Programm erstellen
    2 Textfelder: Für slicesize und infill

    In meinem Ausgangsprogramm frage ich die Parameter beim Programmstart auf die folgende weise ab:

    for (int i = 1; i <argc;) {
        if (0 == strcmp (argv , "-slicesize")) {
            slice size = atof (argv [i + 1]);
            i + = 2;
        }
        else if (0 == strcmp (argv [i], "-infill")) {
            infill = atof (argv [i + 1]);
            i + = 2;
        }
        else if (0 == strcmp (argv [i], "-model")) {
            strcpy (model file name, argv [i + 1]);
            i + = 2;
        }
        else if (0 == strcmp (argv [i], "-ascii")) {
            isBinaryFormat = false;
            i + = 1;
        }
        else if (0 == strcmp (argv [i], "-eulerangles")) {
            eulerAngles.x = atof (argv [i + 1]);
            eulerAngles.y = atof (argv [i + 2]);
            eulerAngles.z = atof (argv [i + 3]);
            i + = 4;
        }
        else {
            ++i;
        }
    }
    

    Danach verarbeite ich die .stl-Datei. In dem user interface sollte die Verarbeitung geschehen sobald der Button Programm erstellen gedrückt wird. Zur Zeit geschieht das noch so:

    TriangleMesh mesh;
    if (stlToMeshInMemory(modelFileName, &mesh, isBinaryFormat)!=0)
        return 1;
    

    Und hier ist auch mein Problem: Ich hab es jetzt soweit, dass sich der OpenFiledialog öffnet und ich nur Dateien im .stl-Format auswählen kann. Zur Zeit wird der Pfad der Datei nur in einem Textblock angezeigt. Ich weiß ich kann den Text aus dem Texblock auslesen und in ein char konvertieren. Meine Frage wäre wie kann ich den Pfad mit dem Dateinamen an meine Funktion [i]stlToMeshInMemory* übergeben. Eine weiter frage für mich ist, wo in meinem Projekt ich meinen bisher entwickelten Code unterbringen muss. Zur Zeit habe ich zwei Datein in dem Projekt MyForm.h und MyForm.cpp. So wie ich es verstanden habe kümmert sich MyForm.h nur um das Handeling der UI, also was passieren muss wenn ein Button gedrückt wird. Muss ich jetzt alles aus einem Consolen Projekt in die Datei MyForm.cpp kopieren?
    Ich blick da noch nicht wirklich durch und würde mich wirklich über hilfreiche Tipps freuen.


Anmelden zum Antworten