Hallo.
Folgendes Problem:
Ich habe eine ODB mit einem verformten Netz. Aus diesem Netz hole ich mir über ein Python Skript die Koordinaten der Knoten (fieldoutputs['COORD'].values). Zusätzlich will ich gerne nur den Rand dieses Netzes haben. Und zwar will ich immer nur die Punkte, die am Ende eines Linienzuges liegen. Wenn also auf einer geraden Kante mehrere Knoten liegen, will ich nur die äußeren beiden Knoten. Dafür verwende ich den Python Befehl Part2DGeomFrom2DMesh, der mir aus einem OrphanMesh eine Geometrie extrahiert. Die Koordinaten der besagten Punkte greife ich dann über part.vertices ab.
Wenn ich jetzt die Koordinaten für einen Knoten, der gleichzeitig auch ein Vertex ist vergleiche, sehe ich Unterschiede:
COORD --> (15.2110586166 ; -13,4974727631)
Vertex--> (15,21106 ; -13,497474)
Die Vertex Koordinaten haben maximal 6 Nachkommastellen und sind anscheinend gerundet. Dadurch habe ich das Problem, dass in anschließenden Prozeduren der Vertex in dem Netz nicht mehr gefunden werden kann, weil er außerhalb liegt.
Hier noch mal kurz der Code mit dem ich die Koordinaten auslese und in eine Datei schreibe. Vielleicht mache ich ja da einen Fehler. Das sind nur Codeschnipsel die alleine nicht funktionieren:
##############
OUTK=open('knoten.txt','w')
werte = frame.fieldOutputs['COORD'].values
for k in werte:
s=str(k.nodeLabel) + '\t' + str(k.data[0]) + '\t' + str(k.data[1]) + '\n'
OUTK.write(s)
##############
##############
RAND=open('rand.geo','w')
mdb.Model(name='DUMMY')
MESH = mdb.models['DUMMY'].PartFromOdb(name='NETZ', fileName=odbPath, instance='PART-1-1', \
shape=DEFORMED, step=-1)
GEO = mdb.models['DUMMY'].Part2DGeomFrom2DMesh(name='Geometrie', part=MESH, featureAngle=0.2)
for n in GEO.vertices:
s='Point(' + str(n.index) + ')={' + str(n.pointOn[0][0]) + ',' + str(n.pointOn[0][1]) + ',0};\n'
RAND.write(s)
##############
Hat jemand Erfahrung mit der Routine Part2DGeomFrom2DMesh? Ich dachte die Geometrie, die diese Routine ausspuckt entspricht exakt der des Netzes, weil sonst zum Beispiel Mesh-to-Mesh-Solution nicht funktioniert. Oder bringe ich vielleicht Python Rundungsfehler beim Abspeichern der Koordinaten rein?
Grüße
Slein
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP