shou0715-Arthur/pyaedt-cli

Use ao interagir com o ANSYS AEDT por meio da CLI do PyAEDT. Acionado por solicitações para iniciar ou inspecionar sessões do AEDT, gerenciar projetos, criar designs, executar scripts, exportar capturas de tela ou configurações ou usar a linha de comando do PyAEDT a partir do ambiente virtual do espaço de trabalho.

O que é pyaedt-cli?

Esta skill capacita agentes de IA (como Claude Code, Cursor, Codex) a interagir programaticamente com o ANSYS Electronics Desktop (AEDT) através da interface de linha de comando (CLI) do PyAEDT. Ela fornece um guia completo e estruturado para executar operações comuns, como iniciar ou parar sessões do AEDT, gerenciar projetos e designs, executar scripts Python dentro do AEDT, exportar capturas de tela e configurações de design, e acessar a documentação. A skill enfatiza o uso do formato JSON para saída estruturada em comandos não interativos, garantindo que as respostas sejam fáceis de analisar programaticamente. Também cobre aspectos práticos como localizar o binário do PyAEDT, usar diretórios temporários para artefatos gerados e resolver a ambiguidade entre projetos e designs. Com fluxos de trabalho detalhados para descoberta, automação e exploração interativa (via `session attach` com orientação para tratamento de código multilinha), esta skill serve como um recurso essencial para agentes que precisam automatizar tarefas de engenharia eletromagnética no AEDT de forma confiável.

Funciona com~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 Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Habilidade PyAEDT CLI

Você tem acesso à CLI pyaedt para interagir com o ANSYS Electronics Desktop (AEDT). Esta skill ensina como usá-la de forma eficaz.

Verificação pré-voo (execute primeiro)

Antes de qualquer comando CLI, verifique se o pyaedt está instalado:

pyaedt --json version

Se o comando falhar, pare e instrua o usuário a instalá-lo primeiro usando o alvo de instalação all para habilitar todos os recursos.

pip install pyaedt[all]

Invocando a CLI

Antes de executar qualquer comando, resolva o binário pyaedt uma vez:

  1. Tente pyaedt diretamente. Se estiver no PATH do sistema, use-o como está.
  2. Se não for encontrado, recorra ao binário local do ambiente virtual no diretório de trabalho atual:
    • Windows: .venv\Scripts\pyaedt
    • Linux/macOS: .venv/bin/pyaedt

Todos os exemplos usam pyaedt por brevidade. Substitua pelo caminho resolvido, se necessário.

Diretório de trabalho para artefatos gerados

Use diretórios temporários para todas as exportações e arquivos gerados, a menos que o usuário especifique o contrário.

Regras:

  • Crie um subdiretório específico para a tarefa sob o diretório temporário do sistema operacional
  • Use tempfile.mkdtemp(prefix="pyaedt-skill-") (Python), $env:TEMP (Windows) ou ${TMPDIR:-/tmp} (Linux/macOS)
  • Não escreva no repositório ou em pastas arbitrárias, a menos que seja explicitamente solicitado
  • Mova artefatos do diretório temporário somente após exportação bem-sucedida, se o usuário quiser mantê-los

Referência rápida:

import tempfile

temp_dir = tempfile.mkdtemp(prefix="pyaedt-skill-")

Passe este caminho para --path ou --output em comandos de exportação.

Use --json para comandos não interativos

Use --json para cada comando não interativo para que a saída permaneça estruturada e analisável por máquina.

A saída JSON retorna: {"status": "ok", "data": {...}} ou {"status": "error", "error": "message"}

Sempre analise o campo status antes de usar data. Nunca confie em saída legível por humanos.

Exceções:

  • session attach abre um console interativo, então o modo humano é aceitável.
  • Comandos doc abrem páginas do navegador e geralmente não são consumidos como saída de automação estruturada.

Forma atual da CLI

Os comandos são organizados como:

pyaedt [--json] <grupo> <comando> [opções]

Grupos disponíveis na CLI atual:

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

Comandos de nível superior:

  • version
  • aedt-versions

Não invente outros grupos de comando ou comandos que não existam na CLI atual. Se uma operação necessária não for suportada pela CLI, relate isso ao usuário em vez de tentar contornar.

Modelo baseado em porta

A CLI atual é baseada principalmente em porta.

  • session start inicia uma nova instância do AEDT e retorna sua porta gRPC.
  • session list descobre instâncias do AEDT em execução.
  • A maioria dos comandos operacionais requer --port explicitamente.
  • session attach também pode ser usado para selecionar uma sessão AEDT existente, inclusive por --project ou --design, portanto, nem todo fluxo de trabalho começa com uma porta conhecida.
  • Não há estado persistido de session connect para reutilizar posteriormente.

Implicação prática:

# Descobrir ou iniciar AEDT
pyaedt --json session list
pyaedt --json session start --version 2026.1 --non-graphical

# Em seguida, passe --port para o comando desejado
pyaedt --json project list --port 50051
pyaedt --json run my_script.py --port 50051

Regras de resolução de projeto e design

