分享一个ABAQUS的帮助案例,简单的介绍如何利用脚本进行建模,并对脚本各个命令做详细的的解读,原文可以参考帮助文档中的Scripting下面的Creating a part查看。
1"""
2modelAExample.py
3A simple example: Creating a part.
4"""
5
6from abaqus import *
7from abaqusConstants import *
8backwardCompatibility.setValues(includeDeprecated=True,
9 reportDeprecated=False)
10
11import sketch
12import part
13
14myModel = mdb.Model(name='Model A')
15
16mySketch = myModel.ConstrainedSketch(name='Sketch A',
17 sheetSize=200.0)
18
19xyCoordsInner = ((-5 , 20), (5, 20), (15, 0),
20 (-15, 0), (-5, 20))
21
22xyCoordsOuter = ((-10, 30), (10, 30), (40, -30),
23 (30, -30), (20, -10), (-20, -10),
24 (-30, -30), (-40, -30), (-10, 30))
25
26for i in range(len(xyCoordsInner)-1):
27 mySketch.Line(point1=xyCoordsInner[i],
28 point2=xyCoordsInner[i+1])
29
30for i in range(len(xyCoordsOuter)-1):
31 mySketch.Line(point1=xyCoordsOuter[i],
32 point2=xyCoordsOuter[i+1])
33
34myPart = myModel.Part(name='Part A', dimensionality=THREE_D,
35 type=DEFORMABLE_BODY)
36
37myPart.BaseSolidExtrude(sketch=mySketch, depth=20.0)
38
39myViewport = session.Viewport(name='Viewport for Model A',
40 origin=(10, 10),
41 width=150,
42 height=100)
43
44myViewport.setValues(displayedObject=myPart)
45
46myViewport.partDisplay.setValues(renderStyle=SHADED)
from abaqus import*
此语句使脚本能够访问Abaqus的基础对象。同时通过变量mdb提供对默认模型数据库的访问权限。
from abaqusConstants import*
该语句用于向脚本中引入Abaqus脚本接口定义的符号常量。
import sketch
import part
这些语句提供了对草图(sketch)和零件(part)相关对象的访问权限。sketch和part是Python模块。
接下来的脚本语句如图1所示,可按从右到左的顺序解读:
-- 创建名为"Model A"的新模型
-- 将新模型存储在模型数据库mdb中
-- 将新模型赋值给变量myModel
图1. 创建新模型
mySketch = myModel.ConstrainedSketch(name='Sketch A', sheetSize=200.0)
此语句在myModel中创建名为"Sketch A"的草图对象,并将新草图赋给变量mySketch。草图将放置在200单位边长的画布上。注意以下要点:
-- 创建对象(面向对象编程术语中的"对象")的命令称为构造函数,以大写字母开头。已看到的Model和Sketch命令分别用于创建模型对象和草图对象。
-- 该命令使用了前一步创建的变量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))
这两行定义了构成字母A的内侧轮廓和外侧轮廓顶点的X-Y坐标。变量xyCoordsInner引用内侧轮廓顶点,xyCoordsOuter引用外侧轮廓顶点。
for i in range(len(xyCoordsInner)-1):
mySketch.Line(point1=xyCoordsInner[i], point2=xyCoordsInner[i+1])
此循环通过顶点坐标在草图中创建内侧轮廓线段。具体说明如下:
①Python仅通过缩进来标识循环的起始和终止(不同于C/C++的{}括号)
②len()函数返回坐标对的数目(此处为5个)
③range(4)生成序列0,1,2,3。在每次迭代中,变量i被赋予序列中的下一个整数值
同理,第二个循环创建字母A的外侧轮廓。
myPart = myModel.Part(name='Part A',dimensionality=THREE_D,type=DEFORMABLE_BODY)
此语句在myModel中创建名为"Part A"的三维可变形实体零件,并将新零件赋值给变量myPart。
myPart.BaseSolidExtrude(sketch=mySketch, depth=20.0)
通过拉伸草图mySketch并设置深度20.0,在myPart中创建基础实体拉伸特征。
myViewport = session.Viewport(name='Viewport for Model A', origin=(20,20),
width=150,
height=100)
此语句在会话(session)中创建名为"Viewport for Model A"的视口,并将其赋值给变量myViewport。视口原点位于(20,20),宽度150单位,高度100单位。
myViewport.setValues(displayedObject=myPart)
此语句指定新视口myViewport显示的对象为零件myPart。
myViewport.partDisplayOptions.setValues(renderStyle=SHADED)
此语句将视口myViewport中零件显示选项的渲染样式设置为阴影模式,使myPart以阴影方式显示。