Seite 1 von 1

Starten von CCM+ Macro aus Python in Windows

Verfasst: Freitag 1. September 2023, 18:25
von vanKey
Hallo zusammen,

ich möchte unter Windows mit einem "Star CCM+"-Makro aus python heraus eine Simulation starten.
Was ich bisher geschafft habe, ist es, Star CCM+ zu öffnen und die Simulationsdatei einzuladen:

Code: Alles auswählen

...
subprocess.run(["K:/.../lib/starccmw.exe", "K:/.../file.sim"], shell=True)
Weiß jemand wo und wie in dem Befehl oben nun noch ein "Star CCM+"-Makro (start.java) angezogen werden kann, sodass die Simulation automatisch startet?
In Linux sieht das so aus, mir fehlt aber der passende Windows-Befehl dazu:

Code: Alles auswählen

...
subprocess.run(["/mnt/.../starccm+ -licpath blablabla -power -np 1 ./file.sim -batch start.java &"], shell=True)
VG
vanKey

Re: Starten von CCM+ Macro aus Python in Windows

Verfasst: Freitag 1. September 2023, 19:42
von __blackjack__
@vanKey: Das ist ja jetzt nicht wirklich eine Python-Frage, sondern wie man ein Programm startet was eher nicht so viele Leute benutzen. Gibt es bei den Argumenten des gleichen (?) Programms denn Unterschiede zwischen Windows und Linux?

Für die Python-Seite kann ich jedenfalls nur sagen, dass das ``shell=True`` da nichts zu suchen hat. Im ersten Fall ist es gänzlich unsinnig, und im zweiten Fall muss man das Kommando wie im ersten Fall als Liste übergeben und das ``&`` am Ende weg lassen. Und gegebenfalls `Popen` statt `run()` verwenden wenn das Python-Programm asynchron weiterlaufen soll.

Re: Starten von CCM+ Macro aus Python in Windows

Verfasst: Samstag 2. September 2023, 09:32
von vanKey
Hallo,

vielen Dank für die Rückmeldung.
Habe mittlerweile herausgefunden, dass ich die Software und das Makro über die Windows Powershell starten kann. Die Berechnung wird also korrekt durchgeführt,
wenn ich alles aus der Powershell heraus starte.
Wenn ich allerdings versuche, das Ganze aus Python heraus zu starten, läuft es nicht an. Mein Code dazu sieht wie folgt aus:

Code: Alles auswählen

process=subprocess.run(["powershell","K:\...\starccm+.exe -licpath blablabla -np 1 K:/.../file.sim -m K:/.../start_windows.java"])
result=process.communicate()[0]
print (result)
Python gibt mir in der Konsole dann "None" aus. D.h. er hat wohl nichts unternommen.
Mache ich beim Aufrufen mittels subprocess noch etwas falsch?

Grüße

Re: Starten von CCM+ Macro aus Python in Windows

Verfasst: Samstag 2. September 2023, 11:01
von Sirius3
Der Aufruf über powershell ist unnötig. Die Argumente müssen einzelne Elemente def Liste sein.
Da Du stdout nicht umleiten, ist der Wert natürlich None.
Wenn es Probleme gibt, wäre es gut zu wissen, was denn in der Konsole ausgegeben wird.

Code: Alles auswählen

subprocess.run([r"K:\...\starccm+.exe", "-licpath", "blablabla", "-np", "1", "K:/.../file.sim", "-m", "K:/.../start_windows.java"])

Re: Starten von CCM+ Macro aus Python in Windows

Verfasst: Samstag 2. September 2023, 11:36
von vanKey
Jup, ich habe auch festgestellt, dass die Argumente einzelne Elemente der Liste sein müssen.
Das Problem ist gelöst. Danke für die Info. Grüße