Comandos com escopo de design usam um conjunto de regras de resolução compartilhado. Isso é importante e deve ser aplicado de forma consistente nas orientações e exemplos.

Comandos afetados:

  • export screenshot
  • export config
  • session attach quando usado com --project ou --design

Regras de resolução:

  • Se ambos --project e --design forem fornecidos, use-os diretamente.
  • Se apenas --project for fornecido, esse projeto deve conter exatamente um design.
  • Se apenas --design for fornecido, exatamente um projeto deve estar aberto.
  • Se nenhum for fornecido, deve haver exatamente um projeto aberto e exatamente um design nele.
  • Se a seleção for ambígua, o comando falha e o seletor ausente deve ser fornecido.

Ao ajudar um usuário, não descreva esse comportamento como fallback de "projeto ativo" ou "design ativo", a menos que o comando realmente use esse comportamento. O comportamento pretendido é a resolução baseada em exclusividade.

Referência de comando

Comandos de nível superior

ComandoDescrição
pyaedt --json versionExibe a versão do PyAEDT
pyaedt --json aedt-versionsLista as versões instaladas do AEDT na máquina

Gerenciamento de sessão

ComandoDescrição
pyaedt --json session start --version 2026.1 [--port 50051] [--non-graphical]Inicia uma nova instância do AEDT
pyaedt --json session listLista instâncias do AEDT em execução com PID, versão e porta
pyaedt --json session stop --port 50051Para uma instância específica do AEDT pela porta
pyaedt --json session stop --allFecha todas as instâncias do AEDT
pyaedt session attach [--port 50051] [--project NAME] [--design NAME]Inicia um console interativo do PyAEDT conectado a uma instância em execução

Notas:

  • session attach pode funcionar interativamente se --port for omitido e o usuário selecionar uma instância.
  • --project ou --design com session attach funciona apenas para instâncias gRPC com uma porta utilizável.

Comandos de projeto

A porta é necessária para todos os comandos de projeto para especificar qual instância do AEDT direcionar.

ComandoDescrição
pyaedt --json project list --port 50051Lista todos os projetos abertos e seus designs
pyaedt --json project open "C:/caminho/para/arquivo.aedt" --port 50051 [--non-graphical]Abre um arquivo de projeto do AEDT
pyaedt --json project save --port 50051 [--path "C:/novo/arquivo.aedt"]Salva o projeto ativo, opcionalmente como um novo arquivo
pyaedt --json project create --name ProjetoA --port 50051Cria um projeto. Use --name.
pyaedt --json project create --project ProjetoA --design Design1 --type Hfss --port 50051Cria um design dentro de um projeto existente. Use --project + --design + --type.
pyaedt --json project close --port 50051 [--project ProjetoA]Fecha um projeto, ou o projeto ativo se omitido

Comportamento de project create:

  • --name é para criação de projeto.
  • --project + --design + --type é para criação de design.
  • Não misture --name com --design / --type.

Valores suportados para --type:

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

Comandos de script

ComandoDescrição
pyaedt --json run "caminho/para/script.py" --port 50051Executa um script Python dentro do AEDT

Comandos de exportação

ComandoDescrição
pyaedt --json export screenshot --port 50051 [--path preview.jpg] [--project NOME] [--design NOME]Captura uma captura de tela para um design resolvido
pyaedt --json export config --port 50051 [--output config.json] [--project NOME] [--design NOME] [--overwrite]Exporta um JSON de configuração de design

Ambos os comandos têm escopo de design e, portanto, seguem as regras de resolução de projeto/design compartilhadas acima.

Documentação

ComandoDescrição
pyaedt docAbre a página inicial da documentação e exibe ajuda
pyaedt doc examplesAbre a seção de exemplos
pyaedt doc githubAbre o repositório do GitHub
pyaedt doc user-guideAbre o guia do usuário
pyaedt doc getting-startedAbre a documentação de primeiros passos
pyaedt doc installationAbre a documentação de instalação
pyaedt doc apiAbre a referência da API
pyaedt doc changelog [VERSAO]Abre o changelog
pyaedt doc issuesAbre a página de problemas
pyaedt doc search <palavras-chave>Pesquisa na documentação online

Fluxos de trabalho comuns

Fluxo de trabalho 1: Descobrir ou iniciar AEDT

# Verificar instâncias em execução
pyaedt --json session list

# Se nenhuma estiver em execução, iniciar uma
pyaedt --json session start --version 2026.1 --non-graphical

Regra de decisão:

  • Se session list não retornar processos, inicie o AEDT.
  • Se retornar um processo, reutilize essa porta.
  • Se retornar vários processos, pergunte ao usuário qual porta usar.

Fluxo de trabalho 2: Inspecionar projetos em uma porta

pyaedt --json project list --port 50051

Use isso primeiro quando precisar entender quais seletores de projeto e design são necessários.

Fluxo de trabalho 3: Criar um projeto ou um design

# Criar um projeto. Use --name APENAS (NÃO adicione --design ou --type)
pyaedt --json project create --name "PatchAntenna" --port 50051

# Criar um design em um projeto existente. Use --project + --design + --type APENAS (NÃO adicione --name)
pyaedt --json project create --project "PatchAntenna" --design "HFSSDesign1" --type Hfss --port 50051

Fluxo de trabalho 4: Exploração interativa com session attach

Use session attach como primeira escolha quando o usuário quiser explorar, depurar ou iterar em um design interativamente. Ele abre um console Python interativo que já está conectado à sessão AEDT alvo. desktop é pré-injetado, então comandos PyAEDT podem ser emitidos um por um sem escrever um script completo.

# Conectar a uma instância em execução (porta opcional; pergunta se omitida)
pyaedt session attach --port 50051

# Dentro do console Python interativo, a sessão já está ativa:
# >>> 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)

Enviando código multilinha para o console Python interativo

Quando o agente envia código para o console Python interativo que abrange mais de uma linha (loops, condicionais, definições de função, etc.), colá-lo diretamente causa um IndentationError ou SyntaxError porque o console trata cada linha como uma entrada separada.

Sempre envolva blocos multilinha em exec(), codificando todas as quebras de linha como \n dentro de uma única string:

# Falha porque o console quebra no corpo do loop
for i in range(3):
    print(i)

# Correto: enviar como uma única chamada exec()
exec("for i in range(3):\n    print(i)")

Regras:

  • Use exec() para qualquer bloco que contenha código indentado (loops, if, with, definições de função ou classe).
  • Linhas de instrução única (imports, atribuições, chamadas de função) não precisam de exec().
  • Escape todas as aspas duplas internas como \" se o delimitador externo for ", ou use literais de string concatenados como mostrado acima.
  • Mantenha as chamadas exec() o mais curtas possível; se o bloco crescer além de ~10 linhas, prefira salvar um script temporário e usar run.

Quando preferir o comando session attach ao comando run:

SituaçãoAbordagem preferida
Explorar estado do design, objetivo desconhecidosession attach
Depurar uma etapa com falha interativamentesession attach
Ajustes pontuais de geometria / parâmetrossession attach
Iterar rapidamente em alguns comandossession attach
Fluxo de trabalho definido, repetível e com várias etapasrun
CI / headless / pipeline automatizadorun
Fluxo de trabalho com mais de ~5 etapasrun
Rastreabilidade e registro necessáriosrun

Prefira session attach primeiro. Graduado a run somente quando o fluxo de trabalho for conhecido e precisar ser repetível ou automatizado.

Trabalhando com vários designs simultaneamente

Quando o usuário precisar trabalhar em mais de um design ao mesmo tempo, abra um console Python interativo separado para cada design em vez de alternar designs dentro de um único console. Isso mantém cada design ativo e editável sem fechar ou liberar nenhum deles.

# Terminal 1: console para Design A
pyaedt session attach --port 50051 --project "ProjetoA" --design "DesignA"

# Terminal 2: console para Design B (mesmo projeto ou diferente)
pyaedt session attach --port 50051 --project "ProjetoA" --design "DesignB"

# Terminal 3: console para um design em um projeto diferente
pyaedt session attach --port 50051 --project "ProjetoB" --design "DesignC"

Regras:

  • Cada console mantém seu próprio objeto PyAEDT vinculado a um design específico. Fechar um console não fecha os outros.
  • Todos os consoles compartilham a mesma instância AEDT (mesmo --port), portanto as alterações feitas em um são visíveis no AEDT imediatamente.
  • Não chame desktop.release_desktop() ou aedt_app.release_desktop() dentro de nenhum desses consoles, a menos que você queira intencionalmente desligar o AEDT para todos os consoles abertos.
  • Se os designs residirem em instâncias AEDT diferentes, use o --port correspondente para cada console.

Fluxo de trabalho 5: Executar automação

pyaedt --json run "<diretório-temp>/setup_antenna.py" --port 50051

Fluxo de trabalho 6: Execução de script gerado

Use este fluxo de trabalho sempre que um script tiver sido gerado e precisar ser executado automaticamente.

# Passo 1: descobrir instâncias
pyaedt --json session list

# Passo 2: se necessário, iniciar uma
pyaedt --json session start --version 2026.1 --non-graphical

# Passo 3: executar o script na porta escolhida
pyaedt --json run "<diretório-temp>/generated_script.py" --port 50051

Regras:

  • Sempre determine a porta alvo primeiro.
  • Se várias instâncias estiverem em execução, apresente a lista completa e pergunte qual porta usar.
  • Não diga ao usuário para executar o script gerado manualmente se o fluxo de trabalho exigir execução automática.
  • Scripts gerados destinados a uma instância AEDT existente devem usar new_desktop=False.

Fluxo de trabalho 7: Exportar dados do design

# Se a instância tiver exatamente um projeto e um design, os seletores podem ser omitidos
pyaedt --json export screenshot --port 50051 --path "<diretório-temp>/preview.jpg"
pyaedt --json export config --port 50051 --output "<diretório-temp>/config.json" --overwrite

# Se ambíguo, especifique o(s) seletor(es) ausente(s)
pyaedt --json export screenshot --port 50051 --project "PatchAntenna" --design "H

…

[truncado para tradução]

Individual skills in this repo

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

Habilidades Relacionadas