| |  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | | |  | KISTERS 3DViewStation: Geniale 3D-Visualisierung für intuitiven HMI Einsatz, eine Pressemitteilung
|
Autor
|
Thema: Kontur mittels Funktion f(x,y,z) erstellen (1435 mal gelesen)
|
oli89 Mitglied
 Beiträge: 1 Registriert: 22.01.2015
|
erstellt am: 22. Jan. 2015 15:01 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich bin neu im Bereich ABAQUS und Python-Scripting und soll den Kühlturm aus der beigefügten Abbildung mittels Python-Script erstellen. Dabei soll ich aber keine Spline-Funktion zur Annäherung der Kontur verwenden sondern die Shell curve (siehe beigefügtes Bild). Ich denke, dass die Erzeugung der Kontur mittels 3D Deformable Shell -> Sweep am einfachsten geht. Dafür brauche ich ja nur eine Gerade in der "Path Sketch" und eben die "Shell curve"-Funktion aus dem angehängten Bild. Schaffe ich es überhaupt nicht da in irgend einer Weise die Funktion von x,y,z abhängig zu machen Zur Geometrie: Der Ursprung befindet sich recht nach am Oberen Ende des Kühlturms. Das obere Ende befindet sich auf z_oben=60ft und das untere Ende auf z_unten=-270ft Kann mir bitte jemand helfen und erklären, wie ich die Funktion vom Bild als Flächen Mein bisheriger Code sieht folgendermaßen aus
Code:
from abaqus import * import testUtils testUtils.setBackwardCompatibility( ) from abaqusConstants import * from numpy import array # (Achtung vor Abaqus Version 6.11 muss numpy durch Numeric ersetzt werden) import part import random import material import regionToolset import section import assembly import mesh import interaction # ## Geometrie Definitions r_o = 53.262/2 # [r_o] = m; Radius Kuehlturm oben r_u = 72.5174/2 # [r_u] = m; Radius Kuehlturm unten h = 100.584 # [h] = m; Hoehe Kuehlturm gesamt h_o = 18.288 # [h_o] = m; Hoehe der Kuehlturmoberkante h_u =-82.296 # [h_u] = m; Hoehe der Kuehlturmunterkante t1 = 0.17 # [t1] = m; Dicke der Kuehlturmwand t2 = 0.50 # [t2] = m; Dicke der Kuehlturmwand t3 = 1.00 # [t3] = m; Dicke der Kuehlturmwand t4 = 3.00 # [t4] = m; Dicke der Kuehlturmwand # ## Material Definitions E = 20684.272e6 # [E] = Pa; E-Modul v = 0.15 # [v] = --; Querkontraktionszahl Nue # ## Loescht altes 'Name'-Model (Falls der Default job noch existiert!) del mdb.models['Kuehlturm'] ## Modul Definitions myModel = mdb.Model(name='Kuehlturm') # ## Deleting the Default Model #del mdb.models['Model-1'] # #### Part Definitions myWire = myModel.Part(name='Part_Kuehlturm',dimensionality=THREE_D, type=DEFORMABLE_BODY) # #### Path erstellen myPath = myModel.ConstrainedSketch(name='Path_Kuehlturm', sheetSize=200.0) # Zuerst wird der Path, dann die zugehörige Skizze erstellt ############ Gitterknoten Definitions X_p = [0.0,r_u,r_u] Y_p = [0.0,0.0,h] ############ Erstellt den Path #mySketch.CircleByCenterPerimeter(center=(Xcoord[0], Ycoord[0]), point1=(Xcoord[1], Ycoord[1])) #mySketch.Line(point1=(X_p[0],Y_p[0]),point2=(X_p[1],Y_p[1])) # 1-2 myPath.setPrimaryObject(option=STANDALONE) myPath.Line(point1=(0.0, h_u), point2=(0.0, h_o)) myPath.unsetPrimaryObject() #### Sketch zum Path erstellen mySketch = mdb.models['Kuehlturm'].ConstrainedSketch(name='Sketch_Kuehlturm', sheetSize=200.0, transform=(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, -0.0, -1.0, -0.0, 0.0, -25.0, 0.0)) mySketch.setPrimaryObject(option=SUPERIMPOSE) mySketch.CircleByCenterPerimeter(center=(X_p[0], Y_p[0]), point1=(X_p[1], Y_p[1])) # myWire.BaseShellSweep(sketch=mySketch, path=myPath) mySketch.unsetPrimaryObject() # session.viewports['Viewport: 1'].setValues(displayedObject=myWire) # # # # ############# Ordnet die Drahtskizze dem Part-Objekt zu mySketch.setPrimaryObject(option=STANDALONE) myWire = mdb.models['Kuehlturm'].parts['Part_Kuehlturm']
Viele Grüße Oli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 23. Jan. 2015 09:37 <-- editieren / zitieren --> Unities abgeben:          Nur für oli89
|
slein89 Mitglied
 
 Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 23. Jan. 2015 09:39 <-- editieren / zitieren --> Unities abgeben:          Nur für oli89
Probier mal das angefügte Skript aus. Bei mir funktioniert es. Edit: Auf Grund der Rotationssymmetrie habe ich Revolute statt Sweep verwendet. Das Vorgehen ist das gleiche wie von Mustaine beschrieben. [Diese Nachricht wurde von slein89 am 23. Jan. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |