Quick Reference

The following sections provide quick reference to the JSCAD application programming interface (API), the heart of making designs.

Primitive Shapes

The 'primitives' are accessed through the modeling API using the following:

const { cube, ellipse, star } = require('@jscad/modeling').primitives

2D Primitives

Primitive Notes
const mypath = arc({center: [2, 2], radius: 2, startAngle: Math.PI, endAngle: Math.PI * 2, segments: 64}) API
const myshape = circle({center: [6.5, 6.5], radius: 3.5, startAngle: Math.PI / 2, endAngle: Math.PI, segments: 64}) User Guide API
const myshape = ellipse({center: [6.5, 6.5], radius: [7, 9], startAngle: Math.PI / 2, endAngle: Math.PI, segments: 64}) API
const mypath = line([ [10, 10], [-10, 10] ]) API
const myshape = polygon({ points: [ [10, 11], [0, 11], [5, 20] ], paths: [0, 1, 2]}) API
const myshape = rectangle({center: [6.5, 6.5], size: [10, 20]}) API
const myshape = roundedRectangle({center: [6.5, 6.5], size: [10, 20], roundRadius: 2, segments: 64}) API
const myshape = square({center: [6.5, 6.5], size: 10}) API
const myshape = star({vertices: 8, outerRadius: 10}) /* star with 8/2 density */ API
const myshape = star({vertices: 12, outerRadius: 40, innerRadius: 20}) /* star with given radius */ API
const myshape = triangle({type: 'AAS', values: [degToRad(62), degToRad(35), 7]}) API

3D Primitives

Primitive Notes
const myshape = cube({center: [6.5, 6.5, 6.5], size: 7}) API
const myshape = cuboid({center: [6.5, 6.5, 6.5], size: [3, 5, 7]}) API
const myshape = cylinder({center: [-5, -5, -5], height: 10, radius: 4, segments: 5}) API
const myshape = cylinderElliptic({center: [-5, -5, -5], height: 10, startRadius: [1, 2], endRadius: [2, 1], startAngle: Math.PI / 2, endAngle: Math.PI * 2 * 0.75, segments: 5}) API
const myshape = ellipsoid({center: [-5, -5, -5], radius: [4, 6, 8], segments: 64}) API
const myshape = geodesicSphere({radius: 15, frequency: 18}) API
const myshape = polyhedron({points: mypoints, faces: myfaces, orientation: 'inward'}) API
const myshape = roundedCuboid({center: [-5, -5, -5], size: [10, 20, 10], roundRadius: 2, segments: 16}) API
const myshape = roundedCylinder({center: [-5, -5, -5], height: 10, radius: 2, roundRadius: 0.5, segments: 16}) API
const myshape = sphere({center: [-5, -5, -5], radius: 5, }) API
const myshape = torus({innerRadius: 10, outerRadius: 100, innerSegments: 32, outerSegments: 8, innerRotation: Math.PI, startAngle: Math.PI}) API

Shape Transformations

The 'transforms' are accessed through the modeling API using the following:

const { translate, scale, rotateX } = require('@jscad/modeling').transforms
Transform Notes
const newshape = align({modes: ['min', 'center', 'none'], relativeTo: [10, null, 10], grouped: true}, oldshape) API
const newshape = center({axes: [true, true, false], center: [15, 10, 0]}, oldshape) API
const newshape = centerX(oldshape) API
const newshape = centerY(oldshape) API
const newshape = centerZ(oldshape) API
const newshape = mirror({origin: [5, 5, 5], normal: [0, 0, 10]}, oldshape)) API
const newshape = mirrorX(oldshape) API
const newshape = mirrorY(oldshape) API
const newshape = mirrorZ(oldshape) API
const newshape = rotate([Math.PI / 4, 0, 0], oldshape) API
const newshape = rotateX(oldshape) API
const newshape = rotateY(oldshape) API
const newshape = rotateZ(oldshape) API
const newshape = scale([5, 0, 10], oldshape) API
const newshape = scaleX(5, oldshape) API
const newshape = scaleY(0.5, oldshape) API
const newshape = scaleZ(5, oldshape) API
const newshape = transform(mat4.rotateX(Math.PI/4), oldshape) API
const newshape = translate([5, 0, 10], oldshape) API
const newshape = translateX(5, oldshape) API
const newshape = translateY(0.5, oldshape) API
const newshape = translateZ(5, oldshape) API

Shape Operations

Boolean Operations

The 'booleans' are accessed through the modeling API using the following:

const { union, intersect, scission, subtract } = require('@jscad/modeling').booleans
Operation Notes
const newshape = intersect(oldshape0, oldshape1) API
const newshape = subtract(oldshape0, oldshape1) API
const newshape = union(oldshape0, oldshape1) API
const newshapes = scission(bigshape) API

Hull Operations

The 'hulls' are accessed through the modeling API using the following:

const { hull, hullChain } = require('@jscad/modeling').hulls
Operation Notes
const newshape = hull(oldshape0, oldshape1) API
const newshape = hullChain(oldshape0, oldshape1) API

Extrusions

The 'extrusions' are accessed through the modeling API using the following:

const { extrudeLinear, extrudeRegtangular, extrudeRotate, project  } = require('@jscad/modeling').extrusions
Extrusion of 2D Shapes Notes
const newshape = extrudeLinear({height: 20, twistAngle: Math.PI, twistSteps: 20}, oldshape)) API
const newshape = extrudeRectangular({size: 3, height: 15}, oldshape) API
const newshape = extrudeRotate({startAngle: Math.PI, angle: Math.PI / 2, overflow: 'cap', segments: 64}, oldshape) API
const newshape = project({axis: [0, 0, 1], origin: [0, 0, 0]}, oldshape) API

Expansions

The 'expansions' are accessed through the modeling API using the following:

const { expand, offset } = require('@jscad/modeling').expansions
Expansion Notes
const newshape = expand({delta: 2, corners: 'round', segments: 64}, oldshape) API
const newshape = offset({delta: -4, corners: 'round', segments: 64}, oldshape) API

Text

The 'text' functions are accessed through the modeling API using the following:

const { vectorChar, vectorText } = require('@jscad/modeling').text
Function Notes
let vectorCharObject = vectorChar({ xOffset: 10, yOffset: 50, height: 18, input: '!' }) API
let arrayOfSegments = vectorText({ xOffset: 10, yOffset: 50, height: 18, input: 'line1\nline2' }) API

General Functions

Colors

The 'colors' are accessed through the modeling API using the following:

const { colorize, hexToRgb } = require('@jscad/modeling').colors
Function Notes
let newshape = colorize([1, 0, 0], oldshape) API
let newshape = colorize(colorNameToRgb('lightblue'), oldshape) API
let newshape = colorize(hexToRgb('#000080'), oldshape) API
let newshape = colorize(hslToRgb([0.9166666666666666, 1, 0.5]), oldshape) API
let newshape = colorize(hsvToRgb([0.9166666666666666, 1, 1]), oldshape) API

Utilities

The 'utils' are accessed through the modeling API using the following:

const { radToDeg, degToRad } = require('@jscad/modeling').utils
Function Notes
let radians = degToRad(90) API
let degrees = radToDeg(Math.PI) API
let segments = radiusToSegments(3.5, 0.1, 0) /* min length */ API
let segments = radiusToSegments(3.5, 0, Math.PI * 2 / 300) /* min angle */ API