我想寻求帮助来修改/编辑零件实例的网格(在“装配”下)。
我已经尝试过(下面的代码),但是由于元组,这是不可能的:
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:“元组”对象不支持项目分配
或者,如果可能的话,直接将网格(已经存储在变量newCoordXYZ中)添加/分配给Assembly模块中的几何!!
任何想法/建议都受到欢迎!
PS:我知道可以使用editNode()命令在零件模块(取决于网格)中轻松完成网格的修改。
partName = mdb.models [modelName] .parts [partName] partName.editNode(nodes = partName.nodes,coordinates = newCoordXYZ)
编辑01:
评论
我不确定,我可能会犯如此琐碎的错误。 我仍然收到以下错误:AttributeError:'PartInstance'对象没有属性'editNode',与文档一致:
文档说:
Abaqus>脚本参考> Python命令>汇编命令>汇编对象:
Access
import assembly
mdb.models[name].rootAssembly
Abaqus>脚本参考> Python命令>汇编命令> PartInstance对象:
Access
import assembly
mdb.models[name].rootAssembly.allinstances
mdb.models[name].rootAssembly.instances[name]
和
Abaqus>脚本参考> Python命令>编辑网格命令>装配对象:editNode(...) 此方法更改零件实例上给定节点的坐标。
Abaqus>脚本参考> Python命令>编辑网格命令>零件对象
没有editNode(...)cmd
因此,通过使用以下cmd:mdb.models [name] .rootAssembly.instances [name]我无法使用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)
答案 0 :(得分:0)
对零件进行处理的方式相同,应该对装配实例进行处理:
assemblyInstance = mdb.models[modelName].rootAssembly.instances[instanceName]
assemblyInstance.editNode(nodes=assemblyInstance.nodes,coordinates=newCoordXYZ)
请确保使您的实例独立!