01导入模块
为了使Odb命令对脚本可用,首先需要使用以下语句导入odbAccess模块:
from odbAccess import *
from abaqusConstants import *
要使material和section Odb命令对您的脚本可用,您还需要使用以下语句导入相关模块:
from odbMaterial import *
from odbSection import *
02打开输出数据库
您可以使用openOdb方法来打开现有的输出数据库。例如,下面的语句打开了Abaqus/CAE可视化模块教程使用的输出数据库:
odb = openOdb(path='viewer_tutorial.odb')
打开输出数据库后,可以对Odb对象的方法和成员访问其内容。
03读取odb数据
下面的列表描述了模型数据中的对象和用于读取模型数据的命令。
根装配
一个输出数据库只包含一个根程序集。通过OdbAssembly对象访问根程序集。
myAssembly = odb.rootAssembly
部件实例
部件实例存储在OdbAssembly对象下的实例存储库中。 以下语句显示输出数据库中部件实例的存储库键:
for instanceName in odb.rootAssembly.instances.keys():
print (instanceName)
输出数据库只包含一个part实例,结构输出为
PART-1-1
区域
输出数据库中的区域是OdbSet对象。 区域是指存储在输出数据库中的部件和装配集。 部件集是指单个部件中的元素或节点,并出现在装配体中部件的每个实例中。 装配集是指装配中部件实例中的元素或节点。 区域可以是以下之一:A node set
An element set
A surface
例如,下面的语句显示OdbAssembly对象中的节点集:
print ('Node sets = ',odb.rootAssembly.nodeSets.keys())
结构输出是
Node sets = ['ALL NODES']
下面的语句显示part -1- 1实例中的节点集和元素集:
print ('Node sets = ',odb.rootAssembly.instances[ 'PART-1-1'].nodeSets.keys())
print ('Element sets = ',odb.rootAssembly.instances[ 'PART-1-1'].elementSets.keys())
结果输出是
Node sets = ['ALLN', 'BOT', 'CENTER', 'N1', 'N19', 'N481', 'N499', 'PUNCH', 'TOP']
Element sets = ['CENT', 'ETOP', 'FOAM', 'PMASS', 'UPPER']
下面的语句将part -1-1 实例中的“TOP”节点集赋值给变量(topNodeSet):
topNodeSet = odb.rootAssembly.instances[ 'PART-1-1'].nodeSets['TOP']
材料
材料存储在Odb对象下的材料存储库中。
使用以下命令访问物料储存库:
allMaterials = odb.materials
for materialName in allMaterials.keys():
print ('Material Name : ',materialName)
打印各向同性弹性材料特性:
for material in allMaterials.values():
if hasattr(material,'elastic'):
elastic = material.elastic
if elastic.type == ISOTROPIC:
print ('isotropic elastic behavior, type = %s' % elastic.moduli)
title1 = 'Young modulus Poisson\'s ratio '
title2 = ''
if elastic.temperatureDependency == ON:
title2 = 'Temperature '
dep = elastic.dependencies
title3 = ''
for x in range(dep):
title3 += ' field # %d' % x
print ('%s %s %s' % (title1,title2,title3))
for dataline in elastic.table:
print (dataline)
一些材料定义有子选项。例如,要访问超弹性材料的平滑类型的双轴测试数据:
if hasattr(material,'hyperelastic'):
hyperelastic = material.hyperelastic
testData = hyperelastic.testData
if testData == ON:
if hasattr(hyperelastic,'biaxialTestData'):
biaxialTestData = hyperelastic.biaxialTestData
print ('smoothing type : ',biaxialTestData.smoothing )
截面
section存储在Odb对象下的Sections存储库中。
allSections = odb.sections
for sectionName in allSections.keys():
print ('Section Name : ',sectionName)
Section对象可以是各种Section类型之一。type命令提供有关节类型的信息。例如,要确定一个截面是否是“均质实体截面”类型,并打印其厚度和相关材料名称:
for mySection in allSections.values():
if type(mySection) == HomogeneousSolidSe