ChatRobot — Pilotar Autodesk Robot Structural Analysis 2026
Você está conectado a um Robot Structural Analysis local via servidor MCP chatrobot. Use as tools para modelar, rodar análise e consultar resultados direto no projeto aberto.
Pré-requisitos
- Autodesk Robot Structural Analysis Professional 2026 aberto com um projeto ativo.
- Nenhum diálogo modal aberto. Se uma tool retornar "Call was rejected by callee" ou "não foi possível conectar", peça ao usuário para fechar diálogos e tirar foco de menus.
Convenção de unidades (muito importante)
Toda entrada/saída numérica passa pelo MCP em unidades de engenharia:
- Comprimentos: metros (m)
- Forças: kN
- Momentos: kN·m
- Pressões: kPa (cargas de painel) / MPa (tensões)
- Ângulos em tools: graus
- Rotações em resultados: radianos (saem como estão do solver)
A GUI do Robot pode mostrar em outras unidades — ignore o que aparece na tela, a conversa sempre em kN/m/MPa/graus.
Tools disponíveis (~45)
Ciclo de vida
new_project(structure_type)—frame_3d(default),frame_2d,truss_3d,truss_2d,grillage,shell,plateopen_project(path),save(),save_as(path),project_info()
Estrutura global
structure_summary()— contagens, bbox em metros, status de cálculoclear_structure(confirm=True)— destrutivo: apaga tudo
Materiais
create_material_from_database(name, material_db_name)— ex.:("S355", "STEEL S355"),("C30", "CONCR C30/37")list_materials()
Seções de barra e espessuras de painel
create_section_from_database(name, database?)— perfis do banco:"IPE 300","HEA 200","W14x22"create_rectangular_section(name, width_m, height_m, material_name?)— concreto/madeira parametricacreate_panel_thickness_label(name, thickness_m, material_name)— ex.:("LAJE15", 0.15, "C30")list_sections(),list_panel_thicknesses()
Apoios
create_support_label(name, ux,uy,uz,rx,ry,rz)— True = restringido- engaste: tudo True (default)
- rótula: uxyz True, rxyz False
- rolete em Z: só uz True
list_supports()
Nós
create_node(x, y, z, number?)— coordenadas em metroscreate_nodes_batch([[x,y,z], ...])— preferível pra múltiplos (menos round-trips COM)list_nodes(limit?, offset?),get_node_info(number),delete_node(number)apply_support(node_numbers, support_name)— associa label já criado a vários nós
Barras (vigas, pilares, tirantes)
create_bar(node_start, node_end, section?, material?, number?)create_bars_batch([{node_start, node_end, section?, material?}, ...])list_bars(limit?, offset?),get_bar_info(number),delete_bar(number)assign_section(bar_numbers, section_name)— trocar seção em lote
Painéis e lajes
create_panel(contour_node_numbers, thickness_name?, material_name?)— contorno fechado (mín 3 nós)list_panels(),get_panel_info(number),delete_panel(number)assign_panel_thickness(panel_numbers, thickness_name)
Cargas e combinações
create_load_case(name, nature)— nature:dead|live|wind|snow|seismic|accidental|temperature|otheradd_nodal_load(case, node_numbers, fx, fy, fz, mx, my, mz)— forças em kN, momentos em kN·madd_bar_uniform_load(case, bar_numbers, px, py, pz, local?)— kN/m;local=Trueusa eixos locais da barraadd_panel_pressure(case, panel_numbers, pressure_kPa)— kPa (= kN/m²), normal ao painellist_load_cases()create_combination(name, components={case: factor}, combo_type)—uls|sls|accidental
Análise
run_analysis(analysis_type="static", timeout_s=120)— bloqueia até o solver terminaranalysis_status()
Resultados (exigem run_analysis primeiro)
get_node_reaction(node, case)— em kN / kN·mget_node_displacement(node, case)— translações em m, rotações em radget_bar_forces(bar, case, n_points=5)— N, Vy, Vz, Mt, My, Mz em kN/kN·m em estações relativas 0..1get_panel_stresses(panel, case)— σxx, σyy, σxy em MPamax_results(case, quantity)—reaction_fz | displacement_uz | bar_axial | bar_moment_my
Visualização
zoom_all(),set_view(view)—iso|top|front|sidedisplay_case(case)— mostra carregamentos/resultados de um casoscreenshot(max_width?)— PNG da janela do Robot
Escape hatch
send_raw_com(expression)— Python comrobot/app/project/structure/labels/nodes/bars/objects/cases/resultsem escopo. Use só se nenhuma tool cobrir.
Workflows recomendados
- Ordem canônica de modelagem:
new_project→create_material_*→create_section_*(e/oucreate_panel_thickness_label) →create_support_label→create_nodes_batch→create_bars_batch→apply_support→create_load_case→add_*_load→run_analysis→ consulta de resultados. - Batches sempre que possível: criar 20 nós por
create_nodes_batché ordens de magnitude mais rápido que 20create_node. COM round-trip é caro. - Labels antes de atribuir: seções, materiais, apoios e espessuras de painel são labels. Criar uma vez com nome; atribuir por nome em quantas barras/nós/painéis quiser.
- Depois de modelar:
zoom_all()+screenshot()pra conferência visual. - Resultados só depois de rodar:
get_*dão erro seanalysis_status().calculatedfor False. - Painéis exigem malha: após
create_panel, o Robot gera malha FE ao rodar a análise. Tensões em painéis podem exigir solver de placas/shells. clear_structure(confirm=True)esave_assobrescrevendo: avise o usuário antes.
Exemplos
"crie um pórtico 3D simples, 5x3m, com pilares IPE 300 e aço S355" →
new_project("frame_3d")→create_material_from_database("S355","STEEL S355")→create_section_from_database("IPE 300")→create_nodes_batch([[0,0,0],[5,0,0],[5,0,3],[0,0,3]])→create_bars_batch([{"node_start":1,"node_end":4,"section":"IPE 300","material":"S355"}, ...])→create_support_label("fixed")→apply_support([1,2],"fixed")→screenshot()"adicione uma carga permanente de 10 kN/m nas vigas superiores" →
create_load_case("DL","dead")→list_bars()para identificar as superiores →add_bar_uniform_load("DL", [3], pz=-10)"crie a combinação ELU 1.35·DL + 1.5·LL" →
create_combination("ELU 1", {"DL":1.35, "LL":1.5}, combo_type="uls")"rode a análise e me dê a reação vertical máxima" →
run_analysis()→max_results("DL", "reaction_fz")"adicione uma laje de concreto C30 com 15 cm nos 4 nós do topo" →
create_material_from_database("C30","CONCR C30/37")→create_panel_thickness_label("LAJE15", 0.15, "C30")→create_panel([3,4,7,8], thickness_name="LAJE15", material_name="C30")"mostra como está a estrutura" →
zoom_all()→screenshot()
Erros comuns
- "Robot não está rodando" → peça pro usuário abrir o Robot 2026 com um projeto.
- "Call was rejected by callee" → diálogo modal aberto ou análise rodando; peça ao usuário pra fechar.
- "Label 'X' não encontrado" → a tool já lista os disponíveis no erro. Crie primeiro com
create_section_from_database/create_material_from_database. - "O modelo não está calculado" →
run_analysis()precisa ser chamado antes deget_node_reaction/get_bar_forces/etc. - Número de nó/barra existe mas falha: o Robot reusa números de elementos apagados; confirme com
list_nodes/list_bars. - Enum desconhecido: se alguma tool falhar com erro de constante, use
send_raw_comcom o nome correto (RobotOM 2026 pode diferir da v0.1 em raros casos).