首页/文章/ 详情

不用重启Abaqus也能调试插件GUI

1年前浏览7598

拷贝做过Abaqus二次开发的人都知道,Plug-ins菜单下的RSG对话框生成器,能很方便地生成插件程序对话框。对话框制作好之后,如保存为standard plug-in格式,则能自动转为Abaqus Gui toolkit脚本。虽然不能再用RSG对话框生成器进行编辑,但这种代码才是二次开发的语言,我们可以修改成更高级的对话框GUI。

而在对插件程序GUI做二次开发时,每当代码有更改,想要查看修改后的界面,必须要重启Abaqus,随着调试次数的增多,以及版本提升造成的打开缓慢,一次次打开Abaqus会显得不胜其烦,不知不觉会产生焦虑感。

我们改完脚本后,有没有什么方法,不用重新打开Abaqus,也能立刻显示对话框更改后的界面呢?

当然是有的。

其实帮助文档中,已经提供了一个方法。

打开帮助文档(版本6.14)中的 Abaqus GUI Toolkit User's Guide

1.png

点击 2.4 Running the prototype application

2.png

帮助中提示我们可以用二次开发的方法,即使不用重启Abaqus ,也能立刻看到效果。首先去”SIMULIA Learning Community“去下载一个附件。

3.png

下载需要注册账号,我已经下载好了,大家可以在附件中下载(解压后的prototypeApp.zip)


附件解压缩后,是6个脚本:

4.png

帮助中并没有阐述下一步该怎么做,我来说明一下接下来该如何设置。

先来解释一下这6个脚本的作用:

1、appIcons.py,打开后是大大的F和D字母,它能作为xpm格式,通过FXXPMIcon()构造方法创建图标

2、prototypeApp.py,启动脚本,它能创建并打开Abaqus应用程序。这个脚本的代码格式是固定的。

3、prototypeMainWindow.py,它是主窗口脚本,负责Abaqus自带工具集和自定义工具集的注册,以及自带模块和自定义的注册。工具集和模块中都分别包括了菜单、工具条、工具箱和树。这个脚本中,除了注册了常见的工具集和模块,还单独注册一个自定义的工具集:PrototypeToolsetGui,并把这个工具集放置在菜单和工具箱中。

4、prototypeToolsetGui.py,自定义的工具集。这个脚本能够新建图标按钮F和D,把这两个图标通过映射的方式,与自定义的插件程序做关联。

5、testDB.py,对话框脚本,我们通过RSG对话框生成器做出来的插件对话框,用standard-in格式保存后,能自动生成这个脚本。

6、testForm.py,Form模式脚本,作用是用来收集从对话框中输入的信息。这个脚本能调用对话框脚本。它也能通过RSG对话框生成器自动生成,只不过生成的名称是test_plugin.py。这里之所以要改名为testForm.py,是因为有两种模式,一种是Form模式,还有一种是Procedure模式,在做二次开发时,为了便于区分,把自动生成的_plugin改为了Form。除了改名之外,还必须删除自动生成的脚本中最后几行注册代码。

 这6个脚本有两个作用:

一是能将Plug-ins菜单中的某个插件程序,转为左侧工具箱中的F和D图标按钮。(为什么要转为两个图标,下文讲解)

二是以往我们通过脚本修改插件程序后,必须重启Abaqus,才能看到改后的效果。而现在不用重启Abaqus主窗口,只要重新打开对话框,就能立刻看到改后的界面,等待时的焦虑感瞬间扫光。

这几个脚本毕竟只是个模板,怎么用于我们自己的插件程序呢?

我已经在社区下载脚本的基础上,做好另一套脚本,可以直接打开Abaqus,保留了F和D图标按钮,并也能实现即时查看更改后的对话框功能。大家可以在下方附件免费下载(解压后的New Abaqus.rar)。


下载后解压缩,打开文件夹。

5.png

双击”startup.bat“,能打开Abaqus/CAE主窗口。

在主窗口的左侧,工具箱中有很醒目的F和D,F表示Form,D表示Dialogbox。

6.png

点击D,弹出一个自定义的插件(我做的很简单的插件,仅做演示用),点击OK可生成一个梁。

7.png

我们来做个演示,查看即时更改的功能:

用脚本编译器打开beamCreateDB.py,把对话框脚本做一些更改。为了不出现语法错误,建议只改 ' ' 中的字符串。这里比如:把34行的 'Dimension' 改为 '尺寸:' ,改后保存。

把对话框关闭后,点击“D”,可以发现对话框立刻做了更改。

8.gif


同样,打开beamCreateForm.py,这个脚本是收集在对话框输入的数据。比如将第28行的40改为150,保存。

先点击”F”,再点击”D”,会发现length的默认值从之前的40,改为了150。

这里的”F”对应的是Form模式脚本,它负责创建关键字,并启动对话框脚本,自己也带有默认值。

9.gif


如果对控件代码有所了解,可以直接添加控件语句:

10.gif


这套脚本是通用的,大家可以把自己的插件程序用于这套脚本上,按照以下步骤更改:

Step 1、在RSG中把插件对话框保存为standard plug-in格式,一般是3个脚本文件+图片。假设内核脚本名称是abc.py,另外两个脚本就是abcDB.py和abc_plugin.py。

Step 2、把这3个脚本文件和图片,全部拷贝到My Abaqus文件夹下。

Step 3、把abc_plugin.py,改名为abcForm.py

Step 4、打开刚改完名的abcForm.py脚本,做如下三处修改:

1)把定义的类名改为abcForm(一般在第10行),可参考beamCreateForm.py第15行,注意第一个字母大写,如下图

11-0.png

2)找到实例方法getFirstDialog(),在import abcDB语句后面增加一行:reload(abcDB)。具体可参考beamCreateForm.py脚本的第40行,如下图

11.png

3)删除(或注释)最后的几行注册语句,如下图。其余不变,保存。

16.png


Step 5、打开myToolsetGui.py脚本,做如下修改:

1)把第8行改为:import abcForm 

12.png

2)第24行改为:self.form = abcForm.AbcForm(self) ,注意后面的AbcForm是类名,”A“是大写的

13.png

3)第38行,改为:reload(abcForm)

4)第39行,改为:self.form = abcForm.AbcForm(self) ,与第24行一样 

14.png

5)第45行,改为:return 'import abc'

15.png

更改完毕。

 大家试一试,是不是可以点击D按钮打开插件呢?还可以试试更改脚本,体验实时更新对话框吧。


把插件程序做成按钮图标,用到了 Abaqus主窗口GUI的二次开发 和 Abaqus插件程序GUI二次开发 的一些内容,前者在我的课程《基于Python语言Abaqus插件程序GUI二次开发技术训练营31讲》中有全套讲解(点击图片试看)。

长图850.jpg

回到主题,不用重启Abaqus就能即时打开更改后的对话框,是如何实现的呢?其实不难理解,大家一定观察到了,在myToolsetGui.py和beamCreateForm.py这两个脚本中有用了reload()方法。

在myToolsetGui.py中,在第38行增加了reload(testForm)。它的作用是重新加载testForm模块,这个模块已经与F字母按钮做了映射。当我们修改脚本后,再次点击F字母时,就已经重新加载了testForm模块,打开的是新的模式脚本。

同样,testForm.py中,第40行增加了reload(testDB)。它能重新加载testDB模块,这个模块是对话框脚本,已经与D字母做了映射。当我们修改对话框脚本后,再次点击D字母,脚本已经重新被加载,打开的是新的对话框。也就实现了不用重启Abaqus,也能实时看到更改后的界面。

 小结一下:我们并不能直接修改Plug-ins菜单下的插件程序,而是绕了一个弯,通过自定义Abaqus主窗口的方式,把Plug-ins菜单下的插件程序与两个图标按钮做关联,并做适当修改,同时注册到工具箱中,就能在修改后实时查看插件程序的界面了。需要修改两个脚本,一是 _plugins脚本,二是myToolsetGui脚本,分别都要添加reload()方法,通过重新加载Form脚本和对话框脚本的方式,来实现即时查看更改的目的。

 

做这两个按钮的好处,就是方便对插件对话框的GUI做更改。

为什么要对对话框的GUI做更改呢?

RSG对话框生成器中自带的控件,确实可以做出简单的对话框,但也就只能做简单的对话框了。因为几乎每个RSG提供的控件中的功能接口都很少,大量的功能接口被隐藏了,还有一些控件用RSG是做不出来的。无论是控件的隐藏功能,还是做不出来的控件,想要使用它们,都必须以脚本的形式开发出来。

而在开发过程中,需要一次次的调试,如果每次调式都伴随着重启Abaqus,那是一件很头疼的事。所以如果有不用重启就能打开调式后的对话框的方法,使用起来则很痛快。


附件

免费本文章的附件.rar
Abaqus二次开发通用
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-10-06
最近编辑:1年前
陈开伟
硕士 Abaqus和HW二次开发
获赞 55粉丝 88文章 7课程 5
点赞
收藏
作者推荐
未登录
1条评论
仿真经纪人
知识付费让生活更加美好
1年前
666
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