我有一个 python 脚本,它可以将三角形的坐标调整到三角形的重心。这工作得很好,但是要生成一个可行的输出(我需要编写一个可以由其他软件 Abaqus 导入的文本文件)我想在文本文件中编写一个坐标列表。
但我不能让它正常工作。我想我首先需要从 numpy 数组创建一个列表或元组。但是,这不能正常工作。此列表中的每个坐标仍有一个数组。
我怎样才能解决这个问题?我目前拥有的脚本如下所示。
newcoords = [[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [0.0, 0.0], [1.0, 1.0], [0.0, 1.0]]
newelems = [[0, 1, 2], [3, 4, 5]]
import numpy as np
#define triangles
triangles = np.array([[newcoords[e] for e in newelem] for newelem in newelems])
#find centroid of each triangle
CM = np.mean(triangles,axis=1)
#find vector from each point in triangle pointing towards centroid
point_to_CM_vectors = CM[:,np.newaxis] - triangles
#calculate similar triangles 1% smaller
new_triangle = triangles + 0.01*point_to_CM_vectors
newcoord = []
newcoord.append(list(zip(*new_triangle)))
print 'newcoord =', newcoord
#generate output
fout = open('_PartInput3.inp','w')
print >> fout, '*Node-new_triangle'
for i,x in enumerate(newcoord):
print >> fout, i+1, ',', x[0], ',', x[1]
fout.close()
输出文件“_PartInput3.inp”中的坐标列表应如下所示:
*Node-new_triangle
1, 0.00333333, 0.00333333
2, 0.99333333, 0.00333333
3, 0.00333333, 0.99333333
4, 0.00333333, 0.00666667
5, 0.99333333, 0.99666667
6, 0.00333333, 0.99666667
提前感谢您的帮助!