@jscad/modeling
Version:
Constructive Solid Geometry (CSG) Library for JSCAD
26 lines (19 loc) • 716 B
JavaScript
const flatten = require('../../utils/flatten')
const retessellate = require('../modifiers/retessellate')
const subtractSub = require('./subtractGeom3Sub')
/*
* Return a new 3D geometry representing space in this geometry but not in the given geometries.
* Neither this geometry nor the given geometries are modified.
* @param {...geom3} geometries - list of geometries
* @returns {geom3} new 3D geometry
*/
const subtract = (...geometries) => {
geometries = flatten(geometries)
let newgeometry = geometries.shift()
geometries.forEach((geometry) => {
newgeometry = subtractSub(newgeometry, geometry)
})
newgeometry = retessellate(newgeometry)
return newgeometry
}
module.exports = subtract