diff --git a/src/interface/Settings.js b/src/interface/Settings.js index 8fbfa90..b97d634 100644 --- a/src/interface/Settings.js +++ b/src/interface/Settings.js @@ -147,7 +147,7 @@ class Settings extends React.Component {

Brim

- +

First layer

diff --git a/src/settings/default.yml b/src/settings/default.yml index ad4daff..df5f42e 100644 --- a/src/settings/default.yml +++ b/src/settings/default.yml @@ -44,7 +44,7 @@ outerInfill: flowRate: 1.0 speed: 50.0 brim: - offset: 4.0 + size: 4.0 flowRate: 1.0 speed: 40.0 firstLayer: diff --git a/src/sliceActions/addBrim.js b/src/sliceActions/addBrim.js index 122f140..f3e7627 100644 --- a/src/sliceActions/addBrim.js +++ b/src/sliceActions/addBrim.js @@ -4,21 +4,33 @@ import { PRECISION } from '../constants.js'; const offsetOptions = { jointType: 'jtRound', miterLimit: 2.0, - roundPrecision: 0.25 + roundPrecision: 0.25, + endType: 'etClosedPolygon' }; export default function addBrim(slices, settings) { let { - brim: { offset: brimOffset } + brim: { size: brimSize }, + nozzleDiameter } = settings; - brimOffset /= PRECISION; + + nozzleDiameter /= PRECISION; + brimSize /= PRECISION; + const nozzleRadius = nozzleDiameter / 2; const [firstLayer] = slices; - firstLayer.brim = firstLayer.parts.reduce((brim, { shape }) => ( - brim.join(shape.offset(brimOffset, { + const brim = firstLayer.parts.reduce((brim, { shape }) => ( + brim.join(shape.offset(nozzleRadius, { ...offsetOptions, endType: shape.closed ? 'etClosedPolygon' : 'etOpenRound' })) ), new Shape([], true)).simplify('pftNonZero'); + + firstLayer.brim = new Shape([], true); + + for (let offset = 0; offset < brimSize; offset += nozzleDiameter) { + const brimPart = brim.offset(offset, offsetOptions); + firstLayer.brim = firstLayer.brim.join(brimPart); + } }