上节主要介绍了如何在最短时间,完成一个数据验证的方法,那么本篇就其技术原理进行讲解。
针对ABAQUS插件而言,他的文件组成形式如下表所示:
表 1 文件功能说明
文件类型 | 文件功能 |
Kernel | 接收用户在GUI界面输入的参数,在软件后台完成相应操作 |
Plugin | 将每个窗口与内核文件每个参数进行一一绑定,并且完成该插件的注册。(插件不注册将无法使用!!!) |
DB | 定义GUI界面的窗口类型,大小,数据类型,例如文本输入框、选择框、检查框等等 |
首先来看kernel文件,代码如下:
本文件的功能是接收输入的浮点数,后台自动创建一个名为“composite”的材料,并且它的密度是 num,再看plugin文件
首先在从AFXForm这个类生成一个子类,在定义构造函数的时候,需要定义一个主程序,该cmd的功能是将kernel文件中的函数参数导入,便于kernel文件与注册文件进行数据交互。
self.cmd = AFXGuiCommand(mode=self, method='warning',
objectName='warning', registerQuery=False)
本函数的第2,3个参数,method和objectName,即为kernel函数的文件名称和接收参数的函数名,注意,kernel文件可能有多个函数,故此处选择函数需注意,否则内核文件将无法找到相关参数。
再看下述代码:
self.numKw = AFXFloatKeyword(self.cmd, 'num', True)
假设在kernel文件中的函数参数是“XXX”,则此处默认为
self.XXXKw = AFXFloatKeyword(self.cmd, 'XXX', True)
当然,你也可以将self.XXXKw替换为任意一个你想要的参数,此处只不过为了便于阅读代码所致,后面有一个函数AFXFloatKeyword,我们查看一下帮助文档的说明
上述表格翻译成人话就是下面这个:
参数 | 类型 |
命令 | 主程序 |
名称 | 参数明细 |
是否为必选参数 | True 或者 False |
默认值 | 插件启动时,GUI界面默认显示的数值 |
精度 | 默认即可 |
本行代码主要是导入窗体定义文件
接下来回到我们的重点函数----doCustomChecks
self.numKw.getValue()中,self.numKw特指在上文代码定义的功能,getValue的功能是返回该框的默认值,若当前窗体的为空白时返回None!这样达到了获取当前框的数值问题,根据与预先设定的值大小判断,
继续看下面的方法------------- showAFXErrorDialog
这是帮助文档中,关于showAFXErrorDialog的内容,
Argument | Type | Default | Description |
owner | FXWindow | Window over which the dialog box is to be centered. | |
message | String | Text to be displayed in the dialog box. | |
tgt | FXObject | None | Message target. |
sel | Int | 0 | Message ID. |
第一个参数即为当前窗体的定义,默认处理即可,第二个参数为你想要在GUI界面弹出对话框的内容,这里大家根据自己需求随意定制即可,后面2个参数等待后续文章撰写,此处暂且不表。
刚刚上文讲到,输入错误数据的演示方法,那么还有另外一种现实案例,例如用户想输入钢材的材料的弹性模量,一般来说钢材的弹性模量在2e5~2.35e5之间(此处数据仅供说明情况,不深究具体数据正确与否),那么用户如果多或者少输入了一位,变成2e6或者2e4,或是因为误操作,输入8e5,如果用户在错误信息提示方法中规定该处数值的范围的确可以规避此问题,那么如果用户此时采用的钢材是特殊钢材,它的弹性模量就是这么大,使用错误提示方法明显是不可以的,那么怎么解决这个问题呢?
ABAQUS提供另外一种方法警告提示框
showAFXWarningDialog(owner, message, buttonIds=YES|NO|CANCEL, tgt=None, sel=0)
本方法与showAFXErrorDialog一致,前两个参数照前文所述借口,在第3个参数为“buttonIds=YES|NO|CANCEL”,在实际使用中,代码书写方法为:buttonIds=AFXDialog.YES|AFXDialog.NO|AFXDialog.CANCEL,
当用户输入一个弹性模量参数为2E4时,自动弹出一个警告框,告知用户,您输入的弹性模量参数是2E4,确认点“Yes”,若错误则点“No”。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删