🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

jscad-fiber

Package Overview
Dependencies
Maintainers
1
Versions
69
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jscad-fiber

[View examples](https://tscircuit.github.io/jscad-fiber/) · [jscad](https://github.com/jscad/OpenJSCAD.org) · [tscircuit](https://github.com/tscircuit/tscircuit) · [jscad-electronics](https://github.com/tscircuit/jscad-electronics)

0.0.79
latest
Source
npm
Version published
Weekly downloads
8.6K
59.8%
Maintainers
1
Weekly downloads
 
Created
Source

jscad-fiber

View examples · jscad · tscircuit · jscad-electronics

This package allows you to create 3D CAD objects with React and JSCAD.

Table of Contents

Example CAD Model

Installation

npm install jscad-fiber @jscad/modeling three @react-three/fiber

Usage

Create JSCAD components with React:

import { JsCadView } from "jscad-fiber"
import { Cube, Sphere, Subtract } from "jscad-fiber"

export default () => (
  <JsCadView>
    <Subtract>
      <Cube size={10} />
      <Sphere radius={6.8} />
    </Subtract>
  </JsCadView>
)

Common Props

All components support these common props:

PropTypeDescription
colorstring | [number,number,number]CSS color string or RGB array
center[number,number,number] | {x,y,z}Position in 3D space
offset[number,number,number] | {x,y,z}Alternative to center

Components

Basic Shapes

Cube

PropTypeDescription
sizenumber | [number,number,number]Single number for all dimensions or [width, height, depth]
<Cube size={10} /> // Single number for all dimensions
<Cube size={[width, height, depth]} /> // Array for different dimensions

Sphere

PropTypeDescription
radiusnumberSphere radius
segmentsnumberOptional detail level (default: 32)
<Sphere radius={10} segments={32} />

Cylinder

PropTypeDescription
radiusnumberCylinder radius
heightnumberCylinder height
<Cylinder radius={5} height={10} />

Torus

PropTypeDescription
innerRadiusnumberInner ring radius
outerRadiusnumberOuter ring radius
innerSegmentsnumberOptional inner detail level (default: 32)
outerSegmentsnumberOptional outer detail level (default: 32)
<Torus 
  innerRadius={10}
  outerRadius={15}
  innerSegments={32}
  outerSegments={32}
/>

Boolean Operations

Subtract

PropTypeDescription
childrenReact.ReactNode[]First child is base shape, others are subtracted
<Subtract>
  <Cube size={10} /> {/* Base shape */}
  <Sphere radius={6} /> {/* Subtracted from base */}
</Subtract>

Union

PropTypeDescription
childrenReact.ReactNode[]Shapes to combine
<Union>
  <Cube size={10} />
  <Sphere radius={6} center={[0,0,10]} />
</Union>

Hull

PropTypeDescription
childrenReact.ReactNode[]Shapes to create hull from
<Hull>
  <Cube size={10} />
  <Sphere radius={6} center={[0,0,10]} />
</Hull>

Transformations

Translate

PropTypeDescription
offset[number,number,number]Translation in [x,y,z]
<Translate offset={[x,y,z]}>
  <Cube size={10} />
</Translate>

Rotate

PropTypeDescription
angles[number,number,number]Rotation angles in radians [x,y,z]
<Rotate angles={[x,y,z]}>
  <Cube size={10} />
</Rotate>

Extrusions

ExtrudeLinear

PropTypeDescription
heightnumberExtrusion height
twistAnglenumberOptional twist during extrusion
<ExtrudeLinear height={10}>
  <Polygon points={[[0,0], [10,0], [5,10]]} />
</ExtrudeLinear>

ExtrudeRotate

PropTypeDescription
anglenumberRotation angle in radians
segmentsnumberOptional number of segments
<ExtrudeRotate angle={Math.PI * 2}>
  <Polygon points={[[0,0], [10,0], [5,10]]} />
</ExtrudeRotate>

Component Props Reference

ComponentPropsDescription
Cubesize: number | [number,number,number]Size in each dimension
Sphereradius: number, segments?: numberRadius and detail level
Cylinderradius: number, height: numberBasic cylinder dimensions
TorusinnerRadius: number, outerRadius: number, segments?: numberRing dimensions
ExtrudeLinearheight: number, twistAngle?: numberLinear extrusion with optional twist
ExtrudeRotateangle: number, segments?: numberRotational sweep
Polygonpoints: [number,number][]2D points array
Translateoffset: [number,number,number]3D translation
Rotateangles: [number,number,number]Rotation angles in radians
Hullchildren: React.ReactNodeConvex hull of children
Unionchildren: React.ReactNodeBoolean union of children
Subtractchildren: React.ReactNodeBoolean subtraction

Why?

Example Circuit

JSCAD allows you to create detailed 3D objects using boolean operations. This is how modern CAD tools create precise 3D models. jscad-fiber is used to create the 3D electronics library for tscircuit called jscad-electronics

Example Wrapper

The library includes an ExampleWrapper component that provides a convenient way to display both the rendered 3D object and its source code: ExampleWrapper

import { ExampleWrapper } from "jscad-fiber"

export default () => (
  <ExampleWrapper fileName={import.meta.url}>
    <JsCadView>
      <Sphere radius={10} color="orange" />
    </JsCadView>
  </ExampleWrapper>
)

This wrapper:

  • Shows the rendered 3D object
  • Provides a "Show Code" button that reveals the source code
  • Automatically syntax highlights the code
  • Makes examples more interactive and educational

Contributing

See the examples directory for more usage examples.

Pull requests welcome! Please check existing issues or create a new one to discuss major changes.

FAQs

Package last updated on 30 Mar 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts