ANSA中快速调用脚本的5种方法
本文摘要(由AI生成):
本文介绍了在ANSA中快速调用脚本的五种方法,包括通过Script Editor调用、通过Load Script调用脚本、创建固定按钮调用脚本、设置一级菜单按钮以及为按钮设置快捷方式。文章详细解释了每种方法的操作步骤和注意事项,并强调了自定义功能按钮的便捷性和实用性。通过本文的介绍,读者可以更加高效地利用ANSA进行工程分析和设计,提高工作效率。
大家好,我是团长。
本期介绍下当我们有现成的脚本或者程序后,我们如何在ANSA中调用它们,按照调用的便捷程度,团长总结出5中方法以供大家学习和参考。
我们拿上一期文章中的用到的根据名称识别Property后修改零件厚度的脚本来说事。我们保存好的脚本名为:change-Thickness.py(想看上一期的内容,可以关注团长的微 信公众 号【CAEer】,订阅所有相关文章)通过Script Editor调用
通过Script Editor界面的File --> Open --> Select files --> Open 选择已经准备好的脚本文件并打开。
打开的文件会出现在当前界面,只需要按键盘上的【F5】或者点击Editor的Run按钮,就能运行当前的文件中的程序。
这种运行脚本的方式有利有弊。好处是能自由修改脚本,坏处则是运行脚本的路径有点长,每次运行都要经过漫长的点击找到这个脚本来运行,而且容易不小心更改掉脚本的内容。所以如果知识单纯的想要调用脚本,是不太建议这中方式的。通过【Load Script】调用脚本
通过ANSA界面上方的工具栏找到Script --> Load Script选项,选择要加载的脚本,双击可直接运行。
运行完成后,我们查看Property信息,可见包含【PART】关键字的PSHELL的厚度已经被修改。同时,脚本运行的信息(主要为print的内容)会显示在ANSA界面左下角的info栏。
上述的方式不会打开具体的脚本内容,杜绝了误改脚本的可能性。但是这个方法貌似也并没有方便多少,因为还是要找到脚本所在地,双击来执行脚本。但是的但是,这个脚本被加载过一次,机会被记住哦,下次只需要点击【Reload All】即可快速在此执行,如下所示。如果担心【Reload All】一下子不分青红皂白把所有脚本都执行一遍(毕竟load的脚本都会记忆在这里),那么你可以选择【Run function】,这样呢,你可以选择性的去执行你想运行某个函数。
好了,这种方法从便捷性来将已经比方式1好了很多了,但还是有些不便性,一个是去加载这个脚本需要制定路径,另一个是ANSA关掉后再打开,这个路径又需要重新去指定。为了解决这个麻烦,我们接下来介绍方式3。
创建【固定按钮】调用脚本
怎么样在ANSA的操作界面中创造出一个按钮,要使用的按钮,每次点击一下就可以调用出来呢?这里就要介绍到ansa的User Script Buttons功能了。可以通过以下方式打开,点击自己设定的按钮,就可以了。
可问题是,怎么在这个窗口创造出来自己需要的按钮呢?
这个就要用到ansa的一个自定义文件了,其名为【ANSA_TRANSL.py】,其路径也必须在ansa的安装路径下,一般来讲ansa在启动时就会自动打开该路径下的该文件,检索里面的用户自定义程序,以按钮的形式显示在ansa界面中。这个路径很关键,文件的名字也很关键,两者都正确,才能正确调用,如果没有名为【ANSA_TRANSL.py】的文件,则需用户自己创建一个同名文件。这里展示下我的电脑上的文件路径名。为了更好得演示调用脚本的效果,我们将原本要调用的脚本【change-Thickness.py】进行改造。主要更改是将原本定义的函数复 制出一个,一个用来把厚度改为2,一个用来把厚度改为3。其内容如下所示。
import ansafrom ansa import basefrom ansa import constantsdef thickness2(): props = base.CollectEntities(constants.NASTRAN, None, "__PROPERTIES__")#print("props:",props)for prop in props: print("PID: ", prop._id) propName = prop._name print("propName: ", propName) propName.find("PART")if propName.find("PART") == 0: print("[PART] Found!!!") propType = prop.ansa_type(constants.NASTRAN)if propType == "PSHELL": print("[PSHELL] Found!!!") vals = {'T': 2} changeStatus=base.SetEntityCardValues(constants.NASTRAN, prop, vals)if changeStatus == 0: print("the thickness is changed.")def thickness3(): props = base.CollectEntities(constants.NASTRAN, None, "__PROPERTIES__")#print("props:",props)for prop in props: print("PID: ", prop._id) propName = prop._name print("propName: ", propName) propName.find("PART")if propName.find("PART") == 0: print("[PART] Found!!!") propType = prop.ansa_type(constants.NASTRAN)if propType == "PSHELL": print("[PSHELL] Found!!!") vals = {'T': 3} changeStatus=base.SetEntityCardValues(constants.NASTRAN, prop, vals)if changeStatus == 0: print("the thickness is changed.")
然后,我们在【ANSA_TRANSL.py】文件中写入以下内容。
import ansafrom ansa import betascript@ansa.session.defbutton('TuanZhang','Thickness=2')def ssss(): betascript.LoadExecuteFunc('F:/ANSA-files/test/test_scripts/change-Thickness.py', 'thickness2')@ansa.session.defbutton('TuanZhang','Thickness=3')def dddd(): betascript.LoadExecuteFunc('F:/ANSA-files/test/test_scripts/change-Thickness.py', 'thickness3')
重新打开ANSA,我们发现Script Buttons处出现如下两个按钮。通过以下的比对我们就能发现【ANSA_TRANSL.py】中几处变量各代表什么。照葫芦画瓢,我们可以照这个格式加入我们想加入的任何自定义的功能。不过团长仍然嫌弃这个路径有点长,毕竟点击【Script】--> 【User Script Buttons】 --> 打开界面 --> 【按钮】,至少需要点击三次,而且如果自己创建的脚本按钮太多(如下所示),到时候打开也得找半天,依然比较费事。所以有没有一种方法,将自己最常用的功能做一个类似于ANSA自带的图形按钮放在最顶端,一下就能点到它呢?
一级菜单按钮
大家都知道ANSA比Hypermesh快的一大原因就是ANSA的一级菜单系统,很多功能只需要点击一次就能实现,接下来,我们来看下,我们怎么自己造一个一级菜单的功能按钮出来。
我们在步骤3的基础上,继续下一步。找到设置栏,如下所示,定位到User Script,在右侧的空白界面右键新建Toolbar。然后将自己希望设置的按钮功能拖到新建的Toolbar上。按【OK】键退出后,我们会发现这个功能按钮出现在ANSA的界面上。回到上一步的参数设置,如下所示,各个参数代表什么意思呢?
如此,我们便设置了一个图标按钮来快速调用自定义的命令。需要注意的是,为了每次打开ansa都有这个图标按钮,需要对之前的设置进行保存。
按钮的快捷方式
还有比方法4更快捷的方法,答案就在方法4中,我们还可以对这个快捷方式设置一个快捷方式,如此一来,连鼠标点击都省了。
设置好自己喜欢的快捷方式,按【OK】键确认,回到ANSA界面,直接键盘上敲击自己设置的快捷方式,该命令即可立刻被执行。