前言
在上一篇文章中,我们详细讲解了盾构隧道管片结构的基本原理和参数化建模的整体思路。从本文开始,我们将正式进入代码实现阶段。工欲善其事,必先利其器。在开始写代码之前,我们需要先搭建好 abaqus python 二次开发的环境,并掌握脚本的三种运行方式(这是很多初学者最容易卡住的地方)。本文将从环境介绍、ide 配置、基础语法到第一个脚本的编写与运行,一步步带你入门。
重要提示
💡 强烈推荐使用 vs code / pycharm作为你的开发 ide。abaqus 自带的编辑器(abaqus/cae 的 "file -> macro manager" 或直接在 cae 中输入命令)功能非常有限,没有代码补全、语法高亮、调试等功能,开发效率极低。vs code / pycharm 配合 abaqus python 解释器,可以获得几乎和普通 python 开发一样的体验。
⚠️ abaqus 内置的 python 版本是固定的,且不能随意升级。abaqus 2022 对应的 python 版本是 3.8,abaqus 2023 对应的是 3.9,abaqus 2024 对应的是 3.10。请不要尝试使用
pip install安装第三方库到 abaqus 的 python 环境中,除非你非常清楚自己在做什么(可能会破坏 abaqus 的运行环境)。
一、abaqus python 环境介绍
1.1 abaqus 内置 python 解释器
abaqus/cae 和 abaqus/standard/explicit 都内置了 python 解释器,这是我们进行二次开发的基础。
1.1.1 版本对应关系
| abaqus 版本 | 内置 python 版本 | python 解释器路径(默认安装) |
| 2020 | 3.7 | c:\simulia\abaqus\2020\tools\smapy\python3.7\python.exe |
| 2021 | 3.7 | c:\simulia\abaqus\2021\tools\smapy\python3.7\python.exe |
| 2022 | 3.8 | c:\simulia\abaqus\2022\tools\smapy\python3.8\python.exe |
| 2023 | 3.9 | c:\simulia\abaqus\2023\tools\smapy\python3.9\python.exe |
| 2024 | 3.10 | c:\simulia\abaqus\2024\tools\smapy\python3.10\python.exe |
1.1.2验证 python 解释器
打开命令提示符(cmd)或 powershell,输入以下命令(以 abaqus 2022 为例):
"c:\simulia\abaqus\2022\tools\smapy\python3.8\python.exe" --version
如果输出python 3.8.x,说明解释器正常。
1.2 脚本的三种运行方式(核心重点)
abaqus python 脚本有三种运行方式,每种方式适用于不同的场景。请务必掌握这三种方式,特别是命令行运行方式,这是最常用、最高效的方式。
可以使用下述测试代码进行操作学习:
# -*- coding: utf-8 -*-
# 1. 导入必要的模块
from abaqus import *
from abaqusconstants import *
from part import *
from sketch import *
from assembly import *
from material import *
from section import *
import os
mymodel = mdb.model(name='cubemodel')
if 'model-1' in mdb.models:
del mdb.models['model-1']
cube_size = 10.0
mysketch = mymodel.constrainedsketch(name='cubesketch', sheetsize=20.0)
mysketch.rectangle(point1=(-cube_size/2, -cube_size/2),
point2=(cube_size/2, cube_size/2))
mypart = mymodel.part(name='cubepart', dimensionality=three_d, type=deformable_body)
mypart.basesolidextrude(sketch=mysketch, depth=cube_size)方式一:在 abaqus/cae 中运行(适合调试和可视化)
这种方式可以在 cae 界面中直接看到脚本的执行效果,适合调试和需要可视化的场景。
详细操作步骤:
- 打开 abaqus/cae
- 点击菜单栏
file -> run script...(或按快捷键f3) - 在弹出的文件选择对话框中,选择你的 python 脚本文件(
.py) - 点击 "ok",脚本将在 cae 中运行
- 你可以在 cae 的主窗口中看到模型的生成过程,在下方的 "message area" 中看到输出信息


优缺点:
- ✅ 优点:可以实时看到模型,便于调试和可视化
- ❌ 缺点:运行速度较慢,cae 界面可能会卡顿,不适合批量运行
方式二:命令行运行(最常用,推荐)
这种方式通过命令行调用 abaqus 的 python 解释器运行脚本,无需打开 cae 界面,运行速度快,适合批量处理。
详细操作步骤:
1.打开命令提示符(cmd)或 powershell
2.切换到你的脚本所在的目录(例如脚本在d:\abaqusscripts):
d: cd abaqusscripts
3.使用以下命令运行脚本:
abaqus cae nogui=your_script.py
注意:如果
abaqus命令不在系统 path 中)则使用"c:\simulia\abaqus\2022\win_b64\code\bin\abaqus.exe" cae nogui=your_script.py
命令参数详解:
abaqus:调用 abaqus 主程序cae:指定使用 abaqus/cae 环境nogui=your_script.py:不打开 cae 图形界面,直接运行your_script.py脚本
重要技巧:保存日志文件为了方便调试,建议将运行日志保存到文件中:
abaqus cae nogui=your_script.py > log.txt 2>&1
这样所有的输出信息(包括错误信息)都会保存到log.txt文件中。
优缺点:
- ✅ 优点:运行速度快,无需打开 cae,适合批量运行
- ✅ 优点:可以通过日志文件查看运行信息,便于调试
- ❌ 缺点:无法实时看到模型,需要在脚本中添加保存模型的代码
方式三:批处理运行(适合批量处理多个脚本)
如果你需要一次性运行多个脚本,或者需要定期运行脚本,可以使用批处理文件(.bat)。
详细操作步骤:
- 新建一个文本文件,重命名为
run_all.bat - 在文件中输入以下内容(以 abaqus 2022 为例):
@echo off echo 开始运行abaqus脚本... :: 设置abaqus路径(根据你的安装路径修改) set abaqus_path=c:\simulia\abaqus\2022\win_b64\code\bin :: 切换到脚本目录 d: cd abaqusscripts :: 运行第一个脚本 echo 运行script1.py... %abaqus_path%\abaqus.exe cae nogui=script1.py > log1.txt 2>&1 :: 运行第二个脚本 echo 运行script2.py... %abaqus_path%\abaqus.exe cae nogui=script2.py > log2.txt 2>&1 echo 所有脚本运行完成! pause
3. 保存文件,双击run_all.bat即可运行
优缺点:
- ✅ 优点:可以一次性运行多个脚本,适合批量处理
- ✅ 优点:可以设置定时任务,自动运行
- ❌ 缺点:需要编写批处理文件,调试相对麻烦
二、vs code 开发环境配置
2.1 安装 vs code
- 访问 vs code 官网:https://code.visualstudio.com/
- 下载 windows 版本的安装包
- 双击安装包,按照提示完成安装(建议勾选 "add to path" 选项)
2.2 安装 python 扩展
- 打开 vs code
- 点击左侧的 "扩展" 图标(或按快捷键
ctrl+shift+x) - 在搜索框中输入 "python"
- 找到 microsoft 官方的 "python" 扩展,点击 "install" 安装
2.3 配置 abaqus python 解释器
- 在 vs code 中打开你的脚本文件夹(
file -> open folder) - 新建一个 python 文件(例如
test.py) - 点击 vs code 右下角的 "python 版本号"(例如 "3.11.4")
- 在弹出的菜单中选择 "enter interpreter path..."
- 点击 "find...",浏览到你的 abaqus python 解释器路径(例如
c:\simulia\abaqus\2022\tools\smapy\python3.8\python.exe) - 选择该解释器,vs code 会自动配置
2.4 配置代码补全(可选但推荐)
abaqus 的 python 库(abaqus、abaqusconstants等)没有官方的类型提示,代码补全可能不太完善。我们可以通过以下方式改善:
- 在 vs code 设置中(
ctrl+,),搜索 "python.analysis.extrapaths" - 点击 "edit in settings.json"
- 添加 abaqus 库的路径:
{
"python.analysis.extrapaths": [
"c:\\simulia\\abaqus\\2022\\win_b64\\code\\python2.7\\lib",
"c:\\simulia\\abaqus\\2022\\win_b64\\code\\python2.7\\lib\\abaqus",
"c:\\simulia\\abaqus\\2022\\win_b64\\code\\python2.7\\lib\\abaqusconstants"
]
}(注意:路径中的反斜杠需要转义,即\\)
三、abaqus python 核心语法基础
3.1 模型数据库(mdb)的结构
abaqus python 脚本的核心是操作模型数据库(model database, mdb)。mdb 的结构如下:
mdb (model database) ├── models (模型集合) │ └── 'model-1' (默认模型) │ ├── parts (部件集合) │ ├── materials (材料集合) │ ├── sections (截面集合) │ ├── assemblies (装配集合) │ ├── steps (分析步集合) │ └── ... └── jobs (作业集合)
基本操作示例:
from abaqus import * from abaqusconstants import * # 创建一个新模型 mymodel = mdb.model(name='mytunnelmodel') # 删除默认模型(可选) # 这一步一定要在创建模型之后,因为abaqus必须要保留一个模型 del mdb.models['model-1'] # 创建一个部件 mypart = mymodel.part(name='singlering', dimensionality=three_d, type=deformable_body)
3.2 坐标系与几何操作
abaqus 使用右手笛卡尔坐标系,默认情况下:
- x 轴:水平向右
- y 轴:垂直向上
- z 轴:垂直于屏幕向外(隧道轴线方向通常设为 z 轴)
基本几何操作示例:
from part import * from sketch import * # 创建一个草图 mysketch = mymodel.constrainedsketch(name='tunnelsketch', sheetsize=20.0) # 绘制一个圆(圆心在(0,0),半径6.0) mysketch.circlebycenterperimeter(center=(0.0, 0.0), point1=(6.0, 0.0)) # 绘制一条直线(从(0,0)到(6.0, 0.0)) mysketch.line(point1=(0.0, 0.0), point2=(6.0, 0.0)) # 拉伸草图为实体(拉伸长度1.5) mypart.basesolidextrude(sketch=mysketch, depth=1.5)
3.3 常用对象的引用方式
abaqus python 中有两种常用的对象引用方式:
方式一:按名称引用
# 引用名为'mytunnelmodel'的模型 mymodel = mdb.models['mytunnelmodel'] # 引用名为'singlering'的部件 mypart = mymodel.parts['singlering'] # 引用名为'instance-1'的实例 myinstance = mymodel.rootassembly.instances['instance-1']
方式二:按索引引用
# 引用第一个模型 mymodel = mdb.models.values()[0] # 引用第一个部件 mypart = mymodel.parts.values()[0]
推荐使用按名称引用,因为索引可能会随着对象的添加或删除而变化,名称更稳定。
3.4 日志文件(.rpy)的使用技巧
abaqus/cae 会自动记录你在 gui 中的所有操作,并保存为 ** replay 文件(.rpy)**。这是学习 abaqus python 的最佳工具!
详细使用步骤:
- 打开 abaqus/cae,进行一些操作(例如创建一个立方体)
- 关闭 abaqus/cae
- 在你的工作目录中找到
abaqus.rpy文件(默认在c:\users\你的用户名\或当前工作目录) - 用文本编辑器或 vs code 打开这个文件
- 你会看到 abaqus 自动生成的 python 代码,对应你刚才的 gui 操作
重要提示:
.rpy文件中的代码可以直接复制到你的脚本中使用- 但
.rpy文件中的代码通常比较冗长,你可以进行精简和优化 - 这是学习 abaqus python api 的最快方法:先在 gui 中操作一遍,然后看
.rpy文件中的代码
四、第一个 abaqus python 脚本:创建一个立方体
现在我们来写第一个完整的 abaqus python 脚本,创建一个立方体,并演示如何用三种方式运行它。
4.1 完整脚本代码
新建一个文件create_cube.py,输入以下代码:
# -*- coding: utf-8 -*-
# 1. 导入必要的模块
from abaqus import *
from abaqusconstants import *
from part import *
from sketch import *
from assembly import *
from material import *
from section import *
import os
# 创建新模型
mymodel = mdb.model(name='cubemodel')
print('✅ 模型创建成功:cubemodel')
# 2. 创建模型数据库
# 删除默认模型(如果存在)
if 'model-1' in mdb.models:
del mdb.models['model-1']
# 3. 定义参数
cube_size = 10.0 # 立方体边长(mm)
material_name = 'steel'
youngs_modulus = 210000.0 # 弹性模量(mpa)
poissons_ratio = 0.3 # 泊松比
# 4. 创建草图
# 创建草图平面
mysketch = mymodel.constrainedsketch(name='cubesketch', sheetsize=20.0)
# 绘制正方形(从(-5,-5)到(5,5))
mysketch.rectangle(point1=(-cube_size/2, -cube_size/2),
point2=(cube_size/2, cube_size/2))
print('✅ 草图创建成功')
# 5. 创建部件
# 创建三维可变形部件
mypart = mymodel.part(name='cubepart', dimensionality=three_d, type=deformable_body)
# 拉伸草图为实体(拉伸长度等于立方体边长)
mypart.basesolidextrude(sketch=mysketch, depth=cube_size)
print('✅ 部件创建成功:cubepart')
# 6. 定义材料
mymaterial = mymodel.material(name=material_name)
mymaterial.elastic(table=((youngs_modulus, poissons_ratio), ))
print('✅ 材料定义成功:%s' % material_name)
# 7. 创建截面并赋予部件
# 创建实体截面
mysection = mymodel.homogeneoussolidsection(name='cubesection',
material=material_name,
thickness=none)
# 将截面赋予部件
region = (mypart.cells,)
mypart.sectionassignment(region=region, sectionname='cubesection')
print('✅ 截面赋予成功')
# 8. 装配模型
myassembly = mymodel.rootassembly
myinstance = myassembly.instance(name='cubeinstance', part=mypart, dependent=on)
print('✅ 装配成功')4.2 运行脚本的三种方式演示
现在我们用刚才学的三种方式来运行这个脚本。
演示一:在 abaqus/cae 中运行
- 打开 abaqus/cae
- 按
f3或点击file -> run script... - 选择
create_cube.py - 点击 "ok"
- 你会看到 cae 自动创建了一个立方体模型
- 查看下方的 "message area",可以看到我们打印的输出信息
演示二:命令行运行(推荐)
- 打开 cmd 或 powershell
- 切换到脚本所在目录
- 运行以下命令
- 等待运行完成(通常几秒钟)
- 你会发现目录中生成了
cube_model.cae文件 - 用 abaqus/cae 打开这个文件,可以看到创建好的立方体模型
d: cd abaqusscripts abaqus cae nogui=create_cube.py
演示三:批处理运行
- 新建一个
run_cube.bat文件,输入以下内容: - 双击
run_cube.bat - 等待运行完成
- 查看
cube_log.txt文件,可以看到运行日志 - 打开
cube_model.cae文件,查看模型
@echo off echo 开始运行创建立方体的脚本... :: 切换到脚本目录(根据你的实际路径修改) d: cd abaqusscripts :: 运行脚本并保存日志 abaqus cae nogui=create_cube.py > cube_log.txt 2>&1 echo 脚本运行完成!请查看cube_log.txt和cube_model.cae pause
总结
本文详细讲解了 abaqus python 二次开发的环境搭建,包括 abaqus 内置 python 解释器的介绍、脚本的三种运行方式(cae 中运行、命令行运行、批处理运行)(这是本文的核心重点),以及 vs code 开发环境的配置。
同时,我们也介绍了 abaqus python 的核心语法基础,包括 mdb 的结构、坐标系与几何操作、对象引用方式,以及.rpy日志文件的使用技巧。最后,我们通过一个完整的创建立方体的脚本,演示了如何用三种方式运行脚本。
通过本文的学习,你应该已经能够搭建好自己的开发环境,并熟练掌握脚本的三种运行方式了。下一篇我们将正式开始盾构隧道的建模,首先讲解参数定义与单环管片轮廓的生成。
到此这篇关于abaqus python二次开发环境搭建与基础语法的文章就介绍到这了,更多相关abaqus python二次开发内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论