MCPcopy Index your code
hub / github.com/ThatOpen/engine_components

github.com/ThatOpen/engine_components @v3.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.4.0 ↗ · + Follow
16,594 symbols 47,906 edges 376 files 447 documented · 3% updated 8d agov3.4.0 · 2026-04-09★ 67927 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

TOC | documentation | demo | community | npm package

cover

Open BIM Components

Components NPM Package Components NPM Package Components Front NPM Package Components Front NPM Package

This library is a collection of BIM tools based on Three.js and other libraries. It includes pre-made features to easily build browser-based 3D BIM applications, such as postproduction, dimensions, floorplan navigation, DXF export and much more.

🤝 Want our help?

Are you developing a project with our technology and would like our help? Apply now to join That Open Accelerator Program!

Packages

This library contains 2 packages:

@thatopen/components - The core functionality. Compatible both with browser and Node.js environments.

@thatopen/components-front - Features exclusive for browser environments.

Usage

You need to be familiar with Three.js API to be able to use this library effectively. In the following example, we will create a cube in a 3D scene that can be navigated with the mouse or touch events. You can see the full example here and the deployed app here.

/* eslint import/no-extraneous-dependencies: 0 */

import * as THREE from "three";
import * as OBC from "../..";

const container = document.getElementById("container")!;

const components = new OBC.Components();

const worlds = components.get(OBC.Worlds);

const world = worlds.create<
  OBC.SimpleScene,
  OBC.SimpleCamera,
  OBC.SimpleRenderer
>();

world.scene = new OBC.SimpleScene(components);
world.renderer = new OBC.SimpleRenderer(components, container);
world.camera = new OBC.SimpleCamera(components);

components.init();

const material = new THREE.MeshLambertMaterial({ color: "#6528D7" });
const geometry = new THREE.BoxGeometry();
const cube = new THREE.Mesh(geometry, material);
world.scene.three.add(cube);

world.scene.setup();

world.camera.controls.setLookAt(3, 3, 3, 0, 0, 0);

Extension points exported contracts — how you extend this code

ClassificationGroupData (Interface)
(no doc) [54 implementers]
packages/core/src/fragments/Classifier/src/types.ts
LinearPlacementContext (Interface)
(no doc) [9 implementers]
packages/front/src/drawings/DrawingEditor/src/LinearAnnotationsTool/src/types.ts
Disposable (Interface)
(no doc) [30 implementers]
packages/core/src/core/Types/src/interfaces.ts
DimensionData (Interface)
(no doc)
packages/front/src/utils/dimension-line.ts
Updateable (Interface)
(no doc) [109 implementers]
packages/core/src/core/Types/src/interfaces.ts
SourceEntry (Interface)
(no doc)
packages/front/src/drawings/DrawingEditor/index.ts
Transitionable (Interface)
(no doc) [14 implementers]
packages/core/src/core/Types/src/interfaces.ts
PlacementMode (Interface)
(no doc)
packages/front/src/drawings/DrawingEditor/src/types.ts

Core symbols most depended-on inside this repo

get
called by 2320
packages/core/src/fragments/Classifier/src/types.ts
add
called by 1000
examples/assets/index-lEiaDs0b.js
push
called by 873
examples/assets/index-C0TZEIvY.js
add
called by 588
examples/assets/graphic-vertex-picker-BP6CeVm1.js
copy
called by 527
examples/assets/graphic-vertex-picker-BP6CeVm1.js
T
called by 525
examples/assets/graphic-vertex-picker-BP6CeVm1.js
copy
called by 503
examples/assets/worker-DSVnoXZ2.mjs
at
called by 480
examples/assets/worker-DSVnoXZ2.mjs

Shape

Method 10,945
Class 3,007
Function 2,503
Interface 134
Enum 5

Languages

TypeScript100%

Modules by API surface

examples/assets/graphic-vertex-picker-BP6CeVm1.js5,383 symbols
examples/assets/worker-DSVnoXZ2.mjs3,579 symbols
examples/assets/index-C0TZEIvY.js3,090 symbols
examples/assets/index-Da4Pyzo_.js814 symbols
examples/assets/FontLoader-GldU-Ytn.js358 symbols
examples/assets/drawingEditor.js175 symbols
examples/assets/index-DQnkIW5Q.js172 symbols
examples/assets/index-DJMoeYZj.js163 symbols
examples/assets/index-C1KzLF6N.js99 symbols
examples/assets/civilNavigators.js72 symbols
examples/assets/index-eC_Eq_kb.js64 symbols
packages/core/src/drawings/DxfManager/src/DxfExporter.ts55 symbols

For agents

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

⬇ download graph artifact