| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Ansys |
Autor
|
Thema: Multipro Macro Problem (1423 mal gelesen)
|
jochen-dittrich Mitglied Student
Beiträge: 5 Registriert: 23.11.2015 ANSYS 16.1
|
erstellt am: 23. Nov. 2015 23:22 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich versuche via multipro mehrere Werte in einem Macro einlesen zu lassen, aber dabei unterbricht ANSYS den ja Programmfortschritt nicht. In der Hilfe wird ein Auswerten des _BUTTON Wertes vorgeschlagen, wozu ich eine *DOWHILE Endlosschleife mit *If,_BUTTON,EQ,1,EXIT als Ausbrechkriterium nehmen wollte. Allerdings verfängt das Programm sich im Rechennirvana sobald TRUE für die IF zurückkommt. Laut Hilfe ein Problem des fehlenden ENDIFs, aber den hab ich doch?! Weiß jemand wo mein Fehler ist, bzw. wie man es eleganter lösen kann? Hier der Code: *CREATE,Abfrage,mac multipro,'start',1 *cset,1,3,DWI,'Innendurchmesser Welle in [m]',0.0 multipro,'end' _BUTTON=0.5 I=1 *DOWHILE,I *IF,_BUTTON,EQ,0,OR,_BUTTON,EQ,1,EXIT *ELSE *ENDIF *ENDDO *ENDIF *END Danke schonmal im Voraus! Gruß, Jochen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
farahnaz Ehrenmitglied V.I.P. h.c. Ing.
Beiträge: 2467 Registriert: 24.04.2007 CAE, FEM, Test, NPD
|
erstellt am: 24. Nov. 2015 01:54 <-- editieren / zitieren --> Unities abgeben: Nur für jochen-dittrich
bin zwar kein Experte, aber ich frage mich was macht das letzte *ENDIF (vor dem *END) kann sein dass das program springt zu dieser *ENDIF im Falle "True" und had problem? ------------------ Grüße, Moe [Diese Nachricht wurde von farahnaz am 24. Nov. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jochen-dittrich Mitglied Student
Beiträge: 5 Registriert: 23.11.2015 ANSYS 16.1
|
erstellt am: 25. Nov. 2015 22:30 <-- editieren / zitieren --> Unities abgeben:
Danke für deine Antwort. Ich dachte halt das ich jede IF-Funktion schließen muss mit einem ENDIF, so steht es ja in der Hilfe. Das erste ENDIF ist für die ELSEIF-Funktion um diese zu beenden und eine neue DO-loop anfangen zu können. Sobald dann irgendwann TRUE zurückkommt springt es dank EXIT zu ENDDO und dann ist der nächste Befehl eben ein ENDIF um die IF-Funktion zu schließen und das Makro hört auf. Aber wo ist dann der Fehler? Habs jetzt ohne das zweite *ENDIF probiert und auch ganz ohne und einmal auch das ENDIF nach dem Macro ausgeführt, aber das geht alles nicht. Entweder hängt er sich auf, oder es erscheint bei jedem Schleifendurchlauf (selbst wenn die IF-bedingung schon längst erfüllt ist, läuft die Schleife scheinbar noch?!) die Meldung: "No *IF active, *ENDIF is being ignored" Was bedeutet das? Grüße, Jochen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jochen-dittrich Mitglied Student
Beiträge: 5 Registriert: 23.11.2015 ANSYS 16.1
|
erstellt am: 11. Dez. 2015 12:00 <-- editieren / zitieren --> Unities abgeben:
|
farahnaz Ehrenmitglied V.I.P. h.c. Ing.
Beiträge: 2467 Registriert: 24.04.2007 CAE, FEM, Test, NPD
|
erstellt am: 12. Dez. 2015 23:57 <-- editieren / zitieren --> Unities abgeben: Nur für jochen-dittrich
|
| |
jochen-dittrich Mitglied Student
Beiträge: 5 Registriert: 23.11.2015 ANSYS 16.1
|
erstellt am: 01. Feb. 2016 11:37 <-- editieren / zitieren --> Unities abgeben:
Wie geschrieben, ich hab das mit und ohne und an allen Stellen probiert weil ich den Ablauf bei ANSYS da nicht verstehe. Update: Eine Möglichkeit den Programmablauf zu stoppen hab ich zwar nicht finden können, aber immerhin wie ich mehrere Multipro's hintereinander durchlaufen lassen kann und auch in einer Art Do-Schleife. Dazu meine Lösung: *CREATE,Werte_einlesen,mac ! Macro zum Parametereinlesen erstellen (muss als Macro sein) /UIS,MSGPOP,3 ! Warn Pop-Ups unterbinden _BUTTON=10 ! OK/Cancel-Button zurücksetzen multipro,'start',1 *cset,1,3,XYZ,'XXXXXXX', multipro,'end' *IF,_BUTTON,EQ,0,OR,_BUTTON,EQ,1,THEN ! Prüfen ob OK/Cancel-Button gedrückt wurde, wenn ja starten des nächsten UI _BUTTON=10 multipro,'start',1 *cset,1,3,XYZ,'XXXXXXX', multipro,'end' *IF,_BUTTON,EQ,0,OR,_BUTTON,EQ,1,THEN ! Eigene Schleife nötig, da Multipro in DO-Loop verboten ist I=1 ! Schleifenzähler initialisieren Anzahl=3 ! Schleifenanzahl auf festlegen :SPRUNG ! Sprunglabel I=I+1 ! Schleifenzähler erhöhen multipro,'start',1 *cset,1,3,EX_%I%,'XXXXXXX', multipro,'end' *IF,I,LT,Anzahl,THEN ! Prüfen ob Schleifenzähler kleiner als Schleifenanzahl *GO,:SPRUNG ! Springe zu Schleifenlabel *ENDIF *END
Vielleicht hilft es ja jemanden. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|