diff --git a/src/sliceActions/addBrim.js b/src/sliceActions/addBrim.js index 6d3ffd5..f11cc66 100644 --- a/src/sliceActions/addBrim.js +++ b/src/sliceActions/addBrim.js @@ -1,9 +1,9 @@ +import Shape from 'Doodle3D/clipper-js'; import * as THREE from 'three.js'; import { PRECISION } from '../constants.js'; const offsetOptions = { - jointType: 'jtSquare', - endType: 'etClosedPolygon', + jointType: 'jtRound', miterLimit: 2.0, roundPrecision: 0.25 }; @@ -14,8 +14,13 @@ export default function addBrim(slices, settings) { let { brimOffset } = settings.config; brimOffset /= PRECISION; - const fistLayer = slices[0]; - fistLayer.brim = fistLayer - .getOutline() - .offset(brimOffset, offsetOptions); + const [fistLayer] = slices; + + fistLayer.brim = fistLayer.parts.reduce((brim, { shape }) => { + brim.join(shape.offset(brimOffset, { + ...offsetOptions, + endType: shape.closed ? 'etClosedPolygon' : 'etOpenRound' + })); + return brim; + }, new Shape([], true)).simplify('pftNonZero'); }