From 9c271b0d2f508e8269d93ce79500adbe2e85d4b0 Mon Sep 17 00:00:00 2001 From: Enoch Riese Date: Fri, 10 Jun 2022 14:34:21 -0500 Subject: [PATCH 01/71] support imperial measurements in new measurement inputs --- .../workbench/inputs/measurement.js | 79 ++++++++++++++----- .../workbench/measurements/index.js | 5 +- .../workbench/menu/core-settings/index.js | 2 +- 3 files changed, 64 insertions(+), 22 deletions(-) diff --git a/packages/freesewing.shared/components/workbench/inputs/measurement.js b/packages/freesewing.shared/components/workbench/inputs/measurement.js index f426c21a84a..130451ebcb8 100644 --- a/packages/freesewing.shared/components/workbench/inputs/measurement.js +++ b/packages/freesewing.shared/components/workbench/inputs/measurement.js @@ -1,6 +1,8 @@ -import React, { useState, useEffect } from 'react' +import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react' import { useTranslation } from 'next-i18next' import { isDegreeMeasurement } from '../../../config/measurements' +import measurementAsMm from 'pkgs/utils/measurementAsMm' +import formatMm from 'pkgs/utils/formatMm' /* * This is a single input for a measurements @@ -14,30 +16,67 @@ const MeasurementInput = ({ m, gist, app, updateMeasurements }) => { const { t } = useTranslation(['app', 'measurements']) const prefix = (app.site === 'org') ? '' : 'https://freesewing.org' const title = t(`measurements:${m}`) - const factor = isDegreeMeasurement(m) ? 1 : 10 + const isDegree = isDegreeMeasurement(m) const isValValid = val => (typeof val === 'undefined' || val === '') ? null - : !isNaN(val) + : val !== false && !isNaN(val) const isValid = (newVal) => (typeof newVal === 'undefined') - ? isValValid(gist?.measurements?.[m]) + ? isValValid(val) : isValValid(newVal) - const update = evt => { - setVal(evt.target.value) - const ok = isValid(evt.target.value) - if (ok) updateMeasurements(evt.target.value*factor, m) + const [val, setVal] = useState(formatMm(gist?.measurements?.[m], gist.units, false) || '') + + // keep a single reference to a debounce timer + const debounceTimeout = useRef(null); + + // this callback will track to current gist values + const cb = useCallback((evt) => { + let evtVal = evt.target.value; + // cleat the timeout reference + debounceTimeout.current = null; + + let useVal = isDegree ? evtVal : measurementAsMm(evtVal, gist.units); + const ok = isValid(useVal) + // only set to the gist if it's valid + if (ok) { + updateMeasurements(useVal, m) + } + }, [gist]); + + // onChange + const update = (evt) => { + evt.stopPropagation(); + let evtVal = evt.target.value; + // set Val immediately so that the input reflects it + setVal(evtVal) + + // debounce the rest of the callback + if (debounceTimeout.current !== null) { clearTimeout(debounceTimeout.current); + } + debounceTimeout.current = setTimeout(() => { + cb(evt) + }, 500); } - const [val, setVal] = useState(gist?.measurements?.[m] || '') + // use this for better update efficiency + const memoVal = useMemo(() => gist?.measurements[m], [gist]) + // track validity against the value and the units + const valid = useMemo(() => isValid(measurementAsMm(val, gist.units)), [val, gist.units]) + // hook to update the value when the gist changes useEffect(() => { - if (gist?.measurements?.[m]) setVal(gist.measurements[m]/factor) - }, [gist]) + if (memoVal) { + let gistVal = isDegree ? memoVal : formatMm(memoVal, gist.units, false); + setVal(gistVal) + } + }, [memoVal, gist.units]) + + // cleanup + useEffect(() => clearTimeout(debounceTimeout.current), []) if (!m) return null - const valid = isValid() return (
diff --git a/packages/freesewing.shared/components/workbench/measurements/index.js b/packages/freesewing.shared/components/workbench/measurements/index.js index a370885b15f..ffef7b71698 100644 --- a/packages/freesewing.shared/components/workbench/measurements/index.js +++ b/packages/freesewing.shared/components/workbench/measurements/index.js @@ -5,6 +5,8 @@ import nonHuman from './non-human.js' import WithBreastsIcon from 'shared/components/icons/with-breasts.js' import WithoutBreastsIcon from 'shared/components/icons/without-breasts.js' import { useTranslation } from 'next-i18next' +import Setting from '../menu/core-settings/setting'; +import {settings} from '../menu/core-settings/index'; const groups = { people: { @@ -70,7 +72,7 @@ const WorkbenchMeasurements = ({ app, pattern, gist, updateGist }) => { {icons[type]} {t('size')}  { group === 'people' - ? m.slice(-2) + ? m.replace('size', '') : m } @@ -87,6 +89,7 @@ const WorkbenchMeasurements = ({ app, pattern, gist, updateGist }) => {

{t('cfp:enterMeasurements')}

+
{pattern.config.measurements && ( <> diff --git a/packages/freesewing.shared/components/workbench/menu/core-settings/index.js b/packages/freesewing.shared/components/workbench/menu/core-settings/index.js index ef5047fdbae..10a4f61ebc6 100644 --- a/packages/freesewing.shared/components/workbench/menu/core-settings/index.js +++ b/packages/freesewing.shared/components/workbench/menu/core-settings/index.js @@ -4,7 +4,7 @@ import Setting from './setting.js' import { Ul, Details, TopSummary, TopSumTitle } from '../index.js' import { useTranslation } from 'next-i18next' -const settings = { +export const settings = { paperless: { dflt: false, }, From 79d88c7a22f8dac401a02fe3eb7024217027a1fc Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:32:55 +0200 Subject: [PATCH 02/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/cutting/fr.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/cutting/fr.md diff --git a/markdown/org/docs/patterns/hi/cutting/fr.md b/markdown/org/docs/patterns/hi/cutting/fr.md new file mode 100644 index 00000000000..75e5239d2b5 --- /dev/null +++ b/markdown/org/docs/patterns/hi/cutting/fr.md @@ -0,0 +1,14 @@ +--- +title: "Hi shark plush toy: Cutting Instructions" +--- + +- **Main fabric** + - Cut **2 Body (color 1)** + - Cut **1 Belly (color 2)** + - Cut **2 Tail (color 1)** + - Cut **1 Mouth (color 3)** + - Cut **2 Above Mouth (color 2)** + - Cut **2 Top Fin (color 1)** + - Cut **2 Bottom Fin (color 1)** + - Cut **1 Upper Teeth (fabric 2)** + - Cut **1 Lower Teeth (fabric 2)** From 7e5277cdbcbf2bf62c0e01f90bbd96635bd7429b Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:32:56 +0200 Subject: [PATCH 03/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/cutting/nl.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/cutting/nl.md diff --git a/markdown/org/docs/patterns/hi/cutting/nl.md b/markdown/org/docs/patterns/hi/cutting/nl.md new file mode 100644 index 00000000000..75e5239d2b5 --- /dev/null +++ b/markdown/org/docs/patterns/hi/cutting/nl.md @@ -0,0 +1,14 @@ +--- +title: "Hi shark plush toy: Cutting Instructions" +--- + +- **Main fabric** + - Cut **2 Body (color 1)** + - Cut **1 Belly (color 2)** + - Cut **2 Tail (color 1)** + - Cut **1 Mouth (color 3)** + - Cut **2 Above Mouth (color 2)** + - Cut **2 Top Fin (color 1)** + - Cut **2 Bottom Fin (color 1)** + - Cut **1 Upper Teeth (fabric 2)** + - Cut **1 Lower Teeth (fabric 2)** From a72e38a16547b932db40dde7fbd96e6c2721e24b Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:32:57 +0200 Subject: [PATCH 04/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/measurements/de.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/measurements/de.md diff --git a/markdown/org/docs/patterns/hi/measurements/de.md b/markdown/org/docs/patterns/hi/measurements/de.md new file mode 100644 index 00000000000..01f880d9bff --- /dev/null +++ b/markdown/org/docs/patterns/hi/measurements/de.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy: Required Measurements" +--- + + From c3134b308aa784610d0d109bc4a7e3fdb4ad3cac Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:32:58 +0200 Subject: [PATCH 05/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/needs/de.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/needs/de.md diff --git a/markdown/org/docs/patterns/hi/needs/de.md b/markdown/org/docs/patterns/hi/needs/de.md new file mode 100644 index 00000000000..87dbb0364ea --- /dev/null +++ b/markdown/org/docs/patterns/hi/needs/de.md @@ -0,0 +1,12 @@ +--- +title: "Hi shark plush toy: What You Need" +--- + +To make Hi, you will need the following: + +- Basic sewing supplies +- About 1 meters of a suitable fabric in color 1 (body) +- About 0.5 meters of a suitable fabric in color 2 (belly) +- Small piece for the mouth +- Suitable, unraveling, fabric for the teeth +- Stuffing From 3d5afc04530260c9d3f1d76f0257b06bc266acd9 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:00 +0200 Subject: [PATCH 06/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/options/aggressive/de.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/aggressive/de.md diff --git a/markdown/org/docs/patterns/hi/options/aggressive/de.md b/markdown/org/docs/patterns/hi/options/aggressive/de.md new file mode 100644 index 00000000000..10babd72eca --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/aggressive/de.md @@ -0,0 +1,5 @@ +--- +title: "Aggressive" +--- + +Your Hi can come in the default sweet form, or in a more aggressive version with more authentic teeth, and a mean look. \ No newline at end of file From 7fffc37de6a76a04d4c6b28a72ec48f3051828f4 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:01 +0200 Subject: [PATCH 07/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/options/de.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/de.md diff --git a/markdown/org/docs/patterns/hi/options/de.md b/markdown/org/docs/patterns/hi/options/de.md new file mode 100644 index 00000000000..e51f491e2e5 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/de.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy: Design Options" +--- + + From ee8c720631c8a57cd11a7606bfbd9a4e74f3a408 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:02 +0200 Subject: [PATCH 08/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/options/hungry/de.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/hungry/de.md diff --git a/markdown/org/docs/patterns/hi/options/hungry/de.md b/markdown/org/docs/patterns/hi/options/hungry/de.md new file mode 100644 index 00000000000..3a6d6df2648 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/hungry/de.md @@ -0,0 +1,5 @@ +--- +title: "Hungry" +--- + +This setting determins how long it has been since your Hi has had something to eat. More hungry results in a leaner shark. \ No newline at end of file From abf41b03babbe2d16d7d14cdfef3ede4924448dd Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:04 +0200 Subject: [PATCH 09/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/options/nosePointiness/de.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/nosePointiness/de.md diff --git a/markdown/org/docs/patterns/hi/options/nosePointiness/de.md b/markdown/org/docs/patterns/hi/options/nosePointiness/de.md new file mode 100644 index 00000000000..791624f2df8 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/nosePointiness/de.md @@ -0,0 +1,5 @@ +--- +title: "Pointiness of the nose" +--- + +The shark can be made with a more blunt, or sharper nose, depending on your preference. From 914f32bde22b8486acdb983dbf743ca6be70be5d Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:05 +0200 Subject: [PATCH 10/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/options/size/de.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/size/de.md diff --git a/markdown/org/docs/patterns/hi/options/size/de.md b/markdown/org/docs/patterns/hi/options/size/de.md new file mode 100644 index 00000000000..e295f842304 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/size/de.md @@ -0,0 +1,5 @@ +--- +title: "Size" +--- + +Hi can be made in different sizes. The default is about a meter in length. This is a percentage of this default length. From cb6a79d001681821aabaceca5abb81f5ad4b022e Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:06 +0200 Subject: [PATCH 11/71] New translations en.md (German) --- .../org/docs/patterns/hi/instructions/de.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/instructions/de.md diff --git a/markdown/org/docs/patterns/hi/instructions/de.md b/markdown/org/docs/patterns/hi/instructions/de.md new file mode 100644 index 00000000000..0383e04a384 --- /dev/null +++ b/markdown/org/docs/patterns/hi/instructions/de.md @@ -0,0 +1,28 @@ +--- +title: "Hi shark plush toy: Sewing Instructions" +--- + +## Notes and tips + +When you're using fabric with some stretch in it, it is a good idea to stabilize the seams that go along the whole body, and between the body and the belly, with some stabilizing ribbon. + +### Body + +Sew the darts on the front of the body closed. Trim away any excess fabric. Sew the tail pieces to the body, matching the notches. Sew the topFin pieces to the body. Sew both parts together, leaving an area below the tail open for stuffing the shark later. + +### Belly + +Sew the two aboveMouth pieces together along the larger straight side. Sew the teeth to the mouth, matching notches. Sew the darts on the belly, trim away any excess fabric. Sew the aboveMouth pieces to the mouth, matching notches. Sew all of this to the belly piece, matching notches. Sew the bottomFin pieces to the belly, matching notches. + +### Completing + +Sew the belly to the body, matching the front, back, and fins. + +### Filling + +Fill the plush toy with stuffing through the opening you left in the tail. Make sure to fill the tail and fins well before adding too much stuffing in the body itself. + +Close the toy by hand stitching. + + + From 6a336404eaa8b94db3d7de8df5da4a8bfaf67b6c Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:07 +0200 Subject: [PATCH 12/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/nl.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/nl.md diff --git a/markdown/org/docs/patterns/hi/nl.md b/markdown/org/docs/patterns/hi/nl.md new file mode 100644 index 00000000000..a82acb3f955 --- /dev/null +++ b/markdown/org/docs/patterns/hi/nl.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy" +--- + + From 38782079616dd08c14c553a52f7974a7bbca2a9c Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:08 +0200 Subject: [PATCH 13/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/de.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/de.md diff --git a/markdown/org/docs/patterns/hi/de.md b/markdown/org/docs/patterns/hi/de.md new file mode 100644 index 00000000000..a82acb3f955 --- /dev/null +++ b/markdown/org/docs/patterns/hi/de.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy" +--- + + From 842dad458b73caa7adc3f2f5ba006f6a04a89ecc Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:10 +0200 Subject: [PATCH 14/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/fabric/nl.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/fabric/nl.md diff --git a/markdown/org/docs/patterns/hi/fabric/nl.md b/markdown/org/docs/patterns/hi/fabric/nl.md new file mode 100644 index 00000000000..7de74c74214 --- /dev/null +++ b/markdown/org/docs/patterns/hi/fabric/nl.md @@ -0,0 +1,15 @@ +--- +title: "Hi shark plush toy: Fabric Options" +--- + +This plush toy is intended to have two different coloured fabrics, one for the upper body, and one for the belly. The mouth should probably have its own colour fabric. Most plush toys have some sort of a faux fur fabric. + +Fabrics with a two-way stretch work better than wovens. The stretch should be perpendicular to the grainline. + +## Teeth + +The teeth have untreated ends, so should be made from a fabric that does not unravel. + +## Stuffing + +Since this is a pluch toy, it wil need to be stuffed with material. \ No newline at end of file From be5c568dd9a8c96e78407f5e988c76efe50d4a24 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:11 +0200 Subject: [PATCH 15/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/measurements/nl.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/measurements/nl.md diff --git a/markdown/org/docs/patterns/hi/measurements/nl.md b/markdown/org/docs/patterns/hi/measurements/nl.md new file mode 100644 index 00000000000..01f880d9bff --- /dev/null +++ b/markdown/org/docs/patterns/hi/measurements/nl.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy: Required Measurements" +--- + + From 8381e47e8d76788857c56b1009b2516c7cd73a54 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:13 +0200 Subject: [PATCH 16/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/needs/nl.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/needs/nl.md diff --git a/markdown/org/docs/patterns/hi/needs/nl.md b/markdown/org/docs/patterns/hi/needs/nl.md new file mode 100644 index 00000000000..87dbb0364ea --- /dev/null +++ b/markdown/org/docs/patterns/hi/needs/nl.md @@ -0,0 +1,12 @@ +--- +title: "Hi shark plush toy: What You Need" +--- + +To make Hi, you will need the following: + +- Basic sewing supplies +- About 1 meters of a suitable fabric in color 1 (body) +- About 0.5 meters of a suitable fabric in color 2 (belly) +- Small piece for the mouth +- Suitable, unraveling, fabric for the teeth +- Stuffing From 8635a9f6ce7f1abaaff619a3a4e5e2df5a81294e Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:14 +0200 Subject: [PATCH 17/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/options/aggressive/nl.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/aggressive/nl.md diff --git a/markdown/org/docs/patterns/hi/options/aggressive/nl.md b/markdown/org/docs/patterns/hi/options/aggressive/nl.md new file mode 100644 index 00000000000..10babd72eca --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/aggressive/nl.md @@ -0,0 +1,5 @@ +--- +title: "Aggressive" +--- + +Your Hi can come in the default sweet form, or in a more aggressive version with more authentic teeth, and a mean look. \ No newline at end of file From 189324c81cd0ddb722c9a75c4e3fc67f38b6f0e5 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:15 +0200 Subject: [PATCH 18/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/options/nl.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/nl.md diff --git a/markdown/org/docs/patterns/hi/options/nl.md b/markdown/org/docs/patterns/hi/options/nl.md new file mode 100644 index 00000000000..e51f491e2e5 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/nl.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy: Design Options" +--- + + From 4dd4ca39dacfb367f4d829917694619a5904384c Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:16 +0200 Subject: [PATCH 19/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/options/hungry/nl.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/hungry/nl.md diff --git a/markdown/org/docs/patterns/hi/options/hungry/nl.md b/markdown/org/docs/patterns/hi/options/hungry/nl.md new file mode 100644 index 00000000000..3a6d6df2648 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/hungry/nl.md @@ -0,0 +1,5 @@ +--- +title: "Hungry" +--- + +This setting determins how long it has been since your Hi has had something to eat. More hungry results in a leaner shark. \ No newline at end of file From 03ca6601234b7c68e2001d1d28fa0ad7f007b259 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:17 +0200 Subject: [PATCH 20/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/options/nosePointiness/nl.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/nosePointiness/nl.md diff --git a/markdown/org/docs/patterns/hi/options/nosePointiness/nl.md b/markdown/org/docs/patterns/hi/options/nosePointiness/nl.md new file mode 100644 index 00000000000..791624f2df8 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/nosePointiness/nl.md @@ -0,0 +1,5 @@ +--- +title: "Pointiness of the nose" +--- + +The shark can be made with a more blunt, or sharper nose, depending on your preference. From 77d8efb74a7fa8fa3cca02da82390078fe0a9f33 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:19 +0200 Subject: [PATCH 21/71] New translations en.md (Dutch) --- markdown/org/docs/patterns/hi/options/size/nl.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/size/nl.md diff --git a/markdown/org/docs/patterns/hi/options/size/nl.md b/markdown/org/docs/patterns/hi/options/size/nl.md new file mode 100644 index 00000000000..e295f842304 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/size/nl.md @@ -0,0 +1,5 @@ +--- +title: "Size" +--- + +Hi can be made in different sizes. The default is about a meter in length. This is a percentage of this default length. From a871071053a747a65fb1cd1c66b853bf131ecb28 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:20 +0200 Subject: [PATCH 22/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/fabric/de.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/fabric/de.md diff --git a/markdown/org/docs/patterns/hi/fabric/de.md b/markdown/org/docs/patterns/hi/fabric/de.md new file mode 100644 index 00000000000..7de74c74214 --- /dev/null +++ b/markdown/org/docs/patterns/hi/fabric/de.md @@ -0,0 +1,15 @@ +--- +title: "Hi shark plush toy: Fabric Options" +--- + +This plush toy is intended to have two different coloured fabrics, one for the upper body, and one for the belly. The mouth should probably have its own colour fabric. Most plush toys have some sort of a faux fur fabric. + +Fabrics with a two-way stretch work better than wovens. The stretch should be perpendicular to the grainline. + +## Teeth + +The teeth have untreated ends, so should be made from a fabric that does not unravel. + +## Stuffing + +Since this is a pluch toy, it wil need to be stuffed with material. \ No newline at end of file From ddeb514030bdf225b76d22acaa2eafb300d86077 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:21 +0200 Subject: [PATCH 23/71] New translations en.md (German) --- markdown/org/docs/patterns/hi/cutting/de.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/cutting/de.md diff --git a/markdown/org/docs/patterns/hi/cutting/de.md b/markdown/org/docs/patterns/hi/cutting/de.md new file mode 100644 index 00000000000..75e5239d2b5 --- /dev/null +++ b/markdown/org/docs/patterns/hi/cutting/de.md @@ -0,0 +1,14 @@ +--- +title: "Hi shark plush toy: Cutting Instructions" +--- + +- **Main fabric** + - Cut **2 Body (color 1)** + - Cut **1 Belly (color 2)** + - Cut **2 Tail (color 1)** + - Cut **1 Mouth (color 3)** + - Cut **2 Above Mouth (color 2)** + - Cut **2 Top Fin (color 1)** + - Cut **2 Bottom Fin (color 1)** + - Cut **1 Upper Teeth (fabric 2)** + - Cut **1 Lower Teeth (fabric 2)** From a5862804c9e4eb0e79060b771296931e163a1fe7 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:23 +0200 Subject: [PATCH 24/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/fr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/fr.md diff --git a/markdown/org/docs/patterns/hi/fr.md b/markdown/org/docs/patterns/hi/fr.md new file mode 100644 index 00000000000..a82acb3f955 --- /dev/null +++ b/markdown/org/docs/patterns/hi/fr.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy" +--- + + From b7f74999d7dc4e9b06a29f4bb82fae7e31073c31 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:24 +0200 Subject: [PATCH 25/71] New translations en.md (French) --- .../org/docs/patterns/hi/instructions/fr.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/instructions/fr.md diff --git a/markdown/org/docs/patterns/hi/instructions/fr.md b/markdown/org/docs/patterns/hi/instructions/fr.md new file mode 100644 index 00000000000..0383e04a384 --- /dev/null +++ b/markdown/org/docs/patterns/hi/instructions/fr.md @@ -0,0 +1,28 @@ +--- +title: "Hi shark plush toy: Sewing Instructions" +--- + +## Notes and tips + +When you're using fabric with some stretch in it, it is a good idea to stabilize the seams that go along the whole body, and between the body and the belly, with some stabilizing ribbon. + +### Body + +Sew the darts on the front of the body closed. Trim away any excess fabric. Sew the tail pieces to the body, matching the notches. Sew the topFin pieces to the body. Sew both parts together, leaving an area below the tail open for stuffing the shark later. + +### Belly + +Sew the two aboveMouth pieces together along the larger straight side. Sew the teeth to the mouth, matching notches. Sew the darts on the belly, trim away any excess fabric. Sew the aboveMouth pieces to the mouth, matching notches. Sew all of this to the belly piece, matching notches. Sew the bottomFin pieces to the belly, matching notches. + +### Completing + +Sew the belly to the body, matching the front, back, and fins. + +### Filling + +Fill the plush toy with stuffing through the opening you left in the tail. Make sure to fill the tail and fins well before adding too much stuffing in the body itself. + +Close the toy by hand stitching. + + + From d84dc9ca4d43a67ad6ad8824000096fd184858f7 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:25 +0200 Subject: [PATCH 26/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/fabric/fr.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/fabric/fr.md diff --git a/markdown/org/docs/patterns/hi/fabric/fr.md b/markdown/org/docs/patterns/hi/fabric/fr.md new file mode 100644 index 00000000000..7de74c74214 --- /dev/null +++ b/markdown/org/docs/patterns/hi/fabric/fr.md @@ -0,0 +1,15 @@ +--- +title: "Hi shark plush toy: Fabric Options" +--- + +This plush toy is intended to have two different coloured fabrics, one for the upper body, and one for the belly. The mouth should probably have its own colour fabric. Most plush toys have some sort of a faux fur fabric. + +Fabrics with a two-way stretch work better than wovens. The stretch should be perpendicular to the grainline. + +## Teeth + +The teeth have untreated ends, so should be made from a fabric that does not unravel. + +## Stuffing + +Since this is a pluch toy, it wil need to be stuffed with material. \ No newline at end of file From 0ae5ecb4016c83313cb61a63bb88dd044e7fb9b5 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:27 +0200 Subject: [PATCH 27/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/measurements/fr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/measurements/fr.md diff --git a/markdown/org/docs/patterns/hi/measurements/fr.md b/markdown/org/docs/patterns/hi/measurements/fr.md new file mode 100644 index 00000000000..01f880d9bff --- /dev/null +++ b/markdown/org/docs/patterns/hi/measurements/fr.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy: Required Measurements" +--- + + From ed71bbdc7eeae643f3b67b6551721cf5e80cffaf Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:28 +0200 Subject: [PATCH 28/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/needs/fr.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/needs/fr.md diff --git a/markdown/org/docs/patterns/hi/needs/fr.md b/markdown/org/docs/patterns/hi/needs/fr.md new file mode 100644 index 00000000000..87dbb0364ea --- /dev/null +++ b/markdown/org/docs/patterns/hi/needs/fr.md @@ -0,0 +1,12 @@ +--- +title: "Hi shark plush toy: What You Need" +--- + +To make Hi, you will need the following: + +- Basic sewing supplies +- About 1 meters of a suitable fabric in color 1 (body) +- About 0.5 meters of a suitable fabric in color 2 (belly) +- Small piece for the mouth +- Suitable, unraveling, fabric for the teeth +- Stuffing From f18dae3bcb819ec230c411ab6d60918ebf937924 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:30 +0200 Subject: [PATCH 29/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/options/aggressive/fr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/aggressive/fr.md diff --git a/markdown/org/docs/patterns/hi/options/aggressive/fr.md b/markdown/org/docs/patterns/hi/options/aggressive/fr.md new file mode 100644 index 00000000000..10babd72eca --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/aggressive/fr.md @@ -0,0 +1,5 @@ +--- +title: "Aggressive" +--- + +Your Hi can come in the default sweet form, or in a more aggressive version with more authentic teeth, and a mean look. \ No newline at end of file From 2f3f888bed468ba3c2498002c11f9a4c51d8a7c4 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:31 +0200 Subject: [PATCH 30/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/options/fr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/fr.md diff --git a/markdown/org/docs/patterns/hi/options/fr.md b/markdown/org/docs/patterns/hi/options/fr.md new file mode 100644 index 00000000000..e51f491e2e5 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/fr.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy: Design Options" +--- + + From 7d7229ff70e9b5fdbf15204d6acfb3c6356ff014 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:32 +0200 Subject: [PATCH 31/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/options/hungry/fr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/hungry/fr.md diff --git a/markdown/org/docs/patterns/hi/options/hungry/fr.md b/markdown/org/docs/patterns/hi/options/hungry/fr.md new file mode 100644 index 00000000000..3a6d6df2648 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/hungry/fr.md @@ -0,0 +1,5 @@ +--- +title: "Hungry" +--- + +This setting determins how long it has been since your Hi has had something to eat. More hungry results in a leaner shark. \ No newline at end of file From c761131819f6d07d6d134aed8ac14170965a06f7 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:33 +0200 Subject: [PATCH 32/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/options/nosePointiness/fr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/nosePointiness/fr.md diff --git a/markdown/org/docs/patterns/hi/options/nosePointiness/fr.md b/markdown/org/docs/patterns/hi/options/nosePointiness/fr.md new file mode 100644 index 00000000000..791624f2df8 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/nosePointiness/fr.md @@ -0,0 +1,5 @@ +--- +title: "Pointiness of the nose" +--- + +The shark can be made with a more blunt, or sharper nose, depending on your preference. From a84f5abde5debb4925d21567e26ac060c45b457d Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:34 +0200 Subject: [PATCH 33/71] New translations en.md (French) --- markdown/org/docs/patterns/hi/options/size/fr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/size/fr.md diff --git a/markdown/org/docs/patterns/hi/options/size/fr.md b/markdown/org/docs/patterns/hi/options/size/fr.md new file mode 100644 index 00000000000..e295f842304 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/size/fr.md @@ -0,0 +1,5 @@ +--- +title: "Size" +--- + +Hi can be made in different sizes. The default is about a meter in length. This is a percentage of this default length. From 978bc50498f857fa628d824ab818bbc2105df77d Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:35 +0200 Subject: [PATCH 34/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/cutting/es.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/cutting/es.md diff --git a/markdown/org/docs/patterns/hi/cutting/es.md b/markdown/org/docs/patterns/hi/cutting/es.md new file mode 100644 index 00000000000..75e5239d2b5 --- /dev/null +++ b/markdown/org/docs/patterns/hi/cutting/es.md @@ -0,0 +1,14 @@ +--- +title: "Hi shark plush toy: Cutting Instructions" +--- + +- **Main fabric** + - Cut **2 Body (color 1)** + - Cut **1 Belly (color 2)** + - Cut **2 Tail (color 1)** + - Cut **1 Mouth (color 3)** + - Cut **2 Above Mouth (color 2)** + - Cut **2 Top Fin (color 1)** + - Cut **2 Bottom Fin (color 1)** + - Cut **1 Upper Teeth (fabric 2)** + - Cut **1 Lower Teeth (fabric 2)** From 0f71aaec9dcd1d5be8882ac730bc8008d81dcfbe Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:36 +0200 Subject: [PATCH 35/71] New translations en.md (Spanish) --- .../org/docs/patterns/hi/instructions/es.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/instructions/es.md diff --git a/markdown/org/docs/patterns/hi/instructions/es.md b/markdown/org/docs/patterns/hi/instructions/es.md new file mode 100644 index 00000000000..0383e04a384 --- /dev/null +++ b/markdown/org/docs/patterns/hi/instructions/es.md @@ -0,0 +1,28 @@ +--- +title: "Hi shark plush toy: Sewing Instructions" +--- + +## Notes and tips + +When you're using fabric with some stretch in it, it is a good idea to stabilize the seams that go along the whole body, and between the body and the belly, with some stabilizing ribbon. + +### Body + +Sew the darts on the front of the body closed. Trim away any excess fabric. Sew the tail pieces to the body, matching the notches. Sew the topFin pieces to the body. Sew both parts together, leaving an area below the tail open for stuffing the shark later. + +### Belly + +Sew the two aboveMouth pieces together along the larger straight side. Sew the teeth to the mouth, matching notches. Sew the darts on the belly, trim away any excess fabric. Sew the aboveMouth pieces to the mouth, matching notches. Sew all of this to the belly piece, matching notches. Sew the bottomFin pieces to the belly, matching notches. + +### Completing + +Sew the belly to the body, matching the front, back, and fins. + +### Filling + +Fill the plush toy with stuffing through the opening you left in the tail. Make sure to fill the tail and fins well before adding too much stuffing in the body itself. + +Close the toy by hand stitching. + + + From b35f3a5c981f418c2260934cb37b5775b1fea5a8 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:37 +0200 Subject: [PATCH 36/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/es.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/es.md diff --git a/markdown/org/docs/patterns/hi/es.md b/markdown/org/docs/patterns/hi/es.md new file mode 100644 index 00000000000..a82acb3f955 --- /dev/null +++ b/markdown/org/docs/patterns/hi/es.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy" +--- + + From f01fb6da3716610679d0f033b8957f861094e3c8 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:38 +0200 Subject: [PATCH 37/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/fabric/es.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/fabric/es.md diff --git a/markdown/org/docs/patterns/hi/fabric/es.md b/markdown/org/docs/patterns/hi/fabric/es.md new file mode 100644 index 00000000000..7de74c74214 --- /dev/null +++ b/markdown/org/docs/patterns/hi/fabric/es.md @@ -0,0 +1,15 @@ +--- +title: "Hi shark plush toy: Fabric Options" +--- + +This plush toy is intended to have two different coloured fabrics, one for the upper body, and one for the belly. The mouth should probably have its own colour fabric. Most plush toys have some sort of a faux fur fabric. + +Fabrics with a two-way stretch work better than wovens. The stretch should be perpendicular to the grainline. + +## Teeth + +The teeth have untreated ends, so should be made from a fabric that does not unravel. + +## Stuffing + +Since this is a pluch toy, it wil need to be stuffed with material. \ No newline at end of file From bf0fef0e71838a2a467d948a9a908ac5ee50351a Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:39 +0200 Subject: [PATCH 38/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/measurements/es.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/measurements/es.md diff --git a/markdown/org/docs/patterns/hi/measurements/es.md b/markdown/org/docs/patterns/hi/measurements/es.md new file mode 100644 index 00000000000..01f880d9bff --- /dev/null +++ b/markdown/org/docs/patterns/hi/measurements/es.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy: Required Measurements" +--- + + From ec80d94207cfd49f58f24bccc9a7593c4431db9b Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:40 +0200 Subject: [PATCH 39/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/needs/es.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/needs/es.md diff --git a/markdown/org/docs/patterns/hi/needs/es.md b/markdown/org/docs/patterns/hi/needs/es.md new file mode 100644 index 00000000000..87dbb0364ea --- /dev/null +++ b/markdown/org/docs/patterns/hi/needs/es.md @@ -0,0 +1,12 @@ +--- +title: "Hi shark plush toy: What You Need" +--- + +To make Hi, you will need the following: + +- Basic sewing supplies +- About 1 meters of a suitable fabric in color 1 (body) +- About 0.5 meters of a suitable fabric in color 2 (belly) +- Small piece for the mouth +- Suitable, unraveling, fabric for the teeth +- Stuffing From 23aea7369719ce77c5f9f86c77d2861d0e9e84e0 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:41 +0200 Subject: [PATCH 40/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/options/aggressive/es.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/aggressive/es.md diff --git a/markdown/org/docs/patterns/hi/options/aggressive/es.md b/markdown/org/docs/patterns/hi/options/aggressive/es.md new file mode 100644 index 00000000000..10babd72eca --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/aggressive/es.md @@ -0,0 +1,5 @@ +--- +title: "Aggressive" +--- + +Your Hi can come in the default sweet form, or in a more aggressive version with more authentic teeth, and a mean look. \ No newline at end of file From 3c85482b284773b7d6632f9338553b176f85be75 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:42 +0200 Subject: [PATCH 41/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/options/es.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/es.md diff --git a/markdown/org/docs/patterns/hi/options/es.md b/markdown/org/docs/patterns/hi/options/es.md new file mode 100644 index 00000000000..e51f491e2e5 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/es.md @@ -0,0 +1,5 @@ +--- +title: "Hi shark plush toy: Design Options" +--- + + From d7c0c898acad1b4e08edb86890cf2e07117e6100 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:43 +0200 Subject: [PATCH 42/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/options/hungry/es.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/hungry/es.md diff --git a/markdown/org/docs/patterns/hi/options/hungry/es.md b/markdown/org/docs/patterns/hi/options/hungry/es.md new file mode 100644 index 00000000000..3a6d6df2648 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/hungry/es.md @@ -0,0 +1,5 @@ +--- +title: "Hungry" +--- + +This setting determins how long it has been since your Hi has had something to eat. More hungry results in a leaner shark. \ No newline at end of file From 32932b0a6a7f1f0c51ecd469aba47a6fcc83c7a8 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:44 +0200 Subject: [PATCH 43/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/options/nosePointiness/es.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/nosePointiness/es.md diff --git a/markdown/org/docs/patterns/hi/options/nosePointiness/es.md b/markdown/org/docs/patterns/hi/options/nosePointiness/es.md new file mode 100644 index 00000000000..791624f2df8 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/nosePointiness/es.md @@ -0,0 +1,5 @@ +--- +title: "Pointiness of the nose" +--- + +The shark can be made with a more blunt, or sharper nose, depending on your preference. From df55c5fcc0bb2c41f2c9145ba5b1dba51e0489a7 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:45 +0200 Subject: [PATCH 44/71] New translations en.md (Spanish) --- markdown/org/docs/patterns/hi/options/size/es.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/options/size/es.md diff --git a/markdown/org/docs/patterns/hi/options/size/es.md b/markdown/org/docs/patterns/hi/options/size/es.md new file mode 100644 index 00000000000..e295f842304 --- /dev/null +++ b/markdown/org/docs/patterns/hi/options/size/es.md @@ -0,0 +1,5 @@ +--- +title: "Size" +--- + +Hi can be made in different sizes. The default is about a meter in length. This is a percentage of this default length. From 02e704e9be6c6043c7c0207c60a478f21f792e55 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Wed, 15 Jun 2022 12:33:46 +0200 Subject: [PATCH 45/71] New translations en.md (Dutch) --- .../org/docs/patterns/hi/instructions/nl.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 markdown/org/docs/patterns/hi/instructions/nl.md diff --git a/markdown/org/docs/patterns/hi/instructions/nl.md b/markdown/org/docs/patterns/hi/instructions/nl.md new file mode 100644 index 00000000000..0383e04a384 --- /dev/null +++ b/markdown/org/docs/patterns/hi/instructions/nl.md @@ -0,0 +1,28 @@ +--- +title: "Hi shark plush toy: Sewing Instructions" +--- + +## Notes and tips + +When you're using fabric with some stretch in it, it is a good idea to stabilize the seams that go along the whole body, and between the body and the belly, with some stabilizing ribbon. + +### Body + +Sew the darts on the front of the body closed. Trim away any excess fabric. Sew the tail pieces to the body, matching the notches. Sew the topFin pieces to the body. Sew both parts together, leaving an area below the tail open for stuffing the shark later. + +### Belly + +Sew the two aboveMouth pieces together along the larger straight side. Sew the teeth to the mouth, matching notches. Sew the darts on the belly, trim away any excess fabric. Sew the aboveMouth pieces to the mouth, matching notches. Sew all of this to the belly piece, matching notches. Sew the bottomFin pieces to the belly, matching notches. + +### Completing + +Sew the belly to the body, matching the front, back, and fins. + +### Filling + +Fill the plush toy with stuffing through the opening you left in the tail. Make sure to fill the tail and fins well before adding too much stuffing in the body itself. + +Close the toy by hand stitching. + + + From dc51bd8eeeb733a2e6ec1487ec4d017c25164fce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jun 2022 04:16:23 +0000 Subject: [PATCH 46/71] build(deps): bump react-instantsearch-dom from 6.27.0 to 6.28.0 Bumps [react-instantsearch-dom](https://github.com/algolia/react-instantsearch) from 6.27.0 to 6.28.0. - [Release notes](https://github.com/algolia/react-instantsearch/releases) - [Changelog](https://github.com/algolia/react-instantsearch/blob/master/CHANGELOG.md) - [Commits](https://github.com/algolia/react-instantsearch/compare/v6.27.0...v6.28.0) --- updated-dependencies: - dependency-name: react-instantsearch-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index af75c6c1c64..8d1b88e2f1a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22806,10 +22806,10 @@ react-input-autosize@^3.0.0: dependencies: prop-types "^15.5.8" -react-instantsearch-core@6.27.0: - version "6.27.0" - resolved "https://registry.yarnpkg.com/react-instantsearch-core/-/react-instantsearch-core-6.27.0.tgz#4a1e32bbddb347fda5f440be680e74c5c7481e4a" - integrity sha512-InjSaw6WlIp9dqkJX/NqBeBMQ8tz5ghfpDPWyKBOLo6ijjOYD5qK8bkBehWoceI5+MHMpGq37TIrNUok3XLeAQ== +react-instantsearch-core@6.28.0: + version "6.28.0" + resolved "https://registry.yarnpkg.com/react-instantsearch-core/-/react-instantsearch-core-6.28.0.tgz#c1aa480583e5f807b17bffd61442ff82bf94573c" + integrity sha512-wj35Vr+CNif1t2nLHq+MgEL9qRImauFCR9bsjKBYHuH5XcW9GJr8JqGvCSSTPVcljM+AxgU+PFzLe++bPVabpQ== dependencies: "@babel/runtime" "^7.1.2" algoliasearch-helper "^3.8.2" @@ -22817,16 +22817,16 @@ react-instantsearch-core@6.27.0: react-fast-compare "^3.0.0" react-instantsearch-dom@^6.18.0: - version "6.27.0" - resolved "https://registry.yarnpkg.com/react-instantsearch-dom/-/react-instantsearch-dom-6.27.0.tgz#8e712c09704b2711ee312e340d19b2c426951838" - integrity sha512-QDSMFso7rVaglQlbc3Ffn5hP2cM4ukjK5SAF043bLX4KoQlKKZqsCDPzo/SMo6wjIZDRsVmADjP7OgLWi0pFqA== + version "6.28.0" + resolved "https://registry.yarnpkg.com/react-instantsearch-dom/-/react-instantsearch-dom-6.28.0.tgz#96d969b999bf6e1fa0df369e1dabe96d0f828179" + integrity sha512-iYCwUX7ToN5Ut5BN2c5zyzIUl8HQd2YxAVO4jtnoaYA++7+dwfPTYEktELD0T99HStGM1tb7e5aQ1lJj/7hK9g== dependencies: "@babel/runtime" "^7.1.2" algoliasearch-helper "^3.8.2" classnames "^2.2.5" prop-types "^15.6.2" react-fast-compare "^3.0.0" - react-instantsearch-core "6.27.0" + react-instantsearch-core "6.28.0" react-intl@4.5.0: version "4.5.0" From 7a34bc06293f2c56f9e92b1fc9ee176f3bf0f14b Mon Sep 17 00:00:00 2001 From: Enoch Riese Date: Thu, 16 Jun 2022 16:54:08 -0500 Subject: [PATCH 47/71] format everything as decimals for ease of input --- .../workbench/inputs/measurement.js | 59 +++++++++---------- packages/utils/src/measurementAsMm/index.js | 4 ++ 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/packages/freesewing.shared/components/workbench/inputs/measurement.js b/packages/freesewing.shared/components/workbench/inputs/measurement.js index 130451ebcb8..6eaec86132a 100644 --- a/packages/freesewing.shared/components/workbench/inputs/measurement.js +++ b/packages/freesewing.shared/components/workbench/inputs/measurement.js @@ -1,8 +1,8 @@ import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react' import { useTranslation } from 'next-i18next' import { isDegreeMeasurement } from '../../../config/measurements' -import measurementAsMm from 'pkgs/utils/measurementAsMm' -import formatMm from 'pkgs/utils/formatMm' +import measurementAsMm from 'pkgs/utils/src/measurementAsMm' +import formatMm from 'pkgs/utils/src/formatMm' /* * This is a single input for a measurements @@ -16,7 +16,9 @@ const MeasurementInput = ({ m, gist, app, updateMeasurements }) => { const { t } = useTranslation(['app', 'measurements']) const prefix = (app.site === 'org') ? '' : 'https://freesewing.org' const title = t(`measurements:${m}`) - const isDegree = isDegreeMeasurement(m) + + const isDegree = isDegreeMeasurement(m); + const factor = useMemo(() => (isDegree ? 1 : (gist.units == 'imperial' ? 25.4 : 10)), [gist.units]) const isValValid = val => (typeof val === 'undefined' || val === '') ? null @@ -25,52 +27,45 @@ const MeasurementInput = ({ m, gist, app, updateMeasurements }) => { ? isValValid(val) : isValValid(newVal) - const [val, setVal] = useState(formatMm(gist?.measurements?.[m], gist.units, false) || '') + const [val, setVal] = useState(gist?.measurements?.[m] / factor || '') // keep a single reference to a debounce timer const debounceTimeout = useRef(null); - // this callback will track to current gist values - const cb = useCallback((evt) => { - let evtVal = evt.target.value; - // cleat the timeout reference - debounceTimeout.current = null; - - let useVal = isDegree ? evtVal : measurementAsMm(evtVal, gist.units); - const ok = isValid(useVal) - // only set to the gist if it's valid - if (ok) { - updateMeasurements(useVal, m) - } - }, [gist]); - // onChange - const update = (evt) => { + const update = useCallback((evt) => { evt.stopPropagation(); let evtVal = evt.target.value; // set Val immediately so that the input reflects it setVal(evtVal) - // debounce the rest of the callback - if (debounceTimeout.current !== null) { clearTimeout(debounceTimeout.current); + let useVal = isDegree ? evtVal : measurementAsMm(evtVal, gist.units); + const ok = isValid(useVal) + // only set to the gist if it's valid + if (ok) { + // debounce in case it's still changing + if (debounceTimeout.current !== null) { clearTimeout(debounceTimeout.current); } + debounceTimeout.current = setTimeout(() => { + // clear the timeout reference + debounceTimeout.current = null; + updateMeasurements(useVal, m) + }, 500); } - debounceTimeout.current = setTimeout(() => { - cb(evt) - }, 500); - } + }, [gist.units]) // use this for better update efficiency const memoVal = useMemo(() => gist?.measurements[m], [gist]) // track validity against the value and the units - const valid = useMemo(() => isValid(measurementAsMm(val, gist.units)), [val, gist.units]) + const valid = useMemo(() => isValid(isDegree ? val : measurementAsMm(val, gist.units)), [val, gist.units]) - // hook to update the value when the gist changes + // hook to update the value or format when the gist changes useEffect(() => { - if (memoVal) { - let gistVal = isDegree ? memoVal : formatMm(memoVal, gist.units, false); - setVal(gistVal) - } - }, [memoVal, gist.units]) + // set the value to the proper value and format + if (memoVal) { + let gistVal = +(memoVal / factor).toFixed(2); + setVal(gistVal) + } + }, [memoVal, factor]) // cleanup useEffect(() => clearTimeout(debounceTimeout.current), []) diff --git a/packages/utils/src/measurementAsMm/index.js b/packages/utils/src/measurementAsMm/index.js index 17f090ec7d6..c19d9273ca2 100644 --- a/packages/utils/src/measurementAsMm/index.js +++ b/packages/utils/src/measurementAsMm/index.js @@ -1,6 +1,10 @@ const measurementAsMm = (value, units = "metric") => { if (typeof value === "number") return value * (units === "imperial" ? 25.4 : 10); + + if (value.endsWith('.')) + return false; + if (units === "metric") { value = Number(value); if (isNaN(value)) return false; From 6eb897761516d063c17dca15e158cd714ccd335e Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Fri, 17 Jun 2022 07:59:54 -0700 Subject: [PATCH 48/71] Update teeth.js Teeth need a starting size and ending size Teeth need to increase proportional from start to end size, not increments of 1/15. --- designs/hi/src/teeth.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/designs/hi/src/teeth.js b/designs/hi/src/teeth.js index 3da30a6ba7b..64e26b0bff1 100644 --- a/designs/hi/src/teeth.js +++ b/designs/hi/src/teeth.js @@ -7,7 +7,7 @@ const { Bezier } = utils * So this method was optimized by @joostdeock to use the underlying * Bezier object * rather than the higher-level path object */ -export function createTeeth(pnts, toothCount, toothSize, part) { +export function createTeeth(pnts, toothCount, toothStartSize, toothEndSize, part) { // Deconstruct what we need from the part via shorthand() const { Path, points, Point, options } = part.shorthand() @@ -28,12 +28,15 @@ export function createTeeth(pnts, toothCount, toothSize, part) { // Get a lookup table (LUT) of points along the Bezier const lut = halfMouth.getLUT(toothCount + 2) + // Get size increase for each tooth + const sizeIncrease = (toothEndSize -toothStartSize) /toothCount + // Iterating over our LUT where p holds a number ID that we'll // use to 'look back' to the other side of the tooth for (const p in lut) { // Tooth size varies across the curve - const size = (toothSize*options.size) + (toothSize*options.size) * p/15 + const size = toothStartSize +(sizeIncrease *(p-1)) // Coordinates from the LUT const { x, y } = lut[p] From b8f59ec4f89e4c1ffaeae8a4162cc0c645a0c474 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Fri, 17 Jun 2022 08:08:56 -0700 Subject: [PATCH 49/71] Update lowerTeeth.js add starting en ending tooth sizes. --- designs/hi/src/lowerTeeth.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designs/hi/src/lowerTeeth.js b/designs/hi/src/lowerTeeth.js index 1810fba3a69..22f04d58b4f 100644 --- a/designs/hi/src/lowerTeeth.js +++ b/designs/hi/src/lowerTeeth.js @@ -53,7 +53,8 @@ export default function (part) { points.lowerTeeth01, // end ], 10, // number of teeth - 16, // size + 8 * options.size, // starting size + 16 * options.size, // ending size part ) From e5f8a3debc549d9891378d7f1f76321445028850 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Fri, 17 Jun 2022 08:10:49 -0700 Subject: [PATCH 50/71] Update upperTeeth.js Add starting and ending tooth sizes. --- designs/hi/src/upperTeeth.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designs/hi/src/upperTeeth.js b/designs/hi/src/upperTeeth.js index 2cde7a3cc11..f81112bea9c 100644 --- a/designs/hi/src/upperTeeth.js +++ b/designs/hi/src/upperTeeth.js @@ -54,7 +54,8 @@ export default function (part) { points.upperTeeth01, // end ], 14, // number of teeth - 14, // size + 9 * options.size, // start size + 18 * options.size, // end size part ) //createTeeth(paths.seam, 18 * options.size, 9 * options.size, 15, options.aggressive, paths.teeth) From 9657b024134b24ffd7aabce7c937f9f67a39361e Mon Sep 17 00:00:00 2001 From: woutervdub Date: Fri, 17 Jun 2022 13:02:25 -0700 Subject: [PATCH 51/71] Fixed inverted teeth --- designs/hi/src/upperTeeth.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/designs/hi/src/upperTeeth.js b/designs/hi/src/upperTeeth.js index f81112bea9c..808a6838d50 100644 --- a/designs/hi/src/upperTeeth.js +++ b/designs/hi/src/upperTeeth.js @@ -18,11 +18,11 @@ export default function (part) { } = part.shorthand() let upperTeeth01_02d = 131.305041182736 * options.size - let upperTeeth01_02a = 34.147056946748805 + 180 + let upperTeeth01_02a = 34.147056946748805 let upperTeeth02cp1d = 64.30113337316406 * options.size - let upperTeeth02cp1a = 55.1335930733262 + let upperTeeth02cp1a = 55.1335930733262 +180 let upperTeeth01cp2d = 48.331000000000017 * options.size - let upperTeeth01cp2a = 180 + let upperTeeth01cp2a = 0 points.upperTeeth01 = new Point(0, 0) points.upperTeeth02 = points.upperTeeth01.shift(upperTeeth01_02a, upperTeeth01_02d) @@ -48,10 +48,10 @@ export default function (part) { paths.teeth = createTeeth( [ // Array holding the points for half a mouth (bezier, not path) - points.upperTeeth02, // start - points.upperTeeth02cp1, // cp1 - points.upperTeeth01cp2, // cp2 - points.upperTeeth01, // end + points.upperTeeth03, // end + points.upperTeeth03cp2, // cp2 + points.upperTeeth01cp1, // cp1 + points.upperTeeth01, // start ], 14, // number of teeth 9 * options.size, // start size @@ -105,12 +105,12 @@ export default function (part) { } if (sa) { - let pSA = paths.seam.offset(sa) + let pSA = paths.seam.reverse().offset(sa) paths.sa = new Path() - .move(paths.seam.start()) + .move(paths.seam.end()) .line(pSA.start()) .join(pSA) - .line(paths.seam.end()) + .line(paths.seam.start()) .attr('class', 'fabric sa') } } From 214d47a0fd360bde2177615a53766a9b57c0a376 Mon Sep 17 00:00:00 2001 From: woutervdub Date: Fri, 17 Jun 2022 13:47:47 -0700 Subject: [PATCH 52/71] Cosmetic changes to logos and titles --- designs/hi/src/bottomFin.js | 8 ++++---- designs/hi/src/lowerTeeth.js | 2 +- designs/hi/src/mouth.js | 4 ++-- designs/hi/src/tail.js | 4 ++-- designs/hi/src/topFin.js | 8 ++++---- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/designs/hi/src/bottomFin.js b/designs/hi/src/bottomFin.js index 3098c1cddef..eea6870eed5 100644 --- a/designs/hi/src/bottomFin.js +++ b/designs/hi/src/bottomFin.js @@ -101,19 +101,19 @@ export default function (part) { .shiftAlong(store.get('aboveMouthFinLength')) snippets.bottomFin = new Snippet('bnotch', points.bottomFinSnippet) - points.titleAnchor = points.bottomFin02.shiftFractionTowards(points.bottomFin01, 0.4) - points.logoAnchor = points.titleAnchor.shiftFractionTowards(points.bottomFin03, 0.5) + points.titleAnchor = points.bottomFin02.shiftFractionTowards(points.bottomFin01, 0.4).shiftFractionTowards(points.bottomFin03, 0.1) + points.logoAnchor = points.titleAnchor.shiftFractionTowards(points.bottomFin03, 0.4) snippets.logo = new Snippet('logo', points.logoAnchor).attr( 'data-scale', - options.size > 1 ? 1 : (options.size /2) + (options.size > 1 ? 1 : options.size) / 2 ) macro('title', { at: points.titleAnchor, nr: 6, title: 'bottomFin', - scale: options.size, + scale: (options.size > 1 ? 1 : options.size) / 2, }) if (paperless) { diff --git a/designs/hi/src/lowerTeeth.js b/designs/hi/src/lowerTeeth.js index 22f04d58b4f..151eab6fbc4 100644 --- a/designs/hi/src/lowerTeeth.js +++ b/designs/hi/src/lowerTeeth.js @@ -62,7 +62,7 @@ export default function (part) { if (complete) { snippets.lowerTeeth = new Snippet('bnotch', points.lowerTeeth01) - points.titleAnchor = points.lowerTeeth02.shiftFractionTowards(points.lowerTeeth03, 0.5).shiftFractionTowards(points.lowerTeeth01, 0.5) + points.titleAnchor = points.lowerTeeth02.shiftFractionTowards(points.lowerTeeth03, 0.5) //.shiftFractionTowards(points.lowerTeeth01, 0.5) macro('title', { at: points.titleAnchor, diff --git a/designs/hi/src/mouth.js b/designs/hi/src/mouth.js index a8f19cc62eb..bfcdcb11459 100644 --- a/designs/hi/src/mouth.js +++ b/designs/hi/src/mouth.js @@ -92,7 +92,7 @@ export default function (part) { snippets.mouthMidTop = new Snippet('bnotch', points.mouth01) snippets.mouthMidBottom = new Snippet('bnotch', points.mouth03) - points.titleAnchor = points.mouth01.shiftFractionTowards(points.mouth02, 0.23) + points.titleAnchor = points.mouth01.shiftFractionTowards(points.mouth02, 0.33) points.logoAnchor = points.mouth01.shiftFractionTowards(points.mouth04, 0.3) snippets.logo = new Snippet('logo', points.logoAnchor).attr( @@ -104,7 +104,7 @@ export default function (part) { at: points.titleAnchor, nr: 4, title: 'mouth', - scale: options.size / 2, + scale: (options.size > 1 ? 1 : options.size) / 2, }) if (paperless) { diff --git a/designs/hi/src/tail.js b/designs/hi/src/tail.js index 6c8446b8653..5b3cb6a002f 100644 --- a/designs/hi/src/tail.js +++ b/designs/hi/src/tail.js @@ -94,14 +94,14 @@ export default function (part) { snippets.logo = new Snippet('logo', points.logoAnchor).attr( 'data-scale', - options.size > 1 ? 1 : options.size + (options.size > 1 ? 1 : options.size) / 2 ) macro('title', { at: points.titleAnchor, nr: 3, title: 'tail', - scale: options.size, + scale: (options.size > 1 ? 1 : options.size) / 2, }) if (paperless) { diff --git a/designs/hi/src/topFin.js b/designs/hi/src/topFin.js index b2b43068bf1..e1368a9e6d1 100644 --- a/designs/hi/src/topFin.js +++ b/designs/hi/src/topFin.js @@ -79,19 +79,19 @@ export default function (part) { // Complete? if (complete) { - points.titleAnchor = points.topFin01.shiftFractionTowards(points.topFin02, 0.4) - points.logoAnchor = points.titleAnchor.shiftFractionTowards(points.topFin03, 0.5) + points.titleAnchor = points.topFin01.shiftFractionTowards(points.topFin02, 0.5).shiftFractionTowards(points.topFin03, 0.1) + points.logoAnchor = points.titleAnchor.shiftFractionTowards(points.topFin03, 0.4) snippets.logo = new Snippet('logo', points.logoAnchor).attr( 'data-scale', - options.size > 1 ? 1 : (options.size /2) + (options.size > 1 ? 1 : options.size) / 2 ) macro('title', { at: points.titleAnchor, nr: 7, title: 'topFin', - scale: options.size, + scale: (options.size > 1 ? 1 : options.size) / 2, }) if (paperless) { From d32f145ac3af6b9b01c7f16a4f202491246e4697 Mon Sep 17 00:00:00 2001 From: Enoch Riese Date: Fri, 17 Jun 2022 23:15:15 -0500 Subject: [PATCH 53/71] better null checks --- sites/shared/components/workbench/inputs/measurement.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sites/shared/components/workbench/inputs/measurement.js b/sites/shared/components/workbench/inputs/measurement.js index 6eaec86132a..ae6149f60aa 100644 --- a/sites/shared/components/workbench/inputs/measurement.js +++ b/sites/shared/components/workbench/inputs/measurement.js @@ -2,7 +2,6 @@ import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react' import { useTranslation } from 'next-i18next' import { isDegreeMeasurement } from '../../../config/measurements' import measurementAsMm from 'pkgs/utils/src/measurementAsMm' -import formatMm from 'pkgs/utils/src/formatMm' /* * This is a single input for a measurements @@ -18,7 +17,7 @@ const MeasurementInput = ({ m, gist, app, updateMeasurements }) => { const title = t(`measurements:${m}`) const isDegree = isDegreeMeasurement(m); - const factor = useMemo(() => (isDegree ? 1 : (gist.units == 'imperial' ? 25.4 : 10)), [gist.units]) + const factor = useMemo(() => (isDegree ? 1 : (gist?.units == 'imperial' ? 25.4 : 10)), [gist?.units]) const isValValid = val => (typeof val === 'undefined' || val === '') ? null @@ -54,7 +53,7 @@ const MeasurementInput = ({ m, gist, app, updateMeasurements }) => { }, [gist.units]) // use this for better update efficiency - const memoVal = useMemo(() => gist?.measurements[m], [gist]) + const memoVal = useMemo(() => gist?.measurements?.[m], [gist]) // track validity against the value and the units const valid = useMemo(() => isValid(isDegree ? val : measurementAsMm(val, gist.units)), [val, gist.units]) From f60f0478835c66d8361dc0434aec194fbf55076b Mon Sep 17 00:00:00 2001 From: Enoch Riese Date: Fri, 17 Jun 2022 23:19:19 -0500 Subject: [PATCH 54/71] possibly now going overboard on null checks --- sites/shared/components/workbench/inputs/measurement.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sites/shared/components/workbench/inputs/measurement.js b/sites/shared/components/workbench/inputs/measurement.js index ae6149f60aa..d7167dbe74f 100644 --- a/sites/shared/components/workbench/inputs/measurement.js +++ b/sites/shared/components/workbench/inputs/measurement.js @@ -38,7 +38,7 @@ const MeasurementInput = ({ m, gist, app, updateMeasurements }) => { // set Val immediately so that the input reflects it setVal(evtVal) - let useVal = isDegree ? evtVal : measurementAsMm(evtVal, gist.units); + let useVal = isDegree ? evtVal : measurementAsMm(evtVal, gist?.units); const ok = isValid(useVal) // only set to the gist if it's valid if (ok) { @@ -50,12 +50,12 @@ const MeasurementInput = ({ m, gist, app, updateMeasurements }) => { updateMeasurements(useVal, m) }, 500); } - }, [gist.units]) + }, [gist?.units]) // use this for better update efficiency const memoVal = useMemo(() => gist?.measurements?.[m], [gist]) // track validity against the value and the units - const valid = useMemo(() => isValid(isDegree ? val : measurementAsMm(val, gist.units)), [val, gist.units]) + const valid = useMemo(() => isValid(isDegree ? val : measurementAsMm(val, gist?.units)), [val, gist?.units]) // hook to update the value or format when the gist changes useEffect(() => { From 3f30f4ec9ef303c8776df24c6babdf1ac98e57be Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Sun, 19 Jun 2022 23:23:10 +0000 Subject: [PATCH 55/71] First commit --- README.md | 2 - config/dependencies.yaml | 3 + config/exceptions.yaml | 2 + config/software/designs.json | 3 +- designs/noble/CHANGELOG.md | 9 + designs/noble/README.md | 260 +++++++++++++++++++ designs/noble/build.js | 55 ++++ designs/noble/config.js | 23 ++ designs/noble/config/index.js | 110 ++++++++ designs/noble/package.json | 65 +++++ designs/noble/src/backInside.js | 67 +++++ designs/noble/src/backOutside.js | 56 ++++ designs/noble/src/backPoints.js | 94 +++++++ designs/noble/src/frontInside.js | 154 +++++++++++ designs/noble/src/frontOutside.js | 171 +++++++++++++ designs/noble/src/frontPoints.js | 412 ++++++++++++++++++++++++++++++ designs/noble/src/index.js | 42 +++ 17 files changed, 1525 insertions(+), 3 deletions(-) create mode 100644 designs/noble/CHANGELOG.md create mode 100644 designs/noble/README.md create mode 100644 designs/noble/build.js create mode 100644 designs/noble/config.js create mode 100644 designs/noble/config/index.js create mode 100644 designs/noble/package.json create mode 100644 designs/noble/src/backInside.js create mode 100644 designs/noble/src/backOutside.js create mode 100644 designs/noble/src/backPoints.js create mode 100644 designs/noble/src/frontInside.js create mode 100644 designs/noble/src/frontOutside.js create mode 100644 designs/noble/src/frontPoints.js create mode 100644 designs/noble/src/index.js diff --git a/README.md b/README.md index 988d78b452d..8f942de98db 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,6 @@ cd freesewing yarn kickstart ``` -If you don't want to set up a dev environment, you can [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freesewing/freesewing), though we recommend that you fork this repo and then put `gitpod.io/# Prior to version 2, FreeSewing was not a JavaScript project. +> As such, that history is out of scope for this change log. + diff --git a/designs/noble/README.md b/designs/noble/README.md new file mode 100644 index 00000000000..dd69653c960 --- /dev/null +++ b/designs/noble/README.md @@ -0,0 +1,260 @@ +![FreeSewing](https://static.freesewing.org/banner.png) +

@freesewing/noble on NPM + License: MIT + Code quality on DeepScan + Open issues tagged pkg:noble + All Contributors +

Follow @freesewing_org on Twitter + Chat with us on Discord + Become a FreeSewing Patron + Follow @freesewing_org on Twitter +

+ +# @freesewing/noble + +FIXME: A FreeSewing pattern that needs a description + + + +## What am I looking at? 🤔 + +This repository is our *monorepo* +holding [all our NPM packages](https://freesewing.dev/reference/packages/). + +This folder holds: @freesewing/noble + +If you're not entirely sure what to do or how to start, type this command: + +``` +npm run tips +``` + +## About FreeSewing 💀 + +Where the world of makers and developers collide, that's where you'll find FreeSewing. + +If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate +our sewing patterns adapted to your measurements. + +If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/). +Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox +for parametric design of sewing patterns. But we also provide a range +of [plugins](https://freesewing.dev/reference/plugins/) that further extend the +functionality of the platform. + +If you have NodeJS installed, you can try it right now by running: + +```bash +npx create-freesewing-pattern +``` + +Or, consult our getting started guides +for [Linux](https://freesewing.dev/tutorials/getting-started-linux/), +[MacOS](https://freesewing.dev/tutorials/getting-started-mac/), +or [Windows](https://freesewing.dev/tutorials/getting-started-windows/). + +We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that +walks you through your first parametric design, +and [a friendly community](https://freesewing.org/community/where/) with +people who can help you when you get stuck. + +## Support FreeSewing: Become a patron 🥰 + +FreeSewing is an open source project run by a community, +and financially supported by our patrons. + +If you feel what we do is worthwhile, and you can spend a few coind without +hardship, then you should [join us and become a patron](https://freesewing.org/community/join). + +## Links 👩‍💻 + + - 💻 Makers website: [freesewing.org](https://freesewing.org) + - 💻 Developers website: [freesewing.dev](https://freesewing.dev) + - 💬 Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/) + - ✅ Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/) + - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org) + - 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org) + +## License: MIT 🤓 + +© [Joost De Cock](https://github.com/joostdecock). +See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details. + +## Where to get help 🤯 + +Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions, +share your feedback, or just hang out. + +If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new). + + + +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Adam Tomkins

📖

Alexandre Ignjatovic

💻

AlfaLyr

💻 🔌 🎨

Andrew James

📖

Anneke

📖 🌍

Annie Kao

📖

Anternative

📖

Anthony

💬

Cameron Dubas

📖

Carsten Biebricher

📖

Cathy Zoller

📖

Chantal Lapointe

🌍

Damien PIQUET

💻

Darigov Research

📖 🤔

Elena FdR

📖 📝

Emmanuel Nyachoke

💻 📖

Enoch Riese

💻

EvEkSwed

🌍

Fantastik-Maman

🌍

Forrest O.

📖

Frédéric

🌍

Glenn Matthews

📖

Igor Couto

🐛

Ikko Ashimine

📖

Irapeke

🌍

Jacek Sawoszczuk

📖

Jason Williams

📖

Jeremy Jackson

💻

Joebidido

🌍

Joost De Cock

🚧

Josh Essman

📖

Kake

📖

Kapunahele Wong

📖

Karen

📖 📋

Katie McGinley

📖

Kieran Klaassen

💻

Kittycatou

🌍

Kris

📖

Kristin Ruben

💻

Loudepeuter

🌍

Lucian

📋

Marcus

🌍

Martin Tribo

📖

Nadege Michel

⚠️ 📖

Natalia

💻 🎨 📝

Nathan Yergler

📖

Nick Dower

📖 💻 🐛

Patrick Forringer

🔌

Paul

📖 📝 🌍

Phillip Thelen

💻

Pixieish

📖

Prof. dr. Sorcha Ní Dhubhghaill

📖

Quentin FELIX

💻 🎨

Rik Hekker

🐛

Sam Livingston-Gray

📖

Sanne

💻 📖

Sara Latorre

🌍

SeaZeeZee

📖 💻

Slylele

📖 🌍

Soazillon

🌍

SoneaTheBest

🌍

Stefan Sydow

🌍 📖 💻

Tríona

📖

Unmutual

📖

Wouter van Wageningen

💻 🎨 🔧

amysews

📖

beautifulsummermoon

🌍

berce

📖

biou

💻

bobgeorgethe3rd

💻 📖 🎨

brmlyklr

📖

chri5b

💻 ⚠️

dingcycle

🌍

drowned-in-books

💬

econo202

📖

ericamattos

🌍

fightingrabbit

💻

gaylyndie

📖

grimlokason

💻

hellgy

🎨

jackseye

📖

marckiesel

🌍

mesil

🐛

starfetch

💻 📖 🌍 🎨

ttimearl

🖋

tuesgloomsday

📖

valadaptive

💻

viocky

🌍

woolishboy

💻

yc

🌍
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + diff --git a/designs/noble/build.js b/designs/noble/build.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/designs/noble/build.js @@ -0,0 +1,55 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/designs/noble/config.js b/designs/noble/config.js new file mode 100644 index 00000000000..01444f8de8b --- /dev/null +++ b/designs/noble/config.js @@ -0,0 +1,23 @@ +import { version } from './package.json' + +export default { + name: 'noble', + version, + design: '', + code: '', + department: '', + type: '', + difficulty: 3, + tags: [ ], + optionGroups: { + fit: ['size'], + }, + measurements: [], + dependencies: {}, + inject: {}, + hide: [], + parts: ['box'], + options: { + size: { pct: 50, min: 10, max: 100 }, + }, +} diff --git a/designs/noble/config/index.js b/designs/noble/config/index.js new file mode 100644 index 00000000000..772736d11e5 --- /dev/null +++ b/designs/noble/config/index.js @@ -0,0 +1,110 @@ +import { version } from '../package.json' +import Bella from '@freesewing/bella' + +const config = { + ...Bella.config, + name: 'noble', + version, + design: 'Noble Incognito', + code: 'Wouter van Wageningen', + department: 'tops', + type: 'block', + difficulty: 3, + optionGroups: { + type: ['dartPosition'], + fit: ['chestEase', 'waistEase', 'bustSpanEase'], + darts: ['backDartHeight', 'waistDartLength', 'shoulderDartPosition','upperDartLength','dartOutsideCP','armholeDartPosition'], + armhole: [ + 'armholeDepth', + 'backArmholeSlant', + 'backArmholeCurvature', + 'frontArmholePitchDepth', + 'backArmholePitchDepth', + ], + advanced: ['backNeckCutout', 'backHemSlope', 'frontShoulderWidth', 'highBustWidth', 'shoulderToShoulderEase'], + }, + measurements: [ + 'chest', + 'waist', + 'waistBack', + 'neck', + 'hpsToWaistFront', + 'hpsToWaistBack', + 'shoulderToShoulder', + 'shoulderSlope', + // ], + // optionalMeasurements: [ + 'highBust', + 'underbust', + 'bustSpan', + 'hpsToBust', + ], + hide: ['bellaFrontSideDart', 'bellaBack', 'backPoints', 'frontPoints',], + inject: { + ...Bella.config.inject, + backPoints: 'bellaBack', + backInside: 'backPoints', + backOutside: 'backPoints', + frontPoints: 'bellaFrontSideDart', + frontInside: 'frontPoints', + frontOutside: 'frontPoints', + }, + dependencies: { + // The inheritance makes this a bit messy + bellaFrontSideDart: 'bellaBack', + backPoints: 'bellaBack', + backInside: 'backPoints', + backOutside: 'backPoints', + frontPoints: 'bellaBack', + frontInside: 'frontPoints', + frontOutside: 'frontPoints', + }, + parts: [ + 'backPoints', + 'backInside', + 'backOutside', + 'frontPoints', + 'frontInside', + 'frontOutside', + ], + options: { + // Constants + acrossBackFactor: 0.925, + shoulderSlopeBack: 1.23, + neckWidthBack: 0.197, + neckWidthFront: 0.17, + shoulderToShoulderCorrection: 0.995, + backDartLocation: 0.145, + backCenterWaistReduction: 0.35, + collarFactor: 0.19, + + // Percentages + backNeckCutout: { pct: 6, min: 3, max: 9 }, + waistEase: { pct: 5, min: 1, max: 20 }, + chestEase: { pct: 11, min: 5, max: 20 }, + bustSpanEase: { pct: 0, min: -5, max: 20 }, + shoulderToShoulderEase: { pct: -0.5, min: -1, max: 5 }, + backDartHeight: { pct: 46, min: 38, max: 54 }, + armholeDepth: { pct: 44, min: 38, max: 46 }, + backHemSlope: { deg: 2.5, min: 0, max: 5 }, + backArmholeSlant: { deg: 5, min: 1, max: 9 }, + backArmholeCurvature: { pct: 63, min: 50, max: 85 }, + frontArmholeCurvature: { pct: 63, min: 50, max: 85 }, + fullChestEaseReduction: { pct: 4, min: 0, max: 8 }, + frontShoulderWidth: { pct: 95, max: 98, min: 92 }, + frontArmholePitchDepth: { pct: 29, max: 31, min: 27 }, + backArmholePitchDepth: { pct: 35, max: 40, min: 30 }, + highBustWidth: { pct: 86, max: 92, min: 80 }, + bustDartLength: { pct: 90, min: 75, max: 100 }, + waistDartLength: { pct: 90, min: 75, max: 95 }, + bustDartCurve: { pct: 100, min: 0, max: 100 }, + shoulderDartPosition: { pct: 50, min: 10, max: 90 }, + upperDartLength: { pct: 90, min: 80, max: 95 }, + armholeDartPosition: { pct: 50, min: 10, max: 90 }, + dartOutsideCP: { pct: 0, min: -200, max: 200 }, + dartPosition: { dflt: 'shoulder', list: ['shoulder','armhole'] }, + } + +} + +export default config diff --git a/designs/noble/package.json b/designs/noble/package.json new file mode 100644 index 00000000000..a26c6d83d31 --- /dev/null +++ b/designs/noble/package.json @@ -0,0 +1,65 @@ +{ + "name": "@freesewing/noble", + "version": "2.21.0-rc.0", + "description": "FIXME: A FreeSewing pattern that needs a description", + "author": "Joost De Cock (https://github.com/joostdecock)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "funding": { + "type": "individual", + "url": "https://freesewing.org/patrons/join" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "pattern", + "sewing", + "sewing pattern" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "vbuild": "VERBOSE=1 node build.js", + "lab": "cd ../../sites/lab && yarn start", + "tips": "node ../../scripts/help.mjs", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.21.0-rc.0", + "@freesewing/plugin-bundle": "^2.21.0-rc.0", + "@freesewing/config-helpers": "^2.21.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/designs/noble/src/backInside.js b/designs/noble/src/backInside.js new file mode 100644 index 00000000000..6a40428d159 --- /dev/null +++ b/designs/noble/src/backInside.js @@ -0,0 +1,67 @@ +export default function (part) { + let { + utils, + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + // delete points.armholePitch + // delete points.armholePitchCp1 + // delete points.armholePitchCp2 + // delete points.armholeCpTarget + // delete points.armholeCp2 + // delete points.armhole + // delete points.bustSide + // delete points.waistSide + // delete points.waistSideCp2 + // delete points.dartBottomRight + // delete points.dartBottomCenter + // delete points.dartRightCp + // delete points.bustDartRight + + // Hide Bella paths + for (let key of Object.keys(paths)) paths[key].render = false + for (let i in snippets) delete snippets[i] + //removing macros not required from Bella + + console.log( 'Noble back inside' ) + + paths.insideSeam = new Path() + .move(points.cbNeck) + .curve_(points.cbNeckCp2, points.waistCenter) + .line(points.dartBottomLeft) + .curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip) + .curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart) + .line(points.hps) + ._curve(points.cbNeckCp1, points.cbNeck) + .close() + .attr('class', 'fabric') + + if (complete) { + // points.titleAnchor = points.waistDartRight.shiftFractionTowards( points.armhole, .5 ) + macro('title', { + at: points.titleAnchor, + nr: 3, + title: 'Inside Back', + }) + macro("grainline", { + from: points.grainlineFrom, + to: points.grainlineTo, + }) + + if (sa) paths.sa = paths.insideSeam.offset(sa).attr('class', 'fabric sa') + } + + return part +} diff --git a/designs/noble/src/backOutside.js b/designs/noble/src/backOutside.js new file mode 100644 index 00000000000..c2152763ca4 --- /dev/null +++ b/designs/noble/src/backOutside.js @@ -0,0 +1,56 @@ +export default function (part) { + let { + utils, + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + + + console.log( 'Noble back outside' ) + + console.log( {part:part}) + paths.outsideSeam = new Path() + .move(points.dartBottomRight) + .line(points.waistSide) + .curve_(points.waistSideCp2, points.armhole) + .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) + .curve_(points.armholePitchCp2, points.shoulder) + .line(points.shoulderDart) + .curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip) + .curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight) + .close() + .attr('class', 'fabric') + + if (complete) { + points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .35 ).shiftFractionTowards( points.shoulder, .35 ) + macro('title', { + at: points.titleAnchor, + nr: 4, + title: 'Outside Back', + }) + points.grainlineFrom.x = points.shoulderDart.x + points.grainlineTo.x = points.shoulderDart.x + + macro("grainline", { + from: points.grainlineFrom, + to: points.grainlineTo, + }) + + if (sa) paths.sa = paths.outsideSeam.offset(sa).attr('class', 'fabric sa') + + } + + return part +} diff --git a/designs/noble/src/backPoints.js b/designs/noble/src/backPoints.js new file mode 100644 index 00000000000..78bd67fbe49 --- /dev/null +++ b/designs/noble/src/backPoints.js @@ -0,0 +1,94 @@ +export default function (part) { + let { + points, + Path, + paths, + options, + snippets, + } = part.shorthand() + + // Hide Bella paths + for (let key of Object.keys(paths)) paths[key].render = false + for (let i in snippets) delete snippets[i] + //removing macros not required from Bella +// delete points.titleAnchor + delete points.__titleNr + delete points.__titleName + delete points.__titlePattern + delete points.scaleboxAnchor + delete points.__scaleboxImperialBottomLeft + delete points.__scaleboxMetricBottomLeft + delete points.__scaleboxImperialTopLeft + delete points.__scaleboxMetricTopLeft + delete points.__scaleboxImperialTopRight + delete points.__scaleboxMetricTopRight + delete points.__scaleboxImperialBottomRight + delete points.__scaleboxMetricBottomRight + delete points.__scaleboxLead + delete points.__scaleboxTitle + delete points.__scaleboxText + delete points.__scaleboxLink + delete points.__scaleboxImperial + delete points.__scaleboxMetric +// delete points.cbNeck +// delete points.cbWaist + delete points.bustDartLeft + delete points.bustDartLeftCp +// delete points.bustCenter +// delete points.waistCenter +// delete points.cbArmhole +// delete points.cbNeckCp2 +// delete points.cbNeckCp1 +// delete points.dartLeftCp +// delete points.dartBottomLeft +// delete points.dartBottomCenter + + console.log('backPoints'); + + points.shoulderDart = points.hps.shiftFractionTowards( points.shoulder, options.shoulderDartPosition ) + + let aUp = points.dartTip.angle( points.shoulderDart ) + let aDown = points.dartBottomRight.angle( points.dartTip ) + let aDiff = Math.abs( aUp - aDown ) + + // let dartCpAdjustment = Math.abs( options.shoulderDartPosition -.5) +.05 + let dartCpAdjustment = aDiff /50 + console.log({dartCpAdjustment: dartCpAdjustment }); + + // points.shoulderDartCpUp = points.shoulderDart.shiftFractionTowards( points.dartTip, options.upperDartLength) + points.shoulderDartCpUp = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 - dartCpAdjustment) + // points.shoulderDartCpDown = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 +(1-options.upperDartLength) ) + points.shoulderDartCpDown = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 +dartCpAdjustment ) + + let iLength = (new Path() + .move(points.dartBottomLeft) + .curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip) + .curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart)).length(); + + let iteration = 0 + let diff = 0 + let angle = 0 + do { + console.log({angle: points.waistSide.angle( points.dartBottomRight ) }) + + angle = diff*( oLength > iLength ? -.1 : .1 ) + + points.dartBottomRight = points.dartBottomRight.rotate( angle, points.waistSide ) + + let oLength = (new Path() + .move(points.shoulderDart) + .curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip) + .curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight)).length(); + + console.log({diff:diff, oLength: oLength, iLength: iLength}) + + diff = oLength -iLength + iteration ++ + + } while( diff < -.5 || diff > .5 && iteration < 100 ) + if( iteration >= 100 ) { + raise.error('Something is not quite right here!') + } + + return part +} \ No newline at end of file diff --git a/designs/noble/src/frontInside.js b/designs/noble/src/frontInside.js new file mode 100644 index 00000000000..23760abe833 --- /dev/null +++ b/designs/noble/src/frontInside.js @@ -0,0 +1,154 @@ +export default function (part) { + let { + utils, + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + console.log( 'Noble front inside' ) + + delete points.waistDartHem + delete points.waistDartRight + delete points.waistDartRightCp + delete points.waistDartCpBottom + delete points.bustDartBottom + delete points.bustDartCpBottom + delete points.bustDartTip + delete points.bustDartTop + delete points.shoulderDartTipCpDownOutside + delete points.ex + delete points.bustB + delete points.shoulder + delete points.shoulderDartShoulder + delete points.shoulderDartOutside + delete points.pitchMax + delete points.armholeCpTarget + delete points.armholePitch + delete points.armholePitchCp1 + delete points.armholePitchCp2 + delete points.armhole + delete points.armholeCp2 + delete points.bustDartCpTop + delete points.bustSide + delete points.bustDartMiddle + delete points.bustDartEdge + // delete points.bustDartCpBottom + // delete points.bustDartTop + // delete points.bustDartMiddle + + console.log({part: part}) + + if( options.dartPosition == 'shoulder' ) { + paths.insideSeam = new Path() + .move(points.cfHem) + .line(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) + .line(points.shoulderDartInside) + .line(points.hps) + .curve(points.hpsCp2, points.cfNeckCp1, points.cfNeck) + + paths.seam = paths.insideSeam.join( new Path().move(points.cfNeck).line(points.cfHem)) + .close() + .attr('class', 'fabric') + } else { + paths.insideSeam = new Path() + .move(points.cfHem) + .line(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.armholeDartTipCpDownInside, points.armholeDartTipInside) + .curve(points.waistCircleInsideCp1, points.armholeCircleInsideCp1, points.armholeDartInside) + .join(paths.armholeInside) + .line(points.hps) + .curve(points.hpsCp2, points.cfNeckCp1, points.cfNeck) + + paths.seam = paths.insideSeam.join( new Path().move(points.cfNeck).line(points.cfHem)) + .close() + .attr('class', 'fabric') + + } + + if (complete) { + points.titleAnchor = new Point(points.hpsCp2.x *.75, points.cfNeckCp1.y *1.5) + macro('title', { + at: points.titleAnchor, + nr: 1, + title: 'Inside Front', + }) + points.scaleboxAnchor = points.titleAnchor.shift(-90, 90).shift(0,10) + macro('scalebox', { at: points.scaleboxAnchor, rotate: 270 }) + + macro('cutonfold', { + from: points.cfNeck, + to: points.cfHem, + grainline: true, + }) + if (sa) { + paths.sa = paths.insideSeam.offset(sa).line(points.cfNeck).attr('class', 'fabric sa') + paths.sa = paths.sa.move(points.cfHem).line(paths.sa.start()) + } + if (paperless) { + macro('vd', { + from: points.cfHem, + to: points.waistDartTip, + x: 0 - 15, + }) + macro('vd', { + from: points.cfHem, + to: points.shoulderDartTip, + x: 0 - 30, + }) + macro('vd', { + from: points.cfHem, + to: points.cfNeck, + x: 0 - 45, + }) + macro('vd', { + from: points.cfHem, + to: points.hps, + x: 0 - 60, + }) + macro('vd', { + from: points.hps, + to: points.shoulderDartInside, + x: points.cfNeck.x -15, + }) + macro('hd', { + from: points.cfBust, + to: points.shoulderDartTip, + y: points.shoulderDartTip.y - 15, + }) + macro('hd', { + from: points.cfNeck, + to: points.shoulderDartInside, + y: points.hps.y - 30, + }) + macro('hd', { + from: points.cfHem, + to: points.waistDartLeft, + y: points.cfHem.y + sa + 15, + }) + macro('hd', { + from: points.cfHem, + to: points.waistDartTip, + y: points.cfHem.y + sa + 30, + }) + macro('hd', { + from: points.cfNeck, + to: points.hps, + y: points.hps.y - sa - 15, + }) + } + } + + return part +} diff --git a/designs/noble/src/frontOutside.js b/designs/noble/src/frontOutside.js new file mode 100644 index 00000000000..59837f59f97 --- /dev/null +++ b/designs/noble/src/frontOutside.js @@ -0,0 +1,171 @@ +export default function (part) { + let { + utils, + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + console.log('Noble front outside') + + delete points.bustDartTop + delete points.bustSide + delete points.bustDartMiddle + delete points.bustDartBottom + delete points.bustDartCpBottom + delete points.bustB + delete points.bustDartEdge + + console.log({ part: part }) + + if( options.dartPosition == 'shoulder' ) { + paths.seam = new Path() + .move(points.waistDartRight) + .line(points.sideHem) + .line(points.armhole) + .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) + .curve_(points.armholePitchCp2, points.shoulder) + .line(points.shoulderDartOutside) + // .curve(points.shoulderDartTipCpDownOutside, points.waistDartRightCp, points.waistDartRight) + .curve(points.shoulderDartTipCpDownOutside, points.waistUpDartRightCpUp, points.waistUpDartRight) + .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) + .close() + .attr('class', 'fabric') + } else { + paths.seam = new Path() + .move(points.waistDartRight) + .line(points.sideHem) + .line(points.armhole) + .curve(points.armholeCp2, points.armholeOutsidePitchCp1, points.armholeOutsidePitch) + .curve(points.armholeOutsidePitchCp2, points.armholeDartOutsideCp1, points.armholeDartOutside) + .curve(points.armholeCircleOutsideCp1, points.waistCircleOutsideCp1, points.waistUpDartRight) + .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) + .close() + .attr('class', 'fabric') + } + + if (complete) { + points.titleAnchor = points.waistDartRight + .shiftFractionTowards(points.armhole, 0.5) + .shiftFractionTowards(points.shoulderDartOutside, 0.2) + macro('title', { + at: points.titleAnchor, + nr: 2, + title: 'Outside Front', + }) + // points.scaleboxAnchor = points.titleAnchor.shift(-90, 70) + // macro('scalebox', { at: points.scaleboxAnchor }) + + // points.grainTemp = points.waistDartRight.shiftFractionTowards( points.sideHemInitial, .2 ) + // points.grainBottom = points.waistDartRight.rotate(270,points.grainTemp) + // points.grainTop = points.grainTemp.shiftOutwards(points.grainBottom, 200) + points.grainTop = points.armhole.shift(225, 20) + points.grainBottom = points.sideHemInitial.shift(135, 20) + + macro('grainline', { + from: points.grainBottom, + to: points.grainTop, + }) + + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } + +/* + paths.tempSeam = new Path() + .move(points.shoulderDartOutside) + // .curve(points.shoulderDartTipCpDownOutside, points.waistDartRightCp, points.waistDartRight) + // .curve(points.shoulderDartTipCpDownOutside, points.bustA, points.waistDartRight) + .curve(points.shoulderDartTipCpDownOutside, points.bustAcp, points.waistDartRight) + .attr('class', 'lining dashed') + + paths.shoulderTempDart = new Path() + .move(points.shoulderDartOutside) + ._curve(points.shoulderDartCpBottom, points.shoulderDartTip) + .curve_(points.shoulderDartCpTop, points.shoulderDartInside) + .attr('class', 'lining') + + paths.insideSeam = new Path() + .move(points.cfHem) + .line(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) + .line(points.shoulderDartInside) + .line(points.hps) + .curve(points.hpsCp2, points.cfNeckCp1, points.cfNeck) + + paths.seam2 = paths.insideSeam + .join(new Path().move(points.cfNeck).line(points.cfHem)) + .close() + .attr('class', 'fabric') + + if (complete) { + if (sa) { + paths.sa = paths.insideSeam.offset(sa).line(points.cfNeck).attr('class', 'fabric sa') + paths.sa = paths.sa.move(points.cfHem).line(paths.sa.start()) + } + if (paperless) { + macro('vd', { + from: points.cfHem, + to: points.waistDartTip, + x: 0 - 15, + }) + macro('vd', { + from: points.cfHem, + to: points.shoulderDartTip, + x: 0 - 30, + }) + macro('vd', { + from: points.cfHem, + to: points.cfNeck, + x: 0 - 45, + }) + macro('vd', { + from: points.cfHem, + to: points.hps, + x: 0 - 60, + }) + macro('vd', { + from: points.hps, + to: points.shoulderDartInside, + x: points.cfNeck.x - 15, + }) + macro('hd', { + from: points.cfBust, + to: points.shoulderDartTip, + y: points.shoulderDartTip.y - 15, + }) + macro('hd', { + from: points.cfNeck, + to: points.shoulderDartInside, + y: points.hps.y - 30, + }) + macro('hd', { + from: points.cfHem, + to: points.waistDartLeft, + y: points.cfHem.y + sa + 15, + }) + macro('hd', { + from: points.cfHem, + to: points.waistDartTip, + y: points.cfHem.y + sa + 30, + }) + macro('hd', { + from: points.cfNeck, + to: points.hps, + y: points.hps.y - sa - 15, + }) + } + + } + */ + return part +} diff --git a/designs/noble/src/frontPoints.js b/designs/noble/src/frontPoints.js new file mode 100644 index 00000000000..d99e722fe1c --- /dev/null +++ b/designs/noble/src/frontPoints.js @@ -0,0 +1,412 @@ +export default function (part) { + let { + utils, + store, + sa, + Point, + points, + Path, + paths, + Snippet, + snippets, + options, + measurements, + complete, + paperless, + macro, + } = part.shorthand() + + const bCircle = 0.552284749831 + + console.log('frontPoints') + + // Hide Bella paths + for (let key of Object.keys(paths)) paths[key].render = false + for (let i in snippets) delete snippets[i] + //removing macros not required from Bella + delete points.titleAnchor + delete points.__titleNr + delete points.__titleName + delete points.__titlePattern + delete points.scaleboxAnchor + delete points.__scaleboxImperialBottomLeft + delete points.__scaleboxMetricBottomLeft + delete points.__scaleboxImperialTopLeft + delete points.__scaleboxMetricTopLeft + delete points.__scaleboxImperialTopRight + delete points.__scaleboxMetricTopRight + delete points.__scaleboxImperialBottomRight + delete points.__scaleboxMetricBottomRight + delete points.__scaleboxLead + delete points.__scaleboxTitle + delete points.__scaleboxText + delete points.__scaleboxLink + delete points.__scaleboxImperial + delete points.__scaleboxMetric + + console.log('Noble front') + console.log({ highBust: measurements.highBust }) + console.log({ chest: measurements.chest }) + console.log({ underbust: measurements.underbust }) + console.log({ waist: measurements.waist }) + console.log({ waistBack: measurements.waistBack }) + console.log({ bustSpan: measurements.bustSpan }) + console.log({ neck: measurements.neck }) + console.log({ hpsToBust: measurements.hpsToBust }) + console.log({ hpsToWaistFront: measurements.hpsToWaistFront }) + console.log({ hpsToWaistBack: measurements.hpsToWaistBack }) + console.log({ shoulderToShoulder: measurements.shoulderToShoulder }) + console.log({ shoulderSlope: measurements.shoulderSlope }) + + // if( options.dartPosition == 'shoulder' ) { + // } + points.shoulderDartInside = points.hps.shiftFractionTowards( + points.shoulder, + options.shoulderDartPosition + ) + points.orgShoulder = points.shoulder.clone() + points.orgArmhole = points.armhole.clone() + points.orgArmholeCp2 = points.armholeCp2.clone() + points.orgArmholePitch = points.armholePitch.clone() + points.orgArmholePitchCp1 = points.armholePitchCp1.clone() + points.orgArmholePitchCp2 = points.armholePitchCp2.clone() + let armholePath = new Path() + .move(points.shoulder) + ._curve(points.armholePitchCp2, points.armholePitch) + .curve(points.armholePitchCp1, points.armholeCp2, points.armhole) + + points.armholeDartInside = armholePath.shiftFractionAlong(options.armholeDartPosition) + points.armholeDartOutside = points.armholeDartInside.clone() + + // paths.armholeTemp = armholePath.clone().setRender(true).attr('class', 'lining') + console.log({ armholeDartInside: points.armholeDartInside }) + let armholePaths = armholePath.split(points.armholeDartInside) + + let armholePathInside = armholePaths[0].clone().setRender(false) + let armholePathOutside = armholePaths[1].clone().setRender(false) + let armholeDartAngle = + armholePathInside.reverse().shiftAlong(1).angle(armholePathOutside.shiftAlong(1)) - 90 + + points.armholeDartArmhole = points.armholeDartInside.shiftFractionTowards( + points.armholeDartOutside, + 0.5 + ) + points.armholeDartTip = points.armholeDartArmhole.shiftFractionTowards( + points.bust, + options.upperDartLength + ) + + console.log({ armholeDartAngle: armholeDartAngle }) + console.log({ dist: points.armholeDartInside.dist(points.armholeDartTip) }) + console.log({ bCircle: bCircle * points.armholeDartInside.dist(points.armholeDartTip) }) + points.armholeCircleInsideCp1 = points.armholeDartInside.shift( + armholeDartAngle, + bCircle * points.armholeDartInside.dist(points.armholeDartTip) + ) + points.armholeCircleOutsideCp1 = points.armholeCircleInsideCp1.clone() + + console.log({ armholePathInside: armholePathInside }) + console.log({ armholePathOutside: armholePathOutside }) + points.shoulderCp1 = armholePathInside.ops[1].cp1.clone() + points.armholeInsidePitch = armholePathInside.ops[1].to.clone() + points.armholeInsidePitchCp2 = armholePathInside.ops[1].cp2.clone() + if (armholePathInside.ops.length == 2) { + points.armholeInsidePitchCp1 = points.armholeDartInside.clone() + points.armholeDartInsideCp2 = points.armholeDartInside.clone() + } else { + points.armholeInsidePitchCp1 = armholePathInside.ops[2].cp1.clone() + points.armholeDartInsideCp2 = armholePathInside.ops[2].cp2.clone() + } + points.armholeDartOutsideCp1 = armholePathOutside.ops[1].cp1.clone() + points.armholeOutsidePitch = armholePathOutside.ops[1].to.clone() + points.armholeOutsidePitchCp2 = armholePathOutside.ops[1].cp2.clone() + if (armholePathOutside.ops.length == 2) { + points.armholeOutsidePitchCp1 = points.armhole.clone() + points.armholeCp2 = points.armhole.clone() + } else { + points.armholeOutsidePitchCp1 = armholePathOutside.ops[2].cp1.clone() + points.armholeCp2 = armholePathOutside.ops[2].cp2.clone() + } + + console.log({ shoulder: points.shoulder }) + console.log({ shoulderCp1: points.shoulderCp1 }) + console.log({ armholeInsidePitchCp2: points.armholeInsidePitchCp2 }) + console.log({ armholeInsidePitch: points.armholeInsidePitch }) + console.log({ armholeInsidePitchCp1: points.armholeInsidePitchCp1 }) + console.log({ armholeDartInsideCp2: points.armholeDartInsideCp2 }) + console.log({ armholeDartInside: points.armholeDartInside }) + console.log({ armholeDartOutside: points.armholeDartOutside }) + console.log({ armholeDartOutsideCp1: points.armholeDartOutsideCp1 }) + console.log({ armholeOutsidePitchCp2: points.armholeOutsidePitchCp2 }) + console.log({ armholeOutsidePitch: points.armholeOutsidePitch }) + console.log({ armholeOutsidePitchCp1: points.armholeOutsidePitchCp1 }) + console.log({ armholeCp2: points.armholeCp2 }) + console.log({ armhole: points.armhole }) + + // paths.armholeInside = new Path() + // .move(points.shoulder) + // .curve(points.shoulderCp1, points.armholeInsidePitchCp2, points.armholeInsidePitch) + // .curve(points.armholeInsidePitchCp1, points.armholeDartInsideCp2, points.armholeDartInside) + // .setRender(true) + // .attr('class', 'lining') + paths.armholeInside = new Path() + .move(points.armholeDartInside) + .curve(points.armholeDartInsideCp2, points.armholeInsidePitchCp1, points.armholeInsidePitch) + .curve(points.armholeInsidePitchCp2, points.shoulderCp1, points.shoulder) + .setRender(false) + .attr('class', 'lining') + + let rotateAngle = + points.shoulderDartInside.angle(points.bustA) - points.bustDartTop.angle(points.bustA) + if (rotateAngle < 0) { + rotateAngle += 360 + } + if (rotateAngle > 360) { + rotateAngle -= 360 + } + + points.shoulderDartCpTop = points.bustDartCpTop.rotate(rotateAngle, points.bustA) + points.shoulderDartCpBottom = points.bustDartCpBottom.rotate(rotateAngle, points.bustA) + + rotateAngle = + points.armholeDartInside.angle(points.bustA) - points.bustDartTop.angle(points.bustA) + if (rotateAngle < 0) { + rotateAngle += 360 + } + if (rotateAngle > 360) { + rotateAngle -= 360 + } + + points.armholeDartCpTop = points.bustDartCpTop.rotate(rotateAngle, points.bustA) + points.armholeDartCpBottom = points.bustDartCpBottom.rotate(rotateAngle, points.bustA) + + let spreadAngle = + /*360 -*/ points.bustA.angle(points.bustDartBottom) - points.bustA.angle(points.bustDartTop) + console.log({ spreadAngle: spreadAngle }) + + points.shoulderDartOutside = points.shoulderDartInside.rotate(spreadAngle, points.bustA) + points.shoulderDartShoulder = points.shoulderDartInside.shiftFractionTowards( + points.shoulderDartOutside, + 0.5 + ) + + points.shoulderDartTip = points.shoulderDartShoulder.shiftFractionTowards( + points.bust, + options.upperDartLength + ) + let dartRatio = + new Path().move(points.waistDartHem).line(points.waistDartTip).length() / + new Path().move(points.shoulderDartShoulder).line(points.shoulderDartTip).length() + console.log({ dartRatio: dartRatio }) + + points.shoulder = points.shoulder.rotate(spreadAngle, points.bustA) + points.armhole = points.armhole.rotate(spreadAngle, points.bustA) + points.armholeCp2 = points.armholeCp2.rotate(spreadAngle, points.bustA) + points.armholePitch = points.armholePitch.rotate(spreadAngle, points.bustA) + points.armholePitchCp1 = points.armholePitchCp1.rotate(spreadAngle, points.bustA) + points.armholePitchCp2 = points.armholePitchCp2.rotate(spreadAngle, points.bustA) + points.armholeCircleOutsideCp1 = points.armholeCircleOutsideCp1.rotate(spreadAngle, points.bustA) + points.armholeDartOutside = points.armholeDartOutside.rotate(spreadAngle, points.bustA) + points.armholeDartOutsideCp1 = points.armholeDartOutsideCp1.rotate(spreadAngle, points.bustA) + points.armholeOutsidePitchCp2 = points.armholeOutsidePitchCp2.rotate(spreadAngle, points.bustA) + points.armholeOutsidePitch = points.armholeOutsidePitch.rotate(spreadAngle, points.bustA) + points.armholeOutsidePitchCp1 = points.armholeOutsidePitchCp1.rotate(spreadAngle, points.bustA) + //points.armholeCp2, points.armhole ) + console.log({ shoulder: points.shoulder }) + console.log({ shoulderDartOutside: points.shoulderDartOutside }) + console.log({ shoulderbust: points.bust }) + console.log({ upperDartLength: options.upperDartLength }) + console.log({ waistDartLength: options.waistDartLength }) + + paths.armholeOutside = new Path() + .move(points.armholeDartOutside) + .curve(points.armholeDartOutsideCp1, points.armholeOutsidePitchCp2, points.armholeOutsidePitch) + .curve(points.armholeOutsidePitchCp1, points.armholeCp2, points.armhole) + .setRender(false) + .attr('class', 'lining') + paths.armholeTempDart = new Path() + .move(points.armholeDartOutside) + ._curve(points.armholeDartCpBottom, points.armholeDartTip) + .curve_(points.armholeDartCpTop, points.armholeDartInside) + .setRender(false) + .attr('class', 'lining') + + points.shoulderDartTipCpDownOutside = points.shoulderDartOutside.shiftFractionTowards( + points.bust, + 1 + (1 - options.upperDartLength) + (1 - options.waistDartLength) * dartRatio + ) + // points.shoulderDartTipCpDownOutside = points.shoulderDartTipCpDownOutside.rotate( options.dartOutsideCP *10, points.shoulderDartOutside ) + + console.log({ shoulderDartInside: points.shoulderDartInside }) + // points.shoulderDartTipCpDownInside = points.shoulderDartInside.shiftFractionTowards( + // points.bust, + // 1 +(1-options.upperDartLength) +((1 -options.waistDartLength) *dartRatio) + // ) + points.shoulderDartTipCpDownInside = points.shoulderDartInside.shiftFractionTowards( + points.shoulderDartTip, + 1 + (1 - options.upperDartLength) + (1 - options.waistDartLength) * dartRatio + ) + points.armholeDartTipCpDownInside = points.armholeDartTip.shiftFractionTowards( + // points.waistDartHem, + points.waistDartLeft, + 1 - options.upperDartLength + (1 - options.waistDartLength) * dartRatio + ) + console.log({ shoulderDartTipCpDownInside: points.shoulderDartTipCpDownInside }) + console.log({ shoulderDartTipCpDownOutside: points.shoulderDartTipCpDownOutside }) + console.log({ shoulderDartTip: points.shoulderDartTip }) + console.log({ waistDartLeftCp: points.waistDartLeftCp }) + console.log({ waistDartLeft: points.waistDartLeft }) + + points.bustAcp = points.waistDartRight.shiftOutwards(points.bustA, 10) + + paths.shoulderInsideSeam = new Path() + .move(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) + .line(points.shoulderDartInside) + .setRender(false) + + paths.armholeInsideSeam = new Path() + .move(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.armholeDartTipCpDownInside, points.armholeDartTip) + // .line(points.armholeDartInside) + .setRender(false) + .attr('class', 'lining') + console.log({ armholeInsideSeam: paths.armholeInsideSeam }) + + paths.sOutsideSeam = new Path() + .move(points.waistDartRight) + .curve(points.bustAcp, points.shoulderDartTipCpDownOutside, points.shoulderDartOutside) + .setRender(false) + + points.waistDartRightCp = points.bustAcp.clone() + + let shoulderInsideSeam = new Path() + .move(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) + .line(points.shoulderDartInside) + .setRender(false) + console.log({ shoulderInsideSeam: shoulderInsideSeam }) + console.log({ waistDartLeft: points.waistDartLeft }) + console.log({ bustA: points.bustA }) + console.log({ dist: points.waistDartLeft.dist(points.bustA) * 0.5 }) + points.waistUpDartLeft = paths.armholeInsideSeam.shiftAlong( + points.waistDartLeft.dist(points.armholeDartTip) * 0.5 + ) + console.log({ waistUpDartLeft: points.waistUpDartLeft }) + points.waistCircleInsideCp1 = points.waistUpDartLeft.shiftTowards( + points.waistDartLeft, + -0.5 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) + ) + console.log({ waistCircleInsideCp1: points.waistCircleInsideCp1 }) + points.shoulderDartTipCpDownOutside = points.shoulderDartTipCpDownOutside + .rotate(-2.5, points.shoulderDartOutside) + .shiftFractionTowards(points.shoulderDartOutside, 0.2) + + let lInside = shoulderInsideSeam.length() + console.log({ lInside: lInside }) + let iteration = 1 + let diff = 0 + // points.bustAcp = points.bustA.clone() + do { + points.waistDartRight = points.waistDartRight.rotate(diff * 0.1, points.sideHemInitial) + + let outsideSeam = new Path() + .move(points.waistDartRight) + .curve(points.bustAcp, points.shoulderDartTipCpDownOutside, points.shoulderDartOutside) + + points.waistUpDartRight = outsideSeam.shiftAlong( + points.waistDartRight.dist(points.waistDartRightCp) * 0.5 + ) + points.waistUpDartRightCpDown = points.waistUpDartRight.shiftFractionTowards( + points.waistDartRight, + 0.25 + ) + // points.waistUpDartRightCpUp = points.waistUpDartRight.shiftFractionTowards( points.waistDartRight, -.25 ) + points.waistUpDartRightCpUp = points.waistUpDartRight.shiftFractionTowards( + points.waistDartRight, + -0.6 + ) + points.waistCpUp = points.waistDartRight + .shiftTowards( + points.sideHemInitial, + points.waistDartRight.dist(points.waistUpDartRight) * 0.25 + ) + .rotate(90, points.waistDartRight) + points.waistCircleInsideCp1 = points.armholeDartTip.shiftTowards( + points.armholeDartTipCpDownInside, + -0.5 * bCircle * points.armholeDartInside.dist(points.armholeDartTip) + ) + + outsideSeam = new Path() + .move(points.waistDartRight) + .curve(points.waistCpUp, points.waistUpDartRightCpDown, points.waistUpDartRight) + .curve( + points.waistUpDartRightCpUp, + points.shoulderDartTipCpDownOutside, + points.shoulderDartOutside + ) + + console.log({ + step: iteration, + diff: diff, + insideSeam: lInside, + outsideSeam: outsideSeam.length(), + sOutside: paths.sOutsideSeam.length(), + }) + + diff = shoulderInsideSeam.length() - outsideSeam.length() + iteration++ + } while ((diff > 1 || diff < -1) && iteration < 200) + if (iteration >= 200) { + raise.error('Something is not quite right here!') + } + points.waistDartRightCp = points.bustAcp.clone() + + console.log({ shoulderDartTipCpDownInside: points.shoulderDartTipCpDownInside }) + points.armholeDartTipInside = points.armholeDartTip.clone() + + points.waistCircleOutsideCp1 = points.waistUpDartRight.shiftTowards( + points.waistDartRight, + -1 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) + ) + + diff = 0 + iteration = 0 + do { + let dist = points.armholeDartTipInside.dist(points.armholeDartTipCpDownInside) + console.log({xDartTip: points.armholeDartTipInside.x,yDartTip: points.armholeDartTipInside.y,xCircle:points.waistCircleOutsideCp1.x,yCircle:points.waistCircleOutsideCp1.y, first: points.armholeDartTipInside.x > points.waistCircleOutsideCp1}) + if( points.armholeDartTipInside.x > points.waistCircleOutsideCp1 ) { + points.armholeDartTipInside.x = points.armholeDartTipInside.x -.5 + points.armholeDartTipInside.y = points.armholeDartTipInside.y +.5 + } else { + points.waistCircleOutsideCp1 = points.waistCircleOutsideCp1.shiftTowards( points.waistUpDartRight, diff > 0 ? 1 :-1 ) + } + points.armholeDartTipCpDownInside = points.waistCircleInsideCp1.shiftOutwards(points.armholeDartTipInside, dist) + + // points.waistCircleOutsideCp1 = points.waistUpDartRight.shiftTowards( + // points.waistDartRight, + // -1 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) + // ) + paths.armholeTempCircleOutside = new Path() + .move(points.armholeDartOutside) + .curve(points.armholeCircleOutsideCp1, points.waistCircleOutsideCp1, points.waistUpDartRight) + .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) + .setRender(false) + .attr('class', 'lining') + paths.armholeTempCircleInside = new Path() + .move(points.armholeDartInside) + .curve(points.armholeCircleInsideCp1, points.waistCircleInsideCp1, points.armholeDartTipInside) + .curve(points.armholeDartTipCpDownInside, points.waistDartLeftCp, points.waistDartLeft) + .setRender(false) + .attr('class', 'lining') + + diff = paths.armholeTempCircleOutside.length() - paths.armholeTempCircleInside.length() + iteration ++ + console.log({ i: iteration, diff: diff, armholeTempCircleOutside: paths.armholeTempCircleOutside.length(),armholeTempCircleInside: paths.armholeTempCircleInside.length() }) + } while( (diff < -1 || diff > 1) && iteration < 200 ) + if (iteration >= 200) { + // raise.error('Something is not quite right here!') + } + + return part +} diff --git a/designs/noble/src/index.js b/designs/noble/src/index.js new file mode 100644 index 00000000000..fce32484fdb --- /dev/null +++ b/designs/noble/src/index.js @@ -0,0 +1,42 @@ +import freesewing from '@freesewing/core' +import Bella from '@freesewing/bella' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +// Parts +import draftBackPoints from './backPoints' +import draftBackInside from './backInside' +import draftBackOutside from './backOutside' +import draftFrontPoints from './frontPoints' +import draftFrontInside from './frontInside' +import draftFrontOutside from './frontOutside' + +// Create design +const Pattern = new freesewing.Design(config, plugins) + +// console.log( 'bella back') +// measurements.highBust = (measurements.highBust == undefined || measurements.highBust == 0 ) ? measurements.chest *1.035 : measurements.highBust +// measurements.bustSpan = (measurements.bustSpan == undefined || measurements.bustSpan == 0 ) ? measurements.waistBack *.47 : measurements.bustSpan +// measurements.underbust = (measurements.underbust == undefined || measurements.underbust == 0 ) ? (measurements.chest +measurements.waist) *.5 : measurements.underbust +// measurements.hpsToBust = (measurements.hpsToBust == undefined || measurements.hpsToBust == 0 ) ? measurements.hpsToWaistFront *.59 : measurements.hpsToBust + +// // Get to work +// console.log({ hpsToBust : measurements.hpsToBust} ) + +// Attach draft methods to prototype +Pattern.prototype.draftBellaBack = function (part) { + return new Bella(this.settings).draftBack(part) +} +Pattern.prototype.draftBellaFrontSideDart = function (part) { + return new Bella(this.settings).draftFrontSideDart(part) +} + +// Pattern.prototype.draftFrontSideDart = (part) => draftFrontSideDart(part) + +Pattern.prototype.draftBackPoints = (part) => draftBackPoints(part) +Pattern.prototype.draftBackInside = (part) => draftBackInside(part) +Pattern.prototype.draftBackOutside = (part) => draftBackOutside(part) +Pattern.prototype.draftFrontPoints = (part) => draftFrontPoints(part) +Pattern.prototype.draftFrontInside = (part) => draftFrontInside(part) +Pattern.prototype.draftFrontOutside = (part) => draftFrontOutside(part) + +export default Pattern From 395a24ecd9739befb4d58a0b33c8244d6d10921b Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Mon, 20 Jun 2022 03:55:05 +0000 Subject: [PATCH 56/71] small fixes --- designs/noble/config.js | 23 -------------------- designs/noble/config/index.js | 10 +++++---- designs/noble/src/backOutside.js | 2 +- designs/noble/src/frontOutside.js | 4 ++-- designs/noble/src/index.js | 35 +++++++++++++++++++++---------- 5 files changed, 33 insertions(+), 41 deletions(-) delete mode 100644 designs/noble/config.js diff --git a/designs/noble/config.js b/designs/noble/config.js deleted file mode 100644 index 01444f8de8b..00000000000 --- a/designs/noble/config.js +++ /dev/null @@ -1,23 +0,0 @@ -import { version } from './package.json' - -export default { - name: 'noble', - version, - design: '', - code: '', - department: '', - type: '', - difficulty: 3, - tags: [ ], - optionGroups: { - fit: ['size'], - }, - measurements: [], - dependencies: {}, - inject: {}, - hide: [], - parts: ['box'], - options: { - size: { pct: 50, min: 10, max: 100 }, - }, -} diff --git a/designs/noble/config/index.js b/designs/noble/config/index.js index 772736d11e5..c7b82c9951c 100644 --- a/designs/noble/config/index.js +++ b/designs/noble/config/index.js @@ -1,7 +1,11 @@ -import { version } from '../package.json' +// import { version } from '../package.json' import Bella from '@freesewing/bella' -const config = { +import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { pctBasedOn } = configHelpers + +export default { ...Bella.config, name: 'noble', version, @@ -106,5 +110,3 @@ const config = { } } - -export default config diff --git a/designs/noble/src/backOutside.js b/designs/noble/src/backOutside.js index c2152763ca4..0907a2deaad 100644 --- a/designs/noble/src/backOutside.js +++ b/designs/noble/src/backOutside.js @@ -34,7 +34,7 @@ export default function (part) { .attr('class', 'fabric') if (complete) { - points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .35 ).shiftFractionTowards( points.shoulder, .35 ) + points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .35 ).shiftFractionTowards( points.shoulderDart, .35 ) macro('title', { at: points.titleAnchor, nr: 4, diff --git a/designs/noble/src/frontOutside.js b/designs/noble/src/frontOutside.js index 59837f59f97..da20af15973 100644 --- a/designs/noble/src/frontOutside.js +++ b/designs/noble/src/frontOutside.js @@ -56,8 +56,8 @@ export default function (part) { if (complete) { points.titleAnchor = points.waistDartRight - .shiftFractionTowards(points.armhole, 0.5) - .shiftFractionTowards(points.shoulderDartOutside, 0.2) + // .shiftFractionTowards(points.armhole, 0.5) + .shiftFractionTowards(points.shoulderDartOutside, 0.3) macro('title', { at: points.titleAnchor, nr: 2, diff --git a/designs/noble/src/index.js b/designs/noble/src/index.js index fce32484fdb..a6d0d039782 100644 --- a/designs/noble/src/index.js +++ b/designs/noble/src/index.js @@ -1,8 +1,13 @@ +// import freesewing from '@freesewing/core' +// import Bella from '@freesewing/bella' +// import plugins from '@freesewing/plugin-bundle' +// import config from '../config' import freesewing from '@freesewing/core' import Bella from '@freesewing/bella' -import plugins from '@freesewing/plugin-bundle' +import bundle from '@freesewing/plugin-bundle' import config from '../config' // Parts +// Parts import draftBackPoints from './backPoints' import draftBackInside from './backInside' import draftBackOutside from './backOutside' @@ -11,7 +16,7 @@ import draftFrontInside from './frontInside' import draftFrontOutside from './frontOutside' // Create design -const Pattern = new freesewing.Design(config, plugins) +const Noble = new freesewing.Design(config, bundle) // console.log( 'bella back') // measurements.highBust = (measurements.highBust == undefined || measurements.highBust == 0 ) ? measurements.chest *1.035 : measurements.highBust @@ -23,20 +28,28 @@ const Pattern = new freesewing.Design(config, plugins) // console.log({ hpsToBust : measurements.hpsToBust} ) // Attach draft methods to prototype -Pattern.prototype.draftBellaBack = function (part) { +Noble.prototype.draftBellaBack = function (part) { return new Bella(this.settings).draftBack(part) } -Pattern.prototype.draftBellaFrontSideDart = function (part) { +Noble.prototype.draftBellaFrontSideDart = function (part) { return new Bella(this.settings).draftFrontSideDart(part) } // Pattern.prototype.draftFrontSideDart = (part) => draftFrontSideDart(part) -Pattern.prototype.draftBackPoints = (part) => draftBackPoints(part) -Pattern.prototype.draftBackInside = (part) => draftBackInside(part) -Pattern.prototype.draftBackOutside = (part) => draftBackOutside(part) -Pattern.prototype.draftFrontPoints = (part) => draftFrontPoints(part) -Pattern.prototype.draftFrontInside = (part) => draftFrontInside(part) -Pattern.prototype.draftFrontOutside = (part) => draftFrontOutside(part) +// Pattern.prototype.draftBackPoints = (part) => draftBackPoints(part) +// Pattern.prototype.draftBackInside = (part) => draftBackInside(part) +// Pattern.prototype.draftBackOutside = (part) => draftBackOutside(part) +// Pattern.prototype.draftFrontPoints = (part) => draftFrontPoints(part) +// Pattern.prototype.draftFrontInside = (part) => draftFrontInside(part) +// Pattern.prototype.draftFrontOutside = (part) => draftFrontOutside(part) +Noble.prototype.draftBackPoints = draftBackPoints +Noble.prototype.draftBackInside = draftBackInside +Noble.prototype.draftBackOutside = draftBackOutside +Noble.prototype.draftFrontPoints = draftFrontPoints +Noble.prototype.draftFrontInside = draftFrontInside +Noble.prototype.draftFrontOutside = draftFrontOutside -export default Pattern +export { config, Noble } + +export default Noble From 24422588e10eccf478558e2c9f48152d60c39f63 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Mon, 20 Jun 2022 19:40:41 +0000 Subject: [PATCH 57/71] paperless.... --- config/software/designs.json | 2 +- designs/noble/config.js | 23 --- designs/noble/config/index.js | 2 +- designs/noble/src/frontInside.js | 99 +++++++---- designs/noble/src/frontOutside.js | 263 ++++++++++++++++++------------ 5 files changed, 227 insertions(+), 162 deletions(-) delete mode 100644 designs/noble/config.js diff --git a/config/software/designs.json b/config/software/designs.json index 39bcc1b15f1..0680b34bef9 100644 --- a/config/software/designs.json +++ b/config/software/designs.json @@ -13,6 +13,7 @@ "bent": "A FreeSewing pattern for a menswear body block with a two-part sleeve", "breanna": "A FreeSewing pattern for a basic body block for womenswear", "brian": "A FreeSewing pattern for a basic body block for menswear", + "noble": "A FreeSewing pattern princess seam bodice block", "titan": "A FreeSewing pattern for a unisex trouser block" }, "garments": { @@ -31,7 +32,6 @@ "jaeger": "A FreeSewing pattern for a sport coat style jacket", "lucy": "A FreeSewing pattern for a historical tie-on pocket", "lunetius": "A FreeSewing pattern for a lacerna, a historical Roman cloak", - "noble": "FIXME: A FreeSewing pattern that needs a description", "paco": "A FreeSewing pattern for summer pants", "penelope": "A FreeSewing pattern for a pencil skirt", "sandy": "A FreeSewing pattern for a circle skirt", diff --git a/designs/noble/config.js b/designs/noble/config.js deleted file mode 100644 index 01444f8de8b..00000000000 --- a/designs/noble/config.js +++ /dev/null @@ -1,23 +0,0 @@ -import { version } from './package.json' - -export default { - name: 'noble', - version, - design: '', - code: '', - department: '', - type: '', - difficulty: 3, - tags: [ ], - optionGroups: { - fit: ['size'], - }, - measurements: [], - dependencies: {}, - inject: {}, - hide: [], - parts: ['box'], - options: { - size: { pct: 50, min: 10, max: 100 }, - }, -} diff --git a/designs/noble/config/index.js b/designs/noble/config/index.js index 772736d11e5..fd9c9cbd757 100644 --- a/designs/noble/config/index.js +++ b/designs/noble/config/index.js @@ -57,7 +57,7 @@ const config = { backOutside: 'backPoints', frontPoints: 'bellaBack', frontInside: 'frontPoints', - frontOutside: 'frontPoints', + frontOutside: ['frontPoints','frontInside'], }, parts: [ 'backPoints', diff --git a/designs/noble/src/frontInside.js b/designs/noble/src/frontInside.js index 23760abe833..17767b5483d 100644 --- a/designs/noble/src/frontInside.js +++ b/designs/noble/src/frontInside.js @@ -61,6 +61,11 @@ export default function (part) { paths.seam = paths.insideSeam.join( new Path().move(points.cfNeck).line(points.cfHem)) .close() .attr('class', 'fabric') + + store.set( 'shoulderDartTipNotch', (new Path() + .move(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip)).length()) + } else { paths.insideSeam = new Path() .move(points.cfHem) @@ -75,9 +80,17 @@ export default function (part) { .close() .attr('class', 'fabric') + store.set( 'shoulderDartTipNotch', (new Path() + .move(points.waistDartLeft) + .curve(points.waistDartLeftCp, points.armholeDartTipCpDownInside, points.armholeDartTipInside)).length()) } if (complete) { + if( options.dartPosition == 'shoulder' ) { + snippets.shoulderDartTip = new Snippet('notch', points.shoulderDartTip) + } else { + snippets.shoulderDartTip = new Snippet('notch', points.armholeDartTipInside) + } points.titleAnchor = new Point(points.hpsCp2.x *.75, points.cfNeckCp1.y *1.5) macro('title', { at: points.titleAnchor, @@ -92,63 +105,91 @@ export default function (part) { to: points.cfHem, grainline: true, }) + if (sa) { paths.sa = paths.insideSeam.offset(sa).line(points.cfNeck).attr('class', 'fabric sa') paths.sa = paths.sa.move(points.cfHem).line(paths.sa.start()) } + if (paperless) { + let extraOffset = 0 + if( options.dartPosition == 'shoulder' ) { + macro('hd', { + from: points.cfNeck, + to: points.shoulderDartInside, + y: points.hps.y - 25, + }) + macro('vd', { + from: points.cfHem, + to: points.shoulderDartInside, + x: 0 -30, + }) + } else { + extraOffset = 10 + macro('hd', { + from: points.cfNeck, + to: points.shoulderCp1, + y: points.hps.y - 35, + }) + macro('hd', { + from: points.cfNeck, + to: points.armholeDartInsideCp2, + y: points.hps.y - 25, + }) + macro('vd', { + from: points.cfHem, + to: points.armholeDartInsideCp2, + x: 0 -20, + }) + macro('vd', { + from: points.cfHem, + to: points.shoulderCp1, + x: 0 -40, + }) + } + + // macro('vd', { + // from: points.cfHem, + // to: points.waistDartTip, + // x: 0 - 15, + // }) macro('vd', { from: points.cfHem, - to: points.waistDartTip, - x: 0 - 15, - }) - macro('vd', { - from: points.cfHem, - to: points.shoulderDartTip, - x: 0 - 30, + to: points.armholeDartTipInside, + x: 0 - 10, }) macro('vd', { from: points.cfHem, to: points.cfNeck, - x: 0 - 45, + x: 0 - 20 -extraOffset, }) macro('vd', { from: points.cfHem, to: points.hps, - x: 0 - 60, - }) - macro('vd', { - from: points.hps, - to: points.shoulderDartInside, - x: points.cfNeck.x -15, + x: 0 - 40 -extraOffset, }) macro('hd', { from: points.cfBust, - to: points.shoulderDartTip, - y: points.shoulderDartTip.y - 15, - }) - macro('hd', { - from: points.cfNeck, - to: points.shoulderDartInside, - y: points.hps.y - 30, + to: points.armholeDartTipInside, + y: points.cfHem.y + sa + 25, + // y: points.shoulderDartTip.y - 15, }) macro('hd', { from: points.cfHem, to: points.waistDartLeft, y: points.cfHem.y + sa + 15, }) - macro('hd', { - from: points.cfHem, - to: points.waistDartTip, - y: points.cfHem.y + sa + 30, - }) + // macro('hd', { + // from: points.cfHem, + // to: points.waistDartTip, + // y: points.cfHem.y + sa + 30, + // }) macro('hd', { from: points.cfNeck, to: points.hps, y: points.hps.y - sa - 15, }) - } - } - + } + } return part } diff --git a/designs/noble/src/frontOutside.js b/designs/noble/src/frontOutside.js index 59837f59f97..e416f10a36b 100644 --- a/designs/noble/src/frontOutside.js +++ b/designs/noble/src/frontOutside.js @@ -29,46 +29,56 @@ export default function (part) { console.log({ part: part }) if( options.dartPosition == 'shoulder' ) { + paths.princessSeam = new Path() + .move(points.shoulderDartOutside) + .curve(points.shoulderDartTipCpDownOutside, points.waistUpDartRightCpUp, points.waistUpDartRight) + .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) + .setRender(false) + paths.armhole = new Path() + .move(points.armhole) + .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) + .curve_(points.armholePitchCp2, points.shoulder) + .setRender(false) + paths.seam = new Path() .move(points.waistDartRight) .line(points.sideHem) .line(points.armhole) - .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) - .curve_(points.armholePitchCp2, points.shoulder) + .join(paths.armhole) .line(points.shoulderDartOutside) - // .curve(points.shoulderDartTipCpDownOutside, points.waistDartRightCp, points.waistDartRight) - .curve(points.shoulderDartTipCpDownOutside, points.waistUpDartRightCpUp, points.waistUpDartRight) - .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) + .join(paths.princessSeam) .close() .attr('class', 'fabric') } else { + paths.princessSeam = new Path() + .move(points.armholeDartOutside) + .curve(points.armholeCircleOutsideCp1, points.waistCircleOutsideCp1, points.waistUpDartRight) + .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) + .setRender(false) + paths.seam = new Path() - .move(points.waistDartRight) - .line(points.sideHem) - .line(points.armhole) - .curve(points.armholeCp2, points.armholeOutsidePitchCp1, points.armholeOutsidePitch) - .curve(points.armholeOutsidePitchCp2, points.armholeDartOutsideCp1, points.armholeDartOutside) - .curve(points.armholeCircleOutsideCp1, points.waistCircleOutsideCp1, points.waistUpDartRight) - .curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight) - .close() - .attr('class', 'fabric') + .move(points.waistDartRight) + .line(points.sideHem) + .line(points.armhole) + .curve(points.armholeCp2, points.armholeOutsidePitchCp1, points.armholeOutsidePitch) + .curve(points.armholeOutsidePitchCp2, points.armholeDartOutsideCp1, points.armholeDartOutside) + .join(paths.princessSeam) + .close() + .attr('class', 'fabric') } if (complete) { + points.snippet = paths.princessSeam.shiftAlong(paths.princessSeam.length() -store.get('shoulderDartTipNotch')) + snippets.shoulderDartTip = new Snippet('notch', points.snippet) + points.titleAnchor = points.waistDartRight - .shiftFractionTowards(points.armhole, 0.5) + .shiftFractionTowards(points.armhole, 0.3) .shiftFractionTowards(points.shoulderDartOutside, 0.2) macro('title', { at: points.titleAnchor, nr: 2, title: 'Outside Front', }) - // points.scaleboxAnchor = points.titleAnchor.shift(-90, 70) - // macro('scalebox', { at: points.scaleboxAnchor }) - - // points.grainTemp = points.waistDartRight.shiftFractionTowards( points.sideHemInitial, .2 ) - // points.grainBottom = points.waistDartRight.rotate(270,points.grainTemp) - // points.grainTop = points.grainTemp.shiftOutwards(points.grainBottom, 200) points.grainTop = points.armhole.shift(225, 20) points.grainBottom = points.sideHemInitial.shift(135, 20) @@ -78,94 +88,131 @@ export default function (part) { }) if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + if(paperless) { + let pLeft = paths.princessSeam.edge('left') + macro('hd', { + from: points.waistDartRight, + to: points.armholeOutsidePitchCp1, + y: points.sideHemInitial.y +sa + 35, + }) + macro('hd', { + from: points.waistDartRight, + to: points.sideHemInitial, + y: points.sideHemInitial.y +sa + 25, + }) + macro('hd', { + from: pLeft, + to: points.sideHemInitial, + y: points.sideHemInitial.y +sa + 15, + }) + + macro('vd', { + from: points.armholeOutsidePitchCp1, + to: points.sideHemInitial, + x: points.sideHemInitial.x +sa + 15, + }) + macro('vd', { + from: points.waistDartRight, + to: pLeft, + x: pLeft.x -sa - 15, + }) + + if( options.dartPosition == 'shoulder' ) { + macro('hd', { + from: points.shoulderDartOutside, + to: points.shoulder, + y: points.shoulderDartOutside.y -sa - 15, + }) + macro('hd', { + from: points.snippet, + to: points.shoulder, + y: points.shoulderDartOutside.y -sa - 25, + }) + macro('hd', { + from: pLeft, + to: points.shoulder, + y: points.shoulderDartOutside.y -sa - 35, + }) + macro('hd', { + from: points.waistDartRight, + to: points.shoulder, + y: points.sideHemInitial.y +sa + 45, + }) + macro('vd', { + from: points.shoulder, + to: points.sideHemInitial, + x: points.shoulder.x //+sa + 15, + }) + macro('vd', { + from: points.shoulderDartOutside, + to: points.sideHemInitial, + x: points.shoulder.x +sa + 15, + }) + macro('vd', { + from: points.waistDartRight, + to: points.shoulderDartOutside, + x: pLeft.x -sa - 25, + }) + macro('vd', { + from: points.snippet, + to: points.shoulderDartOutside, + x: pLeft.x -sa - 15, + }) + + let pArmholeLeft = paths.armhole.edge('left') + macro('hd', { + from: points.waistDartRight, + to: pArmholeLeft, + y: points.sideHemInitial.y +sa +5, + }) + macro('vd', { + from: pArmholeLeft, + to: points.sideHemInitial, + x: points.sideHemInitial.x +sa + 25, + }) + } else { + let pTop = paths.princessSeam.edge('top') + macro('hd', { + from: pLeft, + to: points.armholeOutsidePitchCp1, + y: pTop.y -sa - 35, + }) + macro('hd', { + from: pLeft, + to: points.armholeDartOutside, + y: pTop.y -sa - 25, + }) + macro('hd', { + from: pLeft, + to: pTop, + y: pTop.y -sa - 15, + }) + macro('vd', { + from: points.waistDartRight, + to: pTop, + x: pLeft.x -sa - 25, + }) + macro('vd', { + from: points.snippet, + to: pTop, + x: pLeft.x -sa - 15, + }) + macro('vd', { + from: points.armholeDartOutside, + to: points.sideHemInitial, + x: points.sideHemInitial.x +sa + 25, + }) + macro('vd', { + from: pTop, + to: points.sideHemInitial, + x: points.sideHemInitial.x +sa + 35, + }) + + } + + } } -/* - paths.tempSeam = new Path() - .move(points.shoulderDartOutside) - // .curve(points.shoulderDartTipCpDownOutside, points.waistDartRightCp, points.waistDartRight) - // .curve(points.shoulderDartTipCpDownOutside, points.bustA, points.waistDartRight) - .curve(points.shoulderDartTipCpDownOutside, points.bustAcp, points.waistDartRight) - .attr('class', 'lining dashed') - - paths.shoulderTempDart = new Path() - .move(points.shoulderDartOutside) - ._curve(points.shoulderDartCpBottom, points.shoulderDartTip) - .curve_(points.shoulderDartCpTop, points.shoulderDartInside) - .attr('class', 'lining') - - paths.insideSeam = new Path() - .move(points.cfHem) - .line(points.waistDartLeft) - .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) - .line(points.shoulderDartInside) - .line(points.hps) - .curve(points.hpsCp2, points.cfNeckCp1, points.cfNeck) - - paths.seam2 = paths.insideSeam - .join(new Path().move(points.cfNeck).line(points.cfHem)) - .close() - .attr('class', 'fabric') - - if (complete) { - if (sa) { - paths.sa = paths.insideSeam.offset(sa).line(points.cfNeck).attr('class', 'fabric sa') - paths.sa = paths.sa.move(points.cfHem).line(paths.sa.start()) - } - if (paperless) { - macro('vd', { - from: points.cfHem, - to: points.waistDartTip, - x: 0 - 15, - }) - macro('vd', { - from: points.cfHem, - to: points.shoulderDartTip, - x: 0 - 30, - }) - macro('vd', { - from: points.cfHem, - to: points.cfNeck, - x: 0 - 45, - }) - macro('vd', { - from: points.cfHem, - to: points.hps, - x: 0 - 60, - }) - macro('vd', { - from: points.hps, - to: points.shoulderDartInside, - x: points.cfNeck.x - 15, - }) - macro('hd', { - from: points.cfBust, - to: points.shoulderDartTip, - y: points.shoulderDartTip.y - 15, - }) - macro('hd', { - from: points.cfNeck, - to: points.shoulderDartInside, - y: points.hps.y - 30, - }) - macro('hd', { - from: points.cfHem, - to: points.waistDartLeft, - y: points.cfHem.y + sa + 15, - }) - macro('hd', { - from: points.cfHem, - to: points.waistDartTip, - y: points.cfHem.y + sa + 30, - }) - macro('hd', { - from: points.cfNeck, - to: points.hps, - y: points.hps.y - sa - 15, - }) - } - - } - */ return part } From 174e7d60bb907a248bf0519fc6b34563b4c87687 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Mon, 20 Jun 2022 20:54:07 +0000 Subject: [PATCH 58/71] Paperless..... --- designs/noble/src/backInside.js | 85 +++++++++++++++++++------ designs/noble/src/backOutside.js | 104 ++++++++++++++++++++++++++++--- 2 files changed, 163 insertions(+), 26 deletions(-) diff --git a/designs/noble/src/backInside.js b/designs/noble/src/backInside.js index 6a40428d159..a726cb46880 100644 --- a/designs/noble/src/backInside.js +++ b/designs/noble/src/backInside.js @@ -16,26 +16,9 @@ export default function (part) { macro, } = part.shorthand() - // delete points.armholePitch - // delete points.armholePitchCp1 - // delete points.armholePitchCp2 - // delete points.armholeCpTarget - // delete points.armholeCp2 - // delete points.armhole - // delete points.bustSide - // delete points.waistSide - // delete points.waistSideCp2 - // delete points.dartBottomRight - // delete points.dartBottomCenter - // delete points.dartRightCp - // delete points.bustDartRight - // Hide Bella paths for (let key of Object.keys(paths)) paths[key].render = false for (let i in snippets) delete snippets[i] - //removing macros not required from Bella - - console.log( 'Noble back inside' ) paths.insideSeam = new Path() .move(points.cbNeck) @@ -49,7 +32,8 @@ export default function (part) { .attr('class', 'fabric') if (complete) { - // points.titleAnchor = points.waistDartRight.shiftFractionTowards( points.armhole, .5 ) + snippets.dartTip = new Snippet('notch', points.dartTip) + macro('title', { at: points.titleAnchor, nr: 3, @@ -61,6 +45,71 @@ export default function (part) { }) if (sa) paths.sa = paths.insideSeam.offset(sa).attr('class', 'fabric sa') + + if( paperless ) { + macro('hd', { + from: points.waistCenter, + to: points.shoulderDart, + y: points.waistCenter.y +sa + 15, + }) + macro('hd', { + from: points.waistCenter, + to: points.dartTip, + y: points.waistCenter.y +sa + 25, + }) + macro('hd', { + from: points.waistCenter, + to: points.dartBottomLeft, + y: points.waistCenter.y +sa + 35, + }) + macro('hd', { + from: points.cbNeck, + to: points.dartBottomLeft, + y: points.waistCenter.y +sa + 45, + }) + macro('hd', { + from: points.cbNeck, + to: points.hps, + y: points.hps.y -sa - 15, + }) + macro('hd', { + from: points.hps, + to: points.shoulderDart, + y: points.hps.y -sa - 15, + }) + + macro('vd', { + from: points.shoulderDart, + to: points.dartTip, + x: points.shoulderDart.x +sa + 15, + }) + macro('vd', { + from: points.shoulderDart, + to: points.dartBottomLeft, + x: points.shoulderDart.x +sa + 25, + }) + macro('vd', { + from: points.shoulderDart, + to: points.waistCenter, + x: points.shoulderDart.x +sa + 35, + }) + macro('vd', { + from: points.hps, + to: points.waistCenter, + x: points.shoulderDart.x +sa + 45, + }) + macro('vd', { + from: points.waistCenter, + to: points.cbNeck, + x: points.cbNeck.x -sa - 15, + }) + macro('vd', { + from: points.waistCenter, + to: points.hps, + x: points.cbNeck.x -sa - 25, + }) + + } } return part diff --git a/designs/noble/src/backOutside.js b/designs/noble/src/backOutside.js index c2152763ca4..c3d02af3859 100644 --- a/designs/noble/src/backOutside.js +++ b/designs/noble/src/backOutside.js @@ -17,10 +17,12 @@ export default function (part) { } = part.shorthand() - - console.log( 'Noble back outside' ) - - console.log( {part:part}) + paths.dart = new Path() + .move(points.shoulderDart) + .curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip) + .curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight) + .setRender(false) + paths.outsideSeam = new Path() .move(points.dartBottomRight) .line(points.waistSide) @@ -28,13 +30,14 @@ export default function (part) { .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve_(points.armholePitchCp2, points.shoulder) .line(points.shoulderDart) - .curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip) - .curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight) + .join(paths.dart) .close() .attr('class', 'fabric') if (complete) { - points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .35 ).shiftFractionTowards( points.shoulder, .35 ) + snippets.dartTip = new Snippet('notch', points.dartTip) + + points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .1 ).shiftFractionTowards( points.shoulder, .3 ) macro('title', { at: points.titleAnchor, nr: 4, @@ -49,7 +52,92 @@ export default function (part) { }) if (sa) paths.sa = paths.outsideSeam.offset(sa).attr('class', 'fabric sa') - + if( paperless ) { + let pLeft = paths.dart.edge('left') + // macro('hd', { + // from: points.dartBottomRight, + // to: points.shoulderDart, + // y: points.waistCenter.y +sa + 15, + // }) + macro('hd', { + from: pLeft, + to: points.waistSide, + y: points.waistCenter.y +sa + 15, + }) + macro('hd', { + from: points.dartBottomRight, + to: points.armhole, + y: points.waistCenter.y +sa + 25, + }) + macro('hd', { + from: points.dartTip, + to: points.waistSide, + y: points.waistCenter.y +sa + 35, + }) + macro('hd', { + from: points.dartBottomRight, + to: points.waistSide, + y: points.waistCenter.y +sa + 45, + }) + // macro('hd', { + // from: points.cbNeck, + // to: points.waistSide, + // y: points.waistCenter.y +sa + 45, + // }) + macro('hd', { + from: pLeft, + to: points.shoulder, + y: points.shoulderDart.y -sa - 15, + }) + macro('hd', { + from: points.shoulderDart, + to: points.shoulder, + y: points.shoulderDart.y -sa - 25, + }) + macro('hd', { + from: points.shoulderDart, + to: points.armhole, + y: points.shoulderDart.y -sa - 35, + }) + + macro('vd', { + from: points.shoulder, + to: points.dartTip, + x: points.armhole.x +sa + 15, + }) + macro('vd', { + from: points.armhole, + to: points.waistSide, + x: points.armhole.x +sa + 15, + }) + macro('vd', { + from: points.shoulder, + to: points.waistSide, + x: points.armhole.x +sa + 25, + }) + macro('vd', { + from: points.shoulder, + to: points.dartBottomRight, + x: points.armhole.x +sa + 35, + }) + macro('vd', { + from: points.shoulderDart, + to: points.dartBottomRight, + x: points.armhole.x +sa + 45, + }) + // macro('vd', { + // from: points.waistCenter, + // to: points.cbNeck, + // x: points.cbNeck.x -sa - 15, + // }) + // macro('vd', { + // from: points.waistCenter, + // to: points.hps, + // x: points.cbNeck.x -sa - 25, + // }) + + } + } return part From c2f9031d3cdc55c1d891ceb899c232c48c0ce628 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Mon, 20 Jun 2022 21:25:06 +0000 Subject: [PATCH 59/71] All the paperless! --- designs/noble/src/backInside.js | 1 - designs/noble/src/backOutside.js | 186 +++++++++++++----------------- designs/noble/src/backPoints.js | 15 +-- designs/noble/src/frontInside.js | 19 +-- designs/noble/src/frontOutside.js | 19 +-- designs/noble/src/frontPoints.js | 91 +-------------- 6 files changed, 88 insertions(+), 243 deletions(-) diff --git a/designs/noble/src/backInside.js b/designs/noble/src/backInside.js index a726cb46880..93eb0a36b08 100644 --- a/designs/noble/src/backInside.js +++ b/designs/noble/src/backInside.js @@ -108,7 +108,6 @@ export default function (part) { to: points.hps, x: points.cbNeck.x -sa - 25, }) - } } diff --git a/designs/noble/src/backOutside.js b/designs/noble/src/backOutside.js index 1e01c4cbc96..26ac4b4ef67 100644 --- a/designs/noble/src/backOutside.js +++ b/designs/noble/src/backOutside.js @@ -34,115 +34,89 @@ export default function (part) { .close() .attr('class', 'fabric') - if (complete) { -<<<<<<< HEAD + if (complete) { snippets.dartTip = new Snippet('notch', points.dartTip) - + points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .1 ).shiftFractionTowards( points.shoulder, .3 ) -======= - points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .35 ).shiftFractionTowards( points.shoulderDart, .35 ) ->>>>>>> 395a24ecd9739befb4d58a0b33c8244d6d10921b - macro('title', { - at: points.titleAnchor, - nr: 4, - title: 'Outside Back', - }) - points.grainlineFrom.x = points.shoulderDart.x - points.grainlineTo.x = points.shoulderDart.x + macro('title', { + at: points.titleAnchor, + nr: 4, + title: 'Outside Back', + }) + points.grainlineFrom.x = points.shoulderDart.x + points.grainlineTo.x = points.shoulderDart.x - macro("grainline", { - from: points.grainlineFrom, - to: points.grainlineTo, + macro("grainline", { + from: points.grainlineFrom, + to: points.grainlineTo, + }) + + if (sa) paths.sa = paths.outsideSeam.offset(sa).attr('class', 'fabric sa') + if( paperless ) { + let pLeft = paths.dart.edge('left') + macro('hd', { + from: pLeft, + to: points.waistSide, + y: points.waistCenter.y +sa + 15, + }) + macro('hd', { + from: points.dartBottomRight, + to: points.armhole, + y: points.waistCenter.y +sa + 25, + }) + macro('hd', { + from: points.dartTip, + to: points.waistSide, + y: points.waistCenter.y +sa + 35, + }) + macro('hd', { + from: points.dartBottomRight, + to: points.waistSide, + y: points.waistCenter.y +sa + 45, + }) + macro('hd', { + from: pLeft, + to: points.shoulder, + y: points.shoulderDart.y -sa - 15, + }) + macro('hd', { + from: points.shoulderDart, + to: points.shoulder, + y: points.shoulderDart.y -sa - 25, + }) + macro('hd', { + from: points.shoulderDart, + to: points.armhole, + y: points.shoulderDart.y -sa - 35, + }) + + macro('vd', { + from: points.shoulder, + to: points.dartTip, + x: points.armhole.x +sa + 15, + }) + macro('vd', { + from: points.armhole, + to: points.waistSide, + x: points.armhole.x +sa + 15, + }) + macro('vd', { + from: points.shoulder, + to: points.waistSide, + x: points.armhole.x +sa + 25, + }) + macro('vd', { + from: points.shoulder, + to: points.dartBottomRight, + x: points.armhole.x +sa + 35, + }) + macro('vd', { + from: points.shoulderDart, + to: points.dartBottomRight, + x: points.armhole.x +sa + 45, }) - - if (sa) paths.sa = paths.outsideSeam.offset(sa).attr('class', 'fabric sa') - if( paperless ) { - let pLeft = paths.dart.edge('left') - // macro('hd', { - // from: points.dartBottomRight, - // to: points.shoulderDart, - // y: points.waistCenter.y +sa + 15, - // }) - macro('hd', { - from: pLeft, - to: points.waistSide, - y: points.waistCenter.y +sa + 15, - }) - macro('hd', { - from: points.dartBottomRight, - to: points.armhole, - y: points.waistCenter.y +sa + 25, - }) - macro('hd', { - from: points.dartTip, - to: points.waistSide, - y: points.waistCenter.y +sa + 35, - }) - macro('hd', { - from: points.dartBottomRight, - to: points.waistSide, - y: points.waistCenter.y +sa + 45, - }) - // macro('hd', { - // from: points.cbNeck, - // to: points.waistSide, - // y: points.waistCenter.y +sa + 45, - // }) - macro('hd', { - from: pLeft, - to: points.shoulder, - y: points.shoulderDart.y -sa - 15, - }) - macro('hd', { - from: points.shoulderDart, - to: points.shoulder, - y: points.shoulderDart.y -sa - 25, - }) - macro('hd', { - from: points.shoulderDart, - to: points.armhole, - y: points.shoulderDart.y -sa - 35, - }) - - macro('vd', { - from: points.shoulder, - to: points.dartTip, - x: points.armhole.x +sa + 15, - }) - macro('vd', { - from: points.armhole, - to: points.waistSide, - x: points.armhole.x +sa + 15, - }) - macro('vd', { - from: points.shoulder, - to: points.waistSide, - x: points.armhole.x +sa + 25, - }) - macro('vd', { - from: points.shoulder, - to: points.dartBottomRight, - x: points.armhole.x +sa + 35, - }) - macro('vd', { - from: points.shoulderDart, - to: points.dartBottomRight, - x: points.armhole.x +sa + 45, - }) - // macro('vd', { - // from: points.waistCenter, - // to: points.cbNeck, - // x: points.cbNeck.x -sa - 15, - // }) - // macro('vd', { - // from: points.waistCenter, - // to: points.hps, - // x: points.cbNeck.x -sa - 25, - // }) - - } - } - - return part + } + + return part } diff --git a/designs/noble/src/backPoints.js b/designs/noble/src/backPoints.js index 78bd67fbe49..b784cb72781 100644 --- a/designs/noble/src/backPoints.js +++ b/designs/noble/src/backPoints.js @@ -10,8 +10,7 @@ export default function (part) { // Hide Bella paths for (let key of Object.keys(paths)) paths[key].render = false for (let i in snippets) delete snippets[i] - //removing macros not required from Bella -// delete points.titleAnchor + delete points.__titleNr delete points.__titleName delete points.__titlePattern @@ -30,20 +29,8 @@ export default function (part) { delete points.__scaleboxLink delete points.__scaleboxImperial delete points.__scaleboxMetric -// delete points.cbNeck -// delete points.cbWaist delete points.bustDartLeft delete points.bustDartLeftCp -// delete points.bustCenter -// delete points.waistCenter -// delete points.cbArmhole -// delete points.cbNeckCp2 -// delete points.cbNeckCp1 -// delete points.dartLeftCp -// delete points.dartBottomLeft -// delete points.dartBottomCenter - - console.log('backPoints'); points.shoulderDart = points.hps.shiftFractionTowards( points.shoulder, options.shoulderDartPosition ) diff --git a/designs/noble/src/frontInside.js b/designs/noble/src/frontInside.js index 17767b5483d..949e417321c 100644 --- a/designs/noble/src/frontInside.js +++ b/designs/noble/src/frontInside.js @@ -16,8 +16,6 @@ export default function (part) { macro, } = part.shorthand() - console.log( 'Noble front inside' ) - delete points.waistDartHem delete points.waistDartRight delete points.waistDartRightCp @@ -43,12 +41,7 @@ export default function (part) { delete points.bustSide delete points.bustDartMiddle delete points.bustDartEdge - // delete points.bustDartCpBottom - // delete points.bustDartTop - // delete points.bustDartMiddle - console.log({part: part}) - if( options.dartPosition == 'shoulder' ) { paths.insideSeam = new Path() .move(points.cfHem) @@ -148,11 +141,6 @@ export default function (part) { }) } - // macro('vd', { - // from: points.cfHem, - // to: points.waistDartTip, - // x: 0 - 15, - // }) macro('vd', { from: points.cfHem, to: points.armholeDartTipInside, @@ -172,18 +160,12 @@ export default function (part) { from: points.cfBust, to: points.armholeDartTipInside, y: points.cfHem.y + sa + 25, - // y: points.shoulderDartTip.y - 15, }) macro('hd', { from: points.cfHem, to: points.waistDartLeft, y: points.cfHem.y + sa + 15, }) - // macro('hd', { - // from: points.cfHem, - // to: points.waistDartTip, - // y: points.cfHem.y + sa + 30, - // }) macro('hd', { from: points.cfNeck, to: points.hps, @@ -191,5 +173,6 @@ export default function (part) { }) } } + return part } diff --git a/designs/noble/src/frontOutside.js b/designs/noble/src/frontOutside.js index 341660b1ea7..c59f8c60814 100644 --- a/designs/noble/src/frontOutside.js +++ b/designs/noble/src/frontOutside.js @@ -16,8 +16,6 @@ export default function (part) { macro, } = part.shorthand() - console.log('Noble front outside') - delete points.bustDartTop delete points.bustSide delete points.bustDartMiddle @@ -26,8 +24,6 @@ export default function (part) { delete points.bustB delete points.bustDartEdge - console.log({ part: part }) - if( options.dartPosition == 'shoulder' ) { paths.princessSeam = new Path() .move(points.shoulderDartOutside) @@ -72,13 +68,8 @@ export default function (part) { snippets.shoulderDartTip = new Snippet('notch', points.snippet) points.titleAnchor = points.waistDartRight -<<<<<<< HEAD .shiftFractionTowards(points.armhole, 0.3) .shiftFractionTowards(points.shoulderDartOutside, 0.2) -======= - // .shiftFractionTowards(points.armhole, 0.5) - .shiftFractionTowards(points.shoulderDartOutside, 0.3) ->>>>>>> 395a24ecd9739befb4d58a0b33c8244d6d10921b macro('title', { at: points.titleAnchor, nr: 2, @@ -177,18 +168,18 @@ export default function (part) { x: points.sideHemInitial.x +sa + 25, }) } else { - let pTop = paths.princessSeam.edge('top') - macro('hd', { + let pTop = paths.princessSeam.edge('top') + macro('hd', { from: pLeft, to: points.armholeOutsidePitchCp1, y: pTop.y -sa - 35, }) - macro('hd', { + macro('hd', { from: pLeft, to: points.armholeDartOutside, y: pTop.y -sa - 25, }) - macro('hd', { + macro('hd', { from: pLeft, to: pTop, y: pTop.y -sa - 15, @@ -213,9 +204,7 @@ export default function (part) { to: points.sideHemInitial, x: points.sideHemInitial.x +sa + 35, }) - } - } } diff --git a/designs/noble/src/frontPoints.js b/designs/noble/src/frontPoints.js index d99e722fe1c..07c81297cb2 100644 --- a/designs/noble/src/frontPoints.js +++ b/designs/noble/src/frontPoints.js @@ -18,8 +18,6 @@ export default function (part) { const bCircle = 0.552284749831 - console.log('frontPoints') - // Hide Bella paths for (let key of Object.keys(paths)) paths[key].render = false for (let i in snippets) delete snippets[i] @@ -44,22 +42,6 @@ export default function (part) { delete points.__scaleboxImperial delete points.__scaleboxMetric - console.log('Noble front') - console.log({ highBust: measurements.highBust }) - console.log({ chest: measurements.chest }) - console.log({ underbust: measurements.underbust }) - console.log({ waist: measurements.waist }) - console.log({ waistBack: measurements.waistBack }) - console.log({ bustSpan: measurements.bustSpan }) - console.log({ neck: measurements.neck }) - console.log({ hpsToBust: measurements.hpsToBust }) - console.log({ hpsToWaistFront: measurements.hpsToWaistFront }) - console.log({ hpsToWaistBack: measurements.hpsToWaistBack }) - console.log({ shoulderToShoulder: measurements.shoulderToShoulder }) - console.log({ shoulderSlope: measurements.shoulderSlope }) - - // if( options.dartPosition == 'shoulder' ) { - // } points.shoulderDartInside = points.hps.shiftFractionTowards( points.shoulder, options.shoulderDartPosition @@ -79,7 +61,6 @@ export default function (part) { points.armholeDartOutside = points.armholeDartInside.clone() // paths.armholeTemp = armholePath.clone().setRender(true).attr('class', 'lining') - console.log({ armholeDartInside: points.armholeDartInside }) let armholePaths = armholePath.split(points.armholeDartInside) let armholePathInside = armholePaths[0].clone().setRender(false) @@ -96,17 +77,12 @@ export default function (part) { options.upperDartLength ) - console.log({ armholeDartAngle: armholeDartAngle }) - console.log({ dist: points.armholeDartInside.dist(points.armholeDartTip) }) - console.log({ bCircle: bCircle * points.armholeDartInside.dist(points.armholeDartTip) }) points.armholeCircleInsideCp1 = points.armholeDartInside.shift( armholeDartAngle, bCircle * points.armholeDartInside.dist(points.armholeDartTip) ) points.armholeCircleOutsideCp1 = points.armholeCircleInsideCp1.clone() - console.log({ armholePathInside: armholePathInside }) - console.log({ armholePathOutside: armholePathOutside }) points.shoulderCp1 = armholePathInside.ops[1].cp1.clone() points.armholeInsidePitch = armholePathInside.ops[1].to.clone() points.armholeInsidePitchCp2 = armholePathInside.ops[1].cp2.clone() @@ -128,27 +104,6 @@ export default function (part) { points.armholeCp2 = armholePathOutside.ops[2].cp2.clone() } - console.log({ shoulder: points.shoulder }) - console.log({ shoulderCp1: points.shoulderCp1 }) - console.log({ armholeInsidePitchCp2: points.armholeInsidePitchCp2 }) - console.log({ armholeInsidePitch: points.armholeInsidePitch }) - console.log({ armholeInsidePitchCp1: points.armholeInsidePitchCp1 }) - console.log({ armholeDartInsideCp2: points.armholeDartInsideCp2 }) - console.log({ armholeDartInside: points.armholeDartInside }) - console.log({ armholeDartOutside: points.armholeDartOutside }) - console.log({ armholeDartOutsideCp1: points.armholeDartOutsideCp1 }) - console.log({ armholeOutsidePitchCp2: points.armholeOutsidePitchCp2 }) - console.log({ armholeOutsidePitch: points.armholeOutsidePitch }) - console.log({ armholeOutsidePitchCp1: points.armholeOutsidePitchCp1 }) - console.log({ armholeCp2: points.armholeCp2 }) - console.log({ armhole: points.armhole }) - - // paths.armholeInside = new Path() - // .move(points.shoulder) - // .curve(points.shoulderCp1, points.armholeInsidePitchCp2, points.armholeInsidePitch) - // .curve(points.armholeInsidePitchCp1, points.armholeDartInsideCp2, points.armholeDartInside) - // .setRender(true) - // .attr('class', 'lining') paths.armholeInside = new Path() .move(points.armholeDartInside) .curve(points.armholeDartInsideCp2, points.armholeInsidePitchCp1, points.armholeInsidePitch) @@ -182,7 +137,6 @@ export default function (part) { let spreadAngle = /*360 -*/ points.bustA.angle(points.bustDartBottom) - points.bustA.angle(points.bustDartTop) - console.log({ spreadAngle: spreadAngle }) points.shoulderDartOutside = points.shoulderDartInside.rotate(spreadAngle, points.bustA) points.shoulderDartShoulder = points.shoulderDartInside.shiftFractionTowards( @@ -197,7 +151,6 @@ export default function (part) { let dartRatio = new Path().move(points.waistDartHem).line(points.waistDartTip).length() / new Path().move(points.shoulderDartShoulder).line(points.shoulderDartTip).length() - console.log({ dartRatio: dartRatio }) points.shoulder = points.shoulder.rotate(spreadAngle, points.bustA) points.armhole = points.armhole.rotate(spreadAngle, points.bustA) @@ -211,12 +164,6 @@ export default function (part) { points.armholeOutsidePitchCp2 = points.armholeOutsidePitchCp2.rotate(spreadAngle, points.bustA) points.armholeOutsidePitch = points.armholeOutsidePitch.rotate(spreadAngle, points.bustA) points.armholeOutsidePitchCp1 = points.armholeOutsidePitchCp1.rotate(spreadAngle, points.bustA) - //points.armholeCp2, points.armhole ) - console.log({ shoulder: points.shoulder }) - console.log({ shoulderDartOutside: points.shoulderDartOutside }) - console.log({ shoulderbust: points.bust }) - console.log({ upperDartLength: options.upperDartLength }) - console.log({ waistDartLength: options.waistDartLength }) paths.armholeOutside = new Path() .move(points.armholeDartOutside) @@ -237,11 +184,6 @@ export default function (part) { ) // points.shoulderDartTipCpDownOutside = points.shoulderDartTipCpDownOutside.rotate( options.dartOutsideCP *10, points.shoulderDartOutside ) - console.log({ shoulderDartInside: points.shoulderDartInside }) - // points.shoulderDartTipCpDownInside = points.shoulderDartInside.shiftFractionTowards( - // points.bust, - // 1 +(1-options.upperDartLength) +((1 -options.waistDartLength) *dartRatio) - // ) points.shoulderDartTipCpDownInside = points.shoulderDartInside.shiftFractionTowards( points.shoulderDartTip, 1 + (1 - options.upperDartLength) + (1 - options.waistDartLength) * dartRatio @@ -251,11 +193,6 @@ export default function (part) { points.waistDartLeft, 1 - options.upperDartLength + (1 - options.waistDartLength) * dartRatio ) - console.log({ shoulderDartTipCpDownInside: points.shoulderDartTipCpDownInside }) - console.log({ shoulderDartTipCpDownOutside: points.shoulderDartTipCpDownOutside }) - console.log({ shoulderDartTip: points.shoulderDartTip }) - console.log({ waistDartLeftCp: points.waistDartLeftCp }) - console.log({ waistDartLeft: points.waistDartLeft }) points.bustAcp = points.waistDartRight.shiftOutwards(points.bustA, 10) @@ -271,7 +208,6 @@ export default function (part) { // .line(points.armholeDartInside) .setRender(false) .attr('class', 'lining') - console.log({ armholeInsideSeam: paths.armholeInsideSeam }) paths.sOutsideSeam = new Path() .move(points.waistDartRight) @@ -285,25 +221,19 @@ export default function (part) { .curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip) .line(points.shoulderDartInside) .setRender(false) - console.log({ shoulderInsideSeam: shoulderInsideSeam }) - console.log({ waistDartLeft: points.waistDartLeft }) - console.log({ bustA: points.bustA }) - console.log({ dist: points.waistDartLeft.dist(points.bustA) * 0.5 }) + points.waistUpDartLeft = paths.armholeInsideSeam.shiftAlong( points.waistDartLeft.dist(points.armholeDartTip) * 0.5 ) - console.log({ waistUpDartLeft: points.waistUpDartLeft }) points.waistCircleInsideCp1 = points.waistUpDartLeft.shiftTowards( points.waistDartLeft, -0.5 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) ) - console.log({ waistCircleInsideCp1: points.waistCircleInsideCp1 }) points.shoulderDartTipCpDownOutside = points.shoulderDartTipCpDownOutside .rotate(-2.5, points.shoulderDartOutside) .shiftFractionTowards(points.shoulderDartOutside, 0.2) let lInside = shoulderInsideSeam.length() - console.log({ lInside: lInside }) let iteration = 1 let diff = 0 // points.bustAcp = points.bustA.clone() @@ -346,14 +276,6 @@ export default function (part) { points.shoulderDartOutside ) - console.log({ - step: iteration, - diff: diff, - insideSeam: lInside, - outsideSeam: outsideSeam.length(), - sOutside: paths.sOutsideSeam.length(), - }) - diff = shoulderInsideSeam.length() - outsideSeam.length() iteration++ } while ((diff > 1 || diff < -1) && iteration < 200) @@ -361,10 +283,7 @@ export default function (part) { raise.error('Something is not quite right here!') } points.waistDartRightCp = points.bustAcp.clone() - - console.log({ shoulderDartTipCpDownInside: points.shoulderDartTipCpDownInside }) points.armholeDartTipInside = points.armholeDartTip.clone() - points.waistCircleOutsideCp1 = points.waistUpDartRight.shiftTowards( points.waistDartRight, -1 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) @@ -374,7 +293,6 @@ export default function (part) { iteration = 0 do { let dist = points.armholeDartTipInside.dist(points.armholeDartTipCpDownInside) - console.log({xDartTip: points.armholeDartTipInside.x,yDartTip: points.armholeDartTipInside.y,xCircle:points.waistCircleOutsideCp1.x,yCircle:points.waistCircleOutsideCp1.y, first: points.armholeDartTipInside.x > points.waistCircleOutsideCp1}) if( points.armholeDartTipInside.x > points.waistCircleOutsideCp1 ) { points.armholeDartTipInside.x = points.armholeDartTipInside.x -.5 points.armholeDartTipInside.y = points.armholeDartTipInside.y +.5 @@ -383,10 +301,6 @@ export default function (part) { } points.armholeDartTipCpDownInside = points.waistCircleInsideCp1.shiftOutwards(points.armholeDartTipInside, dist) - // points.waistCircleOutsideCp1 = points.waistUpDartRight.shiftTowards( - // points.waistDartRight, - // -1 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) - // ) paths.armholeTempCircleOutside = new Path() .move(points.armholeDartOutside) .curve(points.armholeCircleOutsideCp1, points.waistCircleOutsideCp1, points.waistUpDartRight) @@ -402,10 +316,9 @@ export default function (part) { diff = paths.armholeTempCircleOutside.length() - paths.armholeTempCircleInside.length() iteration ++ - console.log({ i: iteration, diff: diff, armholeTempCircleOutside: paths.armholeTempCircleOutside.length(),armholeTempCircleInside: paths.armholeTempCircleInside.length() }) } while( (diff < -1 || diff > 1) && iteration < 200 ) if (iteration >= 200) { - // raise.error('Something is not quite right here!') + raise.error('Something is not quite right here!') } return part From 7713ed445db57cbb27a385f32a159e9f4929a4b2 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Tue, 21 Jun 2022 02:09:57 +0000 Subject: [PATCH 60/71] More paperless and complete back --- designs/noble/src/backInside.js | 92 ++++++++++++++++++++++--------- designs/noble/src/backOutside.js | 3 + designs/noble/src/backPoints.js | 7 --- designs/noble/src/frontOutside.js | 3 +- designs/noble/src/frontPoints.js | 42 ++++++++------ designs/noble/src/index.js | 22 -------- 6 files changed, 97 insertions(+), 72 deletions(-) diff --git a/designs/noble/src/backInside.js b/designs/noble/src/backInside.js index 93eb0a36b08..b449317dfc1 100644 --- a/designs/noble/src/backInside.js +++ b/designs/noble/src/backInside.js @@ -16,28 +16,33 @@ export default function (part) { macro, } = part.shorthand() - // Hide Bella paths - for (let key of Object.keys(paths)) paths[key].render = false - for (let i in snippets) delete snippets[i] - - paths.insideSeam = new Path() - .move(points.cbNeck) - .curve_(points.cbNeckCp2, points.waistCenter) - .line(points.dartBottomLeft) - .curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip) - .curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart) - .line(points.hps) - ._curve(points.cbNeckCp1, points.cbNeck) - .close() - .attr('class', 'fabric') - + + if( options.dartPosition != 'shoulder' ) { + paths.insideSeam = paths.seam.clone().setRender(true) + } else { + // Hide Bella paths + for (let key of Object.keys(paths)) paths[key].render = false + for (let i in snippets) delete snippets[i] + + paths.insideSeam = new Path() + .move(points.cbNeck) + .curve_(points.cbNeckCp2, points.waistCenter) + .line(points.dartBottomLeft) + .curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip) + .curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart) + .line(points.hps) + ._curve(points.cbNeckCp1, points.cbNeck) + .close() + .attr('class', 'fabric') + } + if (complete) { snippets.dartTip = new Snippet('notch', points.dartTip) macro('title', { at: points.titleAnchor, nr: 3, - title: 'Inside Back', + title: ( options.dartPosition != 'shoulder' ? 'Back' : 'Inside Back' ) }) macro("grainline", { from: points.grainlineFrom, @@ -47,9 +52,14 @@ export default function (part) { if (sa) paths.sa = paths.insideSeam.offset(sa).attr('class', 'fabric sa') if( paperless ) { + if( options.dartPosition == 'shoulder' ) { + points.shoulderPoint = points.shoulderDart.clone() + } else { + points.shoulderPoint = points.shoulder.clone() + } macro('hd', { from: points.waistCenter, - to: points.shoulderDart, + to: points.shoulderPoint, y: points.waistCenter.y +sa + 15, }) macro('hd', { @@ -74,29 +84,61 @@ export default function (part) { }) macro('hd', { from: points.hps, - to: points.shoulderDart, + to: points.shoulderPoint, y: points.hps.y -sa - 15, }) + if( options.dartPosition != 'shoulder' ) { + macro('hd', { + from: points.dartTip, + to: points.waistSide, + y: points.waistCenter.y +sa + 25, + }) + macro('hd', { + from: points.dartBottomRight, + to: points.waistSide, + y: points.waistCenter.y +sa + 35, + }) + macro('hd', { + from: points.dartBottomRight, + to: points.armhole, + y: points.waistCenter.y +sa + 45, + }) + } + + let extraOffset = 0 + if( options.dartPosition != 'shoulder' ) { + macro('vd', { + from: points.shoulderPoint, + to: points.waistSide, + x: points.shoulderPoint.x +sa + 25, + }) + macro('vd', { + from: points.armhole, + to: points.waistSide, + x: points.shoulderPoint.x +sa + 15, + }) + extraOffset = 10 + } macro('vd', { - from: points.shoulderDart, + from: points.shoulderPoint, to: points.dartTip, - x: points.shoulderDart.x +sa + 15, + x: points.shoulderPoint.x +sa + 15, }) macro('vd', { - from: points.shoulderDart, + from: points.shoulderPoint, to: points.dartBottomLeft, - x: points.shoulderDart.x +sa + 25, + x: points.shoulderPoint.x +sa + 25 +extraOffset, }) macro('vd', { - from: points.shoulderDart, + from: points.shoulderPoint, to: points.waistCenter, - x: points.shoulderDart.x +sa + 35, + x: points.shoulderPoint.x +sa + 35 +extraOffset, }) macro('vd', { from: points.hps, to: points.waistCenter, - x: points.shoulderDart.x +sa + 45, + x: points.shoulderPoint.x +sa + 45 +extraOffset, }) macro('vd', { from: points.waistCenter, diff --git a/designs/noble/src/backOutside.js b/designs/noble/src/backOutside.js index 26ac4b4ef67..1f80f5d2741 100644 --- a/designs/noble/src/backOutside.js +++ b/designs/noble/src/backOutside.js @@ -16,6 +16,9 @@ export default function (part) { macro, } = part.shorthand() + if( options.dartPosition != 'shoulder' ) { + return part + } paths.dart = new Path() .move(points.shoulderDart) diff --git a/designs/noble/src/backPoints.js b/designs/noble/src/backPoints.js index b784cb72781..03c68c4d184 100644 --- a/designs/noble/src/backPoints.js +++ b/designs/noble/src/backPoints.js @@ -40,11 +40,8 @@ export default function (part) { // let dartCpAdjustment = Math.abs( options.shoulderDartPosition -.5) +.05 let dartCpAdjustment = aDiff /50 - console.log({dartCpAdjustment: dartCpAdjustment }); - // points.shoulderDartCpUp = points.shoulderDart.shiftFractionTowards( points.dartTip, options.upperDartLength) points.shoulderDartCpUp = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 - dartCpAdjustment) - // points.shoulderDartCpDown = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 +(1-options.upperDartLength) ) points.shoulderDartCpDown = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 +dartCpAdjustment ) let iLength = (new Path() @@ -56,8 +53,6 @@ export default function (part) { let diff = 0 let angle = 0 do { - console.log({angle: points.waistSide.angle( points.dartBottomRight ) }) - angle = diff*( oLength > iLength ? -.1 : .1 ) points.dartBottomRight = points.dartBottomRight.rotate( angle, points.waistSide ) @@ -67,8 +62,6 @@ export default function (part) { .curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip) .curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight)).length(); - console.log({diff:diff, oLength: oLength, iLength: iLength}) - diff = oLength -iLength iteration ++ diff --git a/designs/noble/src/frontOutside.js b/designs/noble/src/frontOutside.js index c59f8c60814..c94d12fb6dc 100644 --- a/designs/noble/src/frontOutside.js +++ b/designs/noble/src/frontOutside.js @@ -56,8 +56,7 @@ export default function (part) { .move(points.waistDartRight) .line(points.sideHem) .line(points.armhole) - .curve(points.armholeCp2, points.armholeOutsidePitchCp1, points.armholeOutsidePitch) - .curve(points.armholeOutsidePitchCp2, points.armholeDartOutsideCp1, points.armholeDartOutside) + .join(paths.armholeOutside.reverse()) .join(paths.princessSeam) .close() .attr('class', 'fabric') diff --git a/designs/noble/src/frontPoints.js b/designs/noble/src/frontPoints.js index 07c81297cb2..3f0895bc006 100644 --- a/designs/noble/src/frontPoints.js +++ b/designs/noble/src/frontPoints.js @@ -21,6 +21,7 @@ export default function (part) { // Hide Bella paths for (let key of Object.keys(paths)) paths[key].render = false for (let i in snippets) delete snippets[i] + //removing macros not required from Bella delete points.titleAnchor delete points.__titleNr @@ -104,12 +105,18 @@ export default function (part) { points.armholeCp2 = armholePathOutside.ops[2].cp2.clone() } - paths.armholeInside = new Path() - .move(points.armholeDartInside) - .curve(points.armholeDartInsideCp2, points.armholeInsidePitchCp1, points.armholeInsidePitch) - .curve(points.armholeInsidePitchCp2, points.shoulderCp1, points.shoulder) - .setRender(false) - .attr('class', 'lining') + if( points.armholeDartInside.sitsRoughlyOn( points.armholeInsidePitch ) ) { + paths.armholeInside = new Path() + .move(points.armholeDartInside) + .curve(points.armholeInsidePitchCp2, points.shoulderCp1, points.shoulder) + .setRender(false) + } else { + paths.armholeInside = new Path() + .move(points.armholeDartInside) + .curve(points.armholeDartInsideCp2, points.armholeInsidePitchCp1, points.armholeInsidePitch) + .curve(points.armholeInsidePitchCp2, points.shoulderCp1, points.shoulder) + .setRender(false) + } let rotateAngle = points.shoulderDartInside.angle(points.bustA) - points.bustDartTop.angle(points.bustA) @@ -165,18 +172,24 @@ export default function (part) { points.armholeOutsidePitch = points.armholeOutsidePitch.rotate(spreadAngle, points.bustA) points.armholeOutsidePitchCp1 = points.armholeOutsidePitchCp1.rotate(spreadAngle, points.bustA) - paths.armholeOutside = new Path() - .move(points.armholeDartOutside) - .curve(points.armholeDartOutsideCp1, points.armholeOutsidePitchCp2, points.armholeOutsidePitch) - .curve(points.armholeOutsidePitchCp1, points.armholeCp2, points.armhole) - .setRender(false) - .attr('class', 'lining') + if( points.armhole.sitsRoughlyOn( points.armholeOutsidePitch ) ) { + paths.armholeOutside = new Path() + .move(points.armholeDartOutside) + .curve(points.armholeDartOutsideCp1, points.armholeOutsidePitchCp2, points.armhole) + .setRender(true) + } else { + paths.armholeOutside = new Path() + .move(points.armholeDartOutside) + .curve(points.armholeDartOutsideCp1, points.armholeOutsidePitchCp2, points.armholeOutsidePitch) + .curve(points.armholeOutsidePitchCp1, points.armholeCp2, points.armhole) + .setRender(false) + } + paths.armholeTempDart = new Path() .move(points.armholeDartOutside) ._curve(points.armholeDartCpBottom, points.armholeDartTip) .curve_(points.armholeDartCpTop, points.armholeDartInside) .setRender(false) - .attr('class', 'lining') points.shoulderDartTipCpDownOutside = points.shoulderDartOutside.shiftFractionTowards( points.bust, @@ -205,9 +218,7 @@ export default function (part) { paths.armholeInsideSeam = new Path() .move(points.waistDartLeft) .curve(points.waistDartLeftCp, points.armholeDartTipCpDownInside, points.armholeDartTip) - // .line(points.armholeDartInside) .setRender(false) - .attr('class', 'lining') paths.sOutsideSeam = new Path() .move(points.waistDartRight) @@ -236,7 +247,6 @@ export default function (part) { let lInside = shoulderInsideSeam.length() let iteration = 1 let diff = 0 - // points.bustAcp = points.bustA.clone() do { points.waistDartRight = points.waistDartRight.rotate(diff * 0.1, points.sideHemInitial) diff --git a/designs/noble/src/index.js b/designs/noble/src/index.js index a6d0d039782..f6a2400d722 100644 --- a/designs/noble/src/index.js +++ b/designs/noble/src/index.js @@ -1,13 +1,8 @@ -// import freesewing from '@freesewing/core' -// import Bella from '@freesewing/bella' -// import plugins from '@freesewing/plugin-bundle' -// import config from '../config' import freesewing from '@freesewing/core' import Bella from '@freesewing/bella' import bundle from '@freesewing/plugin-bundle' import config from '../config' // Parts -// Parts import draftBackPoints from './backPoints' import draftBackInside from './backInside' import draftBackOutside from './backOutside' @@ -18,15 +13,6 @@ import draftFrontOutside from './frontOutside' // Create design const Noble = new freesewing.Design(config, bundle) -// console.log( 'bella back') -// measurements.highBust = (measurements.highBust == undefined || measurements.highBust == 0 ) ? measurements.chest *1.035 : measurements.highBust -// measurements.bustSpan = (measurements.bustSpan == undefined || measurements.bustSpan == 0 ) ? measurements.waistBack *.47 : measurements.bustSpan -// measurements.underbust = (measurements.underbust == undefined || measurements.underbust == 0 ) ? (measurements.chest +measurements.waist) *.5 : measurements.underbust -// measurements.hpsToBust = (measurements.hpsToBust == undefined || measurements.hpsToBust == 0 ) ? measurements.hpsToWaistFront *.59 : measurements.hpsToBust - -// // Get to work -// console.log({ hpsToBust : measurements.hpsToBust} ) - // Attach draft methods to prototype Noble.prototype.draftBellaBack = function (part) { return new Bella(this.settings).draftBack(part) @@ -35,14 +21,6 @@ Noble.prototype.draftBellaFrontSideDart = function (part) { return new Bella(this.settings).draftFrontSideDart(part) } -// Pattern.prototype.draftFrontSideDart = (part) => draftFrontSideDart(part) - -// Pattern.prototype.draftBackPoints = (part) => draftBackPoints(part) -// Pattern.prototype.draftBackInside = (part) => draftBackInside(part) -// Pattern.prototype.draftBackOutside = (part) => draftBackOutside(part) -// Pattern.prototype.draftFrontPoints = (part) => draftFrontPoints(part) -// Pattern.prototype.draftFrontInside = (part) => draftFrontInside(part) -// Pattern.prototype.draftFrontOutside = (part) => draftFrontOutside(part) Noble.prototype.draftBackPoints = draftBackPoints Noble.prototype.draftBackInside = draftBackInside Noble.prototype.draftBackOutside = draftBackOutside From 3eb893e4b28537dfbbc83f4a07351bb1e9dd2158 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Tue, 21 Jun 2022 02:37:59 +0000 Subject: [PATCH 61/71] Doc1 --- .../org/docs/patterns/noble/cutting/en.md | 36 +++++++++ markdown/org/docs/patterns/noble/en.md | 5 ++ markdown/org/docs/patterns/noble/fabric/en.md | 18 +++++ .../docs/patterns/noble/instructions/en.md | 80 +++++++++++++++++++ .../docs/patterns/noble/measurements/en.md | 5 ++ markdown/org/docs/patterns/noble/needs/en.md | 21 +++++ .../patterns/noble/options/armholedepth/en.md | 9 +++ .../noble/options/backarmholecurvature/en.md | 9 +++ .../noble/options/backarmholepitchdepth/en.md | 9 +++ .../noble/options/backarmholeslant/en.md | 9 +++ .../noble/options/backdartheight/en.md | 9 +++ .../patterns/noble/options/backhemslope/en.md | 9 +++ .../noble/options/backneckcutout/en.md | 10 +++ .../noble/options/bustdartcurve/en.md | 14 ++++ .../noble/options/bustdartlength/en.md | 14 ++++ .../patterns/noble/options/bustspanease/en.md | 11 +++ .../patterns/noble/options/chestease/en.md | 9 +++ .../org/docs/patterns/noble/options/en.md | 5 ++ .../noble/options/frontarmholecurvature/en.md | 9 +++ .../options/frontarmholepitchdepth/en.md | 9 +++ .../noble/options/frontshoulderwidth/en.md | 9 +++ .../options/fullchesteasereduction/en.md | 10 +++ .../noble/options/highbustwidth/en.md | 9 +++ .../options/shouldertoshoulderease/en.md | 9 +++ .../noble/options/waistdartlength/en.md | 13 +++ .../patterns/noble/options/waistease/en.md | 9 +++ 26 files changed, 359 insertions(+) create mode 100644 markdown/org/docs/patterns/noble/cutting/en.md create mode 100644 markdown/org/docs/patterns/noble/en.md create mode 100644 markdown/org/docs/patterns/noble/fabric/en.md create mode 100644 markdown/org/docs/patterns/noble/instructions/en.md create mode 100644 markdown/org/docs/patterns/noble/measurements/en.md create mode 100644 markdown/org/docs/patterns/noble/needs/en.md create mode 100644 markdown/org/docs/patterns/noble/options/armholedepth/en.md create mode 100644 markdown/org/docs/patterns/noble/options/backarmholecurvature/en.md create mode 100644 markdown/org/docs/patterns/noble/options/backarmholepitchdepth/en.md create mode 100644 markdown/org/docs/patterns/noble/options/backarmholeslant/en.md create mode 100644 markdown/org/docs/patterns/noble/options/backdartheight/en.md create mode 100644 markdown/org/docs/patterns/noble/options/backhemslope/en.md create mode 100644 markdown/org/docs/patterns/noble/options/backneckcutout/en.md create mode 100644 markdown/org/docs/patterns/noble/options/bustdartcurve/en.md create mode 100644 markdown/org/docs/patterns/noble/options/bustdartlength/en.md create mode 100644 markdown/org/docs/patterns/noble/options/bustspanease/en.md create mode 100644 markdown/org/docs/patterns/noble/options/chestease/en.md create mode 100644 markdown/org/docs/patterns/noble/options/en.md create mode 100644 markdown/org/docs/patterns/noble/options/frontarmholecurvature/en.md create mode 100644 markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/en.md create mode 100644 markdown/org/docs/patterns/noble/options/frontshoulderwidth/en.md create mode 100644 markdown/org/docs/patterns/noble/options/fullchesteasereduction/en.md create mode 100644 markdown/org/docs/patterns/noble/options/highbustwidth/en.md create mode 100644 markdown/org/docs/patterns/noble/options/shouldertoshoulderease/en.md create mode 100644 markdown/org/docs/patterns/noble/options/waistdartlength/en.md create mode 100644 markdown/org/docs/patterns/noble/options/waistease/en.md diff --git a/markdown/org/docs/patterns/noble/cutting/en.md b/markdown/org/docs/patterns/noble/cutting/en.md new file mode 100644 index 00000000000..fa1a872a523 --- /dev/null +++ b/markdown/org/docs/patterns/noble/cutting/en.md @@ -0,0 +1,36 @@ +--- +title: "Noble body block: Cutting Instructions" +--- + +**Main fabric** + +- Cut **1 Front Inside** part on the fold. +- Cut **2 Front Outside** part. + +### Shoulder dart + +- Cut **2 Back Inside** part. +- Cut **2 Back Outside** part. + +### Armhole dart + +- Cut **2 Back** part. + +These cutting instructions are just for the default Noble block. Adjust your cutting accordingly if you have/are making changes to the block. + + + +If you do not have someone to help pin you into Noble then you may find it easier to Cut 2 Front Inside parts with seam allowance and sew the backs up when constructing so you can pin in the front. + + + + + +###### Noble is a block, not a pattern + +A block is a basic shape on which other patterns are based. +They are sometimes also called slopers, although purists will argue that a block and a sloper are different things. + +Blocks are typically not made as-is but rather serve as a basis for other patterns. + + diff --git a/markdown/org/docs/patterns/noble/en.md b/markdown/org/docs/patterns/noble/en.md new file mode 100644 index 00000000000..c531609f8ec --- /dev/null +++ b/markdown/org/docs/patterns/noble/en.md @@ -0,0 +1,5 @@ +--- +title: "Noble body block" +--- + + diff --git a/markdown/org/docs/patterns/noble/fabric/en.md b/markdown/org/docs/patterns/noble/fabric/en.md new file mode 100644 index 00000000000..731e8fab313 --- /dev/null +++ b/markdown/org/docs/patterns/noble/fabric/en.md @@ -0,0 +1,18 @@ +--- +title: "Noble body block: Fabric Options" +--- + +If you are making a default Noble to see how it fits we recommend a fabric such as **Calico (Muslin)** or a cheaper fabric that matches the drape and stretch of the fabric you intend to make a finalised version of Noble with. + +You can use scraps of fabrics from your stash so don't worry about buying fabric specifically for Noble. + + + +###### Noble is a block, not a pattern + +A block is a basic shape on which other patterns are based. +They are sometimes also called slopers, although purists will argue that a block and a sloper are different things. + +Blocks are typically not made as-is but rather serve as a basis for other patterns. + + diff --git a/markdown/org/docs/patterns/noble/instructions/en.md b/markdown/org/docs/patterns/noble/instructions/en.md new file mode 100644 index 00000000000..6d64c8808d7 --- /dev/null +++ b/markdown/org/docs/patterns/noble/instructions/en.md @@ -0,0 +1,80 @@ +--- +title: "Noble body block: Sewing Instructions" +--- + + + +###### Noble is a block, not a pattern + +A block is a basic shape on which other patterns are based. +They are sometimes also called slopers, although purists will argue that a block and a sloper are different things. + +Blocks are typically not made as-is but rather serve as a basis for other patterns so the instructions below will not go in depth about closures or finishes and are for the default Noble block. + +Noble is based on the Bella body block + + + +### Step 1: Mock-up Construction + +- Sew the front inside to the front outside, good sides together. + +### Shoulder seam + +- Sew the back inside to the back outside, good sides together. + +### Armhole seam + +- Close the back darts. + +### Both + +- Sew the front to the backs at the shoulders, good sides together. +- Sew the front to the backs at the side seams, good sides together. + + + +If you are making adjustments you may wish to sew the seams wrong sides together to make them easier to adjust. + + + +### Step 2: Try it on + +- Try it on and check the fit by pinning the back closed whilst wearing it. +- Make any alterations and try it on again. +- Repeat until you are happy. + + + +If you do not have someone to help with pinning, you may find it easier to cut the front part in two with seam allowance rather than on a fold and sew the back seam up so that you can pin in the front when trying on. + +Keep an eye out for anything you keep doing whilst wearing the mock-up, are you pulling it down? Constantly adjusting the shoulder? etc. Things like these are signs of where the pattern may need adjusting. + +Sometimes you may need to wear the mock-up for an extended amount of time to get a better sense of the fit so don't be afraid to walk around in it for a couple of hours. + + + + + +Remember to treat Noble as a basis rather than a final product, so adjust what you need to get the desired look. +For instance: + +- Change the neck line +- Add/change the closure allowances +- Alter the dart placements +- Add a collar + +It is all up to you! Experiment and go forth! + + + +### Step 3: Make a paper pattern + +- Once happy with all your changes unpick your mockup and make a paper pattern based off of it. +- Now you have a pattern you can use to produce a garment. + + + +It is best practice to make a paper pattern from the mock-up if you have made any alterations, as this will allow you to clean up any lines but also means you have a pattern that you can keep producing garments from. + + diff --git a/markdown/org/docs/patterns/noble/measurements/en.md b/markdown/org/docs/patterns/noble/measurements/en.md new file mode 100644 index 00000000000..008efce20e2 --- /dev/null +++ b/markdown/org/docs/patterns/noble/measurements/en.md @@ -0,0 +1,5 @@ +--- +title: "Noble body block: Required Measurements" +--- + + diff --git a/markdown/org/docs/patterns/noble/needs/en.md b/markdown/org/docs/patterns/noble/needs/en.md new file mode 100644 index 00000000000..8c538112332 --- /dev/null +++ b/markdown/org/docs/patterns/noble/needs/en.md @@ -0,0 +1,21 @@ +--- +title: "Noble body block: What You Need" +--- + +To make Noble, you will need the following: + +- Basic sewing supplies +- About 0.5 metres (0.6 yards) of a suitable fabric ([see Noble Fabric options](/docs/patterns/noble/fabric/)) + +This list is for a default Noble Block. If you have/are making changes to the block you may need to get additional items such as closures, binding etc. + + + +###### Noble is a block, not a pattern + +A block is a basic shape on which other patterns are based. +They are sometimes also called slopers, although purists will argue that a block and a sloper are different things. + +Blocks are typically not made as-is but rather serve as a basis for other patterns. + + diff --git a/markdown/org/docs/patterns/noble/options/armholedepth/en.md b/markdown/org/docs/patterns/noble/options/armholedepth/en.md new file mode 100644 index 00000000000..428f856226d --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/armholedepth/en.md @@ -0,0 +1,9 @@ +--- +title: "Armhole depth" +--- + +--- + +The **armhole depth** option controls the depth of the armhole. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/backarmholecurvature/en.md b/markdown/org/docs/patterns/noble/options/backarmholecurvature/en.md new file mode 100644 index 00000000000..163088b2943 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholecurvature/en.md @@ -0,0 +1,9 @@ +--- +title: "Back armhole curvature" +--- + +--- + +The **back armhole curvature** option controls how much the armhole is scooped at out the bottom in the back. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/en.md b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/en.md new file mode 100644 index 00000000000..24108f65bda --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/en.md @@ -0,0 +1,9 @@ +--- +title: "Back armhole pitch depth" +--- + +--- + +The **back armhole pitch depth** option controls the vertical position of the armhole pitch point at the back. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/backarmholeslant/en.md b/markdown/org/docs/patterns/noble/options/backarmholeslant/en.md new file mode 100644 index 00000000000..59479228432 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholeslant/en.md @@ -0,0 +1,9 @@ +--- +title: "Back armhole slant" +--- + +--- + +The **back armhole slant** slightly rotates the armhole around the back pitch point. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/backdartheight/en.md b/markdown/org/docs/patterns/noble/options/backdartheight/en.md new file mode 100644 index 00000000000..15a443f28d8 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backdartheight/en.md @@ -0,0 +1,9 @@ +--- +title: "Back dart height" +--- + +--- + +The **back dart height** option controls the height (length if you will) of the back dart. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/backhemslope/en.md b/markdown/org/docs/patterns/noble/options/backhemslope/en.md new file mode 100644 index 00000000000..eff831b263a --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backhemslope/en.md @@ -0,0 +1,9 @@ +--- +title: "Back hem slope" +--- + +--- + +The **back hem slope** option controls the slope of the hem at the back. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/backneckcutout/en.md b/markdown/org/docs/patterns/noble/options/backneckcutout/en.md new file mode 100644 index 00000000000..749d3e90c6e --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backneckcutout/en.md @@ -0,0 +1,10 @@ +--- +title: "Back neck cutout" +--- + +--- + +The **back neck cutout** option controls how far the neck opening is scooped out at the back. + +## Effect of this option on the pattern + diff --git a/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md b/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md new file mode 100644 index 00000000000..39e5f208fe8 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md @@ -0,0 +1,14 @@ +--- +title: "Bust dart curve" +--- + +--- + +![The effect of the bust dart curve option on the pattern](sample.png) + +The **bust dart curve** option controls the curvature of the bust dart. +From straight to slightly curved. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bella_bustdartcurve_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustdartlength/en.md b/markdown/org/docs/patterns/noble/options/bustdartlength/en.md new file mode 100644 index 00000000000..1bfc6396b62 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/bustdartlength/en.md @@ -0,0 +1,14 @@ +--- +title: "Bust dart length" +--- + +--- + +![The effect of the bust dart length option on the pattern](sample.png) + +The **bust dart length** option controls the length of the bust dart. +The maximum length brings the dart all the way to the bust apex. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bella_bustdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustspanease/en.md b/markdown/org/docs/patterns/noble/options/bustspanease/en.md new file mode 100644 index 00000000000..4e82fecb5e4 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/bustspanease/en.md @@ -0,0 +1,11 @@ +--- +title: "Bust span ease" +--- + +--- + +The **bust span ease** option controls how much ease is applied to the bust span. + +This will not add ease to the garment, but merely influence the bust point + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/chestease/en.md b/markdown/org/docs/patterns/noble/options/chestease/en.md new file mode 100644 index 00000000000..dc88c6634cf --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/chestease/en.md @@ -0,0 +1,9 @@ +--- +title: "Chest ease" +--- + +--- + +The **chest ease** option controls the amount of ease at the fullest part of your chest. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/en.md b/markdown/org/docs/patterns/noble/options/en.md new file mode 100644 index 00000000000..ecdc9bbb1e4 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/en.md @@ -0,0 +1,5 @@ +--- +title: "Bella body block: Design Options" +--- + + diff --git a/markdown/org/docs/patterns/noble/options/frontarmholecurvature/en.md b/markdown/org/docs/patterns/noble/options/frontarmholecurvature/en.md new file mode 100644 index 00000000000..d14ad8128e6 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontarmholecurvature/en.md @@ -0,0 +1,9 @@ +--- +title: "Front armhole curvature" +--- + +--- + +Controls how deep the armhole is scooped out at the front bottom + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/en.md b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/en.md new file mode 100644 index 00000000000..c513394b6e9 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/en.md @@ -0,0 +1,9 @@ +--- +title: "Front armhole pitch depth" +--- + +--- + +The **front armhole pitch depth** option controls the vertical position of the armhole pitch point at the front. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/en.md b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/en.md new file mode 100644 index 00000000000..2eabe58a351 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/en.md @@ -0,0 +1,9 @@ +--- +title: "Front shoulder width" +--- + +--- + +The **front shoulder width** option controls the width of the shoulders at the front, relative to the back. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/en.md b/markdown/org/docs/patterns/noble/options/fullchesteasereduction/en.md new file mode 100644 index 00000000000..d912c4f27a7 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/fullchesteasereduction/en.md @@ -0,0 +1,10 @@ +--- +title: "Full chest ease reduction" +--- + +--- + +Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area + +## Effect of this option on the pattern + diff --git a/markdown/org/docs/patterns/noble/options/highbustwidth/en.md b/markdown/org/docs/patterns/noble/options/highbustwidth/en.md new file mode 100644 index 00000000000..f18b9cdb68f --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/highbustwidth/en.md @@ -0,0 +1,9 @@ +--- +title: "High bust width" +--- + +--- + +The **high bust width** option allows you to tweak the high bust width at the front. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/en.md b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/en.md new file mode 100644 index 00000000000..ea161d3eeec --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/en.md @@ -0,0 +1,9 @@ +--- +title: "Shoulder to Shoulder Ease" +--- + +--- + +The **Shoulder to Shoulder Ease** option allows you to add ease between the shoulders. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/en.md b/markdown/org/docs/patterns/noble/options/waistdartlength/en.md new file mode 100644 index 00000000000..1108727ff08 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/en.md @@ -0,0 +1,13 @@ +--- +title: "Waist dart length" +--- + +--- + +![The effect of the waist dart length option on the pattern](sample.png) + +The **waist dart length** option controls the length of the waist dart towards the bust. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bella_waistdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistease/en.md b/markdown/org/docs/patterns/noble/options/waistease/en.md new file mode 100644 index 00000000000..f4143bcc2cb --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/waistease/en.md @@ -0,0 +1,9 @@ +--- +title: "Waist ease" +--- + +--- + +The **waist ease** option controls the amount of ease at your waist. + +## Effect of this option on the pattern From b51844615d95fe632f1df64be7aec6c86f34d7ba Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Tue, 21 Jun 2022 04:44:13 +0000 Subject: [PATCH 62/71] More docs and fix --- designs/noble/src/frontPoints.js | 4 ++-- .../patterns/noble/options/armholedartposition/en.md | 9 +++++++++ .../org/docs/patterns/noble/options/bustdartcurve/en.md | 4 ---- .../org/docs/patterns/noble/options/bustdartlength/en.md | 4 ---- .../patterns/noble/options/shoulderdartposition/en.md | 9 +++++++++ .../docs/patterns/noble/options/upperdartlength/en.md | 9 +++++++++ .../docs/patterns/noble/options/waistdartlength/en.md | 4 ---- 7 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 markdown/org/docs/patterns/noble/options/armholedartposition/en.md create mode 100644 markdown/org/docs/patterns/noble/options/shoulderdartposition/en.md create mode 100644 markdown/org/docs/patterns/noble/options/upperdartlength/en.md diff --git a/designs/noble/src/frontPoints.js b/designs/noble/src/frontPoints.js index 3f0895bc006..84d12245946 100644 --- a/designs/noble/src/frontPoints.js +++ b/designs/noble/src/frontPoints.js @@ -45,7 +45,7 @@ export default function (part) { points.shoulderDartInside = points.hps.shiftFractionTowards( points.shoulder, - options.shoulderDartPosition + (options.dartPosition == 'shoulder' ? options.shoulderDartPosition : .5) ) points.orgShoulder = points.shoulder.clone() points.orgArmhole = points.armhole.clone() @@ -176,7 +176,7 @@ export default function (part) { paths.armholeOutside = new Path() .move(points.armholeDartOutside) .curve(points.armholeDartOutsideCp1, points.armholeOutsidePitchCp2, points.armhole) - .setRender(true) + .setRender(false) } else { paths.armholeOutside = new Path() .move(points.armholeDartOutside) diff --git a/markdown/org/docs/patterns/noble/options/armholedartposition/en.md b/markdown/org/docs/patterns/noble/options/armholedartposition/en.md new file mode 100644 index 00000000000..1a0c11580f4 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/armholedartposition/en.md @@ -0,0 +1,9 @@ +--- +title: "Armhole Dart Position" +--- + +--- + +The **Armhole Dart Position** option allows you to move the position of the dart/princess seam. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md b/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md index 39e5f208fe8..6504bd99308 100644 --- a/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md +++ b/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md @@ -4,11 +4,7 @@ title: "Bust dart curve" --- -![The effect of the bust dart curve option on the pattern](sample.png) - The **bust dart curve** option controls the curvature of the bust dart. From straight to slightly curved. ## Effect of this option on the pattern - -![This image shows the effect of this option by superimposing several variants that have a different value for this option](bella_bustdartcurve_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustdartlength/en.md b/markdown/org/docs/patterns/noble/options/bustdartlength/en.md index 1bfc6396b62..40871394120 100644 --- a/markdown/org/docs/patterns/noble/options/bustdartlength/en.md +++ b/markdown/org/docs/patterns/noble/options/bustdartlength/en.md @@ -4,11 +4,7 @@ title: "Bust dart length" --- -![The effect of the bust dart length option on the pattern](sample.png) - The **bust dart length** option controls the length of the bust dart. The maximum length brings the dart all the way to the bust apex. ## Effect of this option on the pattern - -![This image shows the effect of this option by superimposing several variants that have a different value for this option](bella_bustdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shoulderdartposition/en.md b/markdown/org/docs/patterns/noble/options/shoulderdartposition/en.md new file mode 100644 index 00000000000..3d9b9bbcf76 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/shoulderdartposition/en.md @@ -0,0 +1,9 @@ +--- +title: "Shoulder Dart Position" +--- + +--- + +The **Shoulder Dart Position** option allows you to move the position of the dart/princess seam. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/upperdartlength/en.md b/markdown/org/docs/patterns/noble/options/upperdartlength/en.md new file mode 100644 index 00000000000..7c503656308 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/upperdartlength/en.md @@ -0,0 +1,9 @@ +--- +title: "Upper Dart Length" +--- + +--- + +The **Upper Dart Length** controls the length of the upper dart, 100% is all teh way to the bust point. + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/en.md b/markdown/org/docs/patterns/noble/options/waistdartlength/en.md index 1108727ff08..0eca8850cce 100644 --- a/markdown/org/docs/patterns/noble/options/waistdartlength/en.md +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/en.md @@ -4,10 +4,6 @@ title: "Waist dart length" --- -![The effect of the waist dart length option on the pattern](sample.png) - The **waist dart length** option controls the length of the waist dart towards the bust. ## Effect of this option on the pattern - -![This image shows the effect of this option by superimposing several variants that have a different value for this option](bella_waistdartlength_sample.svg "Effect of this option on the pattern") From c9bce4bfdd8d7b8ae69e23c418eb8ef8b4e7d557 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Tue, 21 Jun 2022 04:49:36 +0000 Subject: [PATCH 63/71] Remove unused option --- designs/noble/config/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/designs/noble/config/index.js b/designs/noble/config/index.js index 5e5309af038..4bedaf3b7b9 100644 --- a/designs/noble/config/index.js +++ b/designs/noble/config/index.js @@ -102,10 +102,9 @@ export default { bustDartLength: { pct: 90, min: 75, max: 100 }, waistDartLength: { pct: 90, min: 75, max: 95 }, bustDartCurve: { pct: 100, min: 0, max: 100 }, - shoulderDartPosition: { pct: 50, min: 10, max: 90 }, + shoulderDartPosition: { pct: 50, min: 10, max: 90, hide: function(settings) {(settings.options.dartPosition != 'shoulder')} }, upperDartLength: { pct: 90, min: 80, max: 95 }, - armholeDartPosition: { pct: 50, min: 10, max: 90 }, - dartOutsideCP: { pct: 0, min: -200, max: 200 }, + armholeDartPosition: { pct: 50, min: 10, max: 90, hide: function(settings) {(settings.options.dartPosition != 'shoulder')} }, dartPosition: { dflt: 'shoulder', list: ['shoulder','armhole'] }, } From 7e4df1949b63dc1f60c347177b0bc34802dac1d0 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 21 Jun 2022 10:52:38 +0200 Subject: [PATCH 64/71] New translations common.yaml (French) --- packages/i18n/src/locales/fr/components/common.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/i18n/src/locales/fr/components/common.yaml b/packages/i18n/src/locales/fr/components/common.yaml index 9682d5861bd..d1b5752dca2 100644 --- a/packages/i18n/src/locales/fr/components/common.yaml +++ b/packages/i18n/src/locales/fr/components/common.yaml @@ -10,3 +10,5 @@ requiredMeasurements: Required measurements showcase: Showcase sloganCome: Come for the sewing patterns sloganStay: Stay for the community +support: Support + From 219a03f15c139b40e1512c1001363af24c7b48aa Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 21 Jun 2022 10:52:39 +0200 Subject: [PATCH 65/71] New translations patrons.yaml (French) --- packages/i18n/src/locales/fr/components/patrons.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/i18n/src/locales/fr/components/patrons.yaml b/packages/i18n/src/locales/fr/components/patrons.yaml index a83ae66ffab..57432af8a77 100644 --- a/packages/i18n/src/locales/fr/components/patrons.yaml +++ b/packages/i18n/src/locales/fr/components/patrons.yaml @@ -1,3 +1,6 @@ --- becomeAPatron: Become a patron supportFreesewing: Support FreeSewing +patronLead: FreeSewing is fuelled by a voluntary subscription model +patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work + From dd1bdedb06d28d7fe744908b9a9af0db41cb6e86 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 21 Jun 2022 10:52:40 +0200 Subject: [PATCH 66/71] New translations common.yaml (Spanish) --- packages/i18n/src/locales/es/components/common.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/i18n/src/locales/es/components/common.yaml b/packages/i18n/src/locales/es/components/common.yaml index 9682d5861bd..d1b5752dca2 100644 --- a/packages/i18n/src/locales/es/components/common.yaml +++ b/packages/i18n/src/locales/es/components/common.yaml @@ -10,3 +10,5 @@ requiredMeasurements: Required measurements showcase: Showcase sloganCome: Come for the sewing patterns sloganStay: Stay for the community +support: Support + From 9c8410c6c89f746d7e0d384981ac232ec4dc2aa7 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 21 Jun 2022 10:52:43 +0200 Subject: [PATCH 67/71] New translations patrons.yaml (Spanish) --- packages/i18n/src/locales/es/components/patrons.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/i18n/src/locales/es/components/patrons.yaml b/packages/i18n/src/locales/es/components/patrons.yaml index a83ae66ffab..57432af8a77 100644 --- a/packages/i18n/src/locales/es/components/patrons.yaml +++ b/packages/i18n/src/locales/es/components/patrons.yaml @@ -1,3 +1,6 @@ --- becomeAPatron: Become a patron supportFreesewing: Support FreeSewing +patronLead: FreeSewing is fuelled by a voluntary subscription model +patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work + From 6d2e829af5ac9668776788d7d9d2660420c868b9 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 21 Jun 2022 10:52:44 +0200 Subject: [PATCH 68/71] New translations common.yaml (German) --- packages/i18n/src/locales/de/components/common.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/i18n/src/locales/de/components/common.yaml b/packages/i18n/src/locales/de/components/common.yaml index 25219d0a365..139be3da822 100644 --- a/packages/i18n/src/locales/de/components/common.yaml +++ b/packages/i18n/src/locales/de/components/common.yaml @@ -10,3 +10,5 @@ requiredMeasurements: Required measurements showcase: Showcase sloganCome: Komm für die Schnittmuster sloganStay: Bleib für die Community +support: Support + From 9c39ebef0b57c5225ace9c107371d1868343d01f Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 21 Jun 2022 10:52:46 +0200 Subject: [PATCH 69/71] New translations patrons.yaml (German) --- packages/i18n/src/locales/de/components/patrons.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/i18n/src/locales/de/components/patrons.yaml b/packages/i18n/src/locales/de/components/patrons.yaml index a83ae66ffab..57432af8a77 100644 --- a/packages/i18n/src/locales/de/components/patrons.yaml +++ b/packages/i18n/src/locales/de/components/patrons.yaml @@ -1,3 +1,6 @@ --- becomeAPatron: Become a patron supportFreesewing: Support FreeSewing +patronLead: FreeSewing is fuelled by a voluntary subscription model +patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work + From 36ad868ace49acd533ad5ae87fd641eee0255446 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 21 Jun 2022 10:52:47 +0200 Subject: [PATCH 70/71] New translations common.yaml (Dutch) --- packages/i18n/src/locales/nl/components/common.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/i18n/src/locales/nl/components/common.yaml b/packages/i18n/src/locales/nl/components/common.yaml index 9682d5861bd..d1b5752dca2 100644 --- a/packages/i18n/src/locales/nl/components/common.yaml +++ b/packages/i18n/src/locales/nl/components/common.yaml @@ -10,3 +10,5 @@ requiredMeasurements: Required measurements showcase: Showcase sloganCome: Come for the sewing patterns sloganStay: Stay for the community +support: Support + From e200bd86e01c79178c4ffef57b55ffa5eae9ee59 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 21 Jun 2022 10:52:48 +0200 Subject: [PATCH 71/71] New translations patrons.yaml (Dutch) --- packages/i18n/src/locales/nl/components/patrons.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/i18n/src/locales/nl/components/patrons.yaml b/packages/i18n/src/locales/nl/components/patrons.yaml index a83ae66ffab..57432af8a77 100644 --- a/packages/i18n/src/locales/nl/components/patrons.yaml +++ b/packages/i18n/src/locales/nl/components/patrons.yaml @@ -1,3 +1,6 @@ --- becomeAPatron: Become a patron supportFreesewing: Support FreeSewing +patronLead: FreeSewing is fuelled by a voluntary subscription model +patronPitch: If you think what we do is worthwhile, and if you can spare a few coins each month without hardship, please support our work +