第二讲 在abaqus 中编写脚本

27
© Dassault Systèmes, 2008 Abaqus 中编写脚本 2 Introduction to Python and Scripting in Abaqus L2.2 © Dassault Systèmes, 2008 概要 Abaqus 中的脚本接口 Abaqus 中的对象模型 Abaqus 中的数据类型 Abaqus 中的模块 Abaqus 的默认设置 交互式输入 例子 习题

Upload: sunny-gu

Post on 14-Feb-2016

171 views

Category:

Documents


3 download

DESCRIPTION

第二讲 在Abaqus 中编写脚本

TRANSCRIPT

Page 1: 第二讲 在Abaqus 中编写脚本

© Dassault Systèmes, 2008

在 Abaqus 中编写脚本

第 2 讲

Introduction to Python and Scripting in Abaqus

L2.2

© Dassault Systèmes, 2008

概要

• Abaqus 中的脚本接口

• Abaqus 中的对象模型

• Abaqus 中的数据类型

• Abaqus 中的模块

• Abaqus 的默认设置

• 交互式输入

• 例子

• 习题

Page 2: 第二讲 在Abaqus 中编写脚本

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

Introduction to Python and Scripting in Abaqus

L2.4

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

• Abaqus 中的脚本接口

• Abaqus 中的脚本接口(ASI)是在 Python 应用程序的基础上开发的。

• 基于 Abaqus 中的脚本接口,用户可以实现下列功能:

• 可以自定义 Abaqus 环境文件( abaqus_v6.env )

• 创建宏来自动进行前后处理

• 读取或写出输出数据库文件(ODB 文件)

• 进行参数分析

• 创建 Abaqus 插件程序

Page 3: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.5

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

• 执行脚本接口命令

• 可以通过 GUI、命令行接口或脚

本执行命令。

• 经过内核的命令构成了所创建的模型。

command line

interface (CLI)

Abaqus/CAE

Abaqus/CAEkernel

Abaqus/StandardAbaqus/Explicit

output database file

input file

Python interpreter

replay files

scriptGUI

commands

1 2 3

Introduction to Python and Scripting in Abaqus

L2.6

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

• 术语

• 信息提示区和命令行窗口

• 用 TAB 键进行二者之间的切换

信息提示区

命令行窗口(CLI)

当前显示的是命令行窗口中的内容

Page 4: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.7

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

• 在命令行界窗口(CLI)中执行脚本

• 可以在别的系统中植入解释器来执行 Python 脚本。

• 对于 Abaqus 软件,可以通过 Abaqus/CAE 来实现。

• 启动 Abaqus/CAE 后,Python 解释器也就被启动。

• 下面的例子在命令行窗口中直接键入脚本命令来执行脚本。

Introduction to Python and Scripting in Abaqus

L2.8

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

• 在 Abaqus/CAE 的任一模块中:

• 脚本必须由 Abaqus/CAE 内核来解释执行。

在 Abaqus/CAE 中执行脚本的方法:

abaqus python myscript.pyabaqus script myscript.py

abaqus cae startup = myscript.pyabaqus cae script = myscript.pyabaqus viewer startup = myscript.py

• 从 File 菜单中执行

• 在命令行窗口使用 Python 命令execfile()执行

• 从 start-up 屏幕执行

• 从命令行中执行

需要注意的是:用户在执行过程中必须加入Abaqus/CAE 解释器:

Page 5: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.9

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

• 创建新脚本的两种简单方法

• 用户可以使用 Macro 管理器的宏文件来记录 Abaqus 中的一系列命令。

• 用户可以在 Abaqus 中 .rpy 文件的基础上创建新的脚本文件。

• 对于当前运行的 session,其文件名是 abaqus.rpy。如果Abaqus/CAE 中包含多个 session,文件的扩展名可以进行编号,例如abaqus.rpy.1

文件名是 abaqusMacros.py,该文件可以

被追加。

创建宏文件的时候,需要制定其保存位置。

Introduction to Python and Scripting in Abaqus

L2.10

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

步骤:

1) 在 Abaqus/CAE 中通过(View/Specify)对话框来实现此功能,它将被自动写到 .rpy 文件中。

利用剪切、粘贴功能将该命令行粘贴到新文本文件中。

2) 加入Python 命令对上述语句进行循环:for x in range(36):

session.viewports['Viewport:1'].view.rotate(xAngle=10,yAngle=0,zAngle=0, mode=MODEL)

session.viewports['Viewport:1'].view.rotate(xAngle=10,yAngle=0,zAngle=0,mode=MODEL)

保存脚本文件,文件名为 rotate.py.

例子:创建旋转当前视窗中模型的脚本文件

Page 6: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.11

© Dassault Systèmes, 2008

3) 在 File 菜单中运行该脚本:File→RunScript.

Abaqus中的脚本接口

Introduction to Python and Scripting in Abaqus

L2.12

© Dassault Systèmes, 2008

Abaqus 中的脚本接口

• Abaqus 的命名空间

• 日志命名空间

• 在生成 GUI 命令的私有命名空间被执行 。

• 命令行窗口(CLI)命名空间

• 对于 CLI 命名空间,在命令行中输入的命令可以被执行。这些命令在Python 中_main__模块的命名空间被执行。

• 日志命名空间和 CLI 命名空间不完全相同!

• 例如,下面这行语句来自于.rpy 文件

vp = session.viewports['Viewport: 1']

• 变量 vp 在 CLI 命名空间中是不可用的。

Page 7: 第二讲 在Abaqus 中编写脚本

© Dassault Systèmes, 2008

Abaqus 中的对象模型

Introduction to Python and Scripting in Abaqus

L2.14

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 概要

• Abaqus 脚本接口在 Python 语言的基础上又扩展了一些新的对象类型。

• 这些对象间的层次和关系组成了 Abaqus 的对象模型。

Taken from the Abaqus Scripting User's Manual (available online only)

Abaqus 的对象模型中包含三个根(roots)对象:Session、Mdb 和 Odb。

完整的 Abaqus 对象模型非

常复杂,用一个简单的图很难表达清楚。

容器(container)中包含的

可以是序列,也可以是包含对象的仓库。

Page 8: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.15

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 基础知识

• 对象模型中给出了对象间的各种关系 。

所有权(ownership)意味着,如果一个对象被复制,该对象所拥有的一切都将被复制。同样,如果删除了一个对象,该对象所拥有的一切都将被删除。这个概念在 Abaqus/CAE 中被称为父子关系。

部件中包含各种特征和基准(线、面)等

模型中包含部件

Introduction to Python and Scripting in Abaqus

L2.16

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 使用对象模型

• 对象封装的数据称为对象的(members)组分。

• 对数据进行处理的函数称为方法 ( methods )。

• 创建一个对象的方法叫做构造器( constructor )。

• 所有权(ownership)定义了访问对象的路径(path)。

• 任何访问 Session、Mdb 和 Odb 的 Python 语句称为命令。

Page 9: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.17

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 通过对象模型中对象的层次结构使用命令来访问对象。所有的命令反映了对象模型的结构。

• 例子:vp = session.viewports['Viewport: 1']

vp.setValues(origin=(200,0))

cell4 = mdb.models['block'].parts['crankcase'].cells[4]

• 为模型数据库(mdb)block模型,部件 crankcase 的第4个单元分配变量 cell 4。

单元4部件名crankcase

模型数据库mdb

变量cell4

模型名 block

Introduction to Python and Scripting in Abaqus

L2.18

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 帮助文档

• 下面两个在线帮助文档可供参考:

• Abaqus Scripting User's Manual:

• 概要, 介绍,例子。

• 易读性好!

• Abaqus Scripting Reference Manual:

• 详细介绍了 Abaqus 中的 Python 接口。

• 参考手册将教给读者如何借助于与 Access 有关的章节来访问现有对象,以及如何借助与 Path 有关的章节来创建新的对象。

Page 10: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.19

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• Abaqus 脚本参考手册与 Access 和 Path 相关的章节中,介绍了 Abaqus 对

象之间的访问和接口。

Introduction to Python and Scripting in Abaqus

L2.20

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 构造器实例

p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D, type=DEFORMABLE_BODY)

• 构造器路径如下:

mdb.models['Model-1'].Part

• 新的部件对象将放入部件库:

mdb.models['Model-1'].parts['Part-1']

Page 11: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.21

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 无构造器的对象

• Abaqus 将自动创建没有构造器的对象。

• 对于这些对象, 每个组分(member)的初值可以借助于 setValues 找到

它的默认值。

• 下面语句修改了 printOptions 对象的 rendition 组分(其他组分的值未改变)

session.printOptions.setValues(rendition=GREYSCALE)

Introduction to Python and Scripting in Abaqus

L2.22

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• Session 对象模型

Page 12: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.23

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• Session 对象模型(续)

• Session 对象前后不一致† (例如,不能在 Abaqus/CAE 或 Abaqus/Viewer中保存)。

• Session 对象包含定义视口、远程等待和用户自定义视图等。

• Session 对象一般只有在 Abaqus/CAE 或 Abaqus/Viewer 内部可用。

• 使用下列任何语句都可以导入 Session 对象:

from abaqus import *

from abaqus import session

†该规则有个例外:XYData Session 对象可以写入 ODB 文件中。

Introduction to Python and Scripting in Abaqus

L2.24

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• Mdb 对象模型

• Mdb 对象是前后一致的.。

• Mdb 对象一般只有在Abaqus/Viewer 或 Abaqus/CAE内部可用.

• 使用下列语句中的任何语句都可以导入 Mdb 对象。

from abaqus import *

from abaqus import mdb

Page 13: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.25

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 输出数据库(ODB)对象模型

• Odb 对象是前后一致的。

• 下列语句可以导入 Odb 构造器:from odbAccess import *from odbAccess import openOdb, Odb

Introduction to Python and Scripting in Abaqus

L2.26

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 查询对象模型

• 如果读者不能够确定对象模型内部的和(或)关系,可以使用 Python 工具查询 .cae 或 .odb 数据库。

• 使用 type()来确定对象类型

• 如果对象类型是 Abaqus 中扩展的对象类型:

• 使用 object.__members__ 来查看对象的组分

• 使用 object.__methods__ 来查看模型的方法

• 例子:>>> vp = session.viewports['Viewport: 1]>>> type(vp)<type 'Viewport'>>>> vp.__members__['activeColorModes', 'animationConnect', 'animationPlayer', … ]>>> vp.__methods__['Layer', 'bringToFront', 'disableMultipleColors', … ]

Page 14: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.27

© Dassault Systèmes, 2008

Abaqus 中的对象模型

• 查询对象模型

• 运行过程中,借助于 Abaqus 命令中的 __doc__进行查询。

• 例如

>>> from odbAccess import openOdb>>> print openOdb.__doc__sys.modules['odbAccess'].openOdb(path) -> This method opens an existing output

database (.odb) file and creates a new Odb object. You typically execute this

method outside of Abaqus/CAE when, in most cases, only one output database is

open at any time. For example,

import odbAccessshockLoadOdb = odbAccess.openOdb(path='myOdb.odb')>>> 在 Abaqus 与 Python 交互式提示区中,可以使用制表符 Tab 来查询(在标准的

Python 语言中不可用)

© Dassault Systèmes, 2008

Abaqus 中的数据类型(Types)

Page 15: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.29

© Dassault Systèmes, 2008

Abaqus 中的数据类型

• 在 Python 语言的基础上扩展了 Abaqus 的特有数据类型,而 Python 语言中的数据类

型仍然可用。

• 库 Repository (键控容器a keyed container)

• 映射类型,类似于字典

• 库中的对象属于同一类型

• 库通常用于模型、部件、材料等

• 借助构造器将对象加入库中

mdb.models['engine'].Material('steel')steel = mdb.models['engine'].materials['steel']

• Abaqus 中的数组类型 (被索引的容器)

• 序列,类似于元组。

• 例如,Abaqus 网格中的节点和单元分别保存在 MeshNodeArrays 和MeshElementArrays 数组中。

Introduction to Python and Scripting in Abaqus

L2.30

© Dassault Systèmes, 2008

Abaqus 中的数据类型

• 符号常数

• 使用其作为 Abaqus 方法中的自变量和代表 Abaqus 对象中组分值。

• 符号常数变量的所有字母均为大写( ALL_CAPS)• 例如: QUAD, SAX2T, RB2D2, DEFORMABLE, D_2D,

DEFORMABLE_BODYa.setMeshControls(elemShape=QUAD)

• 布尔运算

• 与符号常数类似,但是其值可以被测试

• 例如: 视口对象包含 Boolean 组分 titleBar,它的功能是确定是否显示标题栏。

if vp.titleBar:print "The title bar will be displayed"

• Abaqus 的新版本将逐渐淘汰布尔运算,由 Python 语言中的布尔运算来代替。

Page 16: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.31

© Dassault Systèmes, 2008

Abaqus 中的数据类型

• Abaqus 中的其他类型

• 目前,大约有 280 种类型

• 例如: 材料属性, 均匀实体截面

type(mdb.models['Model-1'].materials['Steel'])

<type 'Material'>

• 注意: 使用 Type 对象来查询类型:

s = mdb.models['Model-1'].sections['sec-1']

...

...

if type(s) == HomogeneousSolidSection:

print 'This object is of type HomogeneousSolidSection'

• 可以在对应的模块中查询对象类型,例如:

from section import HomogeneousSolidSection

Introduction to Python and Scripting in Abaqus

L2.32

© Dassault Systèmes, 2008

Abaqus 中的数据类型

• 关键词

• Abaqus 对象中的方法可以使用关键字。

• 例子: 在等值线图中改变模型形状

vp = session.viewports['Viewport: 1']vp.odbDisplay.display.setValues(plotState=(CONTOURS_ON_UNDEF, ))

• 强烈建议使用关键字。

• 删除对象

• 使用 del 语句来删除对象。

• 在当前的命名空间中删除 vp,使用下列语句:

del vp

• 删除 Viewport: 1 视窗,使用下列语句:

del session.viewports['Viewport: 1']

Page 17: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.33

© Dassault Systèmes, 2008

Abaqus 中的数据类型

• 例子: section 对象

>>> s = mdb.models['Model-1'].sections['sec-1']>>> type(s)<type 'HomogeneousSolidSection'>>>> s.__members__['material', 'name', 'thickness']>>> s.__methods__['setValues']>>> for member in s.__members__:... print 's.%s = %s' % (member, getattr(s, member))s.material = mat-1s.name = sec-1s.thickness = 1.0>>> del mdb.models['Model-1'].sections['sec-1']

© Dassault Systèmes, 2008

Abaqus 中的模块

Page 18: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.35

© Dassault Systèmes, 2008

Abaqus 中的模块

核心模块 功能

部件(part) 创建和修改部件

材料属性(material) 创建和修改材料属性

截面(section) 创建和修改截面

装配(assembly) 创建和修改装配件

分析步(step) 创建和修改分析步

接触(interaction) 创建和修改接触属性

荷载(load) 创建和修改荷载、边界条件

网格(mesh) 为部件实体划分网格

分析作业(job) 创建、提交和监控分析作业

后处理 visualization 对分析结果可视化

访问 odb文件odbAccess

访问输出数据库文件

草图(sketch) 创建和修改草图

Introduction to Python and Scripting in Abaqus

L2.36

© Dassault Systèmes, 2008

Abaqus 中的模块

• 导入模块

• 与 Python 中导入模块的方法相同,使用 import 语句导入 Abaqus 模块。

• 导入 caeModules 将导入 Abaqus 所有模块:

from caeModules import *

• 导入核心模块后不影响 Abaqus 图形用户界面(GUI)。

Page 19: 第二讲 在Abaqus 中编写脚本

© Dassault Systèmes, 2008

Abaqus 的默认设置

Introduction to Python and Scripting in Abaqus

L2.38

© Dassault Systèmes, 2008

Abaqus 的默认设置

• Abaqus 的环境文件

• 环境文件名为 abaqus_v6.env

• Abaqus 启动后,该文件就开始运行,它使用的是 Python/ASI 语法。

• 环境文件可以显示选项的默认设置。

• 环境文件可以包含供 Abaqus 调用的 Python 功能函数,例如:onCaeStartup()onCaeGraphicsStartup()onJobStartup()onJobCompletion()

• Abaqus 将在 site_dir、home_dir 和 local.dir 中搜索 abaqus v6.env 环境文件,并依次执行此文件。

• 如果搜索到多个版本的上述 Python 功能函数,每个功能函数都将被调用。

后面定义的环境变量将覆盖前面定义的环境变量。

Page 20: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.39

© Dassault Systèmes, 2008

Abaqus 的默认设置

• Abaqus 环境文件: abaqus_v6.envdef onCaeStartup():

# Compatibility issuesbackwardCompatibility.setValues(includeDeprecated=OFF)

# Graphics preferencessession.graphicsOptions.setValues(displayLists=ON,

dragMode=AS_IS)

# Print preferencessession.printOptions.setValues(vpDecorations=OFF,

vpBackground=OFF,rendition=COLOR, printCommand='lpr')

# Visualization preferencesdef setVisPreferences(module, userData):

from visualization import SHADED, EXTERIOR, CONTINUOUSsession.defaultOdbDisplay.commonOptions.setValues(

renderStyle=SHADED, visibleEdges=EXTERIOR)session.defaultOdbDisplay.contourOptions.setValues(

contourStyle=CONTINUOUS)addImportCallback('visualization', setVisPreferences)

# Material properties - read them from a fileexecfile('my_material_library.py')

Introduction to Python and Scripting in Abaqus

L2.40

© Dassault Systèmes, 2008

Abaqus 的默认设置

Abaqus 环境文件:abaqus_v6.env (续)

在 onJobCompletion 和 onJobStartup 中,有些变量被事先定义。这些变量包括:savedir, id, scrdir, analysisType, applicationName, abaqus_version

def onJobCompletion():import osextensions = ('res','stt','mdl','prt','abq','pac')restartDir = savedir + id + '_restart' + os.sepif (not os.path.exists(restartDir)):

os.mkdir(restartDir)for extension in extensions:

fileName = id + '.' + extensionif (os.path.exists(savedir + fileName)):

os.rename(savedir + fileName, restartDir + fileName)

def onJobStartup():import os, osutilsrestartDir = savedir + id + '_restart'if (os.path.exists(restartDir)):

osutils.removeTree(restartDir)

Page 21: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.41

© Dassault Systèmes, 2008

Abaqus 的默认设置

• 执行环境(Execution environment)

• 需要注意的是,abaqus_v6.env 不是一个模块,上一层命名在函数中是不可用的。通过环境文件 abaqus_v6.env 来定义函数,却在

不同的命名空间中执行。

• 预定义名字(Predefined names)

• 在函数 onCaeStartup 中,用户可以省略下列语句行:

from abaqus import *from abaqusConstants import *

• 要想找到命名空间中的所有变量,可以这样做:for name in globals().keys():

if name != '__builtins__':print '%s = %s' % (name , eval(name))

(this code be used at top level or within one of the functions)

© Dassault Systèmes, 2008

交互式输入

Page 22: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.43

© Dassault Systèmes, 2008

交互式输入

• getInput 函数可以给出简单的对话框,对话框中指定标签和一个单独的文本输入区域,此处输入需要给出的值.。

• getInputs 函数可以显示 1 个简单的包含多个标签/文本输入域的对话框。

• 一旦用户按下 Enter 键或 ok 按钮,返回执行脚本的值将转换为字符串。

• 用户也可以指定对话框中文本域的默认输入值。

• getInput 函数和 getInputs 函数都不具备错误检查功能,用户应该确保输入

数据的正确性。

• 必须运行 Abaqus 图形用户界面,才能使用 getInput 函数和 getInputs函数。

• getInput 函数不能够与 -start 或 -script 联用。

Introduction to Python and Scripting in Abaqus

L2.44

© Dassault Systèmes, 2008

交互式输入

• 例子getInput 函数允许用户输入数值(getInput.py sy31.py):from abaqus import *from math import sqrtinput = getInput('Enter a number', '9')number = float(input)print sqrt(number)

• getInput 函数返回的字符串,由 float 函数转换为浮点数。

• getInputs 函数可以返回多个数值

x = getInputs((('Enter first', '1'),('Enter second', '2'),('Enter third', '3')))

print x

• 可以返回列表:

Page 23: 第二讲 在Abaqus 中编写脚本

© Dassault Systèmes, 2008

实例

Introduction to Python and Scripting in Abaqus

L2.46

© Dassault Systèmes, 2008

实例 2-1: 创建和排列多个视口

• 创建排列视口

文件 scr_viewport_tiler.py 定

义了两个函数:createViewports()tileViewports()

函数 createViewports() 创建用

户所需个数的视口。

基于用户定义的视口行数,函数tileViewports() 对其进行排列

两个函数都可以在命令行界面(CLI)运行。

依据脚本中定义的视口个数情况,视口将充满整个绘图区,视口的宽度和高度自动被调整

Page 24: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.47

© Dassault Systèmes, 2008

实例 2-2: “A” 形部件

• 例子: 创建字母 A 形状的部件(A.py)导入相应模块并创建 mdb 对象

from abaqus import *from abaqusConstants import *from caeModules import *

Mdb()

1

此构造器将创建 mdb 对象

Introduction to Python and Scripting in Abaqus

L2.48

© Dassault Systèmes, 2008

实例 2-2: “A” 形部件

绘制二维草图

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))

for i in range(len(xyCoordsInner)-1):mySketch.Line(point1=xyCoordsInner[i],

point2=xyCoordsInner[i+1])

for i in range(len(xyCoordsOuter)-1):mySketch.Line(point1=xyCoordsOuter[i],

point2=xyCoordsOuter[i+1])

2

Page 25: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.49

© Dassault Systèmes, 2008

实例 2-2: “A” 形部件

创建一个部件,并在草图中增加基础特征

myPart = myModel.Part(name='Part A',

dimensionality=THREE_D, type=DEFORMABLE_BODY)

myPart.BaseSolidExtrude(sketch=mySketch,

depth=20.0)

在装配模块中创建部件实体myAssembly = mdb.models['Model A'].rootAssembly

myInstance = myAssembly.Instance(name='Part A-1', part=myPart, dependent=OFF)

3

4

Introduction to Python and Scripting in Abaqus

L2.50

© Dassault Systèmes, 2008

为部件实体划分网格

partInstances = (myInstance,)

myAssembly.seedPartInstance(regions=partInstances, size=5.0)

myAssembly.generateMesh(regions=partInstances)

在新的视口中绘制网格划分后的部件实体myViewport = session.Viewport(name='Viewport for Model A',

origin=(20, 20), width=150, height=100)

myViewport.assemblyDisplay.setValues(renderStyle=SHADED, mesh=ON)

myViewport.setValues(displayedObject=myAssembly)

实例 2-2: “A” 形部件

5

6

Page 26: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.51

© Dassault Systèmes, 2008

实例 2-3: 参数化研究实例

• 运行 Abaqus 基准手册中问题2.3.4:壳单元扭曲灵敏性分析(skewshell_parametric.py)

© Dassault Systèmes, 2008

习题

Page 27: 第二讲 在Abaqus 中编写脚本

Introduction to Python and Scripting in Abaqus

L2.53

© Dassault Systèmes, 2008

习题 2-1: Session 命令(workshop2-1.py)

1. 检验帮助文档中的帆布命令

2. 写脚本文件,在脚本中定义一个函数,该函数将 ODB 文件的名字作为一个自变量,并创建四个视口:Top、Left、Front、和 Iso。

Introduction to Python and Scripting in Abaqus

L2.54

© Dassault Systèmes, 2008

习题2-2: 创建库的宏文件(workshop2-2.py)

1. 使用 Abaqus/CAE 中的录制宏功能,在模型中增加钢材、铜和铝的材料属性。

2. 在 abaqusMacros.py 文件中编辑刚才创建的宏,并提示用户在对应模型中增

加钢材、铜和铝的材料属性。

3. 在新的 Abaqus/CAE 中运行宏,然后在图形用户界面(GUI)Property 功能

模块的材料管理器中显示刚才定义的材料。