forked from 1b-agent/fieldcraft-upstream
The demo used the corpus I-beam, which is extruded along z and so stood upright. A new corpus part, cantilever-i-beam, is the same section on the YZ plane extruded along x, web upright: a sweep along a horizontal axis for the meshers, and a cantilever that bends downward on screen. The i-beam part is unchanged (its corpus row and the meshing tests keep it). The demo clamps it at x = 0 and loads the free end with 1000 N in -z through a kinematic coupling, and now checks the solution against beam theory and stops when it is off: tip deflection (bending plus shear) within 3 %, root bending stress (stress_xx along the top flange, extrapolated to the root, nodes from the Abaqus deck) within 2 %. docs/meshing/corpus.md regenerated with the new part. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
44 lines
2.6 KiB
Markdown
44 lines
2.6 KiB
Markdown
# Demo video
|
||
|
||
`make.py` regenerates the README's demo, `docs/media/ibeam-analysis.mp4` and
|
||
`docs/media/ibeam-analysis.gif`: an agent analyses an I-beam cantilever over MCP while the
|
||
desktop app shows each step.
|
||
|
||
```sh
|
||
python3 tools/demo-video/make.py # build, run, encode into docs/media
|
||
python3 tools/demo-video/make.py --no-build # with the release binaries already built
|
||
python3 tools/demo-video/make.py --frames /tmp/f # also keep the captured pictures
|
||
```
|
||
|
||
Needs Python 3 (standard library only), a display for the app window (the pictures are drawn
|
||
offscreen, so a locked screen is fine) and `ffmpeg` with libx264 on the `PATH` (or `FFMPEG`).
|
||
It honours `CARGO_TARGET_DIR`.
|
||
|
||
What it does:
|
||
|
||
1. Builds `fieldcraft`, `fieldcraft-cli` and the testkit's `corpus` tool (release).
|
||
2. Writes the corpus cantilever I-beam (`tests/corpus/cantilever-i-beam`: 40 x 40 mm, 3 mm
|
||
flanges, a 2 mm web upright, 200 mm long along x) as a `.solidcraft` design to a temporary
|
||
folder with `corpus --part cantilever-i-beam --design`.
|
||
3. Starts the app with `--control PORT` and `fieldcraft-cli mcp --connect 127.0.0.1:PORT`, and
|
||
speaks MCP (JSON-RPC over stdio) to it. Every step is an MCP tool call: `open` the design,
|
||
`mesh` (`hex_sweep`, 4 mm), `batch` (steel, a solid section, the root clamp, a kinematic
|
||
coupling of the free end at x = 200 mm to a reference point loaded with 1000 N down, −z), `check_model`, `solve`
|
||
(`static`), and `show_results` for the von Mises contours and the deformed shape, its `scale`
|
||
stepped from 1 to 150 and back. Every picture is the MCP `screenshot` tool with
|
||
`source: window` (the whole window drawn offscreen, `ui.capture`), turned to the `iso` or
|
||
`front` view by its `view` argument.
|
||
4. Encodes the pictures at 10 frames per second, each held for its stage, into the MP4 (H.264,
|
||
1280 px) and the GIF (960 px, its own palette), and prints the tip deflection and the peak
|
||
von Mises stress.
|
||
|
||
The theme is the app's default (dark).
|
||
|
||
The script checks the solution against beam theory and stops when it is off. Tip deflection:
|
||
P L³ / 3 E I = 0.1429 mm in bending plus P L / G A_web = 0.0335 mm in shear, 0.1763 mm; the
|
||
solution gives 0.1764 mm (within 3 %). Root bending stress: P L c / I = 45.0 MPa
|
||
(I = 88 871 mm⁴); the solution's stress_xx on the top flange, fitted along the beam between one
|
||
depth from either end and extrapolated to the root, gives 44.8 MPa (within 2 %). At the root
|
||
itself the clamp, which stops the section's Poisson contraction, adds a local peak (62 MPa
|
||
stress_xx, 56 MPa von Mises) that beam theory does not have.
|