Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Abaqus Scripting Edges auswählen

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:  Abaqus Scripting Edges auswählen (1102 mal gelesen)
stonehentsch
Mitglied



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

Beiträge: 16
Registriert: 29.01.2020

erstellt am: 05. Dez. 2020 18: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

Hallo Zusammen,

Ich habe folgendes Problem:
Ich möchte das Erstellen eines Modells durch ein Python Script automatisieren. Dabei werden 2 Connector Elemente erstellt. Connector 1 beginnt auf Körper a und endet auf Körper b. Connector 2 verhält sich genau umgekehrt. Sie liegen quasi übereinander. Genau das ist das Problem. Wie im Code unten ersichtlich, erstellt Abaqus erst das Wire-Set und dann das Section Assignment. Für  Letzteres benutzt Abaqus die Funktion findAt() um die Edges des Wire-Sets zu finden. Ohne Script ist es kein Problem die richtigen Edges auszuwählen, da man zwischen den übereinander liegenden Edges wählen kann. Ich weiß aber nicht, wie ich das in ein Skript packen kann, weil die findAt() Funktion immer nur die obersten Edges aufgreift und dann abbricht, weil dieses Wire-Set ja schon ein SectionAssignment bekommen hat. Geht es evtl. mit getSequencefromMask() indem man die Edges vorher in ein Set gibt und wenn ja, wie mache ich das genau?

mdb.models['Model-1'].rootAssembly.WirePolyLine(mergeType=IMPRINT, meshable=
    False, points=((
    mdb.models['Model-1'].rootAssembly.instances[ListeGConZug[0]].vertices.findAt((
    dctX2['XKoordLLZ_%s' % ladida[i]][y], dctY2['YKoordLLZ_%s' % ladida[i]][y], dctZ2['ZKoordLLZ_%s' % ladida[i]][y]), ),
    mdb.models['Model-1'].rootAssembly.instances[ladida[i]].vertices.findAt((
    dctX3['XKoordLLE_%s' % ladida[i]][y], dctY3['YKoordLLE_%s' % ladida[i]][y], dctZ3['ZKoordLLE_%s' % ladida[i]][y]), )), ))
mdb.models['Model-1'].rootAssembly.features.changeKey(NameWire[-1],
    toName=NameWire[-1])
mdb.models['Model-1'].rootAssembly.Set(edges=
    mdb.models['Model-1'].rootAssembly.edges.findAt(((dctX3['XKoordLLE_%s' % ladida[i]][y], dctY3['YKoordLLE_%s' % ladida[i]][y], dctZ3['ZKoordLLE_%s' % ladida[i]][y]), )), name=NameWireSetConGZug[-1])
    mdb.models['Model-1'].rootAssembly.SectionAssignment(region=
mdb.models['Model-1'].rootAssembly.sets[NameWireSetConGZug[-1]], sectionName=
    NameWireSetConGZug[-1])


Vielen Dank für Anregungen

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: 07. Dez. 2020 15: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 Nur für stonehentsch 10 Unities + Antwort hilfreich

Warum machst du es nicht wie A/CAE und legst für jedes neue Wire gleich ein Set an? Später kannst du dann die Connector Section auf das gewünschte Set zuweisen.

[Diese Nachricht wurde von Mustaine am 07. Dez. 2020 editiert.]

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

stonehentsch
Mitglied



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

Beiträge: 16
Registriert: 29.01.2020

erstellt am: 07. Dez. 2020 22: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

Danke fuer die Antwort, aber dann steht man wieder vor dem selben Problem, dass man dafuer die Edges anwaehlen muss. waehrend des Erstellens eines Wire-Sets gibt es meines Wissens nach keine Moeglichkeit das Wire direkt in ein Set zu packen ohne die Edges dafuer auswaehlen zu muessen.

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: 08. Dez. 2020 09: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 stonehentsch 10 Unities + Antwort hilfreich

