Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Partitionen Zerschossen (Python) Modell NEU??

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:   Partitionen Zerschossen (Python) Modell NEU?? (1435 mal gelesen)
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
KuaiLe
Mitglied
Bauing.

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

Beiträge: 2
Registriert: 30.07.2013

erstellt am: 30. Jul. 2013 23: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


download.jpg

 
Hallo, Ich habe in einem 3000 Zeilen langen Python script ein Modell für ABAQUS hinterlegt.Dort Wird eine Stahl-Rahmenecke einer Hallenkonstruktion modelliert. Der Anschluss Erfolgt über Schrauben. Alle Maße habe ich parametrisiert, sodass ich z.B. die vertikale Lage der Schrauben verändern kann.
Da die unterste Schraube nun weiter runter muss (siehe Bild: rote Schraube = neue Lage) habe ich den Parameter dementsprechend geändert.
Problem: Sobald die Schraube sich unterhalb des Riegels befinden (vgl Bild) gehen Partitionen Kaputt die in der Python hinterlegt sind und Abaqus bekommt eine Fehlermeldung mit "Creation Failed". Da mein skript noch gute 1500 Zeilen weitergeht kann ich mir nicht leisten alles ab da neu zu machen.(Nur die partition neu machen verändert auch alles andere am Modell)

Ich denke Abaqus verändert die interne Nummerierung der Knoten & Edges??
Wie kann ich das Problem beheben ohne dass ich 3 Wochen Arbeit neu machen muss?

Freue mich über jede schnelle Hilfe

   

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

Bobbycartuner
Mitglied
Student


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

Beiträge: 43
Registriert: 04.11.2009

Win7 64bit
i7-3770 @3,4GHz
32GB ram
Abaqus 6.11

erstellt am: 31. Jul. 2013 12:07    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 KuaiLe 10 Unities + Antwort hilfreich

Hallo,
In Ansys APDL gibt es die Möglichkeit die Knotennummern zu komprimieren. Ich kenne mich mit Abaqus zwar nicht so gut aus, aber vlt gibt es dort auch so eine Möglichkeit, die evtl helfen könnte.

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

KuaiLe
Mitglied
Bauing.

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

Beiträge: 2
Registriert: 30.07.2013

erstellt am: 31. Jul. 2013 13: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

Hi, schonmal danke für die Info. Ich habe nun festgestellt dass die nummern der "Edges" sich dann ändern:In den eckigen Klammern müsste ich z.B. die 99 durch 1 und die 192 durch 55 ersetzen..

a = mdb.models['Model-1'].rootAssembly
c1 = a.instances['C End Plate (Perforated)-1'].cells
pickedCells = c1.getSequenceFromMask(mask=('[#81020420 ]', ), )
e1 = a.instances['C End Plate (Perforated)-1'].edges
a.PartitionCellByPlanePointNormal(normal=e1[99], cells=pickedCells,
point=a.instances['C End Plate (Perforated)-1'].InterestingPoint( edge=e1[192], rule=CENTER))

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

emuuu
Mitglied
Ingenieur


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

Beiträge: 13
Registriert: 21.08.2012

erstellt am: 09. Aug. 2013 13:17    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 KuaiLe 10 Unities + Antwort hilfreich

Also meiner Erfahrung nach besteht die einzige Lösung ohne das Script groß überarbeiten zu müssen darin, dass du das Script bis zu diesem Punkt laufen lässt. Dann veränderst du du Partition in Abaqus manuell und schaust danach in die abaqus.py im temp-Ordner welche Nummern die edges, etc. nun haben. Dann baust du in dein Script eine while- oder if-Bedigung ein mit der du festlegst, dass so lange der Riegel drüber liegt die Code-Zeilen mit den bisherigen Nummern benutzen soll und ansonsten die neuen.
Ist zwar ne umständliche und wenig elegante Lösung sollte aber klappen.

Zudem zwei Tipps:
1. Entschlacke dein Script mal. Abaqus geht in der abaqus.py (ich denke da hast du die Befehle her) unter programmiertechnischen Gesichtspunkten nicht sehr schön vor. Z.b. Dieses e = a.edges, c=a.cells, etc. Wenn du diese Stellen auflöst wird dein Script deutlich kürzer (3000 Zeilen erscheint mir anhand der Skizze SEHR viel).
2. Versuch bei zukünftigen Script die Funktion "FindAt" zu verwenden. Damit kann man alles (zellen, flächen, kanten, etc.) an bestimmten geometrischen Punkten finden. Das ist zwar in der Programmierung etwas umständlicher als einfach die Befehle aus abaqus.py zu kopieren hat aber den Vorteil, dass du Sachen wir Partitionen nach Lust und Laune ändern kannst, ohne dass du Probleme mit den z.b. Kanten-Nummern kriegst.
Beispiel:
Instance.faces.findAt(((150.0, 150.0, 0.0),), ((62.5, 150.0, 0.0),))
Damit würdest du alle Flächen nehmen die an den definierten Koordinaten liegen.
Das abaqus.py-Äquivalent dafür wäre:
a = mdb.models['Model-1'].rootAssembly
f1 = a.instances['Halbschale'].faces
faces1 = f1.getSequenceFromMask(mask=('[#0 #100 ]', ), )


Mfg
Timm

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)2020 CAD.de | Impressum | Datenschutz