| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Ansys |
Autor
|
Thema: batchmode-rechnungen (1636 mal gelesen)
|
ansysfred Mitglied
Beiträge: 16 Registriert: 16.04.2012
|
erstellt am: 24. Jul. 2014 15:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich lasse gerade ein paar rechnungen im batchmode durchlaufen. Das ganze steuere ich aus einer c#-anwendung. Leider poppt noch ein msdos-fenster auf mit leerem Inhalt. Ich vermute, dass dies von Ansys erzeugt wird. Finde aber kein weg das fenster zu hidden. Jetzt meine allgemeine Frage an euch, geht eine batchmode rechnungen ohne ein msdos-fenster? Für jegliche Rückmeldung recht herzlichen Dank!!! fred hier noch der code:
//start ANSYS-Classic im BatchMode System.Diagnostics.Process ansys = new System.Diagnostics.Process(); ansys.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; ansys.StartInfo.FileName = "P:\\Ansys Inc 64\\v140\\ansys\\bin\\winx64\\ANSYS140.exe"; ansys.StartInfo.Arguments = "-dir D:\\ -b -i D:\\input.txt -o D:\\output.txt"; ansys.Start();
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rotorwerk Mitglied Dipl.-Ing. Maschinenbau
Beiträge: 37 Registriert: 09.07.2014
|
erstellt am: 24. Jul. 2014 16:29 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
Hallo, für so etwas gibt es doch schedule-Programme. Falls so etwas nicht vorhanden ist, kann man die Ansys Aufrufbefehle in eine Textdatei schreiben. Wird alles richtig gemacht, gibt es keine Fenster, die man verbergen (engl. hidden) muss. Gruß Norbert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ansysfred Mitglied
Beiträge: 16 Registriert: 16.04.2012
|
erstellt am: 24. Jul. 2014 17:29 <-- editieren / zitieren --> Unities abgeben:
danke für deine antwort! nicht das wir uns falschverstehen: ein input-file wird eingelesen und die rechnung läuft auch sauber.. mit den Argumenten: "-dir D:\\ -b -i D:\\input.txt -o D:\\output.txt" wie in der hilfe und auch von PADT-Inc beschrieben reicht das also nicht ANSYS zu verbergen? Welcher Befehl ist denn dann noch nötig? Ich habs mit -h oder mit -hidden versucht (wie es sonst eher üblich ist), klappt aber nicht... Gruß fred
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rotorwerk Mitglied Dipl.-Ing. Maschinenbau
Beiträge: 37 Registriert: 09.07.2014
|
erstellt am: 24. Jul. 2014 17:36 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
Hallo, hast Du schon mal versucht vor dem Aufruf von Ansys mit cd in das entsprechende Verzeichnis zu wechseln? Unter Linux funktioniert es am einfachsten mit zB ansys110 -b -p struct -j jobname < input.file > jobname-output.file < bedeutet, dass alle weiteren Eingaben von input.file gelesen werden > alle Ausgaben gehen in jobname-output.file Gruß Norbert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ansysfred Mitglied
Beiträge: 16 Registriert: 16.04.2012
|
erstellt am: 24. Jul. 2014 18:34 <-- editieren / zitieren --> Unities abgeben:
-cd als Argument gibt es wohl unter windows nicht (ergibt eine Fehlermeldung im output-file)... aber das verzeichnis wechsele ich mit -dir. im Anhang siehste mal wie das dos-fenster aussieht... muss ich vielleicht im input-file noch einen speziellen Befehl machen? Dank Dir! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MESHPARTS Mitglied
Beiträge: 411 Registriert: 08.03.2013 Meshparts Software (https://www.meshparts.de/products) Ansys SolidWorks
|
erstellt am: 25. Jul. 2014 01:27 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
Hallo, ich hatte das gleiche Problem. Meine Lösung war ein VisualBasic-Skript (mit der Endung vbs) aus dem ich Ansys aufrufe:
Code:
Set WshShell = WScript.CreateObject("WScript.Shell") cmd = chr(34) & "D:/ANSYS Inc/v150/ANSYS/bin/Intel/ansys150.exe" & chr(34) & " -dir " & chr(34) & "D:/" & chr(34) & " -b -i " & chr(34) & "D:/test.inp" & chr(34) & " -o " & chr(34) & "D:/test.output" & chr(34) & " -j Test" & " " & chr(38) WshShell.Run cmd, 0, false
Den oberen Code als test.vbs speichern und dann mit wscript.exe (wird von Windows automatisch gefunden) ausführen. Wegen der leeren Zeichen im Ansys-Pfad musste ich diese komplizierte Syntax bei der Definition der String-Variable cmd verwenden. Vielleicht hast du eine bessere Idee, wie man den Skript lesbarer programiert? ------------------ Viele Grüße Alexandru Dadalau MESHPARTS GmbH Tuning Your Simulation www.meshparts.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rotorwerk Mitglied Dipl.-Ing. Maschinenbau
Beiträge: 37 Registriert: 09.07.2014
|
erstellt am: 25. Jul. 2014 08:53 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
Guten Morgen, das sieht reichlich kompliziert aus. Der eigentliche Ansysaufruf sollte auch nur ansysspezifische Angaben enthalten. Wechseln des Verzeichnisses, Dateiumbenennungen etc. sollten dem Betriebssystem überlassen werden. Dadurch wird das Script auch lesbarer. dir pfad/zum/Verzeichnis ansys150 -b -p xxx -j yyy usw. dir pfad/zum/nächsten/Verzeichnis ansys150 -b -p xxx -j abc usw. ... Oder aber man läßt das Ganze von einem Task Spooler abarbeiten. Unter Linux z.B. http://vicerveza.homeunix.net/~viric/soft/ts/ Gruß Norbert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MESHPARTS Mitglied
Beiträge: 411 Registriert: 08.03.2013 Meshparts Software (https://www.meshparts.de/products) Ansys SolidWorks
|
erstellt am: 25. Jul. 2014 09:20 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
|
Rotorwerk Mitglied Dipl.-Ing. Maschinenbau
Beiträge: 37 Registriert: 09.07.2014
|
erstellt am: 25. Jul. 2014 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
Hallo, in Windows kann man doch in der Kommandozeile (cmd.exe) auch Befehle eingeben, die mit der Angabe von Optionen dann auch Leerzeichen enthalten. Früher gab es mal eine autorun.bat, damit DOS und Windows3.11 richtig lief. Solche Dinge sind in der Unixwelt echt einfach zu lösen. 95 % aller meiner Rechnungen laufen im Hintergrund und alle im Hintergrund laufenden Rechnungen werden über ein Script mit einfachen Befehlen (ohne Strings und char()) abgearbeitet. Gruß Norbert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MESHPARTS Mitglied
Beiträge: 411 Registriert: 08.03.2013 Meshparts Software (https://www.meshparts.de/products) Ansys SolidWorks
|
erstellt am: 25. Jul. 2014 09:47 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
Das ist mir klar. In 99.9% der Fälle habe ich mit Leerezeichen inPfaden auch kein Problem. Aus mir unbekannten Gründen scheint jedoch das Aufrufen von wscript.exe mit Argumenten, die Leerzeichen enthalten, nicht so direkt möglich zu sein. Daher bin ich froh, wenn mir jemand, der das besser kann, sagt, wie das anders gehen kann. Ich hoffe, ansysfred wird es selber ausprobieren und hoffentlich kann er die Methode verbessern. Das Wesentliche ist jedoch, dass meine Lösung funktioniert. Ich habe mit meiner Lösung höchstens ästhetische Probleme... Gruß Alex ------------------ Viele Grüße Alexandru Dadalau MESHPARTS GmbH Tuning Your Simulation www.meshparts.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ansysfred Mitglied
Beiträge: 16 Registriert: 16.04.2012
|
erstellt am: 25. Jul. 2014 10:04 <-- editieren / zitieren --> Unities abgeben:
in deinem vbs machst du doch im prinzip genau das gleiche wie ich in c#? Es werden die gleichen Argumente angegeben oder sehe ich das falsch?! Und die Argumente unter Linux sind doch auch die selben? Task Spooler oder ähnliches ist für meine Anwendung leider nicht geeignet. Ich lasse parallel zur Ansys-Simulation eine weitere Simulation mit einem anderen Programm laufen... Es ist ja so: Das starten von Ansys und das berechnen des Modells läuft ja auch. Bei jedem durchlauf geht halt kurz das eine dos-fenster auf und dann wieder zu. Vermutlich liegt es doch an irgendetwas anderem... grüße fred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MESHPARTS Mitglied
Beiträge: 411 Registriert: 08.03.2013 Meshparts Software (https://www.meshparts.de/products) Ansys SolidWorks
|
erstellt am: 25. Jul. 2014 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
Dein C# Skript sieht schon ähnlich aus. Aber vielleicht liegt ja das Problem tatsächlich anderswo. Übrigens, es war mir nicht klar, dass dein DOS-Fenster nur kurz aufgeht. Ich dachte, du siehst es die ganze Zeit während der Simulation. An der Stelle wird es nämlich noch interessanter: Ich habe das selbe Verhalten bei manchen Batch-Skripten beobachtet. Bis jetzt konnte ich keine Lösung dafür finden, aber ich weiß, dass es nur bei den Skripten auftaucht, wo ein Parasolid-Import durchgeführt wird. Das muss nicht die Ursache sein, aber bei mir ist das Verhalten reproduzierbar. Ich mache in meiner Anwendung auch viele andere Sachen, bevor ich den Batch-Prozess starte. Was auch immer das ist, es hat was mit dem CAD-Import zu tun. Ich bin jedenfalls auch dran und melde mich sobald ich mehr weiß. Falls du eine Lösung findest, bin ich sehr stark daran interessiert. ------------------ Viele Grüße Alexandru Dadalau MESHPARTS GmbH Tuning Your Simulation www.meshparts.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ansysfred Mitglied
Beiträge: 16 Registriert: 16.04.2012
|
erstellt am: 25. Jul. 2014 11:02 <-- editieren / zitieren --> Unities abgeben:
MESHPARTS, du bist der hammer. genau das ist das problem. bei mir ist es der sat-import. da wär ich im leben nicht drauf gekommen... ich gib dir bescheid, wenn ich ne lösung haben sollte. gruß fred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MESHPARTS Mitglied
Beiträge: 411 Registriert: 08.03.2013 Meshparts Software (https://www.meshparts.de/products) Ansys SolidWorks
|
erstellt am: 25. Jul. 2014 11:24 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
|
MESHPARTS Mitglied
Beiträge: 411 Registriert: 08.03.2013 Meshparts Software (https://www.meshparts.de/products) Ansys SolidWorks
|
erstellt am: 25. Jul. 2014 11:35 <-- editieren / zitieren --> Unities abgeben: Nur für ansysfred
Meine Vermutung: Der Befehl ~parain oder ~satin führt selber zu einem weiteren Batch-Prozess. Dafür müsste es eine Exe im Installationsorder geben. Ich habe keine Idee, wie man das Fenster dazu verbergen kann. Ich weiß nur, dass im interaktiven Modus die Befehle kein DOS-Fenster aufmachen... ------------------ Viele Grüße Alexandru Dadalau MESHPARTS GmbH Tuning Your Simulation www.meshparts.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |