| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | KISTERS 3DViewStation: Mit Modellbasiertem Design zum Modellbasierten Unternehmen , eine Pressemitteilung
|
Autor
|
Thema: Koordinaten in python (3578 mal gelesen)
|
Nasenbäääär Mitglied Ingenieur
 Beiträge: 6 Registriert: 13.09.2011 ABAQUS 6.10-1
|
erstellt am: 13. Sep. 2011 16:33 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe bisher immer nur mit CAE gearbeitet und muss mich jetzt aber in Python rein finden. Es klapp auch ganz gut, aber jetzt komm ich nicht weiter. Vielleicht kann mir ja jemand einen Tipp geben. Ich möchte alle Knoten-Punkte die auf einer bestimmten Ebene (z.B z=0) liegen in einen Set schreiben lassen.
Leider weiß ich nicht wie man die Bedingung definieren soll. Für Hilfe wäre ich sehr dankbar.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 14. Sep. 2011 10:08 <-- editieren / zitieren --> Unities abgeben:          Nur für Nasenbäääär
Erstmal musst du überlegen ob auf Part-Ebene oder Assembly-Ebene (mit Instances) arbeiten willst. - dann gehst du zu den Knoten, (siehe Scripting Reference Manual 30.9 MeshNode object) - iterierst über alle - prüfst welche bei z=0 liegen - fügst bei erfüllter Bedingung die Knotennummer zu einer Liste hinzu - wandelst die Liste in ein tuple um - erstellst das Set via SetFromNodeLabel (siehe Scripting Reference Manual 44.4.5 SetFromNodeLabels) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nasenbäääär Mitglied Ingenieur
 Beiträge: 6 Registriert: 13.09.2011 ABAQUS 6.10-1
|
erstellt am: 14. Sep. 2011 10:58 <-- editieren / zitieren --> Unities abgeben:         
|
Nasenbäääär Mitglied Ingenieur
 Beiträge: 6 Registriert: 13.09.2011 ABAQUS 6.10-1
|
erstellt am: 14. Sep. 2011 11:23 <-- editieren / zitieren --> Unities abgeben:         
Ich hab nach der oben stehenden Beschreibung versucht. Mein Code sieht wie folgt aus: p=mdb.models['Model-1'].parts['Part-1'] alleKnoten = p.nodes for i in alleKnoten: a=[] if p.nodes.coordinates[2]==0: a=a+[i.label] p.SetFromNodeLabels(nodes=a, name='Vorne') Bei der Bedingung kommt aber immer folgende Fehlermeldung: 'MeshNodeArry'object has no attribute 'coordinates' Wer kann mir sagen, wie ich auf die Koordinaten zugreifen kann, damit die Bedingung geprüft werden kann? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 14. Sep. 2011 11:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Nasenbäääär
|
Nasenbäääär Mitglied Ingenieur
 Beiträge: 6 Registriert: 13.09.2011 ABAQUS 6.10-1
|
erstellt am: 14. Sep. 2011 12:08 <-- editieren / zitieren --> Unities abgeben:         
Mit der Liste vor die for-Schleife hast du natürlich schon mal recht. Das mit der if-Bedingung ist genau mein Problem. Ich hab keine Ahnung wie ich python sagen soll, dass er auf die Koordinaten der Konten zugreifen soll. Ich hab mir mal mit print meine Array 'alleKnoten' ausgeben lassen. Da steht dann: ['MeshNode object', 'MeshNode object', 'MeshNode object', ....] Wenn ich mir mit print alleKnoten[0] z.B. das erste Objekt aus dem array ausgeben lasse erhalte ich: ({'coordinates': (20.0, 0.0, 50.0), 'instanceName': None, 'label': 1}) Also haben meine Objekte im Array die Eigenschaften coordinates (als Liste), aber wie kann ich auf eine bestimmten Teil dieser Liste zugreifen? Vielen Dank für eure Hilfe und Geduld. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 14. Sep. 2011 12:29 <-- editieren / zitieren --> Unities abgeben:          Nur für Nasenbäääär
Dein i beeinhaltet doch schon p.nodes. Das brauchst du bei der if-Bedingung innerhalb jeder Iteration doch nur zu verwenden. Hier mal ein Beispiel: Code:
knotenliste=[]p=mdb.models['Model-1'].parts['Part-1'] for i in p.nodes: if i.coordinates[2]==0: knotenliste.append(i.label)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nasenbäääär Mitglied Ingenieur
 Beiträge: 6 Registriert: 13.09.2011 ABAQUS 6.10-1
|
erstellt am: 14. Sep. 2011 13:42 <-- editieren / zitieren --> Unities abgeben:         
|