diff --git a/designs/bob/src/bib.mjs b/designs/bob/src/bib.mjs index 3256a358e1a..11797e9b77f 100644 --- a/designs/bob/src/bib.mjs +++ b/designs/bob/src/bib.mjs @@ -16,7 +16,7 @@ export const bib = { points, Path, paths, - optionalMeasurements, + measurements, options, macro, log, @@ -27,7 +27,7 @@ export const bib = { part, }) => { // Head size - const head = (optionalMeasurements?.head || 360) * options.headSize + const head = (`head` in measurements ? measurements.head : 360) * options.headSize // Construct the neck opening let tweak = 1 diff --git a/designs/penelope/src/back.mjs b/designs/penelope/src/back.mjs index af24f2f439f..cd170c94666 100644 --- a/designs/penelope/src/back.mjs +++ b/designs/penelope/src/back.mjs @@ -1,5 +1,5 @@ import { pluginBundle } from '@freesewing/plugin-bundle' -import { measurements, options, BuildMainShape } from './shape.mjs' +import { measurements, optionalMeasurements, options, BuildMainShape } from './shape.mjs' function penelopeBack(params) { const { @@ -135,6 +135,7 @@ function penelopeBack(params) { export const back = { name: 'penelope.back', measurements, + optionalMeasurements, options, plugins: [pluginBundle], draft: penelopeBack, diff --git a/designs/penelope/src/front.mjs b/designs/penelope/src/front.mjs index 3989c70896a..fc6046c5f65 100644 --- a/designs/penelope/src/front.mjs +++ b/designs/penelope/src/front.mjs @@ -1,5 +1,5 @@ import { pluginBundle } from '@freesewing/plugin-bundle' -import { measurements, options, BuildMainShape } from './shape.mjs' +import { measurements, optionalMeasurements, options, BuildMainShape } from './shape.mjs' function penelopeFront(params) { const { options, Path, points, paths, Snippet, snippets, complete, sa, paperless, macro, part } = @@ -60,6 +60,7 @@ function penelopeFront(params) { export const front = { name: 'penelope.front', measurements, + optionalMeasurements, options, plugins: [pluginBundle], draft: penelopeFront, diff --git a/designs/penelope/src/shape.mjs b/designs/penelope/src/shape.mjs index 2366aac9c13..23e9ff4ad4a 100644 --- a/designs/penelope/src/shape.mjs +++ b/designs/penelope/src/shape.mjs @@ -38,21 +38,7 @@ export const options = { } export function BuildMainShape( - { - sa, - options, - measurements, - optionalMeasurements, - Point, - Path, - points, - paths, - store, - paperless, - macro, - part, - log, - }, + { sa, options, measurements, Point, Path, points, paths, store, paperless, macro, part, log }, frontPart ) { let skirtLength = measurements.waistToKnee * (1 + options.lengthBonus) // + options.hem; @@ -82,14 +68,13 @@ export function BuildMainShape( store.set('nrOfDarts', nrOfDarts) store.set('dartSize', dartSize) - if (optionalMeasurements?.seatBack) { - seat = (frontPart ? seat - optionalMeasurements.seatBack : optionalMeasurements.seatBack) * 2 + if ('seatBack' in measurements) { + seat = (frontPart ? seat - measurements.seatBack : measurements.seatBack) * 2 } else { seat *= 1 + (frontPart ? -1 : 1) * options.sideSeamShiftPercentage } - if (optionalMeasurements?.waistBack) { - waist = - (frontPart ? waist - optionalMeasurements.waistBack : optionalMeasurements.waistBack) * 2 + if ('waistBack' in measurements) { + waist = (frontPart ? waist - measurements.waistBack : measurements.waistBack) * 2 } else { waist *= 1 + (frontPart ? -1 : 1) * options.sideSeamShiftPercentage } diff --git a/markdown/dev/reference/api/part/config/measurements/en.md b/markdown/dev/reference/api/part/config/measurements/en.md index 3fbbf6aba7d..c3a0b1818f2 100644 --- a/markdown/dev/reference/api/part/config/measurements/en.md +++ b/markdown/dev/reference/api/part/config/measurements/en.md @@ -38,3 +38,12 @@ const part = { } ``` + + +Although they are specified via the part configuration `optionalMeasurements` +property, optional measurements are accessed via the 'measurements' +settings property. + +(There is no `optionalMeasurements` settings property.)` + + diff --git a/markdown/dev/reference/settings/measurements/en.md b/markdown/dev/reference/settings/measurements/en.md index ea77f5e54c8..6be38b0d1c4 100644 --- a/markdown/dev/reference/settings/measurements/en.md +++ b/markdown/dev/reference/settings/measurements/en.md @@ -39,3 +39,12 @@ const pattern = new Aaron({ Measurements should always be specified in millimeter, unless it's an angle measurement (like `shoulderSlope`) which should be provided in degrees. + + + +The `measurements` settings property is used to hold __all__ measurements, +both regular measurements as well as any optional measurements. + +(There is no `optionalMeasurements` settings property.) + +