Skip to content

mmiscool/BREP.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

737 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BREP.io is a browser-based CAD application and JavaScript kernel for feature-based solid modeling.
At its core is a BREP-style modeler with explicit geometry/topology objects such as Solid, Face, Edge, and Vertex, paired with an editable feature-history pipeline.
It also includes sketch workflows powered by a standalone 2D constraint solver, plus robust manifold booleans (manifold-3d), mesh repair/import tooling, assembly constraints, PMI annotations, and embeddable CAD/sketcher APIs.

This project is in active development and APIs may continue to evolve.

Workbenches

Screenshots

Home @280 Modeling Mode @280 Sketch Mode @280 PMI Mode @280 2D Sheets Mode @280 Image to Face 2D @280 Image to Face 3D @280

Documentation Index

General:

Core APIs:

System docs:

Mode guides:

Modeling Feature Docs

Feature index:

Primitives and setup:

Solid operations:

Pattern, import, and generation:

Assembly and sheet metal:

Additional implemented features in the codebase include collapse edge, edge smooth, offset face, overlap cleanup, sheet metal hem, and sheet metal cutout.

Assembly Constraints

PMI Annotation Docs

Quick Start

Prerequisites:

  • Node.js 18+
  • pnpm
  • git submodule update --init --recursive
  • Emscripten SDK (emcmake/emcc on PATH, or EMSDK installed at $HOME/emsdk)

Install and run locally:

git submodule update --init --recursive
pnpm install
pnpm dev

Then open the Vite URL shown in your terminal.

  • Main app shell: /index.html
  • Direct CAD workspace: /cad.html

Build, Test, and Utility Commands

Command Purpose
pnpm dev Prepares fonts, builds the kernel bundle, then runs the Vite dev server.
pnpm build Production build of the app into dist/ (includes kernel build step).
pnpm build:manifoldPlus Builds the local manifold wasm/js bundle from the vendor/manifold3d submodule plus local custom bindings.
pnpm build:kernel Builds the ESM kernel bundle into dist-kernel/ and syncs assets.
pnpm use:manifold:npm Switches runtime/builds to the published manifold-3d npm package.
pnpm use:manifold:local Switches runtime/builds to the locally compiled manifold bundle.
pnpm which:manifold Prints the currently selected manifold source.
pnpm test Runs the Node test suite (src/tests/tests.js), writing artifacts to tests/results/.
pnpm liveTesting Watches src/ and tests/ and reruns tests on change.
pnpm capture Captures docs/dialog screenshots.
pnpm generateLicenses Regenerates dependency and bundled-font license summaries.

Build outputs:

  • dist/: static web app (ready for CDN/web hosting)
  • dist-kernel/: published kernel bundle artifacts

CI and Pages Deployments

The kernel build compiles a custom wasm bundle from the vendor/manifold3d git submodule. CI environments must:

  • fetch submodules
  • install Emscripten/EMSDK before running pnpm build

This repo includes GitHub Actions workflows for:

  • npm publishing with submodules + EMSDK
  • Cloudflare Pages deployment via Wrangler Direct Upload

For Cloudflare Pages, use the GitHub Actions deploy workflow instead of relying on Cloudflare's Git build container to compile the wasm bundle. Configure these repository settings before enabling the workflow:

  • secret CLOUDFLARE_ACCOUNT_ID
  • secret CLOUDFLARE_API_TOKEN
  • variable CLOUDFLARE_PAGES_PROJECT_NAME

Use as an NPM Package

Package name: brep-io-kernel (ESM-only).

Install:

pnpm add brep-io-kernel

Main imports:

import {
  BREP,
  PartHistory,
  AssemblyConstraintHistory,
  AssemblyConstraintRegistry,
  CadEmbed,
  Sketcher2DEmbed
} from "brep-io-kernel";

Subpath imports:

import { BREP } from "brep-io-kernel/BREP";
import { PartHistory } from "brep-io-kernel/PartHistory";
import { CadEmbed } from "brep-io-kernel/CAD";
import { Sketcher2DEmbed } from "brep-io-kernel/Sketcher2D";
import { ConstraintSolver, ConstraintEngine, constraints } from "brep-io-kernel/SketchSolver2D";

Node examples:

CLI helper:

npx brep-io-kernel
npx brep-io-kernel --host 127.0.0.1 --port 4173
npx brep-io-kernel --help

License helper APIs:

import { getPackageLicenseInfoString, getAllLicensesInfoString } from "brep-io-kernel";

console.log(getPackageLicenseInfoString()); // package license info
console.log(getAllLicensesInfoString());    // package + production dependencies

CommonJS note:

const { BREP } = await import("brep-io-kernel");

Repository Layout

  • src/BREP: core solid/kernel implementation
  • src/features: feature implementations and dialogs
  • src/assemblyConstraints: assembly solver and constraints
  • src/UI: CAD/sketcher UI and embedding bridges
  • docs/: markdown docs and screenshots
  • apiExamples/: standalone browser API demos
  • tests/ and src/tests/: test assets and test runner

Contributing

See CONTRIBUTING.md.

License

See LICENSE.md. This project uses a dual-licensing strategy managed by Autodrop3d LLC.

About

BREP kernel from scratch using triangle meshes with BREP type topology

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages