# components **Repository Path**: qikangbb/components ## Basic Information - **Project Name**: components - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-14 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

TOC | documentation | demo | community | npm package

![cover](https://thatopen.github.io/engine_components/resources/cover.png)

Open BIM Components

[![NPM Package][npm]][npm-url] [![NPM Package][npm-downloads]][npm-url] This library is a collection of BIM tools based on [Three.js](https://github.com/mrdoob/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](https://thatopen.com/accelerator)! ## 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](https://github.com/mrdoob/three.js/) 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](https://github.com/ThatOpen/engine_components/blob/main/packages/core/src/core/Worlds/example.ts) and the deployed app [here](https://thatopen.github.io/engine_components/examples/Worlds/index.html). ```js /* 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); ``` [npm]: https://img.shields.io/npm/v/@thatopen/components [npm-url]: https://www.npmjs.com/package/@thatopen/components [npm-downloads]: https://img.shields.io/npm/dw/@thatopen/components