Iron Python
IronPython 是一種用於 .NET 平臺的 Python 直譯器。允許使用者運用 Python 程式碼來編寫 .NET 應用程式。是 AEDT 一開始就支援的編成語言。
IronPython 介紹
有別於常見的 CPython,IronPython基於 C# 和 .NET,因此它可以訪問 .NET 平臺的所有功能。還可以與其他 .NET 程式碼一起使用,並且可以使用 Visual Studio 和其他 .NET 開發工具進行開發。
CPython 是 Python 程式語言的一種主要實現,也是最廣泛使用的實現。它是用 C 語言編寫的,這就是名稱中的“C”來源。CPython 執行 Python 程式碼,首先將其轉換成中間形式的字節碼(bytecode),然後透過 Python 虛擬機(Python Virtual Machine, PVM)來解釋執行這些字節碼。
CPython 不僅是一個解釋器,也提供了完整的標準庫、內存管理和錯誤處理等功能。由於其廣泛的支援和穩定性,CPython 成為了 Python 社群的官方和標準實現,並且是大多數教育和開發環境中使用的版本。
IronPython 是一種強大的工具,可用於編寫各種 .NET 應用程式。它是學習 Python 的絕佳方式,也是將現有的 Python 程式碼移植到 .NET 平臺的絕佳方式。IronPython 使用 Python 程式語言的語法和標準 Python 函式庫,並且還可以使用 .NET 類別和物件,讓使用者能夠充分發揮兩者的優勢。
以下是 IronPython 的一些優點:
相比於C# 和 .NET 語法,易於學習和使用
可以訪問 .NET 平臺的所有功能
可以與其他 .NET 程式碼一起使用
可以使用 Visual Studio 和其他 .NET 開發工具進行開發
以下是 IronPython 的一些缺點:
不是原生的 Python 實現,因此可能會比原生的 Python 實現慢一些
不是所有 Python 功能都是可用的,因為它不是完整的 Python 語言
下表是 IronPython 與 CPython 的綜整比較:
實現語言
C#
C
平台
.NET Framework
多平台支援
與 .NET 整合
是
否
標準庫
部分支援
完整支援
性能
通常較慢
相對較快
社群支援
相對較少
非常廣泛
可擴充性
受限
非常高
用途
主要用於 .NET 平台
通用用途
第三方庫支援
較少
豐富
總體而言,IronPython 是一種強大的工具,可用於編寫各種 .NET 應用程式。早期 AEDT 支援的 Script 都是可以用於 .NET 平臺的 Python 實現,對於 AEDT 自動化功能應用來說 IronPython 也是一個出色的選擇。下面 Gif 圖是利用 Iron Python 進行開發,並把他裝載在 AEDT 功能列中,使用者可以一鍵自動出圖的功能動畫展示。
AEDT Iron Python 相容性
目前 AEDT 2023R2 所使用的 IronPython 版本為 2.7,其開發是基於 .NET Framework 4.0。
.NET Framework 4.0 是微軟釋出的一個軟體框架,用於支援建立和執行運行於 Windows 環境下的應用程式。它提供了一個豐富的類庫,以及用於開發和執行應用程式的運行時環境。.NET Framework 4.0 包括許多功能和改進,使開發者能夠更輕鬆地建立現代化的應用程式。
其中一些主要的特點包括:
語言互通性: .NET Framework 支援多種程式語言,例如 C#、VB.NET、以及您提到的 IronPython。
通用型型別系統(Common Type System, CTS): 它確保在不同語言中定義的型別和物件能夠互相通信。
基底類庫(Base Class Library, BCL): 提供了許多通用的功能和類別,方便開發者進行應用程式開發。
運行時環境: 包括 Common Language Runtime (CLR),它負責管理應用程式的執行,處理記憶體管理、異常處理等。
.NET Framework 4.0 在其版本中引入了一些新的功能和改進,包括並行運算、動態語言運行時(DLR)以支援像 IronPython 這樣的動態語言,以及對新的語言特性的支援。藉由這些特性,開發者能夠更有效率地建立現代、高效的應用程式。
.NET Framework 4.0 版本也針對 Python 2.7 語言相容性已經進行了優化。
AEDT API
API(Application Programming Interface)是一組規範如何與Python程式或庫互動的協議和工具,使開發者能夠使用預定義的方法執行各種任務。
在電腦編程領域中,“Python的API”通常指的是用Python語言編寫的一套應用程式編程介面(Application Programming Interface)。這些介面定義了如何透過函數、方法或對象與Python程式或庫進行交互,使得開發者可以使用預定義的方式訪問功能或數據。
Python的API可以分為幾種類型:
標準庫API:Python自帶的標準庫提供了廣泛的API,用於檔案操作、網絡通信、數據處理等各種任務。
第三方庫API:由社區或公司提供的第三方庫,擴展了Python的功能。這些庫有各自的API,例如用於請求Web服務的`requests`庫,數據分析的`pandas`庫等。
系統或應用API:Python腳本可以通過API與操作系統或其他應用程式交互。例如,使用操作系統提供的API來管理檔案系統或進程,或使用Web應用程式的API來獲取或發送數據。
AEDT 有六個主要的 objects 來控制程式。分別是:
oAnsoftApp
└───oDesktop
└───oProject
└───oDesign
├───oEditor
└───oModule
其中的object,解釋如下:
oAnsoftApp:用於提供訪問ANSYS Electronics Desktop的控制代碼的物件
oDesktop:用於執行桌面級操作的物件 -
oProject:用於操作專案及其數據的物件
oDesign:用於操作設計及其數據的物件
oEditor:用於修改編輯器中的數據的物件,例如 3D Modeler
oModule:用於訪問設計中具有特定功能的模塊的物件,例如邊界、端口、分析等
每一個模組裡面還有更多的分支功能,例如下面筆者以Mermaidm語法做了oDesign細節的分支介紹。
有興趣的讀者可以上段程式碼貼到 https://mermaid.live 來做圖片渲染。
使用IronPython控制AEDT
大部分的使用者在使用IronPython做自動化工作時,通常會打開AEDT,再由功能鍵呼叫*.py檔,來進行自動化程序。但其實IronPython一樣能用IDE介面(例如:Spyder, PyCharm...等)來打開AEDT做自動化工作。例如下面程式碼是由IDE介面自動新增Project與Design,給讀者參考。
Last updated