Abaqus二次开发做插件,往往是先开发出内核脚本,再用RSG做对话框,这样在Plug-ins菜单下,就可以随时调用这个插件了。
有时,脚本中并不需要输入参数,这时一般通过File - Run Scrip... 就即可运行。
然而,时间一长,这样的脚本越来越多,还都是英文名,可能会比较乱,不太好找。
能不能把一个内核脚本,也做成一个插件放在Plug-ins菜单栏中呢?
可以的。
思路:
和用RSG做出的对话框插件一样,把内核脚本xxx.py放入到 “工作目录-abaqus_plugins”中,建立一个xxx_plugin.py脚本,在该脚本中添加注册语句。
过程:
我这里有个很简单的内核脚本(createBeam1.py),函数为beam1(),其作用是创建一个梁,每次一运行该脚本,不用输入参数,即可创建一个梁。
想要把这个脚本,作为插件,放置到Abaqus的Plug-ins菜单栏中,跟着以下步骤来操作:
step 1、在工作目录 - abaqus_plugins中,新建一个英文名的文件夹(如createBeam1),把内核脚本拷贝进去
step 2、新建一个py脚本,起名为createBeam1_plugin.py
step 3、在新建的脚本中,输入以下内容:
重启,搞定
这两个脚本在附件中下载。
详解:
toolset = getAFXApp().getAFXMainWindow().getPluginToolset(),可以理解为toolset获得了Abaqus的主窗口的插件工具集的对象,它可以调用注册内核或注册Gui的方法。
注册脚本的作用是把内核脚本注册到主菜单中,它与带对话框的注册脚本类似,不过采用的方法不一样,这里是registerKernelMenuButton,而有对话框的是registerGuiMenuButton。
在帮助文档中,按照以下三个图,可以找到registerKernelMenuButton方法的注解:
说说registerKernelMenuButton方法中,各个参数的意思。
必选参数有三个:
moduleName:脚本名称,比如这里是createBeam1;
functionName:脚本中的函数名称,比如这里是beam1();
buttonText:在菜单中显示的名称,可以为中文,如这里为“创建梁(无参数)”。如果我们希望把该插件,放在下拉菜单中的子菜单中,可以用“|”给隔开,比如”创建梁|创建梁(无参数)”,会有下图的形式。
可选参数有6个:
icon:在下拉菜单中添加一个图标,可以用afxCreateIcon()来创建;
applicableModules:有时我们希望插件只在某一个/几个模块中显示,比如只在mesh模块中出现,则可以使用这个参数。默认为ALL,可选的为“Part”、“Property”、“Assembly”、“Step”、“Interaction”、“Load”、“Mesh”、“Job”、“Visualization”和“Sketch”。要注意的是,在自定义模块时候,需要用列表的形式,如这里的['Part', 'Assembly']
还有几个参数,如version、author、description和helpUrl,则用的很少,就不细述了。
需要注意的是,脚本中这几个参数是每个占一行,但它们之间是需要用“,”逗号隔开的,没有的话会出错。
如此一来,我们日常使用的脚本,无论是带对话框的,还是无对话框的,都可以放入到Plug-ins菜单中,还可以在下拉菜单中创建子菜单项,非常利于我们对脚本的管理。