Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Koordinaten in python

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
Autor Thema:  Koordinaten in python (3366 mal gelesen)
Nasenbäääär
Mitglied
Ingenieur

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

Beiträge: 6
Registriert: 13.09.2011

ABAQUS 6.10-1

erstellt am: 13. Sep. 2011 16:33    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,

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.



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

Beiträge: 3554
Registriert: 04.08.2005

Abaqus

erstellt am: 14. Sep. 2011 10: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 Nasenbäääär 10 Unities + Antwort hilfreich

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

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

Beiträge: 6
Registriert: 13.09.2011

ABAQUS 6.10-1

erstellt am: 14. Sep. 2011 10:58    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

Vielen Dank für die Hilfe ich werde es wie beschrieben probieren und mich ggf. noch mal melden.

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

Nasenbäääär
Mitglied
Ingenieur

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

Beiträge: 6
Registriert: 13.09.2011

ABAQUS 6.10-1

erstellt am: 14. Sep. 2011 11:23    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

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.



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

Beiträge: 3554
Registriert: 04.08.2005

Abaqus

erstellt am: 14. Sep. 2011 11:38    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 Nasenbäääär 10 Unities + Antwort hilfreich

Schau mal was du mit deiner if-Bedingung abprüfst. Da hast du dich vertan.

Außerdem glaube ich nicht, dass du in jeder for-Iteration die Liste neu erstellen möchtest, oder?

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

Nasenbäääär
Mitglied
Ingenieur

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

Beiträge: 6
Registriert: 13.09.2011

ABAQUS 6.10-1

erstellt am: 14. Sep. 2011 12: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

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.



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

Beiträge: 3554
Registriert: 04.08.2005

Abaqus

erstellt am: 14. Sep. 2011 12:29    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 Nasenbäääär 10 Unities + Antwort hilfreich

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

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

Beiträge: 6
Registriert: 13.09.2011

ABAQUS 6.10-1

erstellt am: 14. Sep. 2011 13:42    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

Super jetzt hab ich es kapiert.
Danke!

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