MCPcopy
hub / github.com/xiangechen/chili3d

github.com/xiangechen/chili3d @0.6.1 sqlite

repository ↗ · DeepWiki ↗ · release 0.6.1 ↗
3,974 symbols 9,112 edges 378 files 13 documented · 0%
README

Chili3D

A web-based 3D CAD application for online model design and editing.

Screenshot

Overview

Chili3D is an open-source, browser-based 3D CAD (Computer-Aided Design) application built with TypeScript. It achieves near-native performance by compiling OpenCascade (OCCT) to WebAssembly and integrating with Three.js, enabling powerful online modeling, editing, and rendering—all without the need for local installation.

You can access Chili3D online at:

Features

Modeling Tools

  • Basic Shapes: Create boxes, cylinders, cones, spheres, pyramids, and more
  • 2D Sketching: Draw lines, arcs, circles, ellipses, rectangles, polygons, and Bezier curves
  • Advanced Operations:
    • Boolean operations (union, difference, intersection)
    • Extrusion and revolution
    • Sweeping and lofting
    • Offset surfaces
    • Section creation

Snapping and Tracking

  • Object Snapping: Precisely snap to geometric features (points, edges, faces)
  • Workplane Snapping: Snap to the current workplane for accurate planar operations
  • Axis Tracking: Create objects along tracked axes for precise alignment
  • Feature Point Detection: Automatically detect and snap to key geometric features
  • Tracking Visualization: Visual guides showing tracking lines and reference points

Editing Tools

  • Modification: Chamfer, fillet, trim, break, split
  • Transformation: Move, rotate, mirror
  • Advanced Editing:
    • Feature removal
    • Sub-shape manipulation
    • Explode compound objects

Measurement Tools

  • Measure angles and lengths
  • Calculate the sum of length, area, and volume

Document Management

  • Create, open, and save documents
  • Full undo/redo stack with transaction history
  • Import/export of industry-standard formats (STEP, IGES, BREP)

User Interface

  • Office-style interface with contextual command organization
  • Hierarchical assembly management with flexible grouping capabilities
  • Dynamic workplane support
  • 3D viewport with camera controls
  • Camera position recall

Localization

  • Multi-Language Interface: Built-in internationalization (i18n) supporting seamless adaptation to global user bases
  • Current Languages: Chinese & English; contributions for additional languages are welcome

Technology Stack

  • Frontend: TypeScript, Three.js
  • 3D Engine: OpenCascade (via WebAssembly)
  • Build Tools: Rspack
  • Testing: Jest

Change Log

You can view the full change log here.

For Chinese users, you can also browse the media.

Getting Started

Prerequisites

  • Node.js
  • npm

Installation

  1. Clone the repository

    bash git clone https://github.com/xiangechen/chili3d.git cd chili3d

  2. Install dependencies

    bash npm install

Development

Start the development server:

npm run dev # Launches at http://localhost:8080

Building

Build the application:

npm run build

Building wasm

if you want to build wasm by yourself, you can use the following commands:

  1. Set up WebAssembly dependencies(if you have not installed them yet)

    bash npm run setup:wasm

  2. Build the WebAssembly module:

    bash npm run build:wasm

Development Status

⚠️ Early Development Notice

Chili3D is currently in active alpha development. Key considerations:

  • Core APIs may undergo breaking changes
  • Essential features are under implementation
  • Documentation is being progressively developed

Contributing

We welcome contributions in the form of code, bug reports, or feedback. Please feel free to submit pull requests or open issues.

Contact

  • Discussions: Join our GitHub discussions for general chat or questions
  • Issues: Use GitHub issues to report public suggestions or bugs
  • Email: Contact us privately at xiangetg@msn.cn

License

Distributed under the GNU Affero General Public License v3.0 (AGPL-3.0). For commercial licensing options, contact xiangetg@msn.cn

Full license details: LICENSE

Warning

Chili3d uses Microsoft Clarity for growth analytics. To disable data collection:

  1. Open public/index.html
  2. Delete lines 11-17 containing this code:
<script type="text/javascript">
    (function(c,l,a,r,i,t,y){
        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
        t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
    })(window, document, "clarity", "script", "***");
</script>

This software is provided "AS IS," and the authors and contributors hereby disclaim all express and implied warranties. The user shall bear full responsibility for any and all risks and potential consequences arising from the use of this software. Such risks and consequences include, but are not limited to:

  1. Data loss, system failures, or any direct or indirect damages;
  2. Conduct violating applicable laws or regulations resulting from software usage and its consequences;
  3. All liabilities arising from the software’s use for illegal purposes or activities.

Extension points exported contracts — how you extend this code

ISnap (Interface)
(no doc) [7 implementers]
packages/chili/src/snap/snap.ts
IService (Interface)
(no doc) [6 implementers]
packages/chili-core/src/service.ts
IHighlightable (Interface)
(no doc) [4 implementers]
packages/chili-three/src/highlightable.ts
ShapeResult (Interface)
(no doc) [2 implementers]
packages/chili-wasm/lib/chili-wasm.d.ts
AdditionalCommand (Interface)
(no doc)
packages/chili-builder/src/additionalModule.ts
SelectionRect (Interface)
(no doc)
packages/chili-vis/src/selectionEventHandler.ts
ApplicationCommand (Interface)
(no doc)
packages/chili-ui/src/home/home.ts
IStep (Interface)
(no doc) [18 implementers]
packages/chili/src/step/step.ts

Core symbols most depended-on inside this repo

add
called by 180
packages/chili-core/src/model/node.ts
push
called by 180
packages/chili-core/src/foundation/linkedList.ts
forEach
called by 161
packages/chili-core/src/foundation/collection.ts
getPrivateValue
called by 135
packages/chili-core/src/foundation/observer.ts
sub
called by 106
packages/chili-core/src/math/xy.ts
set
called by 102
packages/chili-core/src/i18n/i18n.ts
remove
called by 101
packages/chili-core/src/model/node.ts
get
called by 95
packages/chili-core/src/foundation/storage.ts

Shape

Method 2,413
Class 682
Function 649
Interface 209
Enum 21

Languages

TypeScript100%

Modules by API surface

packages/chili-wasm/lib/chili-wasm.js378 symbols
packages/chili-wasm/lib/chili-wasm.d.ts284 symbols
packages/chili-wasm/src/curve.ts112 symbols
packages/chili-wasm/src/surface.ts106 symbols
packages/chili-core/src/shape/curve.ts81 symbols
packages/chili-wasm/src/shape.ts75 symbols
packages/chili-core/src/shape/surface.ts56 symbols
packages/chili-three/src/threeView.ts51 symbols
packages/chili-core/src/shape/shape.ts48 symbols
packages/chili-three/src/threeVisualObject.ts46 symbols
packages/chili-core/src/shape/meshData.ts42 symbols
packages/chili-wasm/src/factory.ts39 symbols

Dependencies from manifests, versioned

@rspack/cli1.3.5 · 1×
@rspack/core1.3.5 · 1×
@types/jest29.5.14 · 1×
@types/three0.175.0 · 1×
chili* · 1×
chili-builder* · 1×
chili-controls* · 1×
chili-core* · 1×
chili-geo* · 1×
chili-three* · 1×
chili-ui* · 1×
chili-vis* · 1×

For agents

$ claude mcp add chili3d \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact