神乎其技!“面向对象“的 ABAQUS PYTHON 二次开发体验
神乎其技!“面向对象”的 ABAQUS PYTHON 二次开发体验
昨天,从“面向对象”的角度带大家鸟瞰 ABAQUS PYTHON 二次开发。采用的例子简单,可能大家领会不到“面向对象编程”的魔力。(“鸟瞰”一文请看https://www.jishulink.com/content/post/441360)
今天这篇文字将紧密结合 ABAQUS/CAE 的脚本运行功能,带领大家一瞥“面向对象编程”的高效和神奇。
长长的命令
接触过 ABAQUS PYTHON 二次开发的朋友,应该对下面这种长长的命令有印象。
mdb.models['Model-1'].parts['Part-1].edges[1] # 代码的含义是:选取Model-1模型中,Part-1部件的序号为1的轮廓线。
在 python 脚本中,可以用 highlight( )、unhighlight( ) 这两个函数将选取的线、面,进行高亮(取消高亮)显示。完整的代码如下:
# 高亮显示序号为1的边 highlight(mdb.models['Model-1'].parts['Part-1].edges[1]) # 取消高亮显示序号为1的边 unhighlight(mdb.models['Model-1'].parts['Part-1].edges[1])
可见代码变得更长了,编写脚本的效率低了,阅读脚本也不够清晰明了。如果采用“面向对象编程”的“封装”技术,情形就会截然不同。
“封装”立方体
用一个“class”(类型)把选取立方体“线”、“面”的操作“封装”起来。python代码如下:
把这段代码保存在名为“script.py“的文本文件中。打开 abaqus/cae ,在 File / Run Script 导入脚本之后,就可以在命令行窗口用简短的命令来高亮显示线和面了。具体的命令如下:
box = box( ) # 实例化封装的类 highlight( box.face(1 ) ) #高亮显示序号为1的面 highlight( box.edge( ) ) #高亮显示序号为0的边
这些命令跟没有封装之前的命令比较,简短了很多,而且意义明确、看起起来清晰明了。可见“面向对象编程”的神奇,实际上这些命令还可以继续优化,变得更加的精简!
极致的“封装“,带来更神奇的效果
前面只把选取线、面的操作“封装“起来。如果将”高亮“、”取消高亮“这两个操作也封装进去,那命令会极致的简化。封装的python 代码如下:
导入脚本之后,在命令行只要输入下面极简的命令就可以实现高亮(取消高亮)显示。
box = box( ) # 实例化封装的类 box.hf( ) #高亮显示序号为0的面 box.uhf( ) # 取消高亮显示序号为0的面 box.he(1) # 高亮显示序号为1的线 box.uhe(1) # 取消高亮显示序号为1的线
现在请再对比一下最开始的命令。相信“面向对象编程“的神奇之处你定能体会到了。
# 最开始的命令 highlight(mdb.models['Model-1'].parts['Part-1].edges[1])