PyAEDT CLI 技能
您可以使用 pyaedt CLI 來與 ANSYS Electronics Desktop (AEDT) 互動。此技能教您如何有效地使用它。
預先檢查(先執行)
在任何 CLI 命令之前,請驗證 pyaedt 是否已安裝:
pyaedt --json version
如果命令失敗,請停止,並指示使用者先使用 all 安裝目標進行安裝,以啟用完整功能。
pip install pyaedt[all]
呼叫 CLI
在執行任何命令之前,請解析 pyaedt 二進位檔一次:
- 直接嘗試
pyaedt。如果它在系統 PATH 中,則直接使用它。 - 如果找不到,則回退到目前工作目錄中 venv-local 的二進位檔:
- Windows:
.venv\Scripts\pyaedt - Linux/macOS:
.venv/bin/pyaedt
- Windows:
為簡潔起見,所有範例均使用 pyaedt。如有需要,請將其替換為已解析的路徑。
產出檔案的工作目錄
除非使用者另有指定,否則所有匯出和產生的檔案均使用暫存目錄。
規則:
- 在作業系統暫存目錄下建立一個任務特定的子目錄
- 使用
tempfile.mkdtemp(prefix="pyaedt-skill-")(Python)、$env:TEMP(Windows) 或${TMPDIR:-/tmp}(Linux/macOS) - 除非明確要求,否則不要寫入儲存庫或任意資料夾
- 如果使用者想要保留檔案,請在成功匯出後再從暫存目錄移動檔案
快速參考:
import tempfile
temp_dir = tempfile.mkdtemp(prefix="pyaedt-skill-")
在匯出命令中將此路徑傳遞給 --path 或 --output。
對非互動式命令使用 --json
對每個非互動式命令使用 --json,以便輸出保持結構化且可機器解析。
JSON 輸出會傳回:{"status": "ok", "data": {...}} 或 {"status": "error", "error": "message"}
在使用 data 之前,始終解析 status 欄位。切勿依賴人類可讀的輸出。
例外情況:
session attach會啟動一個互動式控制台,因此人類模式是可以接受的。doc命令會開啟瀏覽器頁面,通常不會作為結構化的自動化輸出來使用。
目前的 CLI 結構
命令按以下方式組織:
pyaedt [--json] <group> <command> [options]
目前 CLI 中可用的群組:
sessionprojectscriptexporttest-configpanelsdoc
頂層命令:
versionaedt-versions
請勿發明目前 CLI 中不存在的其他命令群組或命令。 如果 CLI 不支援所需的操作,請向使用者報告,而不是嘗試變通解決。
基於埠的模型
目前的 CLI 主要基於埠。
session start會啟動一個新的 AEDT 實例並傳回其 gRPC 埠。session list會發現正在運行的 AEDT 實例。- 大多數操作命令需要明確指定
--port。 session attach也可以用來選擇現有的 AEDT 會話,包括透過--project或--design,因此並非每個工作流程都從已知的埠開始。- 沒有永久保存的
session connect狀態可以稍後重複使用。
實際影響:
# 發現或啟動 AEDT
pyaedt --json session list
pyaedt --json session start --version 2026.1 --non-graphical
# 然後將 --port 傳遞給您想要的命令
pyaedt --json project list --port 50051
pyaedt --json run my_script.py --port 50051
專案與設計解析規則
設計範圍的命令使用一組共享的解析規則。這很重要,應在指南和範例中一致地應用。
受影響的命令:
export screenshotexport configsession attach當與--project或--design一起使用時
解析規則:
- 如果同時提供了
--project和--design,則直接使用它們。 - 如果只提供了
--project,則該專案必須只包含一個設計。 - 如果只提供了
--design,則必須只開啟一個專案。 - 如果兩者都沒有提供,則必須只開啟一個專案,且其中只有一個設計。
- 如果選擇不明確,命令將會失敗,並且必須提供缺失的選擇器。
在幫助使用者時,除非命令實際使用該行為,否則不要將此行為描述為「active project」或「active design」回退。預期的行為是基於唯一性的解析。
命令參考
頂層命令
| 命令 | 說明 |
|---|---|
pyaedt --json version | 顯示 PyAEDT 版本 |
pyaedt --json aedt-versions | 列出機器上已安裝的 AEDT 版本 |
會話管理
| 命令 | 說明 |
|---|---|
pyaedt --json session start --version 2026.1 [--port 50051] [--non-graphical] | 啟動一個新的 AEDT 實例 |
pyaedt --json session list | 列出正在運行的 AEDT 實例及其 PID、版本和埠 |
pyaedt --json session stop --port 50051 | 按埠停止特定的 AEDT 實例 |
pyaedt --json session stop --all | 關閉所有 AEDT 實例。 |
pyaedt session attach [--port 50051] [--project NAME] [--design NAME] | 啟動一個連接到運行中實例的互動式 PyAEDT 控制台 |
注意事項:
- 如果省略
--port且使用者選擇一個實例,session attach可以互動式工作。 - 搭配
session attach使用的--project或--design僅適用於具有可用埠的 gRPC 實例。
專案命令
所有專案命令都需要指定埠,以指向目標 AEDT 實例。
| 命令 | 說明 |
|---|---|
pyaedt --json project list --port 50051 | 列出所有開啟的專案及其設計 |
pyaedt --json project open "C:/path/to/file.aedt" --port 50051 [--non-graphical] | 開啟一個 AEDT 專案檔 |
pyaedt --json project save --port 50051 [--path "C:/new/file.aedt"] | 儲存作用中的專案,可選擇另存為新檔案 |
pyaedt --json project create --name ProjectA --port 50051 | 建立一個專案。使用 --name。 |
pyaedt --json project create --project ProjectA --design Design1 --type Hfss --port 50051 | 在現有專案內建立一個設計。使用 --project + --design + --type。 |
pyaedt --json project close --port 50051 [--project ProjectA] | 關閉一個專案,如果省略則關閉作用中的專案 |
project create 行為:
--name用於建立專案。--project+--design+--type用於建立設計。- 不要將
--name與--design/--type混合使用。
支援的 --type 值:
HfssMaxwell2dMaxwell3dQ3dQ2dIcepakCircuitTwinBuilderMechanicalEmitRmxprtHfss3dLayoutMaxwellCircuit
腳本命令
| 命令 | 說明 |
|---|---|
pyaedt --json run "path/to/script.py" --port 50051 | 在 AEDT 內部執行 Python 腳本 |
匯出命令
| 命令 | 說明 |
|---|---|
pyaedt --json export screenshot --port 50051 [--path preview.jpg] [--project NAME] [--design NAME] | 為已解析的設計擷取螢幕截圖 |
pyaedt --json export config --port 50051 [--output config.json] [--project NAME] [--design NAME] [--overwrite] | 匯出設計設定 JSON |
這兩個命令都屬於設計範圍,因此遵循上述共享的專案/設計解析規則。
文件
| 命令 | 說明 |
|---|---|
pyaedt doc | 開啟文件首頁並列印幫助 |
pyaedt doc examples | 開啟範例章節 |
pyaedt doc github | 開啟 GitHub 儲存庫 |
pyaedt doc user-guide | 開啟使用者指南 |
pyaedt doc getting-started | 開啟入門文件 |
pyaedt doc installation | 開啟安裝文件 |
pyaedt doc api | 開啟 API 參考 |
pyaedt doc changelog [VERSION] | 開啟更新日誌 |
pyaedt doc issues | 開啟問題頁面 |
pyaedt doc search <keywords> | 搜尋線上文件 |
常見工作流程
工作流程 1:發現或啟動 AEDT
# 檢查正在運行的實例
pyaedt --json session list
# 如果沒有正在運行的,啟動一個
pyaedt --json session start --version 2026.1 --non-graphical
決定規則:
- 如果
session list沒有回傳任何程序,則啟動 AEDT。 - 如果它回傳一個程序,則重複使用該埠。
- 如果它回傳多個程序,詢問使用者要使用哪個埠。
工作流程 2:檢查某個埠上的專案
pyaedt --json project list --port 50051
當您需要了解需要哪些專案和設計選擇器時,請先使用此命令。
工作流程 3:建立專案或設計
# 建立一個專案。僅使用 --name(不要新增 --design 或 --type)
pyaedt --json project create --name "PatchAntenna" --port 50051
# 在現有專案中建立一個設計。僅使用 --project + --design + --type(不要新增 --name)
pyaedt --json project create --project "PatchAntenna" --design "HFSSDesign1" --type Hfss --port 50051
工作流程 4:使用 session attach 進行互動式探索
當使用者想要互動式地探索、除錯或迭代一個設計時,請使用 session attach 作為首選。它會開啟一個已經連接到目標 AEDT 會話的互動式 Python 控制台。desktop 已預先注入,因此可以一個接一個地發出 PyAEDT 命令,而無需編寫完整的腳本。
# 連接到一個正在運行的實例(埠為可選;如果省略則會提示)
pyaedt session attach --port 50051
# 在互動式 Python 控制台內部,會話已經存在:
# >>> import ansys.aedt.core as aedt
# >>> hfss = aedt.Hfss(new_desktop=False, port=50051)
# >>> box = hfss.modeler.create_box([0, 0, 0], [10, 10, 10], name="MyBox")
# >>> hfss.modeler["MyBox"].color = (255, 0, 0)
將多行程式碼傳送到互動式 Python 控制台
當代理程式將跨越一行以上(迴圈、條件判斷、函數定義等)的程式碼傳送到互動式 Python 控制台時,直接貼上會導致 IndentationError 或 SyntaxError,因為控制台會將每行視為單獨的輸入。
始終將多行區塊包裝在 exec() 中,在單一字串內將所有換行符編碼為 \n:
# 由於控制台在迴圈主體處中斷而失敗
for i in range(3):
print(i)
# 正確:作為單一 exec() 呼叫傳送
exec("for i in range(3):\n print(i)")
規則:
- 對任何包含縮排程式碼的區塊(迴圈、
if、with、函數或類別定義)使用exec()。 - 單行語句(匯入、賦值、函數呼叫)不需要
exec()。 - 如果外部分隔符是
",則將所有內部雙引號逸出為\",或如上所示使用串聯的字串字面量。 - 盡量保持
exec()呼叫簡短;如果區塊超過約 10 行,更偏好將暫存腳本儲存後使用run。
何時偏好 session attach 命令勝過 run 命令:
| 情況 | 偏好方法 |
|---|---|
| 探索設計狀態,未知目標 | session attach |
| 互動式除錯失敗步驟 | session attach |
| 一次性幾何 / 參數調整 | session attach |
| 快速迭代少量命令 | session attach |
| 已定義、可重複、多步驟的工作流程 | run |
| CI / 無頭模式 / 自動化管道 | run |
| 工作流程包含超過約 5 個步驟 | run |
| 需要可追溯性和日誌記錄 | run |
優先使用 session attach。只有在工作流程已知且需要可重複或自動化時,才升級到 run。
同時處理多個設計
當使用者需要同時處理多個設計時,請為每個設計開啟一個單獨的互動式 Python 控制台,而不是在單個控制台中切換設計。這樣可以保持每個設計都處於活躍且可編輯的狀態,無需關閉或釋放任何一個。
# 終端機 1:設計 A 的控制台
pyaedt session attach --port 50051 --project "ProjectA" --design "DesignA"
# 終端機 2:設計 B 的控制台(相同或不同的專案)
pyaedt session attach --port 50051 --project "ProjectA" --design "DesignB"
# 終端機 3:不同專案中設計的控制台
pyaedt session attach --port 50051 --project "ProjectB" --design "DesignC"
規則:
- 每個控制台都持有自己的 PyAEDT 物件,綁定到一個特定的設計。關閉一個控制台不會關閉其他控制台。
- 所有控制台共享同一個 AEDT 實例(相同的
--port),因此在一個控制台中做出的更改會立即在 AEDT 中可見。 - 除非您有意要關閉所有開啟控制台的 AEDT,否則不要在任何這些控制台內部呼叫
desktop.release_desktop()或aedt_app.release_desktop()。 - 如果設計存在於不同的 AEDT 實例中,請為每個控制台使用匹配的
--port。
工作流程 5:執行自動化
pyaedt --json run "<temp-dir>/setup_antenna.py" --port 50051
工作流程 6:產出的腳本執行
每當已產出腳本且必須自動執行時,請使用此工作流程。
# 步驟 1:發現實例
pyaedt --json session list
# 步驟 2:如有需要,啟動一個
pyaedt --json session start --version 2026.1 --non-graphical
# 步驟 3:在選擇的埠上執行腳本
pyaedt --json run "<temp-dir>/generated_script.py" --port 50051
規則:
- 始終先確定目標埠。
- 如果有多個實例在運行,請呈現完整列表並詢問要使用哪個埠。
- 如果工作流程需要自動執行,請不要告訴使用者手動執行產出的腳本。
- 為現有 AEDT 實例產出的腳本應使用
new_desktop=False。
工作流程 7:匯出設計資料
# 如果實例恰好只有一個專案和一個設計,則可以省略選擇器
pyaedt --json export screenshot --port 50051 --path "<temp-dir>/preview.jpg"
pyaedt --json export config --port 50051 --output "<temp-dir>/config.json" --overwrite
# 如果不明確,請指定缺失的選擇器
pyaedt --json export screenshot --port 50051 --project "PatchAntenna" --design "HFSSDesign1" --path "<temp-dir>/preview.jpg"
pyaedt --json export config --port 50051 --project "PatchAntenna" --design "HFSSDesign1" --output "<temp-dir>/config.json" --overwrite
工作流程 8:關閉
# 按埠停止一個特定的實例
pyaedt --json session stop --port 50051
# 或停止所有實例
pyaedt --json session stop --all
輸出處理規則
狀態處理
# 預期的 JSON 結構
{"status": "ok", "data": {...}}
{"status": "error", "error": "message"}
規則:
- 僅當
status為ok時才讀取data。 - 如果
status為error,則將錯誤訊息報告給使用者,不要假設任何資料有效。 - 如果
status既不是ok也不是error,則視為無法解析的異常。
錯誤處理與重試策略
許多 CLI 錯誤是由於競態條件(AEDT 仍在啟動)、短暫的網路問題或非圖形模式下的過早命令發送引起的。
在將問題報告給使用者之前,請套用以下自動重試邏輯:
-
通訊相關錯誤(例如,
Connection refused、503、timeout):- 最多重試 3 次,每次間隔等待 5 秒。
- 如果 3 次後仍然失敗,則檢查實例是否仍在運行 (session list)。如果已關閉,則建議使用者重新啟動它。
-
未知命令 / 解析錯誤:
- 不要重試。立即報告給使用者,因為這些錯誤表明結構問題。
-
session start特定錯誤(例如,AEDT not found、License error):- 如果找到錯誤報告,則不要重試。向使用者解釋該錯誤。啟動前始終使用
--non-graphical,除非使用者明確要求使用圖形模式。
- 如果找到錯誤報告,則不要重試。向使用者解釋該錯誤。啟動前始終使用
限制與邊界情況
-
無
session connect永久狀態:- 與某些使用持久會話句柄的 SDK 不同,此 CLI 不維護
session connect以便在命令之間自動重複使用。必須在每個需要的命令上明確傳遞--port。在兩次呼叫之間不要假設「活動」會話。
- 與某些使用持久會話句柄的 SDK 不同,此 CLI 不維護
-
非圖形模式是預設配置:
- 除非使用者明確要求使用圖形模式,否則使用
--non-graphical啟動 AEDT 以節省資源並實現無頭自動化。
- 除非使用者明確要求使用圖形模式,否則使用
-
腳本執行隔離:
run命令在目標 AEDT 會話內啟動一個新的 Python 程序。因此,在腳本執行之間變數狀態不會保留。如果使用者想要增量更新設計數據,請使用session attach(互動式控制台)或將所有步驟組合在一個.py檔案中,然後使用run執行。
-
無
export screenshot互動式預覽彈出:export screenshot命令將圖像寫入檔案。它不會在螢幕上顯示預覽。如果使用者想要互動式預覽,請指示他們使用圖形模式手動開啟 AEDT。
-
無設計命名空間隔離:
- 在一個互動式控制台中對設計物件所做的更改可能會影響同一專案中其他控制台所持有的設計物件,具體取決於 AEDT 的內部狀態。如果發生無法解釋的行為,請重新附加到一個專用控制台。
-
平台特定的二進位路徑:
- Windows:
.venv\Scripts\pyaedt - Linux/macOS:
.venv/bin/pyaedt
- Windows: