原标题:Abaqus-利用python处理有多个instances的odb文件,得到inp模型数据用于前处理
在一些情况下,odb文件中包含有多个instances,instances之间会有节点和单元是重合。很多情况下需要得到该odb模型数据,并将其导入hypermesh进行前处理。如果直接从abaqus中得到odb模型数据的inp输入导入到hypermesh中,会有重合节点和单元报错,然而利用python可以解决该问题。部分代码参考如下:
################################################
fromabaqus import*
fromabaqusConstants import*
fromviewerModules import*
importmath
fromodbAccess import*
################################################
myPath='D:/2017/model/*.odb'
datapath='D:/2017/model/'
dataoutput=datapath+'engine.inp'
odb=openOdb(path=myPath)
################################################
myassembly=odb.rootAssembly
myinstances=myassembly.instances
################################################
types=locals()
forinstanceEach inmyinstances.keys():
name=instanceEach.replace('-','_')
instanceNum.append(name)
types['elemDic_%s'%name]={}
types['nodeDic_%s'%name]={}
types['nodeList_%s'%name]=[]
forelementEach inmyinstances[instanceEach].elements:
elementType=elementEach.type
if'C3D'inelementType:
types['nodeList_%s'%name].extend(list(elementEach.connectivity))
types['elemDic_%s'%name][elementEach.label]=elementEach.connectivity
types['nodeList_%s'%name]=list(set(types['nodeList_%s'%name]))
fornodeEach inmyinstances[instanceEach].nodes:
types['nodeDic_%s'%name][nodeEach.label]=nodeEach.coordinates
################################################
k=0
forname ininstanceNum:
elemidMin=min(types['elemDic_%s'%name].keys())
elemidMax=max(types['elemDic_%s'%name].keys())
ifelemidMin
forelementLabel intypes['elemDic_%s'%name].keys():
elemnewid=elementLabel+k
types['elemDic_%s'%name][elemnewid]=types['elemDic_%s'%name].pop(elementLabel)
elemidMax=max(types['elemDic_%s'%name].keys())
k=elemidMax
else:
k=elemidMax
################################################
k=0
forname ininstanceNum:
nodeidMin=min(types['nodeList_%s'%name])
nodeidMax=max(types['nodeList_%s'%name])
ifnodeidMin
forelementLabel, elementConnect intypes['elemDic_%s'%name].items():
elementnewConnect=[]
forconnectEach inelementConnect:
connectnewEach=connectEach+k
elementnewConnect.append(connectnewEach)
fornodeEach intypes['nodeList_%s'%name]:
nodesOutput[nodeEach+k]=types['nodeDic_%s'%name][nodeEach]
nodeidMax=max(types['nodeList_%s'%name])+k
k=nodeidMax....完整代码地址:http://www.jishulink.com/content/post/363179
该代码用于导出odb模型数据的所有的3D单元及相关的节点。返回搜狐,查看更多
责任编辑: