在有限元软件使用过程中,有时候需要二次开发,编写一些脚本,以实现相应的功能。
在不同的软件下,往往对应相应的执行语句,比如hypermesh ,采用的脚本语言是tcl 语言,在使用中既可以通过在命令行中输入"source { ***.tcl}", 或者在菜单栏点击“Edit>Tcl Tk Script" 调用相应的脚本,在abaqus 中,可以在命令行中输入”execfile(**.py),或者点击“File>Run Scripts"
然而,每次使用过程中,使用者都需找到执行脚本的路径,才能执行相应的代码,因而也就都只是适应于单个脚本,对于多个脚本的开发,就有一些捉襟见肘了,通过在软件中新建下拉菜单,根据用户习惯开发相应的功能,让用户通过点击鼠标或者使用快捷键就能调用相应的功能模块,是一件十分有意义的事情。本人通过查阅相应的官方的文档,发现了分别在hypermesh/hyperview/abaqus实现了增加下拉菜单的方法。
1. 相关效果如下:
hypermesh
Hyperview
abaqus
2. 接下来,我将阐述如何实现以上功能。
2.1 hypermesh
hypermesh 在开始启动时候,可以通过在启动目录设定一个名为”hmcustom.tcl“的文件以实现相关功能的定制,相关帮助文档如下:
默认状态下,安装路径(可以通过"pwd"查询安装路径),不存在hmcustom.tcl 文件,因此需要新建该文件。
其中的关键代码是“top_menu [hm_framework getpulldowns] 获得菜单的api" 来操控相关的菜单,进而通过增加菜单来扩充相关的功能。
然而,使用该方法(在安装目录增加hmcustomt.cl 文件的方法)来增加下拉菜单存在一个bug,即在使用过程中当导入新的模板时(比如在使用中导入材料卡片时),该新建菜单会消失,也就是说hmcustom.tcl 今在启动时候执行一次,当菜单栏更新时,hmcustom.tcl 不再执行,因此新建菜单会消失。
解决该问题的方法是在安装目录下新建一个名为”userpage.mac"的文件,通过该文件在Utility 新建一个按钮,本文中姑且命名为“Command",当NewMenu 消失之后点击该按钮,调出新建菜单(本文中的”NemMenu"),且看下图:
userpage.mac也是tcl 语句,通过执行“EvalTclScript hmcustom.tcl"" 来调出菜单栏。
需要注意的是,hmcustom.tcl 和userpage.mac 都需要安装在安装目录,使用者可以通过在命令行中敲下“pwd" 来获得,如上图所示的”C:/Users/hunan/Documents“ 即为安装目录。
2.2 hyperview
hyerview 在菜单栏中增加下拉菜单可以通过修改系统文件preferences.mvw完成。
本人的安装路径在”E:\Program Files\Altair\2018\hw" 目录下,本文的第二张图通过在此文件中增加以下代码完成。
*Id("HyperWorks v17.0")
*BeginDefaults()
*BeginMenu(custom_menu,"NewMenu")
*MenuItem(dummy,"Menu Script1",TCL, "C:/mytcl.tcl")
*Separator()
*BeginMenu(filter_menu1,"Menu Script 2")
*MenuItem(dummy1,"Sub Menu Script 1", TCL,"C:/mysubmenu.tcl")
*EndMenu()
*EndMenu()
2.3 ABAQUS
在ABAQUS 增加下拉菜单的方法比较多,本文仅介绍最简单的一种,即通过 点击”Plug-in>Abaqus >RSG Dialog Builder"的方法通过绑定按钮和相关函数来完成。
用户可以通过绑定可GUI和Kernel 来完成RSG的生成。
安装之后,通过保存相关设置,abaqus 会相应的abaqus_plugins文件,下次打开之后,相应的按钮会出现在plugs-in 菜单栏之下。
通过相应的设置即可分别在hypermesh/hyperview/abaqus 建立相应的下拉菜单,开发者可以借助这些菜单,更方便的集成相关的脚本,而无需每次为查找脚本而烦恼。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删