Communityコーディング&開発github.com

shou0715-Arthur/pyaedt-cli

PyAEDT CLIを使用してANSYS AEDTと対話します。セッションの開始・確認、プロジェクト管理、設計作成、スクリプト実行、スクリーンショットや設定のエクスポートなどに対応します。

pyaedt-cli とは?

このスキルは、PyAEDT CLI(`pyaedt`)を使ってANSYS Electronics Desktop (AEDT)と連携するためのものです。主にClaude CodeやCodexなどのエージェント向けで、ユーザーからのリクエストに基づいてAEDTのセッションを開始・停止したり、プロジェクトや設計を作成・管理したり、スクリプトを実行したり、設計のスクリーンショットや設定JSONをエクスポートしたりできます。PyAEDTはpipでインストール可能で、スキルはまずインストール確認を行い、適切なターゲット(`all`インストールターゲット)を推奨します。CLIは主にポートベースのモデルを採用しており、`session start`で新しいインスタンスを起動し、返されたgRPCポートを後続のコマンドに渡します。プロジェクトや設計の解決は一意性ベースのルールに従い、曖昧な場合はユーザーに追加情報を求めます。対話的な探索には`session attach`、定義済みの再現可能なワークフローには`run`を使い分けることで、効率的な自動化とデバッグが可能です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shou0715-Arthur/pyaedt-examples-and-skills/tree/main/skills/pyaedt-cli

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

PyAEDT CLI スキル

あなたはpyaedt CLIにアクセスして、ANSYS Electronics Desktop (AEDT)と対話できます。このスキルでは、その効果的な使い方を説明します。

実行前チェック(最初に実行)

CLIコマンドを実行する前に、pyaedtがインストールされていることを確認してください。

pyaedt --json version

コマンドが失敗した場合は、処理を中断し、allインストールターゲットを使用してフル機能を有効にするようユーザーに指示してください。

pip install pyaedt[all]

CLIの呼び出し

コマンドを実行する前に、pyaedtバイナリの場所を1回特定します。

  1. pyaedtを直接試します。システムのPATHにあればそのまま使用します。
  2. 見つからない場合は、現在の作業ディレクトリ内のvenvローカルバイナリにフォールバックします。
    • Windows: .venv\Scripts\pyaedt
    • Linux/macOS: .venv/bin/pyaedt

すべての例では簡潔さのために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で利用可能なグループ:

  • session
  • project
  • script
  • export
  • test-config
  • panels
  • doc

トップレベルのコマンド:

  • version
  • aedt-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 screenshot
  • export config
  • session attach(--projectまたは--designと一緒に使用する場合)

解決ルール:

  • --projectと--designの両方が指定された場合、それらを直接使用します。
  • --projectのみが指定された場合、そのプロジェクトには正確に1つの設計が含まれている必要があります。
  • --designのみが指定された場合、正確に1つのプロジェクトが開いている必要があります。
  • どちらも指定されていない場合、正確に1つの開いているプロジェクトとその中に正確に1つの設計が存在する必要があります。
  • 選択が曖昧な場合、コマンドは失敗し、不足しているセレクターを指定する必要があります。

ユーザーを支援するとき、コマンドが実際にその動作を使用しない限り、この動作を「アクティブプロジェクト」または「アクティブ設計」フォールバックとして説明しないでください。意図された動作は一意性ベースの解決です。

コマンドリファレンス

トップレベルコマンド

コマンド説明
pyaedt --json versionPyAEDTバージョンを表示
pyaedt --json aedt-versionsマシンにインストールされているAEDTバージョンを一覧表示

セッション管理

コマンド説明
pyaedt --json session start --version 2026.1 [--port 50051] [--non-graphical]新しいAEDTインスタンスを起動
pyaedt --json session listPID、バージョン、ポートとともに実行中の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値:

  • Hfss
  • Maxwell2d
  • Maxwell3d
  • Q3d
  • Q2d
  • Icepak
  • Circuit
  • TwinBuilder
  • Mechanical
  • Emit
  • Rmxprt
  • Hfss3dLayout
  • MaxwellCircuit

スクリプトコマンド

コマンド説明
pyaedt --json run "path/to/script.py" --port 50051AEDT内で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 githubGitHubリポジトリを開く
pyaedt doc user-guideユーザーガイドを開く
pyaedt doc getting-startedはじめにのドキュメントを開く
pyaedt doc installationインストールドキュメントを開く
pyaedt doc apiAPIリファレンスを開く
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エラーを報告する

  1. session attachでスクリプトを対話的に手動でテストする
  2. スクリプトがnew_desktop=Falseを使用していることを確認する(既存のインスタンスを対象とする場合)
  3. すべてのパスが絶対パスであることを確認する

ポートが拒否された

session listでインスタンスがまだ実行中か確認してください。タイムアウト後に終了した可能性があります。必要に応じて再起動してください。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル