- Python 61.1%
- Nix 37.1%
- Makefile 1.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| docs/superpowers | ||
| models | ||
| src/modelgen | ||
| tests | ||
| .gitignore | ||
| AGENTS.md | ||
| flake.lock | ||
| flake.nix | ||
| Makefile | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Agentic 3D Models
Parametric CAD models designed and generated by agents using Python and build123d. All dimensions are millimetres.
Quick start
Install uv, then:
uv sync
uv run modelgen generate mounting_plate --output-dir outputs/mounting_plate
uv run modelgen validate outputs/mounting_plate/mounting_plate.stl
uv run modelgen generate t_joint --output-dir outputs/t_joint
uv run modelgen validate outputs/t_joint/t_joint.stl
orca-slicer --info outputs/t_joint/t_joint.stl
uv run pytest
The generated STL is suitable for slicing. The STEP file is retained for CAD editing. Generated files are ignored by Git; the Python source is authoritative.
Agent workflow
- Convert the request into explicit dimensions, tolerances, material, and print orientation.
- Add or modify a model module under
models/with abuild_model()function. - Add geometry assertions under
tests/. - Generate and validate STL/STEP artifacts.
- Inspect the STL in a slicer before manufacturing.
Models should be solid, deterministic, watertight, and designed with realistic clearances and minimum feature sizes for the target printer.
The OrcaSlicer --info check is part of the artifact workflow: it confirms the
STL is a single manifold object before it is sent to a slicer or printer.
FreeCAD & MCP Integration (Nix)
This repository includes a flake.nix providing FreeCAD and freecad-mcp.
Running FreeCAD and MCP Server
-
Enter the Nix dev shell (automatically installs and links the
FreeCADMCPaddon):nix develop -
Launch FreeCAD with MCP Addon:
freecad # Or run directly via Nix: nix run .#freecadIn FreeCAD, switch to the "MCP Addon" workbench and start the RPC server (or enable "Auto-Start Server" in FreeCAD MCP menu).
-
Run the MCP server:
nix run .#freecad-mcp # Or inside `nix develop`: freecad-mcp
MCP Client Configuration
To allow MCP clients (such as Antigravity, Claude Desktop, etc.) to control FreeCAD:
{
"mcpServers": {
"freecad": {
"command": "nix",
"args": ["run", "/home/daniel/Repositories/3dprint#freecad-mcp"]
}
}
}