PyAEDT CLI スキル
あなたはpyaedt CLIにアクセスして、ANSYS Electronics Desktop (AEDT)と対話できます。このスキルでは、その効果的な使い方を説明します。
実行前チェック(最初に実行)
CLIコマンドを実行する前に、pyaedtがインストールされていることを確認してください。
pyaedt --json version
コマンドが失敗した場合は、処理を中断し、allインストールターゲットを使用してフル機能を有効にするようユーザーに指示してください。
pip install pyaedt[all]
CLIの呼び出し
コマンドを実行する前に、pyaedtバイナリの場所を1回特定します。
pyaedtを直接試します。システムのPATHにあればそのまま使用します。- 見つからない場合は、現在の作業ディレクトリ内のvenvローカルバイナリにフォールバックします。
- Windows:
.venv\Scripts\pyaedt - Linux/macOS:
.venv/bin/pyaedt
- Windows:
すべての例では簡潔さのためにpyaedtを使用しています。必要に応じて、特定されたパスに置き換えてください。
生成アーティファクトの作業ディレクトリ
ユーザーが明示的に指定しない限り、すべてのエクスポートおよび生成ファイルには一時ディレクトリを使用します。
ルール:
- OSの一時ディレクトリの下にタスク固有のサブディレクトリを作成します。
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は、--projectまたは--designによって既存のAEDTセッションを選択するためにも使用できるため、すべてのワークフローが既知のポートから開始するわけではありません。- 後で再利用するための永続化された
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
プロジェクトと設計の解決ルール
設計スコープのコマンドは、1つの共有解決ルールセットを使用します。これは重要であり、ガイダンスと例で一貫して適用する必要があります。
影響を受けるコマンド:
export screenshotexport configsession attach(--projectまたは--designと一緒に使用する場合)
解決ルール:
--projectと--designの両方が指定された場合、それらを直接使用します。--projectのみが指定された場合、そのプロジェクトには正確に1つの設計が含まれている必要があります。--designのみが指定された場合、正確に1つのプロジェクトが開いている必要があります。- どちらも指定されていない場合、正確に1つの開いているプロジェクトとその中に正確に1つの設計が存在する必要があります。
- 選択が曖昧な場合、コマンドは失敗し、不足しているセレクターを指定する必要があります。
ユーザーを支援するとき、コマンドが実際にその動作を使用しない限り、この動作を「アクティブプロジェクト」または「アクティブ設計」フォールバックとして説明しないでください。意図された動作は一意性ベースの解決です。
コマンドリファレンス
トップレベルコマンド
| コマンド | 説明 |
|---|---|
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 | PID、バージョン、ポートとともに実行中のAEDTインスタンスを一覧表示 |
pyaedt --json session stop --port 50051 | 特定のAEDTインスタンスをポートで停止 |
pyaedt --json session stop --all | すべてのAEDTインスタンスを閉じる |
pyaedt session attach [--port 50051] [--project NAME] [--design NAME] | 実行中のインスタンスに接続された対話型PyAEDTコンソールを起動 |
注意:
session attachは、--portを省略しユーザーがインスタンスを選択する場合、対話的に動作できます。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を起動します。- 1つのプロセスを返す場合、そのポートを再利用します。
- 複数のプロセスを返す場合、使用するポートをユーザーに尋ねます。
ワークフロー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コマンドを1つずつ発行できます。
# 実行中のインスタンスに接続(ポートはオプション、省略するとプロンプト表示)
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オブジェクトを保持します。1つのコンソールを閉じても、他のコンソールは閉じません。
- すべてのコンソールは同じAEDTインスタンス(同じ
--port)を共有するため、1つのコンソールで行った変更は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: 設計データのエクスポート
# インスタンスに正確に1つのプロジェクトと1つの設計がある場合、セレクターは省略可能
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
トラブルシューティング
session startが失敗する
# グラフィカルモードを試す
pyaedt --json session start --version 2026.1 --graphical
# 別のバージョンを試す
pyaedt --json aedt-versions
runコマンドがPythonエラーを報告する
session attachでスクリプトを対話的に手動でテストする- スクリプトが
new_desktop=Falseを使用していることを確認する(既存のインスタンスを対象とする場合) - すべてのパスが絶対パスであることを確認する
ポートが拒否された
session listでインスタンスがまだ実行中か確認してください。タイムアウト後に終了した可能性があります。必要に応じて再起動してください。