Skip to content
Design
Skill

/fea

Checks whether a part or an assembly of bonded parts holds under its loads, as a linear static stress study of a STEP, an xbf or a text-to-cad model, meshed by netgen and solved by CalculiX, giving peak von Mises stress, safety factor against yield and deflection drawn on the

From plugin
text-to-cad
26k8 skills

Claude Code

$ npx -y skills add earthtojake/text-to-cad --skill fea --agent claude-code

SKILL.md

fea.SKILL.md
name: fea
description: Checks whether a part or an assembly of bonded parts holds under its loads, as a linear static stress study of a STEP, an xbf or a text-to-cad model, meshed by netgen and solved by CalculiX, giving peak von Mises stress, safety factor against yield and deflection drawn on the part. Use when the person asks whether a part will hold, break or is strong enough, how much it bends or sags, where it is most stressed, how much load it takes, how to make it stronger or lighter without failing, or for FEA, a stress analysis or a strength simulation. Static loads and steady g-loads only.
license: MIT
metadata:
  repository: earthtojake/text-to-cad

FEA: will it hold, and how far does it move

A study holds some faces of a part, loads others, and has CalculiX solve the linear elastic response on a netgen mesh of quadratic tetrahedra: stress and displacement under forces, pressures, the part's own weight and a steady acceleration, with an isotropic material below yield, perfectly rigid fixtures and loads that do not move. An assembly's parts are bonded where they touch. It is a first-pass engineering check, not a certification; say so when you report. Vibration, buckling, heat, flow, fatigue, impact and parts that slide on each other are not in this version: say so plainly, and do not pass a static safety factor off as an answer to them. A drop or a braking load can be estimated as a steady g-load ([Body loads](references/linear-static.md#body-loads-gravity-and-acceleration)).

Start with the task

| Task | Start with | Reference | | --- | --- | --- | | **Check a part under a load** | `cad step solve part.step` lists its faces; write the study; solve into a folder. | [Workflow](#workflow), [Linear static](references/linear-static.md) | | **Check an assembly** | `cad step solve assembly.step` lists the parts and the pairs that touch. | [Assemblies](#assemblies) | | **Write or edit a study** | One JSON object: fixtures and loads, then material, mesh, margin and checks; parts and connections for an assembly. | [Study file](references/study-file.md) | | **Choose a material** | The model's own (solve the model or its `.xbf`), or the E, ν and yield the user gives. | [Materials](references/materials.md) | | **Judge the answer** | `result.json` and its findings, against a hand estimate. | [Findings](#findings), [Judging the answer](references/linear-static.md#judging-the-answer) | | **Answer a question the summary does not** | `result.vtu`, read with meshio. | [Your own questions](#your-own-questions) | | **Compare variants of a design** | The same study on each, faces mapped, mesh size held. | [Compare variants](#compare-variants) |

This skill studies a part; it does not model one. It reads a saved `.step` or `.xbf`, or a model the engine holds by its document id (`cad model solve <id>`), and solves the whole document: to study one part of an assembly alone, export it as a document of its own.

Setup

Run the `cad` command (`~/.local/bin/cad` where it is not on your PATH; `cad.exe` on Windows). If it is missing, install text-to-cad, outside a sandbox or with its permission:

curl -fsSL https://texttocad.dev/install.sh | sh

On Windows, in PowerShell: `irm https://www.texttocad.dev/install.ps1 | iex`. If the CAD app was only just added, its server may still be starting: try again for up to a minute first. `cad doctor --check` explains any other failure, changing nothing; `cad doctor` repairs what it reports. Tell the person any next step `cad setup` prints.

The study is the `solve` operation of the document's type: `cad step solve`, `cad xbf solve`, `cad model solve`. With no `--study` it lists the study's setup and writes nothing; with `--study` and `--out DIR` it solves and writes its results into `DIR`. Its two tools are integrations the `cad` command installs the first time a study needs them, nothing for you to install; `cad run` gives a script that calls `cad.step.solve` both, with the kernel that reads the part.

  • **netgen**, the mesher: the `netgen` integration (`cad[netgen]`, about 11 MB). netgen publishes

it for macOS, Linux x86_64 and Windows x86_64 alone; elsewhere (Linux on ARM among them) a solve refuses, naming the platform.

  • **CalculiX** (`ccx`), the solver: the `calculix` integration (`cad[calculix]`: the cad-ccx

package, CalculiX 2.23 for each platform, about 13 MB). A person's own CalculiX is never run unless `CAD_CCX` names the file (2.20 or newer). It runs headless, on one thread, in a private folder, so the same study gives the same numbers every run, and every result names the version that solved it. `cad run ccx ARGS` runs that same `ccx` on a deck of your own.

Units are fixed: mm, N, MPa (pressure, modulus and stress), t/mm³ for density (steel 7.85e-9) and g (9.81 m/s²) for gravity and acceleration. Restate every load in them before you write it down.

Workflow

1. **List the faces.** A study names faces by the engine's refs, the ones the CAD Viewer copies; a face the user picked there arrives as `/work/bracket.step#bracket/face 17` and needs no lookup.

   cad step solve part.step

With no study this is the setup, and writes nothing: the parts, the pairs that touch, then each face of the part, one a line: ref, area, centre, surface type and a hint such as `plane, normal -Z, largest`. Match the user's words ("the mounting face") to a ref by the hint and the centre; a hole is a `cylinder`. A document of several parts lists no faces until one is named: `cad step solve assembly.step --occurrence post`. A face number is a position in the saved document, so a part edited and written again is listed again before its study is re-run.

2. **Write the study** ([study-file.md](references/study-file.md)):

   {
     "fixtures": [{"faces": ["bracket/face 17"], "type": "fixed"}],
     "loads": [{"faces": ["bracket/face 22"], "type": "force", "vector_N": [0, -500, 0]}]
   }
Read more
@earthtojake
Ships withtext-to-cad

Design physical products with AI

Stars on GitHub

Momentum

stars in total
26.3k
Star history of earthtojake/text-to-cad on GitHub, a chart by star-history.com

Other skills on text-to-cad.

cad

cad

Creates and edits parametric CAD parts, assemblies and 2D profiles as Python build123d models that text-to-cad's server builds…

pcb

pcb

Create, edit, lay out and review native KiCad circuit boards (.kicad_pcb) and their schematics (.kicad_sch) - parts and nets,…

print3d

print3d

Prints a part - slices an `.stl`, `.3mf` or `.obj` into printer-ready G-code with OrcaSlicer, headless or in the app, with…

render

render

Renders photoreal images and videos of a text-to-cad model, a STEP or an xbf with Blender, for people to look at, such as a hero…

robot-simulation

robot-simulation

Robot and world descriptions (URDF, SRDF, MJCF) for ROS, MoveIt and MuJoCo. Use to generate a robot description or a MuJoCo scene…

More skills from other plugins.

impeccable

impeccable

Use to design, redesign, critique, audit, polish or animate a frontend: websites, landing pages, dashboards, app UI, components,…

@pbakaus@pbakausInstall Skill

Questions about fea.

Which coding agents can use fea?
fea installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.