作者 |小田老師
導語:ANSYS ACT作為ANSYS系列產品的統一二次開發平臺,提供了強大的仿真功能及流程定製化能力,即使不是專業的編程人員,也能為仿真工作流程創建定製化的應用插件。一、ANSYS ACT概述ANSYS Application Customization Toolkit簡稱ACT,是ANSYS系列產品的統一二次開發平臺,ACT使用易於學習但功能強大的XML標記語言和IronPython程式語言,即使不是專業的編程人員,也能為仿真工作流程創建定製化的應用插件。ANSYS ACT官方宣傳視頻
1、ACT的功能介紹針對業務特定需求或行業特定需求,通用的ANSYS產品可能無法滿足,為了方便用戶定製ANSYS產品,以滿足這些需求,ANSYS提供了ACT定製開發功能,有以下三種形式:(1)添加新功能(Feature Creation)直接地、API驅動的ANSYS產品的二次開發,用戶可定義自己的功能和操作。例如Mechanical中創建特定載荷、失效標準、自定義前後處理、求解器等。
自定義後處理(2)仿真流程定製(Simulation Workflow Integration)可以把外部知識,如應用軟體、流程、腳本集成到ANSYS生態體系中,可以在Workbench Project管理頁面中定製仿真流程。例如:用戶自定義的系統(System)和組件(Component)。
仿真流程定製
(3)流程壓縮(Process Compression)實現ANSYS產品間的仿真流程的封裝和自動化,其結果就是形成一個仿真嚮導(Simulation Wizard),用於仿真流程及經驗的固化。
仿真嚮導界面
2、ACT支持的軟體ANSYS產品支持ACT開發的軟體模塊如下表所示,囊括電磁、結構、流體和多物理場仿真。
ACT支持軟體在實際工程應用開發過程中,由於ANSYS產品本身功能大而全,所以在功能添加和仿真流程定製上需求相對較少,而採用流程壓縮進行仿真嚮導的開發佔絕大多數。因為仿真流程通常非常複雜,因此仿真使用往往會僅限於少數專家用戶,從而會降低工作流程的整體效率。通過ACT嚮導開發,就可以利用成熟的仿真流程以及最佳實踐,將特定的仿真流程壓縮為簡化、易於遵循的仿真步驟;這樣即使是非專業用戶可以使用嚮導逐步完成複雜的模擬,來快速生成所需的結果,提升整個企業的研發實力。今天我們文章內容會主要介紹ACT仿真嚮導的開發技術,另外兩種模式後續文章再做介紹。二、ACT開發基礎知識在進行ACT開發之前,我們需要了解以下術語和知識。1、ACT文件結構一個腳本化的ACT插件至少包括:① 一個XML文件
定義UI內容、插件輸入屬性將應用程式事件與IronPython腳本函數綁定②一個IronPython腳本文件
實現仿真功能,事件驅動:定義事件調用函數支持訪問外部擴展庫同時我們可以使用其他文件和文件夾來更好地組織內容,比如創建文件夾存放圖標、幫助文件等。2、XML數據結構XML是可擴展標記語言(EXtensibleMarkupLanguage)的簡稱;XML和常見HTML類似,也是一種標記語言;而且XML是可以用來攜帶數據,本身是自描述性的。使用XML進行ACT開發前,我們需要知道如下的四個基本概念:① 標籤/標記(Tags)
標籤是左尖括號(<)和右尖括號(>)之間的文本有開始標記 (如 <extension>) 和結束標記 (如 </extension>)② 元素(Elements)
元素是開始標記、結束標記以及兩者之間的所有內容示例中:<interface> 元素包含三個子元素:<images>, <callbacks> 和 <toolbar>③ 屬性(Attributes)
屬性是元素開始標記中的名稱-值對(name-value)示例中:名稱(name)和圖標(icon)是 <entry> 元素的屬性④ 開始標記 (<!--) 和結束標記(-->)之間是注釋。
XML數據結構
XML標記(tags)不是預定義的,每個應用都有自己的標記,ACT有自己的XML標記。有關各種標記、元素和屬性的詳細信息,參見《ANSYS ACT XML Reference Guide》。
3、仿真嚮導簡介
嚮導(Wizard)用於啟動和控制不同目標的應用程式,可以是Target Wizard;也可以是Project Wizard或Mixed Wizard。
① 目標應用嚮導 - Target Wizard
只能在指定的ANSYS中目標應用中啟動,如Mechanical、SpaceClaim、Fluent等;利用目標程序提供的腳本開發功能,在應用中仿真嚮導界面中提仿真流程的指導。② 項目嚮導 - Project Wizard
僅在ANSYS Workbench項目標籤頁中執行,通過後臺調用組件模塊,不會單獨打開與之交互;通過Workbench腳本開發可以將任何數據集成應用程式集成到嚮導中,如Fluent、CFX、DM、SCDM、Mechanical等;③ 混合嚮導 - Mixed Wizard
在ANSYS Workbench項目標籤頁和一個或多個支持腳本功能的目標應用程式中執行;混合嚮導在Project標籤頁和目標應用程式中都提供了本地仿真嚮導,而且支持在目標應用中進行界面交互。結合了項目嚮導和目標應用嚮導的功能,提供全流程的仿真流程的封裝與定製。仿真嚮導也可同時用於Workbench和獨立應用程式:僅Workbench應用環境下:
DesignModelerMechanicalWorkbench和獨立應用程式:
SpaceClaimFluent、Fluent MeshingElectronics Desktop4、Wizard嚮導定義Wizard完全是ACT插件的一部分,在定義Wizard時也需要定義構成插件的常用組件。
Wizard結構組成Wizard需要的定義插件的XML文件和其引用的IronPython腳本:① 與標準ACT插件所需相同,並使用相同的XML和IronPython語法;② 可選的自定義幫助文件
包含文本、圖像、圖標或其他控制項類型的HTML文件,用於為Wizard提供詳細使用說明;對於Wizard,幫助文件可以儲存在插件目錄中的任何文件夾中;執行嚮導時,文件內容將顯示在嚮導的交互界面中。5、XML文件定義ACT有自己的XML標記,開發Wizard嚮導需要完成以下標籤元素的定義。(1)<extension>元素定義<extension>為ACT中XML文件的根元素,包含以下的屬性:name、version、icon、minorversion;<extension>標記間可添加子元素(element):
<guid>:表示插件的唯一標識符;<author>和<description>出現在摘要信息;<script>:插件中使用的IronPython腳本文件;<interface>:定義應用程式上下文,指定工具欄(toolbar)的位置,還能指定圖像文件夾;<uidefinition>:自定義布局和嚮導面板;<wizard>:包含所有步驟(Step)的控制元素;<simdata>:可選的,如果除了嚮導本身之外還需要其他自定義功能,則使用該元素。<extension>標籤及其元素
(2)<wizard>元素定義<wizard>元素中包含以下屬性和子元素,包括如下:① 強制性屬性
name-嚮導名稱、version-嚮導版本號、 context-嚮導上下文context屬性定義wizard啟動的位置,如Project Wizard定義為Project;如果為Mixed Wizard定義為「Project」,然後在Step中再定義context② 可選屬性
caption:嚮導標題、layout:嚮導布局、icon:嚮導圖標(.png,.bmp等格式)嚮導圖標需提前指定所在地址,通過定義<interface>元素中<images>屬性<description>:描述Wizard功能,<step>:定義仿真步驟,是嚮導中最核心部分
<wizard>標籤及其元素(3)<step>元素定義<step>元素包含以下屬性:
強制屬性:name-步驟名稱、version-步驟版本可選:caption-步驟標題、HelpFile-幫助文件<step>中包含以下子元素:
<description>:步驟功能描述<callbacks>:執行步驟時調用的回調函數<property>和<propertygroup>:定義實現回調函數時需輸入的屬性或屬性組,是<step>中的最關鍵的元素,提供外界與ACT插件交互的控制項。
<step>標籤及其元素
<step>元素中定義內容與嚮導顯示效果的對應關係如下:
<step>元素與界面對應關係
(4)Property元素定義在<step>元素中插入<property>元素來創建步驟的屬性,<property>輸入類型由control屬性定義,常用的control類型如下:
fileopen:選擇文件folderopen:選擇文件夾integer:整數輸入框text:文本輸入框float:數字輸入框select:屬性選擇框scope:幾何選擇框tabulardata:表格數據property>元素及其屬性6、回調函數Callbacks在ACT開發中,我們通過指定XML中的回調函數來綁定界面事件,回調函數需定義在對應的IronPython腳本中。嚮導(Wizard)中每個步驟(Step)中可以包含3種類型的回調函數;
onupdate:單擊Next按鈕時調用此回調函數;在最後一步時,單擊Finish按鈕也會調用它。例如,創建項目組件系統,執行組件中IronPython腳本命令等。onrefresh:每次刷新嚮導面板的UI時都會調用此回調函數。例如,用來繪製圖形。onreset:用於在一個步驟中刪除和重置操作時。用於在一個步驟中刪除和重置操作,單擊Back按鈕時調用它;回調需要在步驟N中定義,並且單擊步驟N+1的Back按鈕時將調用它。上述三個回調函數中:onupdate回調是必需的,其他兩個是可選的。每個回調函數中都只使用一個參數step:表示當前步驟;我們可以通過訪問step對象的Properties屬性訪問輸入控制項屬性值,如下。
回調函數定義
7、ACT插件加載
定義好XML文件、IronPython腳本以及其他幫助和圖標文件後,需要將腳本文件通常放在與XML文件同名的文件夾中,如下結構。
然後在Workbench或者是目標應用中打開ACT Start Page,首先點擊<Manage Extension>按鈕,然後點擊設置按鈕,激活Debug模型,選中插件文件所在文件夾,這樣腳本化的插件就會導入插件管理面板。
接下來點中插件圖標加載,然後回到ACT Start Page後,點擊<Launch Wizards>按鈕後,選中嚮導加載。8、ACT插件編譯插件加載運行無誤後,就可以對腳本化插件進行編譯生成二進位文件,生成的.wbex文件我們可以用於安裝、傳播或者是上傳到ANSYS App Store售賣。
三、如何上手ACT插件開發
1、開發實施路線以ACT仿真嚮導的開發為例,整體可以分為IronPython腳本開發和XML界面開發兩個階段;實際上所有的ANSYS產品的仿真嚮導開發都是遵循相同的路線流程。此外,另外兩種類型的ACT插件開發路線亦是如此。
2、核心能力要求對於ACT插件開發來說,我們需要掌握XML界面開發和IronPython腳本開發技術;XML界面開發相對簡單,主要的難度和工作量都集中在IronPython腳本開發。因為即使不太熟悉XML數據結構,我們也能通過ANSYS提供的App Builder或者是Workflow Designer工具來進行可視化的ACT界面設計。當然熟悉ACT中XML數據結構能更好幫助我們快速去自定義界面。
ANSYS APP Builder 工具
只有界面是不行的,還需要實現仿真功能,不然插件就只是一個空殼子,中看不中用。在ACT開發中,腳本負責實現ACT插件的仿真功能、界面交互、流程封裝,是整個開發環節中最核心的部分。部分ANSYS產品雖然支持腳本或者宏錄製,如Fluent、Workbench、SCDM等,但是其錄製的基礎腳本存在諸多局限性,無法進行後續的插件開發,這就需要我們要熟悉腳本語言相關知識,了解其數據結構,理解軟體API,才能通過腳本開發去實現我們所需的仿真功能。所以進行ACT插件開發的關鍵是需要熟練掌握ANSYS軟體腳本開發的知識。3、如何去學習腳本開發是ACT插件開發的關鍵,建議把主要精力放在此部分的學習上,需要做到以下幾個方面:(1)首先,如何你不熟悉ANSYS腳本的話,建議先了解軟體腳本相關知識,可以參照本人在仿真秀專欄發布的文章(識別文末二維碼即可關注我的專欄)
SCDM腳本開發:《SCDM二次開發快速入門|應用+技巧》Mechanical腳本開發:《學好ANSYS ACT,輕鬆上手Mechanical腳本自動化》Fluent腳本開發:《重用腳本方法,快速入門和上手Fluent腳本自動化開發》Workbench腳本開發:《基於Python的Workbench開發指南+案例解析》與《Workbench開發指南:仿真流程集成》其他產品模塊的腳本開發方法正在整理,陸續會進行發布(2)如果你已具備腳本語言基礎,可以多閱讀相關API開發文檔,多將理論知識付諸於實踐中。
如幫助文檔中《Customization Suite》部分包含DesignModeler、Mechanical、Workbench等腳本開發幫助,也包含ACT開發的API文檔;Fluent的腳本可以參考文檔中的《Text Command List》部分內容;SCDM的API開發文檔可以參照其安裝目錄下:《API_Combined_Class_Library》中內容
上述幫助文檔雖然囊括了ANSYS產品二次開發所需知識儲備,但是API文檔接口基於.NET框架編寫,而腳本是基於Python語言編寫,二者在語法和數據結構上有很大不同;而且幫助文檔內容比較零散,API方法介紹比較簡單,又沒有針對案例練習,很難系統去學習掌握,對於初學者來說使用開發文檔難度非常大。
(3)如果你已經掌握ACT開發的技術,可以打開軟體中ACT啟動界面,然後下載官方提供的案例文件,直接閱讀源碼去學習是最好的方式。如果你還沒有掌握,推薦您關注我在仿真秀獨家發布的系列精品課程,帶你快速上手ACT仿真嚮導開發全流程。
四、我的精品課《SCDM腳本建模和二次開發20講》
為了大家更好掌握SCDM腳本建模及ANSYS產品的二次開發,自2019年12月25號起,我已在仿真秀平臺獨家首發《Python語言在ANSYS的應用20講-掌握SCDM腳本建模及ACT二次開發能力》