#!/user/bin/python
#-* -coding:UTF-8 -*-
#第2行确保可用中文注释
#第1行表示可以移植到windows以外的系统执行
#井号后边跟注释
from abaqus import *
import testUtils
testUtils.setBackwardCompatibility()
from abaqusConstants import *
#建立模型
myModel=mdb.Model(name='Cube')
myViewport=session.Viewport(name='Viewport: 1',origin=(0.0,
0.0), width=176.25, height=130.5)
#导入part模块
import part
#创建基础特征的草图
mySketch=myModel.ConstrainedSketch(name='cubeProfile',sheetSize=250.)
#绘制矩形截面
mySketch.rectangle(point1=(0.0,0.0),point2=(10.0,10.0))#两对角点坐标
#创建三维变形部件
myCube=myModel.Part(name='Cube',dimensionality=THREE_D,type=DEFORMABLE_BODY)
#通过对草图拉伸10.0来创建部件
myCube.BaseSolidExtrude(sketch=mySketch,depth=10.0)
#导入material模块
import material
#创建材料
mySteel=myModel.Material(name='Steel')
#定义弹性材料属性,杨氏模量为209E3,泊松比为0.3
elasticProperties=(209E3,0.3)
mySteel.Elastic(table=(elasticProperties,))
#导入section模块
import section
#创建实体截面
mySection=myModel.HomogeneousSolidSection(name='cubeSection',material='Steel',thickness=1.0)
#为部件分配截面属性
region=(myCube.cells,)
myCube.SectionAssignment(region=region,sectionName='cubeSection')
#导入assembly模块
import assembly
#创建部件实例
myAssembly=myModel.rootAssembly
myInstance=myAssembly.Instance(name='cubeInstance',part=myCube,dependent=OFF)
#导入step模块
import step
#在初始分析步Initial之后创建一个分析步。静力分析的时间为1.0,初始增量为0.1
myModel.StaticStep(name='cubeLoad',previous='Initial',timePeriod=1.0,initialInc=0.1,description='Load
the top of the cube')
#导入load模块
import load
#通过坐标找出端部所在的面
endFaceCenter=(5.0,5.0,0)
endFace=myInstance.faces.findAt((endFaceCenter,))
#在梁端部创建固定端约束
endRegion=(endFace,)
myModel.EncastreBC(name='Fixed',createStepName='cubeLoad',region=endRegion)
#通过坐标找到上表面
topFaceCenter=(5.0,5.0,10.0)
topFace=myInstance.faces.findAt((topFaceCenter,))
#在梁的上表面施加压力荷载
topSurface=((topFace,SIDE1),)
myModel.Pressure(name='Pressure',createStepName='cubeLoad',region=topSurface,magnitude=5e6)
#单位为Pa
#导入mesh模块
import mesh
#为部件实例指定单元类型
region=(myInstance.cells,)
elemType=mesh.ElemType(elemCode=C3D8I,elemLibrary=STANDARD)
myAssembly.setElementType(regions=region,elemTypes=(elemType,))
#为部件实例撒种子
myAssembly.seedPartInstance(regions=(myInstance,),size=2.5)
#为部件实例划分网格
myAssembly.generateMesh(regions=(myInstance,))
#显示划分网格后的梁模型
myViewport.assemblyDisplay.setValues(mesh=ON)
myViewport.assemblyDisplay.meshOptions.setValues(meshTechnique=ON)
myViewport.setValues(displayedObject=myAssembly)
#导入job模块
import job
#为模型创建并提交分析作业
jobName='cube_tutorial'
myJob=mdb.Job(name=jobName,model='Cube',description='Cantilever
cube tutorial')
#等待分析作业完成
myJob.submit()
myJob.waitForCompletion()
print'分析已顺利完成,下面进行后处理。'
#导入Visualization模块
import visualization
#打开输出数据库,显示默认的云图
myOdb=visualization.openOdb(path=jobName+'.odb')
myViewport.setValues(displayedObject=myOdb)
myViewport.odbDisplay.display.setValues(plotState=CONTOURS_ON_DEF)
myViewport.odbDisplay.commonOptions.setValues(renderStyle=FILLED)
#设置显示背景为白色
session.graphicsOptions.setValues(backgroundColor='#FFFFFF',
backgroundBottomColor='#FFFFFF')
#将Mises云图输出为PNG格式的文件
session.printToFile(fileName='Mises_Cube',format=PNG,canvasObjects=(myViewport,))
print'文件Mises.png保存于工作目录下,请查看!'