我编写了一个脚本,它将根据本地系统提取节点坐标。因为默认情况下,坐标是根据全局系统生成的
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()函数。但问题是我得到了错误的坐标
你能帮我解决这个问题吗。 你知道如何确定变换矩阵吗
@Roman Zhuravlev,非常感谢你的回答
仅供参考,我使用了许多分区面,每个分区面都关联了一个固定的局部坐标系(而不是移动的Csys)
我使用三个点定义了本地CSY:原点和根据全局CSY定义的其他两个点。 所以,我认为这些参数足以计算转换
从documentation:
可能,由于本地Csys随几何体移动,Abaqus需要额外的信息来计算变换。 因此,尝试使用
deformationField
和rotationField
来支持getTransformedField
方法,如here所述编辑
或者,正如@SatishThorat在其评论中提出的那样。不要忘了使用
numpy
模块进行向量运算相关问题 更多 >
编程相关推荐