根据本地Csys_Abaqus Python脚本提取节点坐标

2024-10-02 22:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here

我编写了一个脚本,它将根据本地系统提取节点坐标。因为默认情况下,坐标是根据全局系统生成的

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()函数。但问题是我得到了错误的坐标

你能帮我解决这个问题吗。 你知道如何确定变换矩阵吗


Tags: datavarlocalcoordsstrodbmysetrootassembly
2条回答

@Roman Zhuravlev,非常感谢你的回答

仅供参考,我使用了许多分区面,每个分区面都关联了一个固定的局部坐标系(而不是移动的Csys)

我使用三个点定义了本地CSY:原点和根据全局CSY定义的其他两个点。 所以,我认为这些参数足以计算转换

documentation

If the system is model based, you must supply a displacement field that determines the instantaneous location and orientation of the coordinate system

可能,由于本地Csys随几何体移动,Abaqus需要额外的信息来计算变换。 因此,尝试使用deformationFieldrotationField来支持getTransformedField方法,如here所述

编辑

或者,正如@SatishThorat在其评论中提出的那样。不要忘了使用numpy模块进行向量运算

相关问题 更多 >