前面的文章中,我们介绍了ANSYS中关于ACT二次开发时插件的文件组成,对于脚本格式而言,主要有两种文件组成,XML文件+PY文件,其中XML存储界面设计逻辑,PY文件则存储相应的逻辑相应函数,详见此篇文章内容:
ANSYS ACT 格式及文件组成如何?
https://fscae.com/7311/
对于PY文件,由于采用的是Python语言,很多同学能快速掌握,而对于XML文件,部分同学可能对其语法感到比较陌生,本文就略微介绍下XML文件的语法。
XML文件格式类似通用语言HTML,其主要有各项标签组成,每个标签代表不同的意思。
常见的语法规则如下:
1、标签
标签通过<Element>与</Element>符号成对出现,标签之间可以无限嵌套使用,XML文件对缩进无特别要求,但水哥建议学员在编写过程中要有意进行不同层次标签的缩进,方便后续查阅,例如:
<extension version="1" name="UserSpect">
<guid shortid="UserSpect">f79510c6-7dd3-467e-af04-91f63edd688f</guid>
</extension>
上述代码体现了两个标签extension以及guid。
2、标签属性
对于部分标签,用户需要指定其属性值,常见的属性值如名称,描述,默认值等,标签属性一般紧跟标签名称后面,采用属性类型等于的形式给出,属性值需要采用双引号引用,例如上述代码中就规定了extension这个标签里面version的属性值为1,也即规定插件版本号为1,name的属性值为UserSpect,也即规定插件的名称为UserSpect。
不同标签其涵盖的属性以及回调函数都不同,具体可查看官方Help的ACT XML Tags模块。
3、无参数子标签回调函数
所谓子标签回调函数,也即本标签绑定的函数事件,如读取数据,导出图片等操作,通常通过回调函数专用标签<Callbacks>来进行指定,<Callbacks>下方还需嵌套调用指定回调函数具体的使用子标签,如<Isvalid>表示检查标签内容是否合法时调用的函数名称,<onvalidate>表示标签内容合法时调用的函数名称等,这里子标签回调函数调用时无传入参数,使用简单。
4、有参数子标签回调函数
对应于无参数子标签回调函数,部分子标签回调函数在使用时具有输入参数,也有输出参数。用户在调用该标签并指定回调函数时,回调函数的输入参数需与标签指定的函数内容匹配,如常见的标签<getpostcommands>,其作用为获取所有后处理操作并将其写入求解文件中,该标签的输入参数包括load(荷载对象)、stream(命令流写入对象)。在编写具体的回调函数中,必须引入这两个参数变量,且变量个数均需保持一致,否则无法进行函数调用!
不同的子标签回调函数,其输入输出参数不同,然而纵观ANSYS Help,其并没有详细介绍每个子标签回调函数的参数说明,故而实际中使用起来比较困难,学员在学习和实际开发中,应有意收集常见回调函数的输入参数和输出参数说明。
5、标签选项
当标签存在多项子项目时,采用<attributes options=" "/>指定具体的选项类目。
6、文件注释
XML文件注释采用<!-->注释内容<!-->进行,如:
<interface context="Mechanical">
<images>images</images>
<!-->功能按钮定义<!-->
<toolbar name="tb1" caption="UserSpect">
<entry name="et1" caption="加载反应谱" icon="spect36">
<callbacks>
<onclick>CreateLoad</onclick>
</callbacks>
</entry>
</toolbar>
</interface>
7、标签的简写
当标签下方无子标签时,<aa>.....</aa> 与<aa/>等效,当标签下方有子标签时,必须采用<aa>.....</aa>格式。
8、一个标准的ACT XML文件组成
在ACT开发中,无论插件内容如何变化,其标准的组成格式如下:
<extension version="1" name="UserSpect">
<guid shortid="UserSpect">f79510c6-7dd3-467e-af04-91f63edd688f</guid>
<script src="main.py"/>
<interface context="Mechanical">
<images>images</images>
。。。。。。
</interface>
<!-->具体功能模块<!-->
<simdata context="Mechanical">
。。。。。。
</simdata>
<workflow context="Project">
。。。。。。
</workflow>
<wizard>
。。。。
</wizard>
</extension>
XML总是以extension为开头和结尾,guid指定插件的唯一ID,script指定插件具体调用的Py文件,Interface指定插件的作用产品范围,simdata、workflow、wizard指定插件的具体内容。
Guid的获取可采用如下代码在任意一个产品中运行得到:
import System
re=System.Guid.NewGuid().ToString()
print re
以上便是关于ACT二次开发中关于XML文件组成的相关知识,更多详细关于ACT二次开发的内容请参见水哥的实战课程: