由XML和IronPython文件组成,文件结构如下:
ExtSample.xml
<extension version="1" name="ExtSample1">
<guid shortid="ExtSample1">2cc739d5-9011-400f-ab31-a59e36e5c595</guid>
<script src="sample1.py" />
<interface context="Mechanical">
<images>images</images>
<callbacks>
<oninit>init</oninit>
</callbacks>
<toolbar name="ExtSample1" caption="ExtSample1">
<entry name="HighFive" icon="hand">
<callbacks>
<onclick>HighFiveOut</onclick>
</callbacks>
</entry>
</toolbar>
</interface>
</extension>
扩展的XML文件总是从元素<extension>.开始的。所有其他元素都是该基本标签或根节点的子元素。关于基本要素的说明,参见附录A:扩展要素( p.185 )。对于所有元素的描述,参见Ansys ACT XML Reference Guide。
在此扩展中,元素 <entry> 定义单个工具栏按钮。文件 hand.bmp 提供用作图标的图像。回调 <onclick> 定义单击按钮时要调用的函数的名称。下一节将讨论为函数 HighFiveOut 定义的脚本。
注意:
• 对于显示为工具栏按钮或菜单命令旁边的图像,Mechanical 需要 BMP 文件。Workbench 和所有其他 Ansys 产品需要 PNG 文件。 • 要为BMP 文件指定透明背景,请在图像编辑器中将背景颜色设置为192、192、192,然后以256 色保存文件。
(实际上好像Mechanical使用PNG也可以)
IronPython 脚本定义了响应用户和界面交互的函数,并实现了扩展的行为。通常,函数是通过 XML 文件中的不同事件或回调来调用的。
sample.py
clr.AddReference("Ans.UI.Toolkit")
clr.AddReference("Ans.UI.Toolkit.Base")
from Ansys.UI.Toolkit import *
def init(context):
ExtAPI.Log.WriteMessage("Init ExtSample1...")
def HighFiveOut(analysis_obj):
MessageBox.Show("High five! ExtSample1 is a success!")
该脚本包含两个函数:
• init():打开Ansys 产品时调用。在 XML 文件中,元素 <interface> 的参数上下文包含产品名称(“Mechanical”)。
• HighFiveOut():单击工具栏按钮 HighFive 时调用。回调 <onclick> 将活动对象 Analysis 的实例作为参数传递。对于任何函数,全局变量 ExtAPI 代表 ACT API 的主要入口点 (p.53)。在此示例中,函数 init() 使用 ACT 接口 ILog 在日志文件中写入消息。有关可用接口的全面信息,请参阅 Ansys ACT API 参考指南。