A feature-based modeling playground experimenting with BREP-style workflows on top of triangle meshes. It combines robust manifold CSG (via the Manifold library) with a simple face and edge representation, a history pipeline, and Three.js visualization. Import meshes (STL), repair and group them into faces, then perform boolean operations, fillets, chamfers, sweeps, lofts, and more.
This project is actively evolving; expect rough edges while APIs settle.

- Highlights
- What's New
- Getting Started
- UI Overview (Browser)
- How It Works
- History Systems
- BREP Model and Classes
- File Formats: Import and Export
- Plugins and Examples
- Recent Inspector Improvements
- Inspector
- Install:
pnpm add brep-io-kernel
- Import options:
import { BREP, PartHistory } from 'brep-io-kernel';import { BREP } from 'brep-io-kernel/BREP';import { PartHistory } from 'brep-io-kernel/PartHistory';import { AssemblyConstraintHistory, AssemblyConstraintRegistry } from 'brep-io-kernel';
See Dialog Screenshots for the capture helpers, output locations, and configuration options.
- Primitive Cube — Implemented
- Primitive Cylinder — Implemented
- Primitive Cone — Implemented
- Primitive Sphere — Implemented
- Primitive Torus — Implemented
- Primitive Pyramid — Implemented
- Plane — Implemented
- Datum — Implemented
- Sketch — Implemented
- Extrude — Implemented
- Sweep — Implemented
- Tube — Implemented
- Loft — Implemented
- Revolve — Implemented
- Mirror — Implemented
- Boolean — Implemented
- Fillet — Implemented
- Chamfer — Implemented
- Remesh — Implemented
- Import 3D Model (STL or 3MF) — Implemented
- Image to Face (image trace) — Implemented
- Transform (move, rotate, scale) — Implemented
- Pattern Linear — Implemented
- Pattern Radial — Implemented
- Sheet Metal Tab — Implemented
- Sheet Metal Contour Flange — Implemented
Assemblies can be constrained with the iterative solver described in Assembly Constraint Solver. Each constraint instance stores clear selections plus persistent solve data so runs resume quickly after edits. The constraint registry currently ships with:
- Coincident – mates two datum points or implicit origins.
- Distance – fixes an offset between reference points along a chosen axis or free space.
- Angle – enforces a target angle between two axes or faces.
- Parallel – locks component axes or normals into parallel alignment.
- Touch Align – slides surfaces until they touch and optionally shares tangency.
- Fixed – anchors a component so downstream constraints treat it as immobile.
Adding, removing, or editing any of these entries queues an automatic background solve, and the UI exposes constraint status plus debugging messages pulled from each persistentData record.
PMI mode focuses on downstream manufacturing communication. Annotating the model augments the saved .brep history and the embedded 3MF metadata. The PMI tools mirror the dialog capture pages in docs/pmi-annotations:
- Linear Dimension – measures distances between vertices with alignment, offsets, and extension controls.
- Radial Dimension – reports diameter/radius for arcs, circles, and cylinders.
- Angle Dimension – dimension angular relationships across edges or faces.
- Leader – callouts with free-form text, arrowhead placement, and captured drag offsets.
- Note – rich-text style annotations tied to PMI views without leader geometry.
- Explode Body – stores exploded-view offsets per component for presentation layouts.
Each annotation stores associative references and view metadata so reloading a part restores the PMI viewport, label placement, and formatting settings.
See LICENSE.md. This project uses a dual-licensing strategy managed by Autodrop3d LLC.
See CONTRIBUTING.md for guidelines on submitting pull requests, reporting issues, and participating in discussions.