Workbench如何做二次开发【转发】

2017-07-03  by:CAE仿真在线  来源:互联网

下面文中的代码均来自ANSYS的帮助文档。


目前极少人做workbench的二次开发,一来是很不好做,二来可能必要性也没那么大。笔者对Workbench的二次开发作一个大概的介绍,用到的朋友大概也只能啃帮助手册了。

正文

ANSYS Workbench二次开发比较不容易做,其原因一是Workbench本身就是一个集成平台而非一个软件,二是开发接口很难理解,开发手册写的真不好,三是目前貌似极少人(资料)做这方面的东西,流传的资料几乎没有(除了ANSYS网站的官方文档,在百度文库有一些,再就是帮助手册了)。

举个例子,Workbench的二次开发与HyperMesh相比有多费劲,下图是HyperMesh的一个API函数帮助文档所给的注释,可以看到,注释写的非常的详细,包括函数的用途、类型、语法、描述、数据类型、变量描述等等。

Workbench如何做二次开发【转发】ansys结构分析图片1

图1

下面再看看ANSYS帮助手册所给的一个API函数的解释,相比之下,费劲很多,看了解释也很难知道到底该怎么使用这个API函数,而且更诡异的是居然还有很多的API函数没有给出解释,下图这个是创建一个圆柱壳的API函数,但是其他的比如创建矩形的API函数连解释都没有,使用者甚至不知道函数名称是什么。

感觉Workbench对于二次开发的功能没那么重视,不是其想引导的趋势。

Workbench如何做二次开发【转发】ansys仿真分析图片2

图2

不过,饶是如此,还是可以做,尤其在后处理方面,在前处理方面则很是费劲,开放的接口太少。

今次大概介绍下Workbench的二次开发。

Workbench二次开发的程序叫做extension,Extension主要有四个功能:

定义工具条和按钮;

将按钮与ACT对象绑定;

定义弹窗;

存储数据。

下面的例子是在Workbench的Mechnical模块下创建工具条和按钮。

创建的工具条可以在支持ACT directomization(Workbench,AIM,Mechnical,DesignModeler,以及DesignXplore)的应用程序中使用,也可以在支持guided-process extension(Fulent、Eletronic Desktop)的应用程序中使用。

开发的extension的界面形式是通过xml语言进行编写的,通过xml定义extension的名称、属性、执行脚本、界面上的内容等等,xml写出来的程序本身不能完成有效功能,只是一个定义好属性以及保留了接口的界面而已。

<extension version="1" minorversion="0" name="ExtToolbarSample">

<script src="toolbarsample.py" />

<interface context="Mechanical">

<images>images</images>

<callbacks>

<oninit>init</oninit>

</callbacks>

<toolbar name="ToolBar1" caption="ToolBar1">

<entry name="TB1Button1" icon="button1Red">

<callbacks>

<onclick>OnClickTB1Button1</onclick>

</callbacks>

</entry>

<entry name="TB1Button2" icon="button2Red">

<callbacks>

<onclick>OnClickTB1Button2</onclick>

</callbacks>

</entry>

<entry name="TB1Button3" icon="button3Red">

<callbacks>

<onclick>OnClickTB1Button3</onclick>

</callbacks>

</entry>

</toolbar>

<toolbar name="Toolbar2" caption="Toolbar2">

<entry name="TB2Button1" icon="button1Blue">

<callbacks>

<onclick>OnClickTB2Button1</onclick>

</callbacks>

</entry>

<entry name="TB2Button2" icon="button2Blue">

<callbacks>

<onclick>OnClickTB2Button2</onclick>

</callbacks>

</entry>

<entry name="TB2Button3" icon="button3Blue">

<callbacks>

<onclick>OnClickTB2Button3</onclick>

</callbacks>

</entry>

</toolbar>

</interface>

</extension>

整段代码定义了一个名为ExtToolbarSample的extension,执行的python脚本是toolbarsample.py,通过<image>指定了背景,通过<interface context>指定该extension应用在mechnical模块下,通过<toolbar>定义了名称为ToolBar1的工具条,并且通过<entry>定义了按钮入口,也就是该按钮可以执行函数OnClickTB1Button1。同样的按钮还定义了ToolBar2和ToolBar3,并分别绑定了点击这几个按钮所要执行的函数,这些函数均在toolbarsample.py脚本文件中定义。

后面的代码定义了另一个工具条,也即是上面这段代码定义了两个工具条,每个工具条上面分布有三个按钮。

这六个按钮均有相应的函数与之绑定,一旦点击该按钮,便能执行相应的函数,完成某个功能。

定义完成后的extension形式如下所示:

Workbench如何做二次开发【转发】ansys仿真分析图片3

图3

可以看到定义的两个工具条及6个按钮。

上面的XML所定义的接口代码需要通过Python脚本文件的形式来实现。

针对上面按钮所绑定的函数,定义的toolbarsample.py文件内容如下:

import os

import datetime

clr.AddReference("Ans.UI.Toolkit")

clr.AddReference("Ans.UI.Toolkit.Base")

from Ansys.UI.Toolkit import *

def init(context):

ExtAPI.Log.WriteMessage("Init ExtToolbarSample ...")

def OnClickTB1Button1(analysis):

LogButtonClicked(1, 1, analysis)

def OnClickTB1Button2(analysis):

LogButtonClicked(1, 2, analysis)

def OnClickTB1Button3(analysis):

LogButtonClicked(1, 3, analysis)

def OnClickTB2Button1(analysis):

LogButtonClicked(2, 1, analysis)

def OnClickTB2Button2(analysis):

LogButtonClicked(2, 2, analysis)

def OnClickTB2Button3(analysis):

LogButtonClicked(2, 3, analysis)

def LogButtonClicked(toolbarId, buttonId, analysis):

now = datetime.datetime.now()

outFile = SetUserOutput("ExtToolbarSample.log", analysis)

f = open(outFile,'a')

f.write("*.*.*.*.*.*.*.*\n")

f.write(str(now)+"\n")

f.write("Toolbar "+toolbarId.ToString()+" - Button "+buttonId.ToString()+" Clicked. \n")

f.write("*.*.*.*.*.*.*.*\n")

f.close()

MessageBox.Show("Toolbar "+toolbarId.ToString()+" - Button "+buttonId.ToString()+" Clicked.")

def SetUserOutput(filename, analysis):

solverDir = analysis.WorkingDir

return os.path.join(solverDir,filename)

该脚本中通过def定义了多个函数,其中有按钮所绑定的函数,在这段Py代码中除了用到通常的python语言,也用到了ANSYS Workbench的API函数,例如ExtAPI.Log.WriteMessage(显示信息)。

所有关键的功能也是通过Python语言和API函数联合实现的。一般来说,提供的接口越多,所能做的开发也越复杂,开发起来也容易。

结合xml和py两个文件以及其他一些辅助的,比如背景图片等,就可以完成一个extension的开发,以扩展Workbench的功能。


转自公众号:CAE技术分享

开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:Workbench如何做二次开发【转发】 Ansys有限元培训 Ansys workbench培训 ansys视频教程 ansys workbench教程 ansys APDL经典教程 ansys资料下载 ansys技术咨询 ansys基础知识 ansys代做 Fluent、CFX流体分析 HFSS电磁分析 Abaqus培训 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com