不用重启Abaqus,手把手教你快速调试插件程序GUI

做过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

下载需要注册账号,我已经下载好了,贴在下方,大家可以下载:

不用重启Abaqus,手把手教你快速调试插件程序GUI的图4prototypeApp.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图标按钮,并也能实现即时查看更改后的对话框功能。大家可以在下方附件免费下载。

不用重启Abaqus,手把手教你快速调试插件程序GUI的图6New 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二次开发 的一些内容,前者在我的课程《Abaqus主窗口GUI的二次开发》中有全套讲解。

关于Abaqus主窗口GUI的二次开发的介绍,也可以看帖子《除了内核程序,Abaqus还能这样做二次开发》

 

回到主题,不用重启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,那是一件很头疼的事。所以如果有不用重启就能打开调式后的对话框的方法,使用起来则很痛快。

推出我的第二套课程:《Abaqus插件程序GUI的二次开发  初、中级篇》

课程一共21讲,从脚本的角度,全面讲解了RSG自带的22种控件,以及没包含的7种控件,共计29种控件,此外,还讲解了注册脚本中的8种类型关键字。课程以脚本的方式,不只是讲解如何创建控件,更多的是挖掘控件被隐藏的功能,从而做出更丰富、更实用的插件对话框。

课程第一讲,也有设置F和D两个图标按钮的演示,欢迎观看。


Abaqus GUI二次开发三部曲:

Abaqus 主窗口GUI的二次开发

Abaqus插件程序GUI的二次开发 初、中级篇

Abaqus插件程序GUI的二次开发 高级篇

ABAQUS二次开发Abaqus GUI程序开发Python编程软件二次开发ABAQUS

不用重启Abaqus,手把手教你快速调试插件程序GUI的评论11条

  • 开学
    2
    其实在原文档中,官方给出了使用方法。方法是:解压文件夹,并在文件夹里按住shift并电机鼠标右键(在此处打开cmd shell),然后命令行输入命令abaqus cae -custom prototypeApp -noStartup,会生成一个自定义的abaqus界面,然后就能用FD图标了。当然楼主的做法也是不错的。
  • 石头_锻造
    1
    reload()针对的是module,或是python文件,如果把db和form写在一起怎么办? kernel如果变更,如何在不重启的情况再体现变更?

不用重启Abaqus,手把手教你快速调试插件程序GUI的相关案例教程

前言 Python具有以下特点。Python语言是一种动态解释型编程语言,其功能强大,简单易学,支持面向对象编程((object-oriented programming),虽然由于其动态性致使程序解释执行速度比编译语言慢,但是随着Python语言的不断优化以及计算机硬件的迅猛发展,Python语言将会受到越来越多用户的关注。Python具有开源、自由等特征。它的简洁性和易用性使程序的开发过程变得
以ABAQUS自带的带孔平板为例,详细说明整个插件程序的实现过程,即使是新手也能轻松掌握。 一、python建模 1、辅助程序PythonReader: 在ABAQUS CAE中的每一个菜单或按钮操作都是被解释为Python语句,然后才提交上去。而这些Python语句被适时地保存在工作目录(/temp)下的abaqus.rpy文件中,PythonRead程序会适时的读取abaqus.rpy文件,以
实际工作中始终研究某类对象或者研究对象的某一固定属性时,可以创建相关插件,提高有限元分析效率。自定义插件可用作快速建模,也可用作模型后处理。接下来介绍一种简单的插件制作(利用RSG对话框制作插件)。 本次案例将带大家制作一个长方体板,输入所需参数,即可快速生成。如图所示: 先在abaqus中建成模型,退出,不必保存。修改与之对应的.rpy文件名,生成.py文件。 在代码编辑器(推荐Sublime
在有限元软件使用过程中,有时候需要二次开发,编写一些脚本,以实现相应的功能。在不同的软件下,往往对应相应的执行语句,比如hypermesh ,采用的脚本语言是tcl 语言,在使用中既可以通过在命令行中输入"source { ***.tcl}", 或者在菜单栏点击“Edit>Tcl Tk Script" 调用相应的脚本,在abaqus 中,可以在命令行中输入”execfile(**.py),或者点击
一款可以上手的实例,讲解整个RSG插件的强大地方,避免重复工作。 如上图所示,圆柱电芯建模和阵列所有尺寸都列出,其中R 圆柱半径、L 圆柱长度、Numx x方向阵列数、Numy y方向阵列数量、DistanceX x方向阵列距离,其它部分为创建材料,分析类型,接触类型,载荷工况,网格划分,提交作业。 另外,还附带DB和plugin文件,写上一个icon进行,p.py文件将三个文件输出pyc加密文件
硕士/CAE工程师
影响力
粉丝
内容
获赞
收藏
    项目客服
    培训客服
    14 41