今天为Abaqus-Python系列第二课,主要讲解如何编写脚本实现创建一个部件,主要包含以下要点:
创建新模型数据库;
创建新2D草图;
创建3D可变形实体部件;
创建新视图;
在新视图窗口显示新部件(如下图)。
该示例的脚本文件可通过输入以下命令拷贝到工作目录:
abaqus fetch job=modelAExample;关于运行脚本的方式,上一课已经详细讲述,请点击回看。完整脚本代码如下:
modelAExample.py
#Asimple example: Creating a part.
from abaqus import *
from abaqusConstants import *
backwardCompatibility.setValues(includeDeprecated=True,reportDeprecated=False)
import sketch
import part
myModel= mdb.Model(name='Model A')
mySketch= myModel.ConstrainedSketch(name='Sketch A', sheetSize=200.0)
xyCoordsInner= ((-5 , 20), (5, 20), (15, 0), (-15, 0), (-5, 20))
xyCoordsOuter= ((-10, 30), (10, 30), (40, -30), (30, -30), (20, -10), (-20, -10), (-30,-30), (-40, -30), (-10, 30))
fori in range(len(xyCoordsInner)-1):
mySketch.Line(point1=xyCoordsInner[i],point2=xyCoordsInner[i+1])
fori in range(len(xyCoordsOuter)-1):
mySketch.Line(point1=xyCoordsOuter[i],point2=xyCoordsOuter[i+1])
myPart= myModel.Part(name='Part A', dimensionality=THREE_D, type=DEFORMABLE_BODY)
myPart.BaseSolidExtrude(sketch=mySketch,depth=20.0)
myViewport= session.Viewport(name='Viewport for Model A', origin=(10, 10), width=150,height=100)
myViewport.setValues(displayedObject=myPart)
myViewport.partDisplay.setValues(renderStyle=SHADED)
接下来,我们看看这个脚本是如何创建出这个部件的。
代码详解:
fromabaqus import * #导入Abaqus中的所有对象
fromabaqusConstants import *
#导入Abaqus中的字符型常数,如True,THREE_D
importsketch #导入Abaqus草图模块
importpart #导入Abaqus部件模块
以上几句代码主要是导入Abaqus的对象及模块。
myModel=mdb.Model(name='Model A')
#新建一个Abaqus模型,命名为Model A;并存入一个变量myModel
mySketch=myModel.ConstrainedSketch(name='SketchA', sheetSize=200.0)
#在模型ModelA内新建一个名为”SketchA”的草图,并将其赋给变量mySketch。
这里用到创建器,即大写字母开头的命令,ConstructedSketch(),用于创建对象;
调用变量名myModel,变量名赋值后是有意义的,这样可以大大缩短代码长度,易懂易读。
xyCoordsInner= ((-5 , 20), (5, 20), (15, 0), (-15, 0), (-5, 20))
xyCoordsOuter= ((-10, 30), (10, 30), (40, -30), (30, -30), (20, -10), (-20, -10), (-30,-30), (-40, -30), (-10, 30))
#创建内外线条顶点的坐标,每个点有X和Y坐标,因此每个点是包含二个元素的元组.
fori in range(len(xyCoordsInner)-1):
mySketch.Line(point1=xyCoordsInner[i],point2=xyCoordsInner[i+1])
#通过for循环将多个点通过Line命令依次连起来
fori in range(len(xyCoordsOuter)-1):
mySketch.Line(point1=xyCoordsOuter[i],point2=xyCoordsOuter[i+1])
#通过for循环将外部多个点通过Line命令依次连起来
Range()索引从0开始,len(xyCoordsInner)即为点的个数。如5个点,range(4)索引为0,1,2,3,那么依次生成点1-2,2-3,3-4,4-5四条线,注意到点1和点5的坐标是一样的,所以生成的就是封闭的“口”字形。第二个循环类似。
myPart= myModel.Part(name='Part A', dimensionality=THREE_D, type=DEFORMABLE_BODY)
#创建一个名为“PartA”的3D可变形体部件,并将其存入变量myPart中
myPart.BaseSolidExtrude(sketch=mySketch,depth=20.0)
#通过拉伸草图“mySketch”20长度来生成3D实体部件
myViewport= session.Viewport(name='Viewport for Model A', origin=(10, 10), width=150,height=100)
#创建一个空视图,指定名称’Viewportfor Model A’,尺寸宽150x高100,并存入变量myViewport
myViewport.partDisplay.setValues(renderStyle=SHADED)
#设置’myViewport’渲染方式为’SHADED’,并显示在myViewport窗口。
这就是整段创建part的代码,现在再看是不是也没那么难呢~