首页/文章/ 详情

技高一筹!Abaqus GUI Toolkit二次开发高阶技术训练营开启

1年前浏览2975


导读:大家好,我是陈开伟,仿真秀专栏作者,9年CAE仿真分析从业经验,擅长结构力学仿真和生物力学仿真,同时致力于Abaqus和Hyperworks的二次开发,在仿真秀原创发布有《Abaqus主窗口GUI的二次开发》《Abaqus插件程序GUI的二次开发 初、中级篇》《Abaqus插件程序GUI的二次开发高级篇》《108个Hypermesh二次开发常用命令详解 》基于Python语言Abaqus插件程序GUI二次开发技术训练营31讲等5套视频教程,欢迎朋友们试看。
一、写在文前

一个优秀的Abaqus插件不但要有内核程序,还要有与之匹配的图形用户界面。通常,我们会使用Abaqus RSG制作插件对话框。RSG很易于使用,不过正是过于容易,各个控件的一些功能往往是被限制了,在RSG中无法开启。其实Abaqus提供了Abaqus GUI Toolkit,也就是通常所说的Abaqus GUI二次开发。这些隐藏功能可以通过二次开发打开或调整,以实现我们不同的需求。

Abaqus GUI 二次开发与Abaqus内核二次开发一样,使用的都是Python语言。本篇文章列举6个Abaqus的控件,以说明如何通过代码实现它们更多的功能。

二、Abaqus GUI二次开发,揭秘控件的隐藏功能

下图是一个不含内核程序的对话框,RSG制作而成。它比较简单,包含标签页标签项、分组框、标签、图片、文本框和文件选择对话框等6控件

将该插件保存为Standard plug-in格式,即可获得两个脚本。

以上两个文件,以_plugin结尾的是注册脚本,以DB结尾的是对话框脚本。用代码编辑器打开fangzhenxiuDB.py,便可对对话框脚本进行编辑。以下通过修改代码的方式,对该对话框中的6个控件进行修改和扩展。

1、标签页和标签项控件

标签页FXTabBook是布局的一种,在它的基础上可以创建一组标签项,正如上图中的3个标签项,这些标签项可以自由切换,每个标签页可以容纳很多控件。在脚本中,标签页的构造函数如下图:

其中,参数p是父控件,tgt是消息目标,sel是消息ID,这两个参数是一对搭档,通常成对出现。参数opts是选项,默认值是TABBOOK_NORMAL,表示标签项位于该控件的上方。除此之外,还有几个可用的选项,如表1所示。

表1 FXTabBook的opts参数值

例如,将opts改设为TABBOOK_LEFTTABS和TABBOOK_BOTTOMTABS后,对话框的样式如下面两个图所示。

以上是对标签页控件FXTabBook的位置做更改。不但如此,还可以对标签项FXTabItem做修改,比如在Tab A的前面添加小图标。在脚本中,默认的标签项构造函数为下图,参数ic即为图标,此处为None。

附件中提供了一个像素为18x18的小图标,我们首先用afxCreateIcon()创建一个图标对象,再把该图标赋值为参数ic,修改后的语句如下图。

这样,标签页中会出现一个足球的小图标。

2、分组框控件

分组框FXGroupBox是一种带有灰色边框的容器。对话框中通常用于将几个可以共同实现某一功能的控件进行分组,将这些控件放在同一个分组框内,不仅可以方便地进行管理,还能够让同一分组框内的多个单选按钮自动设为一组,只能同时选中其中的一个。这种方式不会受到放在外部或另一个分组框内的单选按钮的影响。

脚本中,分组框的构造函数如下图。

参数opts默认为FRAME_GROOVE,表示分组框以灰色线条包裹,我们还可以添加为表2中的三个值。

表2 FXGroupBox的opts参数值

例如,将opts设为FRAME_GROOVE|GROUPBOX_TITLE_CENTER后,分组框这三个字会至于中间。

如果没有FRAME_GROOVE,灰色线条将会消失。

3、标签

标签控件FXLabel通常用于在对话框中显示一段文本或图片,用于信息提示等场景。如本对话框中的“你好,仿真秀”以及仿真秀logo都是由FXLabel生成的。

比如,一行“你好,仿真秀”,是由以下构造函数创建的。

文本标签可以有换行和提示的功能。如果想换行,在文本中添加“\n”,例如:

还可以把鼠标停留在标签文字上显示提示信息,可以在文字中添加“\t”,例如

此外,对话框中默认字体其实可以更改为其他字体,修改方式如下图。

再打开对话框,标签文字的字体已经更改为以下格式。

以上语句用FXFont()创建了一个字体对象,其构造函数中参数wt表示字体粗细;sl表示字体倾斜;enc是encoding,表示字体编码;setw是set width,定义字体的宽度;h为hints,表示提示。这些参数的设置较多,具体请参考Abaqus官方文档Abaqus GUI Toolkit Reference Guide中的FXFont函数。

创建完毕后,用标签的setFont()方法,将字体对象用于当前文字,即可将更改字体。

需要注意,并不是所有控件都能设置字体,只有控件对象具有实例方法setFont()才可以更改字体。

4、图片

图片也是用标签控件FXLabel创建,此处创建图片的构造方法为:

此处由于没有文字,所以参数text设为空,如果添加文字,那么文字会自动出现在图片的右侧,例如:

呈现的效果如下图

通过设置FXLabel的参数opts(此处otps采用默认值,没有显示),可以调整文本和图片的位置关系,具体参数值见表3。

表3 FXLabel的opts参数值

例如把opts设为TEXT_BEFORE_ICON,得到的效果如下图

5、文本框

文本框控件AFXTextField是很常用的一种控件,它是由标签和单行输入框组成的。脚本中的构造方法为:

其中,第二个参数ncols表示输入框可完全容纳数字的位数,它决定了输入框的宽度,脚本中设为20。第三个参数labelText为文本标签,表现为文本框左侧的字符串。与标签控件一样,它也可以用“\n”换行,以及“\t”设置光标停留的提示信息。

参数tgt和sel是上面提到过,此处tgt设为form.keyword01Kw,它存在于注册脚本中,它是一种字符串类型的关键字,如下图:

当tgt为字符串类型关键字时,参数sel需设为0。

AFXTextField()也有选项参数opts,用来指定输入框的数据类型和其他作用,常见的类型详见表4。
表4 AFXTextField的opts参数值

例如,参数opts使用AFXTEXTFIELD_CHECKBUTTON时,文本框的前面会有一个复选框按钮,不勾选时无法输入,选中时才可使用,如下图所示。

再比如,参数opts使用AFXTEXTFIELD_READONLY,输入框会被隐藏,文本内容成为不可编辑的标签,如下图所示。

6、文件选择对话框

文件选择对话框控件也十分常用,用于打开或保存文件。这个控件实际是由文本框控件和按钮控件通过水平框架布局组成的。

点击按钮,会弹出一个对话框

脚本中的文件选择对话框控件代码如下图所示:

文件选择对话框控件实现机制比较复杂,除了对话框中的文本框和按钮,它还依靠下图中的类代码。

不过,我们无需去探究它的实现过程,只需要在它的基础上探索被隐藏的功能。

比如,第104-第106行是该控件的构造函数AFXFileSelectorDialog(),其中第106行的AFXSELECTFILE_ANY其实是参数mode的值(默认代码中省略了“mode=”的字样),它表示文件的选择方式。默认情况下,我们只能单选文件,其实通过修改mode的参数值,还可以改为多选文件或选择文件夹,mode的参数值的设置方式如表5所示。

表5 AFXFileSelectorDialog的mode参数值

此外,默认的文件过滤器中是没有限制的,当文件较多时找文件会比较麻烦,我们可以自定义要选择打开的文件类型。

将上面的代码做以下修改,便可以定制我们想要的文件类型,比如只显示.cae、.odb或.inp等格式

默认情况下,当选择.odb文件时,后面的只读复选框处于可以使用的状态,而其他类型的文件则不可用。

如果想要设置选中.cae格式时也让复选框可用,可以修改上述第107的代码为:

这样,只读选项也适用于.cae文件了

以上列举了6个常用控件,它们都由RSG制作出来的,然而RSG并没有完全发挥出它们的全部功能,这些功能需要通过Abaqus GUI二次开发才能实现。除了这6个控件,Abaqus中其他的几乎所有控件都有被隐藏的功能,等待着我们去发掘。

三、AbaqusGUI二次开发技术训练营

近日,我在仿真秀上架了基于Python语言Abaqus插件程序GUI二次开发技术训练营31讲课程中,它详细讲解了Abaqus提供的绝大多数控件的二次开发方法,从代码的角度对它们进行剖析,揭秘它们更多的功能。此外,还课程还列举了7个高级实例,从更高层次灵活运用Abaqus GUI,使我们的Abaqus插件更加高级和完善。

把插件程序做成按钮图标,用到了 Abaqus主窗口GUI的二次开发 和 Abaqus插件程序GUI二次开发的一些内容,都已经收录到我的课程《基于Python语言Abaqus插件程序GUI二次开发技术训练营31讲

1、以下是我的课程安排:

《基于Python语言Abaqus插件程序GUI二次开发技术训练营31讲


可开电子发票,赠送答疑专栏

提供vip群交流,课程可反复回看

识别下方二维码,立即试看

本课程旨在让用户掌握Abaqus GUI Toolkit的使用方法、理解Python面向对象的编程思维、全面掌握用代码创建29种控件的方式,深层挖掘控件的额外功能;掌握各控件需要的8种类型关键字和参数tgt和sel的3种设置方法;并通过7种不同类型的高级GUI实例,深度掌握Abaqus GUI二次开发的方法和技巧。  
本课程适合学习型仿真工程师、对二次开发有兴趣的仿真工程师、企业从事Abaqus仿真的工程师和理工科院校学生进阶学习。笔者为订阅用户提供VIP用户交流群和知识圈答疑服务,并且根据用户需求持续加餐更新。  

2、适合谁看

(1)仿真工程师

(2)高校硕士博士研究生

(3)对二次开发有兴趣的仿真工程师

(4)企业从事Abaqus仿真的工程师  

3、你会得到什么

(1)掌握Abaqus GUI Toolkit的使用方法

(2)理解Python面向对象的编程思维

(3)全面掌握用代码创建29种控件的方式,深层挖掘控件的额外功能

(4)掌握各控件需要的8种类型关键字

(5)掌握参数tgt和sel的3种设置方法

(6)通过7种不同类型的高级GUI实例,深度掌握Abaqus GUI二次开发的方法和技巧

(7)为订阅用户提知VIP群交流,知识圈答疑和课程相关资料,可根据订阅用户群讨论问题酌情免费加餐内容。  

(完)

来源:仿真秀App
Abaqus二次开发电子数控
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-10-25
最近编辑:1年前
仿真圈
技术圈粉 知识付费 学习强国
获赞 10025粉丝 21496文章 3515课程 218
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