Metadata-Version: 2.5
Name: studwright
Version: 0.0.2
Summary: Turn 3D models into strong, buildable brick designs with instructions and build animations.
Project-URL: Homepage, https://github.com/studwright/studwright
Project-URL: Issues, https://github.com/studwright/studwright/issues
Author: Studwright contributors
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: 3d,bricks,instructions,ldraw,mesh,voxel
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
Requires-Python: >=3.11
Requires-Dist: networkx>=3.2
Requires-Dist: numpy>=1.26
Requires-Dist: scipy>=1.11
Requires-Dist: trimesh>=4.0
Provides-Extra: all
Requires-Dist: colour-science>=0.4.4; extra == 'all'
Requires-Dist: manifold3d>=2.4; extra == 'all'
Requires-Dist: ortools>=9.10; extra == 'all'
Requires-Dist: pillow>=10.0; extra == 'all'
Requires-Dist: pymeshlab>=2023.12; extra == 'all'
Requires-Dist: pyside6>=6.6; extra == 'all'
Requires-Dist: python-fcl>=0.7; extra == 'all'
Requires-Dist: rtree>=1.2; extra == 'all'
Provides-Extra: app
Requires-Dist: pyside6>=6.6; extra == 'app'
Provides-Extra: color
Requires-Dist: colour-science>=0.4.4; extra == 'color'
Requires-Dist: pillow>=10.0; extra == 'color'
Provides-Extra: dev
Requires-Dist: jsonschema>=4.21; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Provides-Extra: geometry
Requires-Dist: python-fcl>=0.7; extra == 'geometry'
Provides-Extra: mesh
Requires-Dist: manifold3d>=2.4; extra == 'mesh'
Requires-Dist: pymeshlab>=2023.12; extra == 'mesh'
Requires-Dist: rtree>=1.2; extra == 'mesh'
Provides-Extra: optimize
Requires-Dist: ortools>=9.10; extra == 'optimize'
Description-Content-Type: text/markdown

# Studwright

Studwright turns 3D models into strong, buildable brick designs. Give it a mesh, with or without color, and it produces a model that stands up, uses as few parts as it can, matches the original's shape and colors, and comes with step-by-step instructions and a build animation.

It is built around the techniques master builders use: staggered bonds and plate ties for strength, Technic frames, sideways-facing studs, hinged and angled panels, and minifigure-scale detailing. Builders can teach it new techniques visually in Technique Studio.

> **Status:** pre-alpha. Nothing converts yet. The pipeline design is in [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).

## Planned features

- Import STL, OBJ, glTF/GLB, PLY and 3MF; desk-sized models from 10 to 40 cm, or minifigure scale
- Optimizes for stability first, then shape, piece count and color
- Real parts in colors they are actually produced in; BrickLink wanted list and LDraw / BrickLink Studio export
- Grouped instruction steps (4 to 10 parts each, all visible in one view), PDF instructions and build videos
- Technique Studio for codifying and sharing builder techniques
- Desktop app with one-step installers for Linux, Windows and macOS

## Development

Requires Python 3.11+ and [uv](https://docs.astral.sh/uv/).

```
uv sync --extra dev
uv run pytest
uv run studwright --help
```

Optional extras: `mesh`, `optimize`, `color`, `geometry`, `app`, or `all`.

## Third-party data

Part geometry comes from the [LDraw](https://www.ldraw.org) parts library (CC BY 2.0 / CC BY 4.0), and part-color availability optionally from [Rebrickable](https://rebrickable.com). Neither is bundled; both are downloaded on first use.

## License

Apache-2.0. Technique files in `techniques/` are CC0.

Studwright is an independent project. It is not affiliated with, sponsored by, or endorsed by the LEGO Group. LEGO is a trademark of the LEGO Group.
