Autor
|
Thema: Python GUI/Abaqus (2002 mal gelesen)
|
thh11 Mitglied
Beiträge: 13 Registriert: 07.06.2018
|
erstellt am: 18. Jun. 2018 20:29 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, ich arbeite zum 1. mal mit diesen Programme und wurde gern etwas umsetzen. Jedoch weiß noch nicht so genau ob das klappt. Ich habe ein Programm mit python Gui geschrieben, wo man 3 Eingabefeldern habe. Dort kann man z.b Länge, Breite und Höhe eingeben. Wenn man dann auf z.B button "erstellen" klickt, dann sollt Abaqus öffnen und diesen Würfel mit den eingegebenen Parameter erstellen. Dazu habe ich ebenfalls einen Würfel-Script geschrieben. Jedoch fehlt mir zur Zeit wie die Parametern von der Programm mit python Gui in das Würfel-Script speichern kann und das anschließend in Abaqus öffen kann. Vielen Dank für euer Hilfe. LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 19. Jun. 2018 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Da hat man mehrere Möglichkeiten. Die sauberste wäre, wenn man die zu übergebenen Parameter in eine Textdatei schreibt und dann das Abaqus-Script über ein OS-Kommando aufruft. Das Abaqus-Script liest dann die Textdatei aus und baut mit den Parameter das Modell auf. Alternativ kann das GUI-Skript direkt die Parameter in das Abaqus-Skript schreiben und man braucht letzteres dann nur noch aufzurufen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thh11 Mitglied
Beiträge: 13 Registriert: 07.06.2018
|
erstellt am: 19. Jun. 2018 13:15 <-- editieren / zitieren --> Unities abgeben:
ja genau, dass ist zur Zeit mein Problem. Wie schaffe ich, dass ich das GUI-Skript direkt die Parameter in das Abaqus-Skript schreiben kann. hast du dazu vllt. ein Beispiel? Also wie kann ich diesen 3 Eingabe direkt in das Abaqus-Skript schreiben ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 19. Jun. 2018 20:27 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
|
thh11 Mitglied
Beiträge: 13 Registriert: 07.06.2018
|
erstellt am: 20. Jun. 2018 12:33 <-- editieren / zitieren --> Unities abgeben:
Danke. Hat super gut geklappt. Wissen Sie zufällig wie man mit Python Gui Abaqus starten kann. Also wenn ich z.B auf Button "Beende" klicke, dann soll Abaqus öffnen und mein Hauptscipt ausführen. Mit dieser Befehle kann ich z.B Opera öffnen: import subprocess p = subprocess.Popen([r"C:\Program Files\Opera\launcher.exe", "-h"], stdout=subprocess.PIPE) aber wenn ich das auf Abaqus benutze, funktioniert das leider nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 21. Jun. 2018 09:17 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Wenn du weißt, was du manuell in ein DOS-Fenster eingeben musst um A/CAE zu starten (optional mit Script und ggf. gleich ohne GUI), dann kannst du dieses Kommando auch in Python verwenden. import os os.system('kommando') optional vorher mit: os.getcwd() und os.chdir(...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thh11 Mitglied
Beiträge: 13 Registriert: 07.06.2018
|
erstellt am: 24. Jun. 2018 21:44 <-- editieren / zitieren --> Unities abgeben:
|
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 25. Jun. 2018 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Die Kommandozeilenbefehle sind im Handbuch im Abschnitt "Execution Procedure" erklärt. Im Installationsordner gibt es einen Unterordner namens "Commands". Auf die batch-Datei (abaqus oder abq6...) kannst du auch referenzieren. Diese wiederum ruft dann selbst die benötigte Executable auf. Isight referenziert z.B. auch auf die abaqus.bat. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RobertoL Mitglied Student
Beiträge: 41 Registriert: 12.04.2018
|
erstellt am: 25. Jun. 2018 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Ich klinke mich hier mal ein. Ich schaffe es nicht Abaqus per Skript zu starten.. Die richtige abaqus.bat habe ich gefunden, aber wenn ich diese wie oben beschrieben starten möchte, passiert nicht viel. Für 0,2 sek. öffnet sich ein cmd-Fenster. Mehr nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 25. Jun. 2018 17:13 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Zitat: Original erstellt von RobertoL: Ich klinke mich hier mal ein. Ich schaffe es nicht Abaqus per Skript zu starten.. Die richtige abaqus.bat habe ich gefunden, aber wenn ich diese wie oben beschrieben starten möchte, passiert nicht viel. Für 0,2 sek. öffnet sich ein cmd-Fenster. Mehr nicht.
Was genau machst du und was soll passieren? Hast du meine Empfehlung weiter oben mit os.system() schon probiert? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RobertoL Mitglied Student
Beiträge: 41 Registriert: 12.04.2018
|
erstellt am: 25. Jun. 2018 17:39 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Was soll passieren: Wenn ich unter Python auf "run module" klicke, soll Abaqus CAE gestartet werden und sobald dies einsatzbereit ist mit der gescripteten Simulation starten, die in dem selben Python-Code steht. Was habe ich versucht: Genau deinen Hinweis habe ich versucht irgendwie hinzumogeln, aber ich komme nichtmal drauf was du mit "Kommando" meinst. So wie ich das sehe, wird im Handbuch unter "Execution Procedure" nur das Starten ohne GUI-Darstellung gezeigt. Da ich aber eine GUI sehen möchte, habe ich das nicht ausprobiert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 25. Jun. 2018 18:24 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Das starten von A/CAE mit GUI und einem Modell und direktem Ausführen eines Skriptes ginge über Kommandozeile so: abaqus cae=testmodell.cae script=testscript.py Diesen Befehl brauchst du nur bei os.system('...') einsetzen und vorher sicherstellen, dass das Arbeitsverzeichnis passt, denn sonst werden die Dateien nicht gefunden.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RobertoL Mitglied Student
Beiträge: 41 Registriert: 12.04.2018
|
erstellt am: 26. Jun. 2018 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Jo, genau das habe ich schon probiert. Leider öffnet sich nur für 0,1 s ein cmd-Fenster. Ob das auch das Fenster ist, das sich vor dem normalen Abaqusstart öffnet, kann ich so schnell nicht sehen. Nachdem sich das cmd-Fenster wieder schließt passiert nichts. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 26. Jun. 2018 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
|
RobertoL Mitglied Student
Beiträge: 41 Registriert: 12.04.2018
|
erstellt am: 26. Jun. 2018 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
|
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 26. Jun. 2018 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
|
RobertoL Mitglied Student
Beiträge: 41 Registriert: 12.04.2018
|
erstellt am: 26. Jun. 2018 14:24 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
|
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 27. Jun. 2018 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Mhhh, keine Ahnung warum dann bei dir das Absetzen des Kommandos mit Python nicht funktioniert. Bei mir klappt es. Du kannst ja mal in die .bat Datei schauen und versuchen direkt die dort referenzierte Executable anzusteuern. Aber ich befürchte, dass dann die anderen Kommandozeilenparameter nicht verwendet werden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thh11 Mitglied
Beiträge: 13 Registriert: 07.06.2018
|
erstellt am: 27. Jun. 2018 12:21 <-- editieren / zitieren --> Unities abgeben:
Ich verstehe nicht ganz was das hier macht: import os os.system('kommando') optional vorher mit: os.getcwd() und os.chdir(...) Ich habe die Batch Datei gefunden und weißt auch wo abaqus.exe ist. Aber ich kann das nicht mit dem Befehl subprocess öffnen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Jun. 2018 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Servus Obwohl ich keine Ahnung von Abaqus habe: Hast du schon mal nach "os.system" in der Python Dokumentation oder mit der Internetsuchmaschine deines Vertrauens danach gesucht? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 28. Jun. 2018 09:54 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Zitat: Original erstellt von RobertoL: Achso, das funktioniert.
Was mir noch eingefallen ist: Vielleicht bricht die Sache bei dir sofort ab, weil die Dateien nicht gefunden werden. Lass dir mal nur das Arbeitsverzeichnis ausgeben, welches das Skript verwendet. os.getcwd() Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thh11 Mitglied
Beiträge: 13 Registriert: 07.06.2018
|
erstellt am: 25. Jul. 2018 23:34 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Funktion per Plugin geschrieben. Der sieht so was. def Parameter (a,b,c,d): datei = open("Parameter.csv","w") datei.write(a) datei.write('\n') datei.write(b) datei.write('\n') datei.write(c) datei.write('\n') datei.close execfile(d) Nun kann ich per die Eingabefenster die Werte (a,b,c) eingtragen und diesen werden anschließend in einer Datei geschrieben. Variable d ('C:/Temp/xyz.py')soll die Pfad übergeben, welchen dannach einen Skipt ausführen. Jedoch bekommen ich folgende Fehlermeldung: siehe Anhang. Was kann ich machen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thh11 Mitglied
Beiträge: 13 Registriert: 07.06.2018
|
erstellt am: 25. Jul. 2018 23:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Funktion per Plugin geschrieben. Der sieht so was. def Parameter (a,b,c,d): datei = open("Parameter.csv","w") datei.write(a) datei.write('\n') datei.write(b) datei.write('\n') datei.write(c) datei.write('\n') datei.close execfile(d) Nun kann ich per die Eingabefenster die Werte (a,b,c) eingtragen und diesen werden anschließend in einer Datei geschrieben. Variable d ('C:/Temp/xyz.py')soll die Pfad übergeben, welchen dannach einen Skipt ausführen. Jedoch bekommen ich folgende Fehlermeldung: siehe Anhang. Und wenn ich execfile(d) weglassen und das skipt Manuele ausführe dann klappt es. Jedoch möchte ich es automatisieren. Was kann ich machen ? Was kann ich machen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 30. Jul. 2018 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für thh11
Mit den Informationen kann man kaum was sagen. Das einzige was ich am zweiten Teil der Meldung komisch finde ist, dass du wohl eine Liste mit dem Namen 'values' hast. Das wäre ein arg ungünstiger Name, da 'values' auch ein internes Kommando in Python ist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thh11 Mitglied
Beiträge: 13 Registriert: 07.06.2018
|
erstellt am: 30. Jul. 2018 13:57 <-- editieren / zitieren --> Unities abgeben:
Also ich habe skipt 1. Dort möchte im Prinzip den Pfad von meinem 2. Skipt in d speichern und dann soll skipt 2 automatisch starten. Manuell muss ich dann den Befehl run skipt ausführen. Hat wer eine Ahnung ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |