Ansys Workbench中調用Mechanical python腳本的方法及注意事項
1 Ansys Workbench腳本編程概述
Ansys Workbench 支持記錄用戶通過圖形界面(GUI)執行的操作,即日志記錄(Journaling),日志以基于 Python 的腳本形式保存。用戶可以修改這些腳本或創建全新的腳本,能夠便捷地重現已完成的分析流程,還能擴展軟件功能、實現重復性分析任務的自動化,并通過腳本編程以批處理模式運行分析。圖形界面中執行的大多數操作都會被記錄到日志中,以下是一些不會被記錄的操作示例:
僅圖形界面操作:
? 中斷求解過程
? 啟動幫助功能(包括快速幫助和側邊欄幫助)
? 在 VistaTF 的求解單元中運行“查看求解器輸出”選項
數據集成應用中的操作:詳情請參考《腳本編程與數據集成應用》
部分圖形場景操作:例如隱藏實體和旋轉視圖
根據用戶偏好設置,完整會話的日志可以自動保存到指定位置。在 Ansys Workbench 中,選擇“工具 > 選項 > 日志和日志文件”。

腳本日志相關的操作位于 Ansys Workbench界面選擇“文件 > 腳本,包括腳本錄制、運行、打開命令窗口等。命令窗口使用 IronPython編程語言解釋和執行命令或其他操作。注意:IronPython 通常與現有標準 Python 腳本兼容,但并非所有基于 C 語言的 Python 庫模塊都能在 IronPython 中使用。若要運行為舊版本 Ansys Workbench 創建的腳本,必須在腳本文件開頭插入 SetScriptVersion 命令,指定腳本最初創建時的軟件版本。此外,若從舊腳本中復制命令并粘貼到命令窗口,需先輸入 SetScriptVersion 命令,再粘貼腳本命令。
2 腳本編程與數據集成應用
從項目示意圖中,用戶可與 Ansys Workbench 原生應用程序(稱為工作區)進行交互,也可啟動數據集成應用程序。原生工作區完全基于 Ansys Workbench 框架構建,可使用其所有服務。原生工作區的示例包括項目示意圖、工程數據和設計探索。
數據集成應用程序獨立于 Ansys Workbench 框架開發,但經過擴展后可由項目示意圖驅動,并與 Ansys Workbench 及支持 Ansys Workbench 的應用程序共享關鍵數據和參數。數據集成應用程序包括 Mechanical APDL 應用程序、Ansys Fluent、Ansys CFX、DesignModeler 和 Mechanical 應用程序。
原生工作區和數據集成應用程序的區別對于 Ansys Workbench 日志記錄和腳本編程至關重要。所有修改原生工作區相關數據的操作都會被記錄到日志中,并可通過 Ansys Workbench 腳本編程實現完全自動化。對于數據集成應用程序,只有從項目示意圖發起的操作會被記錄到日志中,例如系統更新和數據傳輸。在數據集成應用程序內部執行的操作不一定會被記錄到日志中,也不受 Ansys Workbench 腳本編程控制。例如,在 Mechanical APDL 中構建幾何模型的步驟或在 Ansys Fluent 中設置求解方法的步驟不會被記錄到日志中。
盡管數據集成應用程序不完全支持 Ansys Workbench 腳本編程,但許多應用程序都有自己的原生腳本語言,可通過 Ansys Workbench 腳本編程接口訪問。例如,Mechanical APDL 基于功能強大的 Ansys 參數化設計語言(APDL),APDL 命令可直接嵌入到 Ansys Workbench 腳本中。
用戶可使用 SendCommand 函數將原生腳本命令發送給數據集成應用程序。通過在 Ansys Workbench 腳本中插入 SendCommand 調用,可驅動數據集成應用程序。但數據集成應用程序不一定會將操作記錄到 Ansys Workbench 日志中。大多數支持腳本編程的數據集成應用程序都有獨立的日志,用于記錄原生命令。

3 Ansys Workbench與Mechanical通信
ANSYS Mechanical也支持Python腳本進行二次開發,部分腳本也可以通過錄制的方式進行記錄(Automation->Scripting)。但該腳本只能在Mechanical界面環境下執行,也沒有對應的批處理運行命令(如有歡迎留言),無法在Ansys Workbench項目層面實現聯合自動化。

在Ansys Workbench中可以通過SendCommand方法運行ANSYS Mechanical中的python腳本。該方法主要包括Language及Command兩個參數。
場景一:更改實體的材料名稱
Ansys Mechanical中腳本示例為(錄制得到)
body = DataModel.GetObjectsByName('SYS')[0]
body.Material= 'Structural Steel'
Ansys Workbench中腳本示例為
mechaCmd = """
body = DataModel.GetObjectsByName('SYS')[0]
body.Material=" Structural Steel "
"""
system1 = GetSystem(Name="SYS")
setup1 = system1.GetContainer(ComponentName="Setup")
setup1.SendCommand(Language="Python", Command=mechaCmd)
場景二:增加約束
Ansys Mechanical中腳本示例為(錄制得到)
analysis_31 = DataModel.AnalysisById(31) fixed_support_88 = analysis_31.AddFixedSupport() selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities) selection.Ids = [12] fixed_support_88.Location = selection
Ansys Workbench中腳本示例為
mechaCmd = """ analysis_31 = DataModel.AnalysisById(31) fixed_support_88 = analysis_31.AddFixedSupport() selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities) selection.Ids = [12] fixed_support_88.Location = selection """ system1 = GetSystem(Name="SYS") setup1 = system1.GetContainer(ComponentName="Setup") setup1.SendCommand(Language="Python", Command=mechaCmd)
場景三:導出應力線性化數據(手動編寫得到)
Ansys Workbench中腳本示例為
mechaCmd = """
result = DataModel.GetObjectsByName('Linearized Stress Intensity')[0]
result.ExportToTextFile('D:\ linearizedStressIntensity.xls')
"""
system1 = GetSystem(Name="SYS")
setup1 = system1.GetContainer(ComponentName="Setup")
setup1.SendCommand(Language="Python", Command=mechaCmd)
上述的Ansys Workbench腳本可以在File->Scripting->Open Command Window中運行,也可以保存為py文件,并通過類似的批處理命令運行。
"D:\Program Files\ANSYS Inc\v231\Framework\bin\Win64\RunWB2.exe" -R exportData.py
4 避坑指南(重點!!!)
? 即便在windows系統上,路徑也需要使用“/”;
? 在Ansys Mechanical中的代碼,如果存在中文(比如使用中文版Ansys界面),則必須在mechaCmd中第一行加上“# encoding: utf-8”,否則會運行會失敗。
? 如果將Ansys Mechanical的代碼實現定義為函數,并在Workbench代碼中進行調用時,則mechaCmd中的字符串代碼需要以頂格為基準格式,進行代碼編寫,即認為字符串中的Mechanical代碼與Workbench代碼“獨立”存在。
以下內容為付費內容,請購買后觀看
包含1個文件 1人購買
案例的workbench工程文件及完整的腳本示例。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















