Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Surfaces selektieren

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:  Surfaces selektieren (1068 mal gelesen)
Sigbert98
Mitglied



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

Beiträge: 48
Registriert: 26.02.2009

erstellt am: 04. Mrz. 2009 11:47    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 zusammen!

Ich versuche vergeblich mit Python Oberflächen zu selektieren, die z.B. eine gemeinsame y-Koordinate haben. Auf der Grundlage eines früheren Beitrags von Mustaine habe ich mir bereits eine Schleife gebastelt, die die betreffenden Oberflächen in einem SET speichert. Wie kann ich nun möglichst einfach diese Daten in ein Set für Oberflächen übertragen?

Die Fehlermeldung lautet wie folgt:
TypeError[0]: mask[0]; found tuple, expecting string

Vielen Dank im Voraus!
Sigbert


Hier die bisherige Programmierung:

Code:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# FUNKTIONIERT
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
a = mdb.models['Assembly'].rootAssembly.instances['Part1-1']
centroidlist2 = []
listfaceset2 = []
listsetnames2 = []

for i in range(len(a.faces)):
    y=a.faces[i].getCentroid()
    centroidlist2.append(y)

for k in range(len(centroidlist2)):
    if centroidlist2[k][0][1]==-100.0: # [k]=Eintrags-Nr.; [0]=x-Koordinate; [1]=y-Koordinate
        face_y = a.faces.findAt(centroidlist2[k])
        s1 = mdb.models['Assembly'].rootAssembly
        setname = 'Set_Surf-'+str(k)
        s1.Set(faces=face_y, name=setname)
        set_y = s1.sets[setname]
        listfaceset2.append(set_y)
        listsetnames2.append(setname)

if len(listsetnames2) > 0:
    s1.SetByMerge(name='Traeger_seitlich', sets=(listfaceset2))
 
# Loeschen der einzelnen Sets
if len(listsetnames2) > 0:
    s1.deleteSets(setNames=(listsetnames2))
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# FUNKTIONIERT NICHT
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Hier soll das obige Set genutzt werden, um die Oberflaechen zu selektieren.
a = mdb.models['Assembly'].rootAssembly
s1 = a.instances['Part1-1'].faces
side1Faces1 = s1.getSequenceFromMask(mask=(listfaceset2, ), )
Ass_1.Surface(side1Faces=side1Faces1, name='Oberflaeche')
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



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: 06. Mrz. 2009 15:54    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 Sigbert98 10 Unities + Antwort hilfreich

Kannst du die CAE-Datei mit anhängen? Damit wäre es leichter nachzuvollziehen was dein Script macht.

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: 06. Mrz. 2009 18:14    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 Sigbert98 10 Unities + Antwort hilfreich

OK, habs mir nochmal genauer angeschaut.

Wenn ich das richtig sehe, willst du aus den Flächen die in dem Set liegen eine Surface erstellen, auf welche du dann z.B. bei einer Druckdefinition verweisen könntest.

Nun, dann mach das dich genauso wie mit den Sets. Im Prinzip musst du alle Set-Befehle einfach nur nochmal für Surfaces anwenden. Sicherlich könnte man auch die Flächen aus dem großen Set herauslesen und daraus eine Surface machen. Aber so geht es auch - und vielleicht auch einfacher.

Code:

#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# FUNKTIONIERT
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
a = mdb.models['Model-1'].rootAssembly.instances['Part-1-1']
centroidlist2 = []
listfaceset2 = []
listsurfaceset2 = []
listsetnames2 = []
listsurfacenames2 = []

for i in range(len(a.faces)):
    y=a.faces[i].getCentroid()
    centroidlist2.append(y)

for k in range(len(centroidlist2)):
    if centroidlist2[k][0][1]==-100.0: # [k]=Eintrags-Nr.; [0]=x-Koordinate; [1]=y-Koordinate
        face_y = a.faces.findAt(centroidlist2[k])
        s1 = mdb.models['Model-1'].rootAssembly
        setname = 'Set_Surf-'+str(k)
        surfacename = 'Surface_Surf-'+str(k)
        s1.Set(faces=face_y, name=setname)
        s1.Surface(side1Faces=face_y, name=surfacename)
        set_y = s1.sets[setname]
        surface_y = s1.surfaces[surfacename]
        listfaceset2.append(set_y)
        listsurfaceset2.append(surface_y)
        listsetnames2.append(setname)
        listsurfacenames2.append(surfacename)

if len(listsetnames2) > 0:
    s1.SetByMerge(name='Traeger_seitlich', sets=(listfaceset2))
   
if len(listsurfacenames2) > 0:
    s1.SurfaceByMerge(name='blah', surfaces=(listsurfaceset2))
   
 

# Loeschen der einzelnen Sets
if len(listsetnames2) > 0:
    s1.deleteSets(setNames=(listsetnames2))
   
if len(listsurfacenames2) > 0:
    s1.deleteSurfaces(surfaceNames=(listsurfacenames2))
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


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

Sigbert98
Mitglied



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

Beiträge: 48
Registriert: 26.02.2009

erstellt am: 06. Mrz. 2009 19:19    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 Mustaine,

das klappt prima.

Ganz herzlichen Dank und ein schönes Wochenende!
Sigbert

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