Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  ANSYS
  APDL Element-Abfrage Alle Knoten auf Auswahl

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:  APDL Element-Abfrage Alle Knoten auf Auswahl (3190 mal gelesen)
Robse-Ponte
Mitglied
Entwicklungsingenieur


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

Beiträge: 104
Registriert: 03.09.2007

AutoCAD Mechanical 2021
Siemens NX 2000
Teamcenter 13.1.0.1
Ansys 2019 R2

erstellt am: 09. Mai. 2018 02:26    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


Schalenauswahl.JPG

 
Guten Tag zusammen und Hallo an die Profis,

Ich bin blutiger Anfänger (Student) und versuche seit Ewigkeiten, eine Schale (grüne Fläche siehe Bild im Anhang) mit APDL anzuwählen.

Voraussetzung: Named Selection Kante (rot markiert im Bild) ist vorhanden. Bisher hatte ich nur zwei Flächen, die mehr oder weniger senkrecht zueinander standen.

Mein Vorgehen bis jetzt lautete:

-  2. Knoten auf der Linie suchen. Randknoten gab manchmal Fehler aus.
-  zugehörige Elemente finden
-  Zugehörigen Type (Schale4) finden durch Auswahl der kleineren Schale

Ist dieses Vorgehen Knoten->Element->Type so richtig?

Mein Versuch bis jezt:

cmsel, s, Kante%edgenum%
cm, Knoten, node ! Knotenkomponente
n1 = node(0,0,0) ! erster Knoten
nsel, u, node,,n1                      ! Abwählen
n2 = node(0,0,0) ! zweiter Knoten

esln                                   
e_test = elnext(0)
*get, e1_type, elem, e_test, attr, type ! Schale 1 Typ finden
esel, u, type,, e1_type
e_test = elnext(0)
*get, e2_type, elem, e_test, attr, type ! Schale 4 Typ finden

cmsel, s, Knoten  !Knoten wieder anwählen
esln              !Zugehörige Elemente wieder anwählen

!Auswahl Schale 4, da wenige Elemente darauf sind

esel, r, type,, e1_type
*get, e1_count, elem, 0, count  !Elemente zählen Schale 1
cmsel, s, weldnodes
esln
esel, r, type,, e2_type        !Elemente zählen Schale 4
*get, e2_count, elem, 0, count

*if,e1_count,le,e2_count,then
      Auswahl = e1_type
*else
      Auswahl = e2_type
*endif


Bisher war die Schale oben immer ein Stummel und klein (gelb markiert im Bild links). Deshalb ging das mit zählen sehr gut. Jetzt kann die Schale auch grösser sein. Unten können seit Neuem auch mehrere Schalen liegen.

Jetzt mit vier Schalen anstatt zwei wählt er mir mit dem Befehl elnext(0) teilweise zusätztlich zu dem Element auf S1 die Elemente auf S2 oder S3 anstatt S4 an (Je nachdem welches Element am niedrigsten ist, elnext(0) sei Dank, ich weiss es leider nicht besser). Bei zwei Schalen ging das damals noch super...

Gibt es eine bessere Auswahlmethode der Elemente? Ich möchte immer dass eine Schale unten (S1/S2/S2 egal welche, brauche ich nur um ein CSYS zu machen) und die S4 gewählt wird. Ich benötige eigentlich eine Abfrage, bei der ich die Schale wählen will, auf der alle Knoten von meiner Komponente "Knoten" darin vorkommen.

Ich möchte keine Musterlösung. Aber über jeden Tip, wie ich die Auswahl machen kann wäre ich sehr dankbar. Die Hilfe ist für mich sehr schwierig, da vieles möglich ist, mir aber der komplette Überblick über die Vielzahl an Befehlen fehlt.

Danke und freundliche Grüsse

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: 14. Mai. 2018 13:09    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 Robse-Ponte 10 Unities + Antwort hilfreich

Hi,

Einfach wäre die Auswahl, wenn alle Elemente der "grünen" Schale einem Elemttyp angehören (das macht z.B. die Workbench, falls Du dort das Netzt erstellt hast) oder aus Schalenelementen besteht, wobei alle anderen Elemente z.B. Solids sind.

Auwahl nach Elementtyp (Annahme: Alle Knoten der Named Selection Kante haben die Koordinate z=0, liegen also in der x-y-Ebene):
allsel
cmsel,s,Kante%edgenum%
n1=node(0,0,0) ! erster Knoten
*get,x_node,node,n1,loc,x
*get,y_node,node,n1,loc,y
n2=node(x_node,y_node,500) !Knoten der an der Position von N1 aber weit oberhalb der x-y-Ebene liegt
esln !Selektiert Elemente zu diesem Knoten
*get,elem_num,elem,,num,min !Elementnummer eines der selektierten Elemente
*get,etype_,elem,elem_num,attr,type#
allsel
Esel,s,type,,etype_  !Alle Elemente dieses Elementtyps selektieren
nsle
cm,grueneschale,elem  !Komponente erstellen

Ähnliches Vorgehen für gleichen Elementname, z.B. shell281.

------------------
Gruß, A.

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

Robse-Ponte
Mitglied
Entwicklungsingenieur


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

Beiträge: 104
Registriert: 03.09.2007

AutoCAD Mechanical 2021
Siemens NX 2000
Teamcenter 13.1.0.1
Ansys 2019 R2

erstellt am: 14. Mai. 2018 15:37    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 Arnd,

Danke für den wertvollen Input und den coolen Ansatz. Erst einmal die Antwort auf dein Frage: Ja, der Befehl läuft in der Workbench.

Ansich ziemlich gute Idee mit dem Knoten oberhalb der Linie. Ich wusste nicht, dass man mit esln alle Elemente anwählen kann. Leider habe ich keine feste Linienausrichtung. aber sie sind immer Karthesisch, somit parallel zu den Systemebenen. Deinen Ansatz könnte ich ja weiterspinnen und alle 3 Koordinaten von zwei Knoten der Linie  abfragen. Damit bekomme ich dann die Richtung was ein ordentlicher Schritt vorwärts ist. Das klappt mit drei If Abfragen dann gut.

Entschuldige, dass ich mich nicht sauber ausgedrückt habe, bzw. die Hälfte der Informationen nicht klar weitergebe. Das ist leider nur ein Ausschnitt aus dem Teil. Es können also noch andere Schalen darüberliegen, die eventuell eine niedrigere Elementnummer besitzen als diese auf der grünen Schale. Dann würde "elem" ja diese Schale anwählen, verstehe ich das richtig?

Deshalb die Frage auch, ob es eine Möglichkeit gibt, die Schale in Kombination mit der Linie zu prüfen (sozusagen wenn Schnittmenge von Schale und Linie passt dann ist das die gewünschte Schale). Die Frage ist, ob das machbar ist? Würde das eventuell mit einer Schleife klappen, in der ich alle Elemente prüfe, ob sie einen gemeinsamen Knoten mit der Linie haben? Sollte ja egal sein welches Element. Gibt es so eine Möglichkeit? Wie bei der Programmiersprache C der Befehl Contain? Gibt es ein Aquivalent dazu in APDL? Dummes Beispiel mit ner anderen Programmiersprache... Aber bin noch nicht so fit mit APDL.

Herzliche Grüsse und Danke noch einmal.

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: 14. Mai. 2018 16:03    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 Robse-Ponte 10 Unities + Antwort hilfreich

Hi,

Zuerst mal ein Tip:
Solche Befehle, die in der WB laufen sollen immer erst in der Classic ausprobieren. Aber das tust Du ja sicher schon.

Ansonsten:
APDL hat mit C nicht so viel zu tun, eher mit Basic.
Der Befehl *get ist sehr mächtig. Den solltest Du Dir in der Hilfe mal genauer ansehen.
Wenn noch andere Schalen darüberliegen, brauchst Du natürlich die ungefähre Position der gesuchten Schale.
Wenn Du die Position nicht kennst, fällt mir noch ein:
cmsel, s, Kante%edgenum%
n1=node(0,0,0) ! erster Knoten
nsel,r,,,n1
esln
*get,enum_,elem,,Count
*get,temp_,elem,,min
*do,i,1,enum_
  *get,etype_%i%,elem,temp_,attr,type
  temp_=ndnext(temp_)
*enddo
Damit hast Du dann die Elementtypen von beiden Schalen gespeichert.
Einfacher ist es allerdings, gleich in der WB im Strukturbaum vor der Vernetzung die Elementtypnummer eines Bauteils zu speichern.
Natürlich kannst Du prüfen, ob ein Knoten Teil der named selection ist, ich sehe aber nicht, was das Dir bringt. Diese Knoten kennst Du ja schon.??? Wenn Du das aber machen willst, würde ich eine *do-Schleife und *get verwenden.

------------------
Gruß, A.

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

Robse-Ponte
Mitglied
Entwicklungsingenieur


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

Beiträge: 104
Registriert: 03.09.2007

AutoCAD Mechanical 2021
Siemens NX 2000
Teamcenter 13.1.0.1
Ansys 2019 R2

erstellt am: 20. Mai. 2018 00:43    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


Schalenauswahl2.JPG

 
Hallo Arnd,

Danke dir. Ja, ich "kämpfe" mit der Classic-Version. Bin leider Workbench-Student...

"Natürlich kannst Du prüfen, ob ein Knoten Teil der named selection ist, ich sehe aber nicht, was das Dir bringt"

Mir geht es darum, meine momentane Auswahl zu prüfen, und mit dem Inhalt der Named Selection zu vergleichen. Ich versuche verzweifelt den Elementtyp ET4 zu separieren [Bild im Anhang], der an alle Knoten (1-10) grenzt. Alle anderen Elementtypen besitzen ja nur Bruchteile (Elementtyp/Schale 1 zb. grenzt nur an Knoten 1-3).  Die Frage bleibt, ob das machbar ist mit APDL?

Ich habe jetzt eine Schleife gebastel, in der alle Knoten rausgezogen werden.

mit:

cmsel, s, Knoten
*get, ncount, node, 0, count

habe ich mal die Anzahl der Knoten.

mit der Schleife:

*do,ct,2,ncount
    node_vorher = n1
    n%ct% = nnear(node_vorher) ! Knotennummer
    nsel,u,node,,node_vorher
*enddo

kann ich alle Knoten manifestieren. Eventuell könnte ich die n%ct% auch in ein Array schreiben, falls das etwas bringt?

Die Frage ist nur, wie kann ich jetzt mit diesen Knoten prüfen, ob Sie alle in einem der verbliebenden Elementtypen der momentanen Auswahl drin sind? Am Schluss soll ein Elementtyp übrig bleiben (der mit allen Knoten). Deshalb die dumme Frage mit dem Containbefehl als Analogie, der macht nämlich in C genau das. Mengen miteinander vergleichen und die Menge rausfiltern in der die Argumente vorhanden sind.

Get habe ich mir schon öfter angesehen, aber der Befehl ist so vielschichtig, als Anfänger sehe ich da den Wald vor lauter Bäumen nicht. Soll keine Ausrede sein.

Viele Grüsse und frohe Feiertage!

[Diese Nachricht wurde von Robse-Ponte am 20. Mai. 2018 editiert.]

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: 22. Mai. 2018 18:26    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 Robse-Ponte 10 Unities + Antwort hilfreich


snippet.PNG

 
Hi,

Es tut mir leid, aber ich glaube ich verstehe nicht ganz, wo Dein Problem ist. Bitte beschreibe noch mal, was Du auswählen möchtest.

Wenn Du die grüne Schale auswählen möchtest:
Elementtyp beim Vernetzen in Variable speichern (per command snippet, siehe Bildchen) und dann einfach auswählen.
allsel
Esel,s,type,,mytype

War das Dein Anliegen?

------------------
Gruß, A.

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

Robse-Ponte
Mitglied
Entwicklungsingenieur


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

Beiträge: 104
Registriert: 03.09.2007

AutoCAD Mechanical 2021
Siemens NX 2000
Teamcenter 13.1.0.1
Ansys 2019 R2

erstellt am: 24. Mai. 2018 02:26    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 Arnd,

Erst mal danke, dass du dich meiner annimmst.

Das ganze ist leider etwas komplexer, da das Bild nur eine Vereinfachung und nicht die Endanwendung darstellt. Es sind viel mehr Schalen, teilweise mehrere winklig aneinander. 

Kurz nochmal erklärt, was ich beabsichtige: Ich suche einen Elementtypen (Schale), der vollständig an eine Kante (Named Selection mit aufsteigende Nummer) angrenzt.

Mein "Weg" um das zu erreichen wäre, die Knoten als Schnittmenge zu benutzen. Bin aber ein Ansys-DAU. Bin für jeden Hinweis dankbar.

Konkret würde das beispielsweise vom Bild meines vorherigen Posts so aussehen (N ist einfach nur die selbst erdachte Knotennummer):

Named Selection hat Knoten: N1 N2 N3 N4 N5 N6 N7 N8 N9 N10

ET1:  N1 N2 N3
ET2:  N3 N4 N5 N6 N7
ET3:  N7 N8 N9 N10
ET4:  N1 N2 N3 N4 N5 N6 N7 N8 N9 N10

In ET4 (Schale grün) sind alle Knoten der Named Selection ----> Schale grün ist die richtige

Hoffe ich konnte das richtig erklären

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

Robse-Ponte
Mitglied
Entwicklungsingenieur


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

Beiträge: 104
Registriert: 03.09.2007

erstellt am: 24. Mai. 2018 02:44    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 was du geschrieben hast, habe ich angesehen und glaube verstanden, aber nicht weiterverfolgt, da ich keinen vernünftigen Algorithmus daraus erstellen konnte. Es geht dabei um eine Auswertung > 100 Named References... Wenn viele Schalen aneinandergrenzen, dann kann ich diese im Code nicht doppelt verwenden, jedenfalls nicht mit %Variable% ohne dass ich mit komplizierten Bedingungen gegensteuere. Eine allgemeine Lösung ist das dann nicht mehr. Das Ziel ist es leider die Schale zu finden und nicht sie zu definieren. Ich lasse mich gerne eines Besseren belehren, falls ich auf dem Schlauch stehe und deinen Weg doch nicht verstanden habe?

Den Code den du gepostet hast, habe ich etwas geändert. Ich denke das darunterstehende wäre deine Intention gewesen? Damit bekomme ich die Elementtypen der beiden Schalen:

n1=node(0,0,0) ! erster Knoten
nsel,r,,,n1
esln
*get,enum_,elem,,Count
*get,temp_,elem,,num,min
*do,i,1,enum_
  *get,etype_%i%,elem,temp_,attr,type
  temp_=elnext(temp_)
*enddo

---> Somit habe ich die angrenzenden Elementtypen

Ich habe jetzt einmal ein wenig rumprobiert und mir selbst einen Contain-Algorithmus gebastelt. Damit wäre es möglich, Arrays zu vergleichen.

*dim, nar,,ncount
*dim, sar1,, 9
*dim, sar2,, 11

nar(1)  = 1, 2, 3, 4, 5, 6, 7, 8, 9    ! Array Knotennummern
sar1(1) = 1, 2, 7, 4, 5, 6, 3, 11, 9   ! Array Knotennummern Elementtyp Schale 1 
sar2(1) = 1, 2, 11, 4, 5, 6, 7, 10, 9, 3, 8  ! Array Knotennummern Elementtyp Schale 2 

*get, nnar, PARM, nar, DIM,X
*get, nsar2, PARM, sar2, DIM,X

flag=0

  *do,j,1,nnar
   
*do,k,1,nsar2
           *if,nar(j),eq,sar2(k),then

           flag = flag + 1
           !*CYCLE
           *endif  
  *enddo
  *enddo

Wenn die Anzahl von Flag gleich ist wie die Anzahl Knoten im Knotenarray dann habe ich meine Schale.

---> Somit bekomme ich den angrenzenden Elementtypen, der alle Knoten enthällt.

Was mir immer noch fehlt, ist die dumme Tatsache, dass ich nicht weiss, wie ich abwärts Abfragen erstellen kann. Wie kriege ich die Schnittmenge der Named Selection und der Elementtypen in Abhängigkeit der Elementtypen heraus?
Ich denke schon dass es geht, mit Umwegen -> Von jedem Knoten der Named Reference alle umliegenden Elemente abfragen, Filtern nach Elementypen in verschiedene Arrays, dann alle Knoten aus den Elementen ziehen und mit o.g. Funktion vergleichen. Ist das wirklich so gedacht? Ich habe hier Schalenbaugruppen mit 100000 Elementen aufwärts. Das wird mühsamer Code, auch später zum Ändern.

Liebe Grüsse

[Diese Nachricht wurde von Robse-Ponte am 24. Mai. 2018 editiert.]

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