Back home

Sand3D

github 0.74
Visit source

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/bpy and 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

  1. pip install sand3d or uv add sand3d;
  2. Drop https://sand3d.sandflow.ai/api.html / repo docs/api.md into the system prompt;
  3. Follow the quickstart (extrude/hole/fillet, then s3d.export(..., "part.glb"));
  4. For multi-part objects, follow the assembly guidelines (plan, then details, then parts).

Advertisement