Erstelle mal zwei Wires in der GUI und schau dann in die .rpy. Dort kannst du sehen, dass die neuen edges sich immer am Anfang in die edge-Liste eintragen und somit kann man nach jeder Wire sofort mit der edge am Anfang ein Set erstellen. Man benötigt also kein findAt().

Hast du in A/CAE eingestellt, dass das Reporting in die .rpy mit der index-Variante gemacht wird oder siehst du immer nur die hash-Variante mit SequenceOfMask?

Es gibt übrigens auch noch eine andere Möglichkeit das findAt() zu umgehen, aber die etwas aufwändiger als die Variante mit den Sets und somit erkläre ich sie erstmal nicht.

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

stonehentsch
Mitglied



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

Beiträge: 16
Registriert: 29.01.2020

erstellt am: 08. Dez. 2020 17:06    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, wahrscheinlich verstehe ich etwas falsch, deswegen nochmal hier mein Code in vereinfachter Form:
ich habe die default Einstellung umgestellt und arbeite mit Koordinaten und nicht mit getSequencefromMask.
# Erstellen des Wires, aber noch nicht des Sets
a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['G1'].vertices
a.WirePolyLine(points=((v1.findAt(coordinates=(2519.784048, 202.399664, 10.0)),
    v1.findAt(coordinates=(2695.487116, 225.958571, 10.0))), ),
    mergeType=IMPRINT, meshable=OFF)
# -------------------------------------------------------------------------------
# Erstellen des Sets fuer das Wire
a = mdb.models['Model-1'].rootAssembly
e1 = a.edges
# hier wird die Kante (edge) ausgewaehlt und ich weiss nicht, wie ich diese edges mithilfe eines python scripts ansteuern kann. Die Koordinaten hier greift findAt() glaub ich folgendermassen auf:
#findAT(X1+1/4*(X1-X2),Y1+1/4*(Y1-Y2),Z1+1/4*(Z1-Z2))
edges1 = e1.findAt(((2563.709815, 208.289391, 10.0), ))
a.Set(edges=edges1, name='Wire-47-Set-1')
a = mdb.models['Model-1'].rootAssembly
e1 = a.edges
edges1 = e1.findAt(((2563.709815, 208.289391, 10.0), ))
region=a.Set(edges=edges1, name='Set-hallo')
csa = a.SectionAssignment(sectionName='ConnWire2G1G1-Zug-2', region=region)

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: 08. Dez. 2020 17:41    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 stonehentsch 10 Unities + Antwort hilfreich

Unten ist quasi der Code den A/CAE erzeugt. Ich habe Zeilennummern davor gesetzt, um es leichter erklären zu können.

In Zeile 04 wird die erste Wire ezeugt. Danach wird das Set erzeugt und in Zeile 07 sieht man, dass dabei der erste Eintrag aus der Liste aller edges genommen wird.

Danach wiederholt sich das. Die neue Wire (Zeile 12) trägt sich dabei wieder vorne in die edge-Liste ein, so dass das neue Set wieder mit dem ersten Eintrag erzeugt wird (Zeile 15 & 16).


Code:

01 a = mdb.models['Model-1'].rootAssembly
02 r1 = a.instances['Part-1-2'].referencePoints
03 r2 = a.instances['Part-1-1'].referencePoints
04 a.WirePolyLine(points=((r1[1], r2[1]), ), mergeType=IMPRINT, meshable=OFF)
05
06 e1 = a.edges
07 edges1 = e1[0:1]
08 a.Set(edges=edges1, name='Wire-1-Set-1')
09
10 r11 = a.instances['Part-1-1'].referencePoints
11 r12 = a.instances['Part-1-2'].referencePoints
12 a.WirePolyLine(points=((r11[1], r12[1]), ), mergeType=IMPRINT, meshable=OFF)
13
14 e1 = a.edges
15 edges1 = e1[0:1]
16 a.Set(edges=edges1, name='Wire-2-Set-1')

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