Sand3D
Intro
sand3d (Sand3D) is Sandflow's (Thibault Neveu & Andréa Loy) open LLM-oriented Python 3D modeling library: short programs for profiles, solids, edits, frames, joints and assemblies on top of Blender bpy. Site: https://sand3d.sandflow.ai ; repo: https://github.com/Sandflow-ai/sand3d ; pip install sand3d (Apache-2.0).
Design goals:
- Shorter: ~4× fewer tokens vs Blender Python for the same CAD part (median; also vs CadQuery / FeatureScript / Articraft programs);
- Whole API fits a prompt (~3643 tokens via
api.md/llms.txt); - Named, not hand-computed coordinates for parts/edges/faces;
- Deterministic: same program → bitwise-identical mesh;
- Export GLB / URDF / USDA / OBJ / STL for web, ROS, Omniverse, etc.
Companion HF datasets (CC BY 4.0) rebuild Objaverse / CAD / Articraft / SimReady / AutoMate assets as sand3d programs.
Explain
Why it matters
Raw bpy from an LLM is long and brittle. sand3d flattens CAD-as-code into an s3d.* verb surface plus a prompt-sized API card — better for agents that must emit runnable 3D programs.
Runtime
Prefer Python 3.13 (bundled bpy 5.2 LTS) or 3.11 (bpy 4.5 LTS); no official wheels for 3.12 or Intel Macs on bpy 5.2+.
Limits
- Tied to Blender/
bpyand matching Python; - Token wins are on the authors' suites — organic art meshes may differ;
- No category verbs like
chair()— categories are programs you write.
Usage
Who it's for
- People using LLMs/agents to emit CAD, articulated objects or sim assets;
- Teams needing URDF/USD for robotics / Isaac;
- Developers who want a full 3D API inside the prompt.
Getting started
pip install sand3doruv add sand3d;- Drop https://sand3d.sandflow.ai/api.html / repo
docs/api.mdinto the system prompt; - Follow the quickstart (
extrude/hole/fillet, thens3d.export(..., "part.glb")); - For multi-part objects, follow the assembly guidelines (plan, then details, then parts).
Advertisement