Community编程与开发github.com

shou0715-Arthur/pyaedt-cli

用于通过当前 PyAEDT CLI 与 ANSYS AEDT 交互。适用于启动或检查 AEDT 会话、管理项目、创建设计、运行脚本、导出截图或配置,以及在工作区虚拟环境中使用 PyAEDT 命令行。

pyaedt-cli 是什么?

该技能旨在指导 AI 代理如何有效使用 `pyaedt` 命令行界面与 ANSYS Electronics Desktop (AEDT) 进行交互。技能概述了从工作区虚拟环境中解析 `pyaedt` 二进制文件并验证其安装的步骤,推荐使用 `pip install pyaedt[all]` 以启用全部功能。所有生成的文件(如截图、配置导出)应写入临时目录,除非用户明确指定持久化路径。遇到非交互式命令时,务必使用 `--json` 标志以获取结构化输出,这样返回的 JSON 对象包含 `status` 和 `data`/`error` 字段,便于程序化解析。 命令按功能分组:`session` 管理 AEDT 实例的生命周期(启动、列出、停止、附加),`project` 操作项目文件,`script` 执行 Python 脚本,`export` 导出截图或配置,`panels` 操作 UI 面板,`doc` 打开文档页面,以及 `version`/`aedt-versions` 等顶层命令。当前 CLI 基于端口模型:`session start` 启动 AEDT 并返回 gRPC 端口,后续操作(如 `project list`)需通过 `--port` 指定目标实例。对于设计范围的操作(如截图导出、项目附加),技能定义了明确的唯一性解析规则,以避免“活动项目”的模糊性。该技能完全兼容基于 Claude Code、Cursor 或 Codex 环境的 AI 代理,适合在自动化工作流或开发辅助场景中集成。

兼容平台~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 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

PyAEDT CLI 技能

您可以访问 pyaedt CLI 来与 ANSYS Electronics Desktop (AEDT) 进行交互。本技能教您如何有效使用它。

预检(先运行)

在任何 CLI 命令之前,请验证 pyaedt 是否已安装:

pyaedt --json version

如果命令失败,请停止,并指示用户首先安装它,使用 all 安装目标以启用全部功能。

pip install pyaedt[all]

调用 CLI

在运行任何命令之前,请先解析一次 pyaedt 可执行文件路径:

  1. 尝试直接使用 pyaedt。如果它在系统 PATH 中,则直接使用。
  2. 如果未找到,则回退到当前工作目录下的虚拟环境本地可执行文件:
    • Windows: .venv\Scripts\pyaedt
    • Linux/macOS: .venv/bin/pyaedt

所有示例为简洁起见均使用 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 中的可用组:

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

顶级命令:

  • version
  • aedt-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 screenshot
  • export config
  • session attach(当与 --project 或 --design 一起使用时)

解析规则:

  • 如果同时提供了 --project 和 --design,则直接使用它们。
  • 如果仅提供了 --project,则该项目必须恰好包含一个设计。
  • 如果仅提供了 --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 可以交互式工作。
  • 对具有可用端口的 gRPC 实例,session attach 与 --project 或 --design 一起使用时才有效。

项目命令

所有项目命令都需要指定端口以确定目标 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 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 作为首选。 它会打开一个交互式 Python 控制台,该控制台已连接到目标 AEDT 会话。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:Design A 的控制台
pyaedt session attach --port 50051 --project "ProjectA" --design "DesignA"

# 终端 2:Design 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 "H

…
[截断以进行翻译]

Individual skills in this repo

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

相关技能