Autor
|
Thema: Funktion einer Kurve mittels Python (3845 mal gelesen)
|
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 19. Apr. 2010 14:16 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich arbeite gerade an meiner Diplomarbeit und komme nicht wirklich weiter: Eine Profilwelle (z.B. ein Viertelkreisauschschnitt) soll dargestellt werden und mit Hilfe des Python Skripts geometrisch optimiert werden. Die Kontur der Welle könnte z.B. mit einem, aus einer Punktwolke definierten, Spline erstellt werden. Allerdings wäre es auch möglich, den Spline mit Hilfe einer Sinusfunktion zu definieren. D.h. die Punkte würden auf einer Sinuskurve liegen, die dann mit einem Spline nachgebildet werden kann. Somit wäre es möglich, ganz simple die Geometrie der Profilwelle zu ändern... Wie kann man das in einem *.rpy file realisieren. Vielen Dank für eure Hilfe, Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 19. Apr. 2010 20:21 <-- editieren / zitieren --> Unities abgeben: Nur für Herr Nielsson
|
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 21. Apr. 2010 11:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Mustaine, danke für deine schnelle Antwort. Ich habe eine Skizze von dem Wellenausschnitt einmal in den Anhang gestellt. Der Spline lässt sich -meines Wissens - nur mittels Punkten (z.B. die eingezeichnten 5 Punkte) definieren. Das lässt sich gut mit einer Wertetabelle umsetzten. Ich möchte allerdings eine Art "Parameterstudie" durchführen und die Anstiege, die Höhe, die Breite,...etc des Splines ändern. Sollte das nur mit einer Wertetabelle z.B. im Excel funktionieren, müssten mit jedem Durchgang die Koordinaten der Punkte neu eingegeben werden. Oder besteht die Möglichkeit diese Wertetabelle im *.rpy file zu integrieren? In der Dokumentation werde ähnliche Problemstellungen behandelt (Abqus Scripting Users Manual 8.3.xx). Dort wird mit einem *.psf file gearbeitet, wobei am Ende alle Varianten automatisch berechnt werden. Die Punkte können im CAE nur über x, y Koordinaten eingegeben werden. Besteht auch zufällig die Möglichkeit, auf Polarkoordinaten umzustellen? Wie wäre Ihrer Meinung der günstigste Weg einer Parameterstudie? Vielen Dank im Voraus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 21. Apr. 2010 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für Herr Nielsson
Du kannst doch die Tabelle/Liste direkt im Python-Skript generieren. Anbei ein Beispiel mit einer Cosinus-Funktion. Polarkoordinateneingabe ist nicht möglich. Aber du kannst ja im Skript damit arbeiten, rechnest sie am Ende um und erzeugst damit die Spline. Code:
from abaqus import * from abaqusConstants import * from math import *liste = [] x = -1. max = 5. schrittweite = 0.5 while x <= max: liste.append((x, cos(x))) x = x+schrittweite #print liste
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0) g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints s.setPrimaryObject(option=STANDALONE) s.Line(point1=(-25.0, 0.0), point2=(-10.0, 5.0)) s.delete(objectList=(g[2], )) s.Spline(points=(liste))
p = mdb.models['Model-1'].Part(name='Part-3', dimensionality=TWO_D_PLANAR, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Part-3'] p.BaseWire(sketch=s) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Part-3'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__']
[Diese Nachricht wurde von Mustaine am 21. Apr. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 21. Apr. 2010 13:14 <-- editieren / zitieren --> Unities abgeben:
|
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 21. Apr. 2010 15:07 <-- editieren / zitieren --> Unities abgeben:
Erstmal vielen Dank für den Spline. Ich habe die Befehle nachvollzogen und kann alle Parameter variieren! Super. Ich sehe allerdings Probleme was die Umwandlung angeht. Die Sinuskurve im Kartesischen KOS besitzt nicht die Krümmung, wie für die Profilwelle benötigt (siehe Anhang). Koordinaten kann ich prima umrechnen (von Polar zu Kart,)... Aber Formeln? Danke im Voraus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 21. Apr. 2010 15:22 <-- editieren / zitieren --> Unities abgeben:
Desweiteren soll ja der Profilwellenausschnitt mit je einem Zahn frei wählbar sein (360°/n), sodass jeweils immer eine Periode (2pi) abgebildet und von den Rändern begrentzt wird. Kann man dies ebenso in kartesischen Koordinaten darstellen? Merci Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 23. Apr. 2010 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für Herr Nielsson
Zitat: Original erstellt von Herr Nielsson: Erstmal vielen Dank für den Spline. Ich habe die Befehle nachvollzogen und kann alle Parameter variieren! Super. Ich sehe allerdings Probleme was die Umwandlung angeht. Die Sinuskurve im Kartesischen KOS besitzt nicht die Krümmung, wie für die Profilwelle benötigt (siehe Anhang). Koordinaten kann ich prima umrechnen (von Polar zu Kart,)... Aber Formeln?Danke im Voraus
Kannst du nicht über die Formel die Koordinaten (polar) berechnen und diese dann umrechnen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 23. Apr. 2010 16:23 <-- editieren / zitieren --> Unities abgeben: Nur für Herr Nielsson
|
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 28. Apr. 2010 09:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Mustaine, sorry, für die lange Pause. Ich möchte eigentlich nur einen Zahn darstellen, der dann belastet werden soll. Ich habe mit einer Laufvariablen und kartesischen Koordinaten alles prima hinbekommen. Danke für deinen ersten Tipp. Mit dem derzeitigen Model kann ich im rpy file Anstieg und Breite des Wellenzahns variieren. Ich hoffe, das Vernetzten und die Kontaktbedingungen lassen ein Variieren weiter zu. Ich halte dich auf dem Laufenden. Bis bald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 06. Mai. 2010 10:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Mustaine, ich tappe wieder einmal im Dunkeln. Es geht um die Sectionzuweisung. Ich konnte bislang den Zahn alles sehr schön paramterisch aufbauen. Verändere ich einen Wert in der *.rpy Datei verändert sich die Geometrie wie gewünscht. Nur macht mir nun die Sectionzuweisung Probleme. Übernehme ich den automatisch generierten Inhalt der abaqus.rpy p = mdb.models['Model-1'].parts['Metallzahn'] f = p.faces faces = f.getSequenceFromMask(mask=('[#1 ]', ), ) region = regionToolset.Region(faces=faces) p = mdb.models['Model-1'].parts['Metallzahn'] p.SectionAssignment(region=region, sectionName='Stahl', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='') und für ihn in meine *.rpy Datei ein, kann er diese Section später nicht mehr zuweisen. NameError: name 'RegionToolset' is not defined Ich nehme an, es liegt an dem Befehl findAt()... Er kann quasi die Section keiner Fläche mehr zuweisen, weil das Programm die Zuordnung verhaut. Richtig? Über findat() beschreibe z.B. eine Ecke der auszuwählenden Fläche mit Koordinaten, oder? Ich habe einen älteren Eintrag von dir gefunden: http://ww3.cad.de/foren/ubb/Forum254/HTML/001257.shtml Verwende ich den Inhalt, kommt ebenfalls eine Fehlermeldung. Wie lautet demnach der Befehl, wenn sich die Koordinaten ständig verändern?
Vielen Dank im Voraus!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jeremy Mitglied
Beiträge: 129 Registriert: 04.02.2009
|
erstellt am: 06. Mai. 2010 11:32 <-- editieren / zitieren --> Unities abgeben: Nur für Herr Nielsson
|
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 06. Mai. 2010 14:33 <-- editieren / zitieren --> Unities abgeben:
Hi Jeremy! Vielen Dank für deine schnelle Antwort! Das war die Ursache. import regionToolset war noch nicht im Script vermerkt. Danke, ich finde das Forum eine ganz große Sache... Einen schönen Tag dir noch Nielsson Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jeremy Mitglied
Beiträge: 129 Registriert: 04.02.2009
|
erstellt am: 06. Mai. 2010 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für Herr Nielsson
|
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 07. Mai. 2010 11:33 <-- editieren / zitieren --> Unities abgeben:
|
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 07. Mai. 2010 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für Herr Nielsson
|
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 07. Mai. 2010 14:17 <-- editieren / zitieren --> Unities abgeben:
|
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 07. Mai. 2010 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für Herr Nielsson
|
Herr Nielsson Mitglied
Beiträge: 11 Registriert: 19.04.2010
|
erstellt am: 11. Mai. 2010 13:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, besten Dank für deinen Tipp! Ich habe die Materialorientierung schließlich hinbekommen. Nun stehe ich nur noch vor 2 Problemen, die ich kurz erklären möchte. 1. Problem: MPC's Ich habe einen Ausschnitt einer Profilwelle und eine dazugehörige Profilbuchse als Continuum Shell konstruiert und Material und Interaction zugewiesen (siehe http://www.abload.de/image.php?img=3kopiee03q.jpg ). Die Profilwelle übt ein Moment auf die Buchse aus. Die Lagerung der Profilwelle ist soweit klar. Für die Lagerung der Profilbuchse wollte ich MPC's einführen, da eine andere Lagerung nicht realitätsgetreu erscheint?! Oder? Muss ich dafür den MPC type CYCLSYM verwenden (siehe http://www.abload.de/image.php?img=1u155.jpg )? Diesen kann ich doch nur über input file generieren, oder? Da ich mit dem rpy file aufgrund einer Parameterstudie arbeite, muss ich eine andere Lagerung finden. Hat jemand eine Idee? 2. Problem: Materialkennwerte Da ich meine Materialkennwerte (aufgrund der Continuum Shell) nur als verschmiert annehmen kann, habe ich mir diese transformiert und mit Hilfe der Nachgiebigkeitsmatrix für 3D Fall auf globale Koordinaten berechnet. Alle Werte für 3D stimmen ganz gut, nur kommt eine Fehlermeldung von Abaqus nach dem Job-starten. http://www.abload.de/img/final_0143dw.jpg Habt ihr eine Ahnung, woran es liegen könnte? Vielen Dank im Voraus für die gute Hilfe hier im Forum! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |