如何使用python脚本在Abaqus中编辑/导入节点坐标(mesh)?

2024-09-29 19:30:28 发布

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

我想请求帮助修改/编辑零件实例的网格(在“部件”下)。你知道吗

我尝试过(代码如下),但由于元组的原因,这是不可能的:

mdb.models[modelName].rootAssembly.instances[instanceName].nodes[i].coordinates[0] = newCoordXYZ[0] # for x mdb.models[modelName].rootAssembly.instances[instanceName].nodes[i].coordinates[1] = newCoordXYZ[1] # for y mdb.models[modelName].rootAssembly.instances[instanceName].nodes[i].coordinates[2] = newCoordXYZ[2] # for z

TypeError: 'tuple' object does not support item assignment

或者,如果可能,直接将网格(已存储在变量-newCoordXYZ中)添加/指定给装配模块中的几何体!?你知道吗

欢迎提出任何意见/建议!你知道吗

PS:我知道可以在部件模块(依赖于网格)中使用editNode()命令轻松地修改网格。你知道吗

partName = mdb.models[modelName].parts[partName] partName.editNode(nodes=partName.nodes,coordinates=newCoordXYZ)

编辑01:

评论

我不确定,我可能会犯这么小的错误。 我仍然得到以下错误:AttributeError:'PartInstance'对象没有属性'editNode',这与文档一致:

文件上说:

Abaqus > Scripting Reference > Python commands > Assembly commands > Assembly object:

Access
import assembly
mdb.models[name].rootAssembly

Abaqus > Scripting Reference > Python commands > Assembly commands > PartInstance object:

Access
import assembly
mdb.models[name].rootAssembly.allinstances
mdb.models[name].rootAssembly.instances[name]

以及

Abaqus > Scripting Reference > Python commands > Edit mesh commands > Assembly object: editNode(...) This method changes the coordinates of the given nodes on a part instance.

Abaqus > Scripting Reference > Python commands > Edit mesh commands > Part object
has no editNode(...) cmd

所以,使用这个命令:mdb模型[姓名]。rootAssembly.instances实例[名称]我无法使用editNode()。。。你知道吗

py代码

################################## LIBRARY #############################
from datetime import date

from part import *
from material import *
from section import *
from assembly import *
from step import *
from interaction import *
from load import *
from mesh import *
from optimization import *
from job import *
from sketch import *
from visualization import *
from connectorBehavior import *
import regionToolset 

import assembly
import visualization
import os
import datetime
import shutil
from odbAccess import *
import time
import numpy
import numpy as np
import re
import meshEdit

############### Add textFileName with new coord (+ imp )######################
fileNameImp = open("out_newCoordX_Imp.txt","r")
impVect = fileNameImp.readlines() 

fileNameImp.close()

####################### Add modelName and instanceName #######################
modelName    = 'Model-1'
instanceName = 'Part-1-1'

assemblyInstance = mdb.models[modelName].rootAssembly.instances[instanceName]

newCoordXYZ = numpy.zeros((len(assemblyInstance.nodes),3))

for i in assemblyInstance.nodes:
        newCoordXYZ[i.label-1][0] = float(impVect[i.label-1])
        newCoordXYZ[i.label-1][1] = i.coordinates[1]
        newCoordXYZ[i.label-1][2] = i.coordinates[2]

assemblyInstance.editNode(nodes=assemblyInstance.nodes,coordinates=newCoordXYZ)

Tags: instancesfromimportobjectmodelscommandsnodesmdb
1条回答
网友
1楼 · 发布于 2024-09-29 19:30:28

对零件执行此操作的方法与对部件实例执行此操作的方法相同:

assemblyInstance = mdb.models[modelName].rootAssembly.instances[instanceName]
assemblyInstance.editNode(nodes=assemblyInstance.nodes,coordinates=newCoordXYZ)

确保实例独立!你知道吗

相关问题 更多 >

    热门问题