Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  ANSYS
  Ansys APDL - Branching und Code Reuse?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Ansys
Autor Thema:  Ansys APDL - Branching und Code Reuse? (2574 mal gelesen)
Harko
Mitglied



Sehen Sie sich das Profil von Harko an!   Senden Sie eine Private Message an Harko  Schreiben Sie einen Gästebucheintrag für Harko

Beiträge: 17
Registriert: 17.12.2009

erstellt am: 15. Jan. 2010 12:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

für ein komplexeres APDL-Makro (Ansys Classic 11) würde ich gerne die ein oder andere Funktionalität auslagern. Diese Funktionalitäten werden, so bestimmte Bedingungen erfüllt sind, von mehreren Stellen im Code aufgerufen.

Als Mensch mit einiger Erfahrung im Bereich objektorientierter und prozeduraler Programmierung würde ich das so angehen:

Code:

*IF, xyz, EQ, 1, THEN
  *GO, :MyFunction
*ELSE
  *IF, abc, EQ, 2, THEN
    *GO, :OtherFunction
  *ELSE,
    ....
  *ENDIF
*ENDIF

IMHOIn my humble oppinion (Meiner Meinung nach) ist dies eines der Grundkonstrukte jeglicher Programmierung. Leider nicht bei Ansys.  Hier kommt eine Fehlermeldung (Warnung) . Die Hilfe (Ansys Classic 11) schreibt lapidar, dass *GO in *IF und *DO  Konstrukten zu vermeiden sind.

Warum das denn? Wie mach ich das dann sonst? Ein und den gleichen Code mehrfach kopieren? Lieber nicht!

Andere Frage: Gibt es eine Möglichkeit, den Titel der Selection-Box, die z. B. beim Aufruf
von KSEL, R, P erscheint,  per APDL-Befehl zu ändern?

Danke, Harko

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jens.Friedrich
Moderator
Dipl. -Ing.


Sehen Sie sich das Profil von Jens.Friedrich an!   Senden Sie eine Private Message an Jens.Friedrich  Schreiben Sie einen Gästebucheintrag für Jens.Friedrich

Beiträge: 1048
Registriert: 09.09.2005

ANSYS2021 R2

erstellt am: 15. Jan. 2010 13:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Harko 10 Unities + Antwort hilfreich

Hallo Harko,

am besten lagerst du das Objekt in ein Macro aus. dann kannst du auch in schleifen leicht drauf zugreifen.
der Titel der Selektion Box kann per APDL ist nicht möglich

Als Mensch mit einiger Erfahrung im Bereich objektorientierter und prozeduraler Programmierung solltest du das so angehen:

6.3.5. Changing the Menu Hierarchy and Dialog Boxes Using UIDL
You can change the menu hierarchy to suit your analysis needs, alter the design of many of the dialog boxes and add your own macros (in the form of dialog boxes) to the menu hierarchy.

The ANSYS program reads a file called menulist110.ans. This file lists the names of files containing the ANSYS menu screens. The menulist110.ans file must be available for the ANSYS program to work.

Usually, the menulist110.ans file resides in the /ansys_inc/v110/ansys/gui/en-us/UIDL directory (UNIX systems) or the Program Files\Ansys Inc\V110\ANSYS\gui\en-us\UIDL subdirectory (Windows systems). However, both your current working and home directories are also searched to allow for user customization of the menu system.

To modify the ANSYS dialog boxes and main menus, you need to learn the ANSYS-developed GUI programming language, called the User Interface Design Language (UIDL). For more information, refer to the ANSYS UIDL Programmer's Guide. (This manual is not part of the standard ANSYS documentation set; you must order it separately.)

6.3.6. Creating Dialog Boxes Using Tcl/Tk
As an alternative to using UIDL to create ANSYS dialog boxes, you can create new GUI components and dialog boxes by using the Tool Command Language and Toolkit, often referred to as Tcl/Tk.

viel spass

------------------
Jens Friedrich
TU-Dresden

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

arnd13
Mitglied
Dipl. Ing.


Sehen Sie sich das Profil von arnd13 an!   Senden Sie eine Private Message an arnd13  Schreiben Sie einen Gästebucheintrag für arnd13

Beiträge: 735
Registriert: 05.11.2008

erstellt am: 15. Jan. 2010 13:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Harko 10 Unities + Antwort hilfreich

1) Ein Grund, warum *go in *if und *do-Schleifen nicht verwendet werden sollte ist sicher der, dass dann gegebenenfalls das zugehörige *endif bzw. *enddo nicht mehr erreicht wird, wodurch es zu Problemen kommen kann.
Möglicherweise kannst Du die ausgelagerten Funktionen schlicht mit /input,<Pfad_und_Dateiname> aufrufen.

2)Titel der Selectionsbox ändern? Weiß ich auch nicht. Du kannst Dir aber eine eigene Abfragebox mit MULTIPRO erstellen. Vielleicht hilft Dir das. Auch *msg,ui ist fürs interaktive Arbeiten hilfreich.

Gruß, A.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Harko
Mitglied



Sehen Sie sich das Profil von Harko an!   Senden Sie eine Private Message an Harko  Schreiben Sie einen Gästebucheintrag für Harko

Beiträge: 17
Registriert: 17.12.2009

erstellt am: 15. Jan. 2010 19:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das ging ja fix :-) Danke für die Antworten!

@Arnd13:

Zitat:
[i]1) Ein Grund, warum *go in *if und *do-Schleifen nicht verwendet werden sollte ist sicher der, dass dann gegebenenfalls das zugehörige *endif bzw. *enddo nicht mehr erreicht wird
Möglicherweise kannst Du die ausgelagerten Funktionen schlicht mit /input,<Pfad_und_Dateiname> aufrufen.

Verwende ich ein Sprungziel, so komme ich nach Abarbeitung des Ziels nicht garantiert zurück zum aufrufenden Ort. Dies kann man auch bei mehreren Ursprungsorten über State-Variablen etc. definieren. Aber auch nicht schön. Insofern mag der Ansys-Ansatz verständlich sein.

Aber dein Ansatz mit /input, also quasi eine Datei je "Methode", ist zwar aus Sicht der Wartbarkeit furchbar, bietet aber zumindest einen möglichen Ansatz, um so etwas überhaupt zu realisieren. Daran hatte ich noch gar nicht gedacht.

@Jens:
UIDL sowie insbesondere TCL/TK wären eine Option. Auch wenn TCL/TK eine der Sprachen ist, die ich noch nicht in den Fingern hatte.

Die menulist Datei habe ich mir schon zu Gemüte geführt. Ohne Doku komme ich hier aber nicht weiter. Und deren Beschaffung versuche ich seit längerem zu veranlassen. Das kann schon mal dauern 

Harko

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz