[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)
npm install jscad-fiberView examples · jscad · tscircuit · jscad-electronics
This package allows you to create 3D CAD objects with React and JSCAD.
``bash`
npm install jscad-fiber @jscad/modeling three @react-three/fiber
Create JSCAD components with React:
`tsx
import { JsCadView } from "jscad-fiber"
import { Cube, Sphere, Subtract } from "jscad-fiber"
export default () => (
)
`
All components support these common props:
| Prop | Type | Description |
|------|------|-------------|
| color | string \| [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 |
#### Cube
| Prop | Type | Description |
|------|------|-------------|
| size | number \| [number,number,number] | Single number for all dimensions or [width, height, depth] |
`tsx`
#### Sphere
| Prop | Type | Description |
|------|------|-------------|
| radius | number | Sphere radius |segments
| | number | Optional detail level (default: 32) |
`tsx`
#### Cylinder
| Prop | Type | Description |
|------|------|-------------|
| radius | number | Cylinder radius |height
| | number | Cylinder height |
`tsx`
#### Torus
| Prop | Type | Description |
|------|------|-------------|
| innerRadius | number | Inner ring radius |outerRadius
| | number | Outer ring radius |innerSegments
| | number | Optional inner detail level (default: 32) |outerSegments
| | number | Optional outer detail level (default: 32) |
`tsx`
outerRadius={15}
innerSegments={32}
outerSegments={32}
/>
#### Subtract
| Prop | Type | Description |
|------|------|-------------|
| children | React.ReactNode[] | First child is base shape, others are subtracted |
`tsx`
#### Union
| Prop | Type | Description |
|------|------|-------------|
| children | React.ReactNode[] | Shapes to combine |
`tsx`
#### Hull
| Prop | Type | Description |
|------|------|-------------|
| children | React.ReactNode[] | Shapes to create hull from |
`tsx`
#### Translate
| Prop | Type | Description |
|------|------|-------------|
| offset | [number,number,number] | Translation in [x,y,z] |
`tsx`
#### Rotate
| Prop | Type | Description |
|------|------|-------------|
| angles | [number,number,number] | Rotation angles in radians [x,y,z] |
`tsx`
#### ExtrudeLinear
| Prop | Type | Description |
|------|------|-------------|
| height | number | Extrusion height |twistAngle
| | number | Optional twist during extrusion |
`tsx`
#### ExtrudeRotate
| Prop | Type | Description |
|------|------|-------------|
| angle | number | Rotation angle in radians |segments
| | number | Optional number of segments |
`tsx`
| Component | Props | Description |
|-----------|-------|-------------|
| Cube | size: number \| [number,number,number] | Size in each dimension |radius: number
| Sphere | , segments?: number | Radius and detail level |radius: number
| Cylinder | , height: number | Basic cylinder dimensions |innerRadius: number
| Torus | , outerRadius: number, segments?: number | Ring dimensions |height: number
| ExtrudeLinear | , twistAngle?: number | Linear extrusion with optional twist |angle: number
| ExtrudeRotate | , segments?: number | Rotational sweep |points: [number,number][]
| Polygon | | 2D points array |offset: [number,number,number]
| Translate | | 3D translation |angles: [number,number,number]
| Rotate | | Rotation angles in radians |children: React.ReactNode
| Hull | | Convex hull of children |children: React.ReactNode
| Union | | Boolean union of children |children: React.ReactNode
| Subtract | | Boolean subtraction |
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
The library includes an ExampleWrapper component that provides a convenient way to display both the rendered 3D object and its source code:`
!ExampleWrappertsx
import { ExampleWrapper } from "jscad-fiber"
export default () => (
)
`
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
See the examples` directory for more usage examples.
Pull requests welcome! Please check existing issues or create a new one to discuss major changes.