Abauqs Python String Zusammensetzung zu Sequence / SIMULIA/ABAQUS
dabauer82 22. Jun. 2011, 08:36

Hi,

ich habe mittels Python die Punkte einer Punktewolke in Abaqus geladen und dort in einer Richtung ge-spline-t. Nun möchte ich diese Splines loften und habe ein Problem bei der Generierung meiner Sequence 'loftsection' wie sie für den shellLoft-Befehl benötigt wird.

Die Anzahl an Splines ist variabel - hängt also von der Text-Datei ab die ich einlese.

Angenommen meine Textdatei hat 15 Splines, dann müsste der ShellLoft-Befehl so aussehen:

Code:
myLoftPart.ShellLoft(loftsections=((mySurfaceEdges[7], ), (mySurfaceEdges[6], ), (mySurfaceEdges[8], ), (mySurfaceEdges[5], ), (mySurfaceEdges[9], ), (mySurfaceEdges[4], ), (mySurfaceEdges[10], ), (mySurfaceEdges[3], ), (mySurfaceEdges[11], ), (mySurfaceEdges[2], ), (mySurfaceEdges[12], ), (mySurfaceEdges[1], ), (mySurfaceEdges[13], ), (mySurfaceEdges[0], ), (mySurfaceEdges[14], )), startCondition=NONE,endCondition=NONE)

Allerdings ist das nun hardgecodet, ich hätte aber gerne eine Variante, bei der die loftsections durch den Quellcode generiert werden. Dafür habe ich folgenden Ansatz versucht. Angenommen meine 15 Spplines stecken in der Variable mySplineQuantity, dann habe ich mit myLoftCrossSection1 und mit myLoftCrossSection2 die Splinereihenfolge erzeugt die ich mit zip() dann auch erhalte. Wer genau hinsieht wird oben erkennen, dass die Reihenfolge der LoftSections beginnend bei der Splinehälfte eine steigende und eine fallende Zahlenreihe enthält. Diese habe ich dann im Endeffekt mit der Variable loftsections zur Verfügung. Zumindest erhoffe ich mir das. Aber ich bekomme die Fehlermeldung, invalid Sequence...

Kann mir jemand helfen wie ich die Variable Loftsections erzeugen kann oder wie ich den Loft-Befehl ausführen kann?

Code:
print '>>> Erzeuge Loft'
)
myLoftCrossSection1 = range((mySplineQuantity/2-1),-1,-1)
myLoftCrossSection2 = range((mySplineQuantity/2),mySplineQuantity,1)
myLoftSection = zip(myLoftCrossSection2,myLoftCrossSection1)
loftsections = []

mySurfaceEdges = myLoftPart.edges

for i in myLoftSection:
    loftsections.append('(mySurfaceEdges['+str(i[0])+'], ), ')
    loftsections.append('(mySurfaceEdges['+str(i[1])+'], ), ')

#myLoftPart.ShellLoft(loftsections, startCondition=NONE,endCondition=NONE)


dabauer82 24. Jun. 2011, 20:16

keiner?