Hallo, ich habe eine kleine grafische Benutzeroberfläche zur Erzeugung von CAD Datein entwickelt. Diese liest die Bauteilparameter üer Textfelder ein und speichert diese anschließend in Textdateien. Mit dem Befehl
rufe ich die Datei openscad.com zur Erstellung der CAD Datei auf. Ich habe in meinem Programm eine JTextArea als Logfeld. Ich möchte nachdem ich den Speicherort für die CAD Datei ausgewählt habe und auf den Button zum Erstellen der Datei geklickt habe, die Meldung "CAD Datei wird erstellt, bitte warten!" im Logfeld ausgeben. Leider wird diese Meldung zu spät ausgegeben, erst nachdem die CAD Datei erstellt wurde. Obwohl ich diese Meldung vor dem Erstellen der CAD Datei eingefügt habe, wird diese immer danach ausgegeben. Kann mir jemand dabei helfen das Problem zu lösen? Anbei ein Ausschnitt meines Codes:
Vielen Dank,
Gruß
Markus
Code:
Process createfile = Runtime.getRuntime().exec("bin\\stl_CreatorV1\\OpenSCAD\\openscad.com -o "+path+" bin\\stl_CreatorV1\\Scad-Files\\AR_Typ2.scad");
Vielen Dank,
Gruß
Markus
Java:
try {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("D:\\STL-Dateien\\"));
chooser.setFileFilter(new FileNameExtensionFilter("*.stl Dateien", "stl"));
chooser.setSelectedFile(new File("Bauteilname"));
int retval= chooser.showSaveDialog(chooser);
if(retval == JFileChooser.APPROVE_OPTION)
{
logfield.append("STL Datei wird erstellt,\ndieser Vorgang kann bis zu 2 Minuten dauern, bitte warten...\n");
String path = "\""+chooser.getSelectedFile().getAbsolutePath()+".stl"+"\"";
Process createfile = Runtime.getRuntime().exec("bin\\stl_CreatorV1\\OpenSCAD\\openscad.com -o "+path+" bin\\stl_CreatorV1\\Scad-Files\\AR_Typ2.scad");
try {
createfile.waitFor();
if (createfile.exitValue() == 0) //Erfolgreiche Ausführung
{
logfield.append("CAD Datei erfolgreich erzeugt\n");
}
else //Misslungene Ausführung
{
logfield.append("Fehler bei Erstellung der CAD Datei\n");
}
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else
{
logfield.append("Abbruch...\n");
}