【发布时间】:2021-11-03 14:04:55
【问题描述】:
我编写了一个脚本,它将根据本地系统提取节点坐标。因为坐标是根据全局系统默认生成的。
odb = openOdb(path='.....................Job-1.odb')
Setnodes = 'LocalnodesCoord.txt'
NodesFile = open(Setnodes,'w')
nodeset='NODESET-3'
mySet = odb.rootAssembly.instances['PART-1-1'].nodeSets[nodeset]
csys1=odb.rootAssembly.datumCsyses['CSYS-1']
lastFrame = odb.steps['Step-1'].frames[-1]
coords=lastFrame.fieldOutputs['COORD']
mySetCoord = coords.getSubset(region=mySet)
mySetCoord_local=mySetCoord.getTransformedField(datumCsys=csys1)
mySetCoordLocalValues=mySetCoord_local.values
for var in mySetCoordLocalValues :
NodesFile.write(str(var.nodeLabel) + ',' + str(var.data[0]) + ',' + str(var.data[1]) + ',' + str(var.data[2])+ '\n')
NodesFile.close()
odb.close()
我使用了 getTransformedField() 函数。但问题是我得到了错误的坐标
你能帮我解决这个问题吗? 你知道如何确定变换矩阵吗?
【问题讨论】:
-
您可以只获取相对于全局坐标系的坐标,然后从中减去局部坐标系的中心坐标。例如。如果 (x,y,z) 是 A 点在全局坐标系中的坐标, (x0,y0,z0) 是局部坐标系的中心。则 A 点在局部坐标系中的坐标为 (x1,y1,z1) = ( x-x0, y-y0, z-z0)。
-
Satish Thorat,谢谢您的回复。但是我认为当局部坐标系和全局坐标系之间存在旋转和平移时,我们不能使用这种方法。