From 6d1cdd7e9d4c976b53ad6b1c23e16af30fbcd06e Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Fri, 29 Jul 2022 16:08:02 +0000 Subject: [PATCH 01/16] Remove waistToHips --- designs/waralee/config/index.js | 2 +- designs/waralee/src/cutout.js | 2 +- designs/waralee/src/pantsproto.js | 2 +- designs/waralee/src/util.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index 36f00c255cf..e5a175b8ed5 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -28,7 +28,7 @@ export default { 'crotchFactorFrontVer', ], }, - measurements: ['seat', 'inseam', 'crotchDepth', 'waistToHips'], + measurements: ['seat', 'inseam', 'crotchDepth', 'waistToHips', 'waist'], dependencies: {}, inject: { pants: 'pantsproto', mini: 'pantsproto' }, hide: [], diff --git a/designs/waralee/src/cutout.js b/designs/waralee/src/cutout.js index 55530181906..5f4250e12ba 100644 --- a/designs/waralee/src/cutout.js +++ b/designs/waralee/src/cutout.js @@ -16,7 +16,7 @@ export default function (part) { macro, } = part.shorthand() - let seatDepth = (measurements.crotchDepth - measurements.waistToHips) * (1 + options.waistRaise) + let seatDepth = (measurements.crotchDepth /* - measurements.waistToHips */) * (1 + options.waistRaise) points.mWaist = new Point(0, 0) points.mHip = points.mWaist.shift(270, seatDepth) diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index 583b69093cf..533e35c06e2 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -3,7 +3,7 @@ import { CreateCrotchPoints } from './util' export default function (part) { let { options, measurements, Point, Path, points, paths, store } = part.shorthand() - let seatDepth = (measurements.crotchDepth - measurements.waistToHips) * (1 + options.waistRaise) + let seatDepth = (measurements.crotchDepth /* - measurements.waistToHips */) * (1 + options.waistRaise) let circumference = measurements.seat let circumference4 = circumference / 4 store.set('waistBand', measurements.inseam * options.waistbandWidth) diff --git a/designs/waralee/src/util.js b/designs/waralee/src/util.js index 3ce88b9113f..3c09e7a8e4b 100644 --- a/designs/waralee/src/util.js +++ b/designs/waralee/src/util.js @@ -1,7 +1,7 @@ function CreateCrotchPoints(part) { let { options, measurements, points, store } = part.shorthand() - let seatDepth = (measurements.crotchDepth - measurements.waistToHips) * (1 + options.waistRaise) + let seatDepth = (measurements.crotchDepth /* - measurements.waistToHips */) * (1 + options.waistRaise) let circumference = measurements.seat let circumference4 = circumference / 4 From 48a4146b0fe86f95b577428bef7fb530da908fd2 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Sat, 30 Jul 2022 23:35:53 +0000 Subject: [PATCH 02/16] mini --- designs/waralee/config/index.js | 4 +- designs/waralee/src/mini.js | 188 +++++++++++++++----------------- designs/waralee/src/pants.js | 1 + 3 files changed, 94 insertions(+), 99 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index e5a175b8ed5..e0823cc892f 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -10,6 +10,7 @@ export default { type: 'pattern', difficulty: 2, optionGroups: { + options: ['showMini'], fit: ['backRaise', 'waistRaise'], style: [ 'hemWidth', @@ -34,7 +35,7 @@ export default { hide: [], parts: ['cutout', 'pocket', 'backPocket', 'facings'], options: { - minimizer: 5, + minimizer: 4, frontPocketVerticalOffset: 0.07, frontPocketHorizontalOffset: 0.18, frontPocketSize: 0.65, @@ -57,5 +58,6 @@ export default { waistOverlap: { pct: 50, min: 10, max: 100 }, legShortening: { pct: 25, min: -10, max: 50 }, backRaise: { pct: 10, min: 0, max: 25 }, + showMini: { bool: true }, }, } diff --git a/designs/waralee/src/mini.js b/designs/waralee/src/mini.js index e8cfa45fa6c..6ef790ee12c 100644 --- a/designs/waralee/src/mini.js +++ b/designs/waralee/src/mini.js @@ -5,9 +5,9 @@ export default function (part) { let { options, - /*measurements, + measurements, Point, - Path,*/ + Path, points, paths, Snippet, @@ -41,114 +41,106 @@ export default function (part) { .offset((-1 * store.get('hem')) / mini) .attr('class', 'fabric stroke-sm') + points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) + points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) + + paths.cutOut = new Path() + .move(points.bWaistSide) + .line(points.mWaist2) + .line(points.mWaist1) + .line(points.fWaistSide) + .attr('class', 'help') + // Complete? if (complete) { - points.logo = points.fWaistFront.shift(270, 400) - snippets.logo = new Snippet('logo', points.logo) - points.text = points.logo - .shift(-90, 50) - .attr('data-text', 'hello') - .attr('data-text-class', 'center') + macro('scalebox', { at: points.mLeg.shift(-90, 35) }) if (sa) { - paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + paths.sa = paths.seam.offset(sa /mini).attr('class', 'fabric sa') } - } - // Paperless? - if (paperless) { + points.pText1 = points.mHip.shiftFractionTowards(points.mLeg, .5) + .attr("data-text", "thisIsNotAPart") + .attr("data-text-class", "center"); + points.pText2 = points.mHip.shiftFractionTowards(points.mLeg, .6) + .attr("data-text", "doNotCutFromFabric") + .attr("data-text-class", "center"); + points.pText3 = points.mHip.shiftFractionTowards(points.mLeg, .7) + .attr("data-text", "useMeasurementsToCutFromFabric") + .attr("data-text-class", "center"); + + // Paperless? + // if (paperless) { macro('hd', { - from: points.fWaistSide, - to: points.mWaist, - y: points.fWaistSide.y, - text: part.units(points.fWaistSide.dist(points.mWaist) * mini), - }) - /* - macro("hd", { from: points.fWaistFrontOverlap, - to: points.mWaist, - y: points.fWaistSide.y - sa - 15 - }); - macro("hd", { - from: points.mWaist, - to: points.bWaistSide, - y: points.bWaistSide.y - }); - macro("hd", { - from: points.mWaist, - to: points.bWaistBack, - y: points.bWaistSide.y - sa - 15 - }); - macro("hd", { - from: points.mWaist, - to: points.bWaistBackOverlap, - y: points.bWaistSide.y - sa - 30 - }); - macro("vd", { - from: points.mWaist, - to: points.mHip, - x: points.mWaist.x - }); - macro("vd", { - from: points.bWaistSide, - to: points.bWaistBack, - x: points.bWaistSide.x + 15 - }); - macro("vd", { - from: points.bWaistBackOverlap, + to: points.fWaistSide, + y: points.fWaistSide.y +10, + text: part.units(points.fWaistSide.dist(points.fWaistFrontOverlap) * mini), + }) + macro('hd', { + from: points.fLegFrontOverlap, to: points.bLegBackOverlap, - x: points.bLegBackOverlap.x - 30 - }); + y: points.bLegBackOverlap.y -10, + text: part.units(points.fLegFrontOverlap.dist(points.bLegBackOverlap) * mini), + }) + macro('hd', { + from: points.bWaistBack, + to: points.bWaistBackOverlap, + y: points.bWaistBackOverlap.y +20, + text: part.units(points.bWaistBackOverlap.dist(points.bWaistBack) * mini), + }) + macro('hd', { + from: points.backPocketRight, + to: points.bWaistBackOverlap, + y: points.bWaistBackOverlap.y +40, + text: part.units((points.bWaistBackOverlap.x -points.backPocketRight.x) * mini), + }) + macro('hd', { + from: points.fWaistFrontOverlap, + to: points.frontPocketBottom2, + y: points.frontPocketBottom2.y +20, + text: part.units((points.frontPocketBottom2.x -points.fWaistFrontOverlap.x) * mini), + }) + macro('hd', { + from: points.fWaistFrontOverlap, + to: points.mHip, + y: points.mHip.y +10, + text: part.units((points.mHip.x -points.fWaistFrontOverlap.x) * mini), + }) - if (options.frontPocket) { - macro("vd", { - from: points.fWaistSide, - to: points.frontPocketTop, - x: points.frontPocketTop.x - }); - macro("vd", { - from: points.fWaistSide, - to: points.frontPocketBottom, - x: points.frontPocketBottom.x - }); - macro("hd", { - from: points.frontPocketTop, - to: points.fWaistSide, - y: points.frontPocketTop.y - }); - macro("hd", { - from: points.frontPocketBottom, - to: points.fWaistSide, - y: points.frontPocketBottom.y - }); - } - if (options.backPocket) { - macro("vd", { - from: points.bWaistSide, - to: points.backPocketLeft, - x: points.backPocketLeft.x - }); - macro("vd", { - from: points.bWaistSide, - to: points.backPocketRight, - x: points.backPocketRight.x - }); - macro("hd", { - from: points.bWaistSide, - to: points.backPocketLeft, - y: points.backPocketLeft.y - }); - macro("hd", { - from: points.bWaistSide, - to: points.backPocketRight, - y: points.backPocketRight.y - }); - } - */ + macro('vd', { + from: points.fWaistFrontOverlap, + to: points.frontPocketBottom2, + x: points.frontPocketBottom2.x +20, + text: part.units((points.frontPocketBottom2.y -points.fWaistFrontOverlap.y) * mini), + }) + macro('vd', { + from: points.bWaistBack, + to: points.backPocketRight, + x: points.backPocketRight.x, + text: part.units((points.backPocketRight.y -points.bWaistBack.y) * mini), + }) + macro('vd', { + from: points.fWaistFrontOverlap, + to: points.fLegFrontOverlap, + x: points.fLegFrontOverlap.x +10, + text: part.units(points.fWaistFrontOverlap.dist(points.fLegFrontOverlap) * mini), + }) + macro('vd', { + from: points.bLegBackOverlap, + to: points.bWaistBackOverlap, + x: points.bLegBackOverlap.x -10, + text: part.units(points.bWaistBackOverlap.dist(points.bLegBackOverlap) * mini), + }) + macro('vd', { + from: points.bLegBackOverlap, + to: points.bWaistSideTemp, + x: points.bWaistSideTemp.x +10, + text: part.units((points.bLegBackOverlap.y -points.bWaistSideTemp.y) * mini), + }) } - // keep this secret for now: - part.render = false + part.render = options.showMini return part } diff --git a/designs/waralee/src/pants.js b/designs/waralee/src/pants.js index ecb9a2d2805..c6cd4ee2ce3 100644 --- a/designs/waralee/src/pants.js +++ b/designs/waralee/src/pants.js @@ -116,6 +116,7 @@ export default function (part) { }) } } + part.render = (options.showMini == false) return part } From 9b48b9edd768336df0b13861dd608e95fd60b6d3 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Sat, 30 Jul 2022 23:51:15 +0000 Subject: [PATCH 03/16] Fix pockets --- designs/waralee/config/index.js | 4 ++-- designs/waralee/src/backpocket.js | 14 +++++++++----- designs/waralee/src/facings.js | 9 +++++---- designs/waralee/src/pantsproto.js | 10 +++++----- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index e0823cc892f..c5e72773694 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -38,13 +38,13 @@ export default { minimizer: 4, frontPocketVerticalOffset: 0.07, frontPocketHorizontalOffset: 0.18, - frontPocketSize: 0.65, + frontPocketSize: 0.45, frontPocket: { bool: true }, frontPocketDepthFactor: 1.6, backPocketDepth: 140, backPocketVerticalOffset: 0.15, backPocketHorizontalOffset: 0.045, - backPocketSize: 0.65, + backPocketSize: 0.45, backPocket: { bool: true }, hemWidth: { pct: 1.75, min: 1, max: 2.5 }, waistbandWidth: { pct: 3.5, min: 2, max: 5 }, diff --git a/designs/waralee/src/backpocket.js b/designs/waralee/src/backpocket.js index e9f0511bfd5..032225912e0 100644 --- a/designs/waralee/src/backpocket.js +++ b/designs/waralee/src/backpocket.js @@ -11,6 +11,7 @@ export default function (part) { complete, paperless, macro, + sa } = part.shorthand() let pocketDepth = options.backPocketDepth @@ -18,18 +19,18 @@ export default function (part) { points.topLeft = new Point(0, 0) points.bottomLeft = points.topLeft.shift( 270, - (pocketDepth + 30) * 2 + - options.backPocketVerticalOffset * (measurements.crotchDepth - measurements.waistToHips) + (pocketDepth /*+ 30*/) * 2 + + options.backPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) ) points.topRight = points.topLeft.shift( 0, - options.backPocketSize * (measurements.crotchDepth - measurements.waistToHips) + 24 + options.backPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) /*+ 24*/ ) points.bottomRight = points.topRight.shift( 270, - (pocketDepth + 30) * 2 + - options.backPocketVerticalOffset * (measurements.crotchDepth - measurements.waistToHips) + (pocketDepth /*+ 30*/) * 2 + + options.backPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) ) paths.seam = new Path() @@ -56,6 +57,9 @@ export default function (part) { .shift(-90, 25) .attr('data-text', 'Waralee') .attr('data-text-class', 'center') + + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } // Paperless? diff --git a/designs/waralee/src/facings.js b/designs/waralee/src/facings.js index 7ba4f64dc71..39359386d29 100644 --- a/designs/waralee/src/facings.js +++ b/designs/waralee/src/facings.js @@ -11,20 +11,21 @@ export default function (part) { complete, paperless, macro, + sa } = part.shorthand() let frontPocketSize = - options.frontPocketSize * (measurements.crotchDepth - measurements.waistToHips) + options.frontPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) let backPocketSize = - options.backPocketSize * (measurements.crotchDepth - measurements.waistToHips) + options.backPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) points.frontTL = new Point(0, 0) - points.frontTR = points.frontTL.shift(0, frontPocketSize + 24) + points.frontTR = points.frontTL.shift(0, frontPocketSize +sa +sa) points.frontBL = points.frontTL.shift(270, frontPocketSize / 2) points.frontBR = points.frontTR.shift(270, frontPocketSize / 2) points.backTL = points.frontBL.shift(270, 50) - points.backTR = points.backTL.shift(0, backPocketSize + 24) + points.backTR = points.backTL.shift(0, backPocketSize + sa +sa) points.backBL = points.backTL.shift(270, backPocketSize / 2) points.backBR = points.backTR.shift(270, backPocketSize / 2) diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index 533e35c06e2..7dc15b68bd3 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -83,7 +83,7 @@ export default function (part) { points.frontPocketTop = points.fWaistSide .shift( 270, - options.frontPocketVerticalOffset * (measurements.crotchDepth - measurements.waistToHips) + + options.frontPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) + waistBand * 2 ) .shift(180, options.frontPocketHorizontalOffset * measurements.seat) @@ -91,7 +91,7 @@ export default function (part) { points.frontPocketTop2 = points.frontPocketTop.shift(340, 12) points.frontPocketBottom = points.frontPocketTop.shift( 250, - options.frontPocketSize * (measurements.crotchDepth - measurements.waistToHips) + options.frontPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) ) points.frontPocketBottom2 = points.frontPocketBottom.shift(340, 12) @@ -109,18 +109,18 @@ export default function (part) { .shiftTowards(points.bWaistSide, options.backPocketHorizontalOffset * measurements.seat) .shift( 270, - options.backPocketVerticalOffset * (measurements.crotchDepth - measurements.waistToHips) + + options.backPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) + waistBand * 2 ) points.backPocketLeft = points.bWaistBack .shiftTowards( points.bWaistSide, options.backPocketHorizontalOffset * measurements.seat + - options.backPocketSize * (measurements.crotchDepth - measurements.waistToHips) + options.backPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) ) .shift( 270, - options.backPocketVerticalOffset * (measurements.crotchDepth - measurements.waistToHips) + + options.backPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) + waistBand * 2 ) points.backPocketRight2 = points.backPocketRight.shift( From 0adf98ed98323ddd471d8a2e6a9cb78348aa2bc1 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Sun, 31 Jul 2022 17:49:50 +0000 Subject: [PATCH 04/16] Pockets optional --- designs/waralee/config/index.js | 11 ++++-- designs/waralee/src/backpocket.js | 4 ++ designs/waralee/src/facings.js | 62 ++++++++++++++++--------------- designs/waralee/src/mini.js | 55 ++++++++++++++------------- designs/waralee/src/pocket.js | 4 ++ 5 files changed, 79 insertions(+), 57 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index c5e72773694..3831b7f8fcf 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -29,11 +29,16 @@ export default { 'crotchFactorFrontVer', ], }, - measurements: ['seat', 'inseam', 'crotchDepth', 'waistToHips', 'waist'], - dependencies: {}, + measurements: ['seat', 'inseam', 'crotchDepth', 'waistToHips', 'waist', 'waistBack'], + dependencies: { + backPocket: 'pantsproto', + pocket: 'pantsproto', + facings: 'pantsproto', + cutout: 'pantsproto', + }, inject: { pants: 'pantsproto', mini: 'pantsproto' }, hide: [], - parts: ['cutout', 'pocket', 'backPocket', 'facings'], + parts: ['pants', 'mini', 'cutout', 'pocket', 'backPocket', 'facings'], options: { minimizer: 4, frontPocketVerticalOffset: 0.07, diff --git a/designs/waralee/src/backpocket.js b/designs/waralee/src/backpocket.js index 032225912e0..cd6a8a0ce3a 100644 --- a/designs/waralee/src/backpocket.js +++ b/designs/waralee/src/backpocket.js @@ -14,6 +14,10 @@ export default function (part) { sa } = part.shorthand() + if( false == options.backPocket ) { + return part + } + let pocketDepth = options.backPocketDepth points.topLeft = new Point(0, 0) diff --git a/designs/waralee/src/facings.js b/designs/waralee/src/facings.js index 39359386d29..31af71c438f 100644 --- a/designs/waralee/src/facings.js +++ b/designs/waralee/src/facings.js @@ -37,7 +37,8 @@ export default function (part) { .line(points.frontTL) .close() .attr('class', 'fabric') - paths.backSeam = new Path() + .setRender(options.frontPocket) + paths.backSeam = new Path() .move(points.backTL) .line(points.backBL) .line(points.backBR) @@ -45,38 +46,41 @@ export default function (part) { .line(points.backTL) .close() .attr('class', 'fabric') + .setRender(options.backPocket) // Complete? if (complete) { - points.frontTitle = points.frontTL.shift(270, 50).shift(0, 50) - macro('title', { - nr: 5, - at: points.frontTitle.shift(0, 30), - title: 'frontFacing', - prefix: 'front', - }) - points.frontLogo = points.frontTitle.shift(270, 0) - snippets.frontLogo = new Snippet('logo', points.frontLogo).attr('data-scale', 0.4) - points.frontText = points.frontLogo - .shift(-90, 25) - .attr('data-text', 'Waralee') - .attr('data-text-class', 'center') - - points.backTitle = points.backTL.shift(270, 50).shift(0, 50) - macro('title', { - nr: 6, - at: points.backTitle.shift(0, 30), - title: 'backFacing', - prefix: 'back', - }) - points.backLogo = points.backTitle.shift(270, 0) - snippets.backLogo = new Snippet('logo', points.backLogo).attr('data-scale', 0.4) - points.backText = points.backLogo - .shift(-90, 25) - .attr('data-text', 'Waralee') - .attr('data-text-class', 'center') + if( options.frontPocket ) { + points.frontTitle = points.frontTL.shift(270, 50).shift(0, 50) + macro('title', { + nr: 5, + at: points.frontTitle.shift(0, 30), + title: 'frontFacing', + prefix: 'front', + }) + points.frontLogo = points.frontTitle.shift(270, 0) + snippets.frontLogo = new Snippet('logo', points.frontLogo).attr('data-scale', 0.4) + points.frontText = points.frontLogo + .shift(-90, 25) + .attr('data-text', 'Waralee') + .attr('data-text-class', 'center') + } + if( options.backPocket ) { + points.backTitle = points.backTL.shift(270, 50).shift(0, 50) + macro('title', { + nr: 6, + at: points.backTitle.shift(0, 30), + title: 'backFacing', + prefix: 'back', + }) + points.backLogo = points.backTitle.shift(270, 0) + snippets.backLogo = new Snippet('logo', points.backLogo).attr('data-scale', 0.4) + points.backText = points.backLogo + .shift(-90, 25) + .attr('data-text', 'Waralee') + .attr('data-text-class', 'center') + } } - // Paperless? if (paperless) { macro('hd', { diff --git a/designs/waralee/src/mini.js b/designs/waralee/src/mini.js index 6ef790ee12c..c1ca83b183b 100644 --- a/designs/waralee/src/mini.js +++ b/designs/waralee/src/mini.js @@ -89,37 +89,12 @@ export default function (part) { y: points.bWaistBackOverlap.y +20, text: part.units(points.bWaistBackOverlap.dist(points.bWaistBack) * mini), }) - macro('hd', { - from: points.backPocketRight, - to: points.bWaistBackOverlap, - y: points.bWaistBackOverlap.y +40, - text: part.units((points.bWaistBackOverlap.x -points.backPocketRight.x) * mini), - }) - macro('hd', { - from: points.fWaistFrontOverlap, - to: points.frontPocketBottom2, - y: points.frontPocketBottom2.y +20, - text: part.units((points.frontPocketBottom2.x -points.fWaistFrontOverlap.x) * mini), - }) macro('hd', { from: points.fWaistFrontOverlap, to: points.mHip, y: points.mHip.y +10, text: part.units((points.mHip.x -points.fWaistFrontOverlap.x) * mini), }) - - macro('vd', { - from: points.fWaistFrontOverlap, - to: points.frontPocketBottom2, - x: points.frontPocketBottom2.x +20, - text: part.units((points.frontPocketBottom2.y -points.fWaistFrontOverlap.y) * mini), - }) - macro('vd', { - from: points.bWaistBack, - to: points.backPocketRight, - x: points.backPocketRight.x, - text: part.units((points.backPocketRight.y -points.bWaistBack.y) * mini), - }) macro('vd', { from: points.fWaistFrontOverlap, to: points.fLegFrontOverlap, @@ -138,6 +113,36 @@ export default function (part) { x: points.bWaistSideTemp.x +10, text: part.units((points.bLegBackOverlap.y -points.bWaistSideTemp.y) * mini), }) + + if (options.frontPocket) { + macro('hd', { + from: points.fWaistFrontOverlap, + to: points.frontPocketBottom2, + y: points.frontPocketBottom2.y +20, + text: part.units((points.frontPocketBottom2.x -points.fWaistFrontOverlap.x) * mini), + }) + macro('vd', { + from: points.fWaistFrontOverlap, + to: points.frontPocketBottom2, + x: points.frontPocketBottom2.x +20, + text: part.units((points.frontPocketBottom2.y -points.fWaistFrontOverlap.y) * mini), + }) + } + + if (options.backPocket) { + macro('hd', { + from: points.backPocketRight, + to: points.bWaistBackOverlap, + y: points.bWaistBackOverlap.y +40, + text: part.units((points.bWaistBackOverlap.x -points.backPocketRight.x) * mini), + }) + macro('vd', { + from: points.bWaistBack, + to: points.backPocketRight, + x: points.backPocketRight.x, + text: part.units((points.backPocketRight.y -points.bWaistBack.y) * mini), + }) + } } part.render = options.showMini diff --git a/designs/waralee/src/pocket.js b/designs/waralee/src/pocket.js index 3fd30604b22..0229da5a981 100644 --- a/designs/waralee/src/pocket.js +++ b/designs/waralee/src/pocket.js @@ -14,6 +14,10 @@ export default function (part) { macro, } = part.shorthand() + if( false == options.frontPocket ) { + return part + } + let pocketDepth = (measurements.crotchDepth - measurements.waistToHips) * options.frontPocketDepthFactor From 07bcb97115b0eec563022417a223c4f9d7f53506 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Sun, 31 Jul 2022 21:12:16 +0000 Subject: [PATCH 05/16] Waist adjustemtns 1 --- designs/waralee/config/index.js | 16 +++++++++++----- designs/waralee/src/cutout.js | 19 +++++++++++++++++++ designs/waralee/src/pantsproto.js | 8 ++++++++ designs/waralee/src/util.js | 19 ++++++++++++++++++- 4 files changed, 56 insertions(+), 6 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index 3831b7f8fcf..c3064792d93 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -3,7 +3,6 @@ import { version } from '../package.json' export default { version, name: 'waralee', - beta: true, design: 'Wouter Van Wageningen', code: 'Wouter Van Wageningen', department: 'bottoms', @@ -17,6 +16,7 @@ export default { 'legShortening', 'waistOverlap', 'frontPocket', + 'frontPocketStyle', 'backPocket', 'waistbandWidth', ], @@ -44,20 +44,26 @@ export default { frontPocketVerticalOffset: 0.07, frontPocketHorizontalOffset: 0.18, frontPocketSize: 0.45, - frontPocket: { bool: true }, frontPocketDepthFactor: 1.6, + frontWaistAdjustment: 0.167, backPocketDepth: 140, - backPocketVerticalOffset: 0.15, + backPocketVerticalOffset: 0.2, backPocketHorizontalOffset: 0.045, backPocketSize: 0.45, + backWaistAdjustment: 0.20, + frontPocket: { bool: true }, + frontPocketStyle: { + dflt: 'welt', + list: ['welt', 'waistband'], + }, backPocket: { bool: true }, hemWidth: { pct: 1.75, min: 1, max: 2.5 }, waistbandWidth: { pct: 3.5, min: 2, max: 5 }, waistRaise: { pct: 20, min: 0, max: 40 }, crotchBack: { pct: 45, min: 10, max: 70 }, crotchFront: { pct: 30, min: 10, max: 70 }, - crotchFactorFrontHor: { pct: 85, min: 10, max: 100 }, - crotchFactorFrontVer: { pct: 25, min: 10, max: 70 }, + crotchFactorFrontHor: { pct: 90, min: 10, max: 100 }, + crotchFactorFrontVer: { pct: 30, min: 10, max: 70 }, crotchFactorBackHor: { pct: 90, min: 10, max: 100 }, crotchFactorBackVer: { pct: 60, min: 20, max: 90 }, waistOverlap: { pct: 50, min: 10, max: 100 }, diff --git a/designs/waralee/src/cutout.js b/designs/waralee/src/cutout.js index 5f4250e12ba..80e93341aed 100644 --- a/designs/waralee/src/cutout.js +++ b/designs/waralee/src/cutout.js @@ -1,3 +1,4 @@ +import { PartyModeSharp } from '@material-ui/icons' import { CreateCrotchPoints } from './util' export default function (part) { @@ -36,6 +37,24 @@ export default function (part) { .close() .attr('class', 'fabric') + let fPaths = (new Path().move(points.fWaistSide) + .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)).split(points.fCutOutHip) + + points.fCutOutHipCp = fPaths[1].ops[1].cp2.shiftFractionTowards(points.fCutOutHip, 1.25) + + let bPaths = (new Path().move(points.bWaistSide) + .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)).split(points.bCutOutHip) + + points.bCutOutHipCp = bPaths[1].ops[1].cp2.shiftFractionTowards(points.bCutOutHip, 1.25) + + paths.cutout2 = new Path() + .move(points.bWaistAdjusted) + .curve(points.bWaistAdjusted, points.bCutOutHipCp, points.bCutOutHip) + .join(bPaths[1]) + .join(fPaths[1].reverse()) + .curve(points.fCutOutHipCp,points.fWaistAdjusted,points.fWaistAdjusted) + .attr('class', 'lining') + .setRender(true) // Complete? if (complete) { points.logo = points.mWaist.shift(270, 75) diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index 7dc15b68bd3..fbee17df711 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -9,6 +9,7 @@ export default function (part) { store.set('waistBand', measurements.inseam * options.waistbandWidth) store.set('hem', measurements.inseam * options.hemWidth) let waistBand = store.get('waistBand') + let hem = store.get('hem') points.mWaist = new Point(0, 0) @@ -43,6 +44,7 @@ export default function (part) { points.bLegBackOverlap = points.bLegBack.shift(0, options.waistOverlap * circumference4) points.bWaistSideTemp = points.bWaistSide.shift(0, 2) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line. + paths.waistBack = new Path() .move(points.bWaistBackOverlap) .line(points.bWaistBack) @@ -70,6 +72,12 @@ export default function (part) { .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) .curve(points.fHipCrotchCP, points.fWaistCrotchCP, points.fWaistSide) .setRender(false) + paths.cutout2 = new Path() + .move(points.bWaistAdjusted) + .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) + .curve(points.fHipCrotchCP, points.fWaistCrotchCP, points.fWaistAdjusted) + .attr('class', 'lining') + .setRender(true) paths.seam = paths.waistFront .join(paths.front) diff --git a/designs/waralee/src/util.js b/designs/waralee/src/util.js index 3c09e7a8e4b..9f402abba26 100644 --- a/designs/waralee/src/util.js +++ b/designs/waralee/src/util.js @@ -1,5 +1,7 @@ function CreateCrotchPoints(part) { - let { options, measurements, points, store } = part.shorthand() + let { options, measurements, points, store, Path } = part.shorthand() + + let hem = store.get('hem') let seatDepth = (measurements.crotchDepth /* - measurements.waistToHips */) * (1 + options.waistRaise) let circumference = measurements.seat @@ -32,6 +34,21 @@ function CreateCrotchPoints(part) { ) points.bHipSide = points.mHip.shift(0, options.crotchBack * circumference4) + + points.fCutOutHip = (new Path().move(points.fWaistSide) + .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)).shiftAlong(measurements.waistToHips +hem) + points.bCutOutHip = (new Path().move(points.bWaistSide) + .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)).shiftAlong(measurements.waistToHips +hem) + + let waistCircumferenceBack4 = (measurements.waistBack /4) + let waistCircumferenceFront4 = ((measurements.waist -measurements.waistBack) /4) + + console.log({waistCircumferenceBack4:waistCircumferenceBack4}) + console.log({waistCircumferenceFront4:waistCircumferenceFront4}) + + points.bWaistAdjusted = points.bWaistSide.shift(0, waistCircumferenceBack4 *options.backWaistAdjustment) + points.fWaistAdjusted = points.fWaistSide.shift(180, waistCircumferenceFront4 *options.frontWaistAdjustment) + } export { CreateCrotchPoints } From 990e6858b2048db79f245744b531d01945438a7d Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Tue, 2 Aug 2022 19:19:42 +0000 Subject: [PATCH 06/16] OptionalM, structure, tweaks --- designs/waralee/config/index.js | 7 ++-- designs/waralee/src/cutout.js | 24 ++++--------- designs/waralee/src/facings.js | 15 ++++---- designs/waralee/src/mini.js | 6 ++-- designs/waralee/src/pants.js | 12 +++++-- designs/waralee/src/pantsproto.js | 60 ++++++++++++++++++++++++++----- designs/waralee/src/util.js | 54 ---------------------------- 7 files changed, 84 insertions(+), 94 deletions(-) delete mode 100644 designs/waralee/src/util.js diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index c3064792d93..5915b74ba90 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -29,15 +29,16 @@ export default { 'crotchFactorFrontVer', ], }, - measurements: ['seat', 'inseam', 'crotchDepth', 'waistToHips', 'waist', 'waistBack'], + measurements: ['seat', 'inseam', 'crotchDepth', 'waistToHips'], + optionalMeasurements: ['waist', 'waistBack'], dependencies: { backPocket: 'pantsproto', pocket: 'pantsproto', facings: 'pantsproto', cutout: 'pantsproto', }, - inject: { pants: 'pantsproto', mini: 'pantsproto' }, - hide: [], + inject: { pants: 'pantsproto', mini: 'pantsproto', cutout: 'pantsproto' }, + hide: ['pantsproto'], parts: ['pants', 'mini', 'cutout', 'pocket', 'backPocket', 'facings'], options: { minimizer: 4, diff --git a/designs/waralee/src/cutout.js b/designs/waralee/src/cutout.js index 80e93341aed..a532483b07a 100644 --- a/designs/waralee/src/cutout.js +++ b/designs/waralee/src/cutout.js @@ -1,6 +1,3 @@ -import { PartyModeSharp } from '@material-ui/icons' -import { CreateCrotchPoints } from './util' - export default function (part) { let { options, @@ -17,16 +14,6 @@ export default function (part) { macro, } = part.shorthand() - let seatDepth = (measurements.crotchDepth /* - measurements.waistToHips */) * (1 + options.waistRaise) - - points.mWaist = new Point(0, 0) - points.mHip = points.mWaist.shift(270, seatDepth) - - CreateCrotchPoints(part) - - points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) - points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) - paths.seam = new Path() .move(points.mWaist1) .line(points.fWaistSide) @@ -55,17 +42,20 @@ export default function (part) { .curve(points.fCutOutHipCp,points.fWaistAdjusted,points.fWaistAdjusted) .attr('class', 'lining') .setRender(true) + // Complete? if (complete) { - points.logo = points.mWaist.shift(270, 75) - snippets.logo = new Snippet('logo', points.logo) - points.title = points.logo.shift(-90, 55) + points.title = points.mWaist.shift(270, 75) macro('title', { nr: 2, at: points.title, - title: 'cutout', + title: 'cutOut', }) + points.logo = points.title.shift(270, 75) + + snippets.logo = new Snippet('logo', points.logo) + if (sa) { paths.seamAlternate = new Path() .move(points.bWaistSide) diff --git a/designs/waralee/src/facings.js b/designs/waralee/src/facings.js index 31af71c438f..a06d5c6c55e 100644 --- a/designs/waralee/src/facings.js +++ b/designs/waralee/src/facings.js @@ -51,32 +51,35 @@ export default function (part) { // Complete? if (complete) { if( options.frontPocket ) { - points.frontTitle = points.frontTL.shift(270, 50).shift(0, 50) + points.frontTitle = points.frontTL.shift(270, 30).shift(0, 40) macro('title', { nr: 5, at: points.frontTitle.shift(0, 30), title: 'frontFacing', prefix: 'front', + scale: .6 }) + points.frontLogo = points.frontTitle.shift(270, 0) - snippets.frontLogo = new Snippet('logo', points.frontLogo).attr('data-scale', 0.4) + snippets.frontLogo = new Snippet('logo', points.frontLogo).attr('data-scale', 0.3) points.frontText = points.frontLogo - .shift(-90, 25) + .shift(-90, 15) .attr('data-text', 'Waralee') .attr('data-text-class', 'center') } if( options.backPocket ) { - points.backTitle = points.backTL.shift(270, 50).shift(0, 50) + points.backTitle = points.backTL.shift(270, 30).shift(0, 40) macro('title', { nr: 6, at: points.backTitle.shift(0, 30), title: 'backFacing', prefix: 'back', + scale: .6 }) points.backLogo = points.backTitle.shift(270, 0) - snippets.backLogo = new Snippet('logo', points.backLogo).attr('data-scale', 0.4) + snippets.backLogo = new Snippet('logo', points.backLogo).attr('data-scale', 0.3) points.backText = points.backLogo - .shift(-90, 25) + .shift(-90, 15) .attr('data-text', 'Waralee') .attr('data-text-class', 'center') } diff --git a/designs/waralee/src/mini.js b/designs/waralee/src/mini.js index c1ca83b183b..7a6b56c1275 100644 --- a/designs/waralee/src/mini.js +++ b/designs/waralee/src/mini.js @@ -41,9 +41,6 @@ export default function (part) { .offset((-1 * store.get('hem')) / mini) .attr('class', 'fabric stroke-sm') - points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) - points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) - paths.cutOut = new Path() .move(points.bWaistSide) .line(points.mWaist2) @@ -55,6 +52,9 @@ export default function (part) { if (complete) { macro('scalebox', { at: points.mLeg.shift(-90, 35) }) + if( options.frontPocket ) {paths.frontPocket.setRender( true )} + if( options.backPocket ) {paths.backPocket.setRender( true )} + if (sa) { paths.sa = paths.seam.offset(sa /mini).attr('class', 'fabric sa') } diff --git a/designs/waralee/src/pants.js b/designs/waralee/src/pants.js index c6cd4ee2ce3..e114328c930 100644 --- a/designs/waralee/src/pants.js +++ b/designs/waralee/src/pants.js @@ -15,19 +15,25 @@ export default function (part) { // Complete? if (complete) { - points.logo = points.fWaistFront.shift(270, 400) - snippets.logo = new Snippet('logo', points.logo) - points.title = points.logo.shift(-90, 50) + points.title = points.fWaistFront.shift(270, 400) macro('title', { nr: 1, at: points.title, title: 'pants', }) + + points.logo = points.title.shift(270, 75) + + snippets.logo = new Snippet('logo', points.logo) + macro('scalebox', { at: points.mHip.shift(-90, 70) }) if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') } + if( options.frontPocket ) {paths.frontPocket.setRender( true )} + if( options.backPocket ) {paths.backPocket.setRender( true )} + // Paperless? if (paperless) { macro('hd', { diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index fbee17df711..db5b3c7b503 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -1,19 +1,57 @@ -import { CreateCrotchPoints } from './util' - export default function (part) { let { options, measurements, Point, Path, points, paths, store } = part.shorthand() let seatDepth = (measurements.crotchDepth /* - measurements.waistToHips */) * (1 + options.waistRaise) let circumference = measurements.seat let circumference4 = circumference / 4 - store.set('waistBand', measurements.inseam * options.waistbandWidth) - store.set('hem', measurements.inseam * options.hemWidth) - let waistBand = store.get('waistBand') - let hem = store.get('hem') + let hem = measurements.inseam * options.hemWidth + let waistBand = measurements.inseam * options.waistbandWidth + store.set('waistBand', waistBand ) + store.set('hem', hem ) points.mWaist = new Point(0, 0) - CreateCrotchPoints(part) + let waist = (typeof measurements.waist) == 'undefined' ? measurements.seat : measurements.waist + let waistBack = (typeof measurements.waistBack) == 'undefined' ? waist /2 : measurements.waistBack + + points.mHip = points.mWaist.shift(270, seatDepth) + + points.fWaistSide = points.mWaist + .shift(180, options.crotchFront * circumference4) + .shift(90, store.get('waistBand')) + points.fWaistCrotchCP = points.fWaistSide.shift( + 270, + seatDepth * options.crotchFactorFrontVer + store.get('waistBand') + ) + points.fHipCrotchCP = points.mHip.shift( + 180, + options.crotchFront * circumference4 * options.crotchFactorFrontHor + ) + + points.fHipSide = points.mHip.shift(180, options.crotchFront * circumference4) + + points.bWaistSide = points.mWaist + .shift(0, options.crotchBack * circumference4) + .shift(90, store.get('waistBand')) + .shift(90, options.backRaise * seatDepth) + points.bWaistCrotchCP = points.bWaistSide.shift(270, seatDepth * options.crotchFactorBackVer) + points.bHipCrotchCP = points.mHip.shift( + 0, + options.crotchBack * circumference4 * options.crotchFactorBackHor + ) + + points.bHipSide = points.mHip.shift(0, options.crotchBack * circumference4) + + points.fCutOutHip = (new Path().move(points.fWaistSide) + .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)).shiftAlong(measurements.waistToHips +hem) + points.bCutOutHip = (new Path().move(points.bWaistSide) + .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)).shiftAlong(measurements.waistToHips +hem) + + let waistSeatDifferenceBack = measurements.seat /2 -waistBack + let waistSeatDifferenceFront = measurements.seat /2 -(waist -waistBack) + + points.bWaistAdjusted = points.bWaistSide.shift(0, waistSeatDifferenceBack *options.backWaistAdjustment) + points.fWaistAdjusted = points.fWaistSide.shift(180, waistSeatDifferenceFront *options.frontWaistAdjustment) points.mLeg = points.mHip.shift(270, measurements.inseam * (1 - options.legShortening)) points.fLegSide = points.mLeg.shift(180, options.crotchFront * circumference4) @@ -26,6 +64,10 @@ export default function (part) { points.fLegFront = points.fLegSide.shift(180, circumference4) points.fLegFrontOverlap = points.fLegFront.shift(180, options.waistOverlap * circumference4) + points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) + points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) + + // Calculate the distance we need to move horizontally to get to the point that will // diagonally be the distance we're looking for (circumference/4) let bHorDistance = Math.sqrt( @@ -110,6 +152,7 @@ export default function (part) { .line(points.frontPocketTop2) .close() .attr('class', 'fabric') + .setRender( false ) } if (options.backPocket) { @@ -147,9 +190,10 @@ export default function (part) { .line(points.backPocketRight) .close() .attr('class', 'fabric') + .setRender( false ) } - part.render = false + // part.render = false return part } diff --git a/designs/waralee/src/util.js b/designs/waralee/src/util.js deleted file mode 100644 index 9f402abba26..00000000000 --- a/designs/waralee/src/util.js +++ /dev/null @@ -1,54 +0,0 @@ -function CreateCrotchPoints(part) { - let { options, measurements, points, store, Path } = part.shorthand() - - let hem = store.get('hem') - - let seatDepth = (measurements.crotchDepth /* - measurements.waistToHips */) * (1 + options.waistRaise) - let circumference = measurements.seat - let circumference4 = circumference / 4 - - points.mHip = points.mWaist.shift(270, seatDepth) - - points.fWaistSide = points.mWaist - .shift(180, options.crotchFront * circumference4) - .shift(90, store.get('waistBand')) - points.fWaistCrotchCP = points.fWaistSide.shift( - 270, - seatDepth * options.crotchFactorFrontVer + store.get('waistBand') - ) - points.fHipCrotchCP = points.mHip.shift( - 180, - options.crotchFront * circumference4 * options.crotchFactorFrontHor - ) - - points.fHipSide = points.mHip.shift(180, options.crotchFront * circumference4) - - points.bWaistSide = points.mWaist - .shift(0, options.crotchBack * circumference4) - .shift(90, store.get('waistBand')) - .shift(90, options.backRaise * seatDepth) - points.bWaistCrotchCP = points.bWaistSide.shift(270, seatDepth * options.crotchFactorBackVer) - points.bHipCrotchCP = points.mHip.shift( - 0, - options.crotchBack * circumference4 * options.crotchFactorBackHor - ) - - points.bHipSide = points.mHip.shift(0, options.crotchBack * circumference4) - - points.fCutOutHip = (new Path().move(points.fWaistSide) - .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)).shiftAlong(measurements.waistToHips +hem) - points.bCutOutHip = (new Path().move(points.bWaistSide) - .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)).shiftAlong(measurements.waistToHips +hem) - - let waistCircumferenceBack4 = (measurements.waistBack /4) - let waistCircumferenceFront4 = ((measurements.waist -measurements.waistBack) /4) - - console.log({waistCircumferenceBack4:waistCircumferenceBack4}) - console.log({waistCircumferenceFront4:waistCircumferenceFront4}) - - points.bWaistAdjusted = points.bWaistSide.shift(0, waistCircumferenceBack4 *options.backWaistAdjustment) - points.fWaistAdjusted = points.fWaistSide.shift(180, waistCircumferenceFront4 *options.frontWaistAdjustment) - -} - -export { CreateCrotchPoints } From f99b6e920ac0e9a9aa6db4e782931ec6dc7f79d8 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Tue, 2 Aug 2022 20:17:46 +0000 Subject: [PATCH 07/16] Tweaks for fitWaist --- designs/waralee/config/index.js | 3 +- designs/waralee/src/cutout.js | 35 +++------ designs/waralee/src/pantsproto.js | 117 ++++++++++++++++++++++-------- 3 files changed, 98 insertions(+), 57 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index 5915b74ba90..4b8f1492b8b 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -10,7 +10,7 @@ export default { difficulty: 2, optionGroups: { options: ['showMini'], - fit: ['backRaise', 'waistRaise'], + fit: ['fitWaist','backRaise', 'waistRaise'], style: [ 'hemWidth', 'legShortening', @@ -71,5 +71,6 @@ export default { legShortening: { pct: 25, min: -10, max: 50 }, backRaise: { pct: 10, min: 0, max: 25 }, showMini: { bool: true }, + fitWaist: { bool: true }, }, } diff --git a/designs/waralee/src/cutout.js b/designs/waralee/src/cutout.js index a532483b07a..64298275658 100644 --- a/designs/waralee/src/cutout.js +++ b/designs/waralee/src/cutout.js @@ -16,32 +16,17 @@ export default function (part) { paths.seam = new Path() .move(points.mWaist1) - .line(points.fWaistSide) - .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip) - .curve(points.bHipCrotchCP, points.bWaistCrotchCP, points.bWaistSide) .line(points.mWaist2) - .line(points.mWaist1) + .line(points.bWaistSide) + .join(paths.backTopCutOut) + .join(paths.backBottomCutOut) + .join(paths.frontBottomCutOut) + .join(paths.frontTopCutOut) .close() .attr('class', 'fabric') - let fPaths = (new Path().move(points.fWaistSide) - .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)).split(points.fCutOutHip) + paths.cutout.setRender(false) - points.fCutOutHipCp = fPaths[1].ops[1].cp2.shiftFractionTowards(points.fCutOutHip, 1.25) - - let bPaths = (new Path().move(points.bWaistSide) - .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)).split(points.bCutOutHip) - - points.bCutOutHipCp = bPaths[1].ops[1].cp2.shiftFractionTowards(points.bCutOutHip, 1.25) - - paths.cutout2 = new Path() - .move(points.bWaistAdjusted) - .curve(points.bWaistAdjusted, points.bCutOutHipCp, points.bCutOutHip) - .join(bPaths[1]) - .join(fPaths[1].reverse()) - .curve(points.fCutOutHipCp,points.fWaistAdjusted,points.fWaistAdjusted) - .attr('class', 'lining') - .setRender(true) // Complete? if (complete) { @@ -59,9 +44,11 @@ export default function (part) { if (sa) { paths.seamAlternate = new Path() .move(points.bWaistSide) - .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) - .curve(points.fHipCrotchCP, points.fWaistCrotchCP, points.fWaistSide) - + .join(paths.backTopCutOut) + .join(paths.backBottomCutOut) + .join(paths.frontBottomCutOut) + .join(paths.frontTopCutOut) + paths.sa = paths.seamAlternate.offset(sa).attr('class', 'fabric sa') } } diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index db5b3c7b503..558485d64ce 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -1,18 +1,25 @@ export default function (part) { let { options, measurements, Point, Path, points, paths, store } = part.shorthand() - let seatDepth = (measurements.crotchDepth /* - measurements.waistToHips */) * (1 + options.waistRaise) + let seatDepth = + measurements.crotchDepth /* - measurements.waistToHips */ * (1 + options.waistRaise) let circumference = measurements.seat let circumference4 = circumference / 4 let hem = measurements.inseam * options.hemWidth let waistBand = measurements.inseam * options.waistbandWidth - store.set('waistBand', waistBand ) - store.set('hem', hem ) + store.set('waistBand', waistBand) + store.set('hem', hem) points.mWaist = new Point(0, 0) - let waist = (typeof measurements.waist) == 'undefined' ? measurements.seat : measurements.waist - let waistBack = (typeof measurements.waistBack) == 'undefined' ? waist /2 : measurements.waistBack + let waist = + typeof measurements.waist == 'undefined' || false == options.fitWaist + ? measurements.seat + : measurements.waist + let waistBack = + typeof measurements.waistBack == 'undefined' || false == options.fitWaist + ? waist / 2 + : measurements.waistBack points.mHip = points.mWaist.shift(270, seatDepth) @@ -42,16 +49,26 @@ export default function (part) { points.bHipSide = points.mHip.shift(0, options.crotchBack * circumference4) - points.fCutOutHip = (new Path().move(points.fWaistSide) - .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip)).shiftAlong(measurements.waistToHips +hem) - points.bCutOutHip = (new Path().move(points.bWaistSide) - .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip)).shiftAlong(measurements.waistToHips +hem) + points.fCutOutHip = new Path() + .move(points.fWaistSide) + .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip) + .shiftAlong(measurements.waistToHips + hem) + points.bCutOutHip = new Path() + .move(points.bWaistSide) + .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) + .shiftAlong(measurements.waistToHips + hem) - let waistSeatDifferenceBack = measurements.seat /2 -waistBack - let waistSeatDifferenceFront = measurements.seat /2 -(waist -waistBack) + let waistSeatDifferenceBack = measurements.seat / 2 - waistBack + let waistSeatDifferenceFront = measurements.seat / 2 - (waist - waistBack) - points.bWaistAdjusted = points.bWaistSide.shift(0, waistSeatDifferenceBack *options.backWaistAdjustment) - points.fWaistAdjusted = points.fWaistSide.shift(180, waistSeatDifferenceFront *options.frontWaistAdjustment) + points.bWaistAdjusted = points.bWaistSide.shift( + 0, + waistSeatDifferenceBack * options.backWaistAdjustment + ) + points.fWaistAdjusted = points.fWaistSide.shift( + 180, + waistSeatDifferenceFront * options.frontWaistAdjustment + ) points.mLeg = points.mHip.shift(270, measurements.inseam * (1 - options.legShortening)) points.fLegSide = points.mLeg.shift(180, options.crotchFront * circumference4) @@ -67,7 +84,6 @@ export default function (part) { points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) - // Calculate the distance we need to move horizontally to get to the point that will // diagonally be the distance we're looking for (circumference/4) let bHorDistance = Math.sqrt( @@ -87,6 +103,52 @@ export default function (part) { points.bWaistSideTemp = points.bWaistSide.shift(0, 2) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line. + let fPaths = new Path() + .move(points.fWaistSide) + .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip) + .split(points.fCutOutHip) + + let bPaths = new Path() + .move(points.bWaistSide) + .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) + .split(points.bCutOutHip) + + points.fCutOutHipCp1 = fPaths[1].ops[1].cp1.shiftFractionTowards(points.fCutOutHip, 1.25) + points.fCutOutHipCp2 = fPaths[1].ops[1].cp1.clone() + points.mHipCp1 = fPaths[1].ops[1].cp2.clone() + points.mHipCp2 = bPaths[1].ops[1].cp2.clone() + points.bCutOutHipCp1 = bPaths[1].ops[1].cp1.clone() + points.bCutOutHipCp2 = bPaths[1].ops[1].cp1.shiftFractionTowards(points.bCutOutHip, 1.25) + + paths.frontBottomCutOut = new Path() + .move(points.mHip) + .curve(points.mHipCp1, points.fCutOutHipCp2, points.fCutOutHip) + .setRender(false) + paths.backBottomCutOut = new Path() + .move(points.bCutOutHip) + .curve(points.bCutOutHipCp1, points.mHipCp2, points.mHip) + .setRender(false) + + paths.frontTopCutOut = new Path() + .move(points.fCutOutHip) + .curve(points.fCutOutHipCp1, points.fWaistAdjusted, points.fWaistAdjusted) + .setRender(false) + paths.backTopCutOut = new Path() + .move(points.bWaistAdjusted) + .curve(points.bWaistAdjusted, points.bCutOutHipCp2, points.bCutOutHip) + .setRender(false) + + points.fWaistSide = points.fWaistAdjusted.clone() + points.bWaistSide = points.bWaistAdjusted.clone() + + paths.cutout = new Path() + .move(points.bWaistSide) + .join(paths.backTopCutOut) + .join(paths.backBottomCutOut) + .join(paths.frontBottomCutOut) + .join(paths.frontTopCutOut) + .setRender(false) + paths.waistBack = new Path() .move(points.bWaistBackOverlap) .line(points.bWaistBack) @@ -109,17 +171,6 @@ export default function (part) { .line(points.bWaistBackOverlap) .setRender(false) paths.leg = new Path().move(points.fLegFrontOverlap).line(points.bLegBackOverlap).setRender(false) - paths.cutout = new Path() - .move(points.bWaistSide) - .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) - .curve(points.fHipCrotchCP, points.fWaistCrotchCP, points.fWaistSide) - .setRender(false) - paths.cutout2 = new Path() - .move(points.bWaistAdjusted) - .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) - .curve(points.fHipCrotchCP, points.fWaistCrotchCP, points.fWaistAdjusted) - .attr('class', 'lining') - .setRender(true) paths.seam = paths.waistFront .join(paths.front) @@ -129,11 +180,13 @@ export default function (part) { .join(paths.cutout) .close() .attr('class', 'fabric') + if (options.frontPocket) { points.frontPocketTop = points.fWaistSide .shift( 270, - options.frontPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) + + options.frontPocketVerticalOffset * + measurements.crotchDepth /*- measurements.waistToHips*/ + waistBand * 2 ) .shift(180, options.frontPocketHorizontalOffset * measurements.seat) @@ -141,7 +194,7 @@ export default function (part) { points.frontPocketTop2 = points.frontPocketTop.shift(340, 12) points.frontPocketBottom = points.frontPocketTop.shift( 250, - options.frontPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) + options.frontPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/ ) points.frontPocketBottom2 = points.frontPocketBottom.shift(340, 12) @@ -152,7 +205,7 @@ export default function (part) { .line(points.frontPocketTop2) .close() .attr('class', 'fabric') - .setRender( false ) + .setRender(false) } if (options.backPocket) { @@ -160,18 +213,18 @@ export default function (part) { .shiftTowards(points.bWaistSide, options.backPocketHorizontalOffset * measurements.seat) .shift( 270, - options.backPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) + + options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ + waistBand * 2 ) points.backPocketLeft = points.bWaistBack .shiftTowards( points.bWaistSide, options.backPocketHorizontalOffset * measurements.seat + - options.backPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) + options.backPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/ ) .shift( 270, - options.backPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) + + options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ + waistBand * 2 ) points.backPocketRight2 = points.backPocketRight.shift( @@ -190,7 +243,7 @@ export default function (part) { .line(points.backPocketRight) .close() .attr('class', 'fabric') - .setRender( false ) + .setRender(false) } // part.render = false From bdc6ee042976dfe2fdcff71081b8ec4bda2f1f83 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Thu, 4 Aug 2022 04:24:28 +0000 Subject: [PATCH 08/16] Waistband fix --- designs/waralee/config/index.js | 6 ++-- designs/waralee/src/pants.js | 13 +++++--- designs/waralee/src/pantsproto.js | 51 +++++++++++++++++++++---------- 3 files changed, 46 insertions(+), 24 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index 4b8f1492b8b..ce47539f51b 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -46,12 +46,12 @@ export default { frontPocketHorizontalOffset: 0.18, frontPocketSize: 0.45, frontPocketDepthFactor: 1.6, - frontWaistAdjustment: 0.167, + frontWaistAdjustment: 0.163, backPocketDepth: 140, backPocketVerticalOffset: 0.2, backPocketHorizontalOffset: 0.045, backPocketSize: 0.45, - backWaistAdjustment: 0.20, + backWaistAdjustment: 0.14, frontPocket: { bool: true }, frontPocketStyle: { dflt: 'welt', @@ -60,7 +60,7 @@ export default { backPocket: { bool: true }, hemWidth: { pct: 1.75, min: 1, max: 2.5 }, waistbandWidth: { pct: 3.5, min: 2, max: 5 }, - waistRaise: { pct: 20, min: 0, max: 40 }, + waistRaise: { pct: 0, min: -20, max: 40 }, crotchBack: { pct: 45, min: 10, max: 70 }, crotchFront: { pct: 30, min: 10, max: 70 }, crotchFactorFrontHor: { pct: 90, min: 10, max: 100 }, diff --git a/designs/waralee/src/pants.js b/designs/waralee/src/pants.js index e114328c930..413d5c4f69c 100644 --- a/designs/waralee/src/pants.js +++ b/designs/waralee/src/pants.js @@ -1,12 +1,15 @@ export default function (part) { - let { options, points, paths, Snippet, snippets, complete, sa, paperless, macro, store } = + let { options, points, Path, paths, Snippet, snippets, complete, sa, paperless, macro, store } = part.shorthand() - paths.waistFoldBack = paths.waistBack - .offset(-1 * store.get('waistBand')) + paths.waistFoldBack = new Path() + .move(points.bWaistSideHem) + .line(points.bWaistBack.shift(270, store.get('waistBand'))) + .line(points.bWaistBackOverlap.shift(270, store.get('waistBand'))) .attr('class', 'fabric stroke-sm') - paths.waistFoldFront = paths.waistFront - .offset(-1 * store.get('waistBand')) + paths.waistFoldFront = new Path() + .move(points.fWaistSideHem) + .line(points.fWaistFrontOverlap.shift(270, store.get('waistBand'))) .attr('class', 'fabric stroke-sm') paths.frontFold = paths.front.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm') diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index 558485d64ce..45beb0ffc1f 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -4,14 +4,6 @@ export default function (part) { let seatDepth = measurements.crotchDepth /* - measurements.waistToHips */ * (1 + options.waistRaise) let circumference = measurements.seat - let circumference4 = circumference / 4 - let hem = measurements.inseam * options.hemWidth - let waistBand = measurements.inseam * options.waistbandWidth - store.set('waistBand', waistBand) - store.set('hem', hem) - - points.mWaist = new Point(0, 0) - let waist = typeof measurements.waist == 'undefined' || false == options.fitWaist ? measurements.seat @@ -21,14 +13,25 @@ export default function (part) { ? waist / 2 : measurements.waistBack + if( circumference < waist ) {circumference = waist} + + let circumference4 = circumference / 4 + let hem = measurements.inseam * options.hemWidth + let waistBand = measurements.inseam * options.waistbandWidth + store.set('waistBand', waistBand) + store.set('hem', hem) + + points.mWaist = new Point(0, 0) + + points.mHip = points.mWaist.shift(270, seatDepth) points.fWaistSide = points.mWaist .shift(180, options.crotchFront * circumference4) - .shift(90, store.get('waistBand')) + .shift(90, waistBand) points.fWaistCrotchCP = points.fWaistSide.shift( 270, - seatDepth * options.crotchFactorFrontVer + store.get('waistBand') + seatDepth * options.crotchFactorFrontVer +waistBand ) points.fHipCrotchCP = points.mHip.shift( 180, @@ -39,7 +42,7 @@ export default function (part) { points.bWaistSide = points.mWaist .shift(0, options.crotchBack * circumference4) - .shift(90, store.get('waistBand')) + .shift(90, waistBand) .shift(90, options.backRaise * seatDepth) points.bWaistCrotchCP = points.bWaistSide.shift(270, seatDepth * options.crotchFactorBackVer) points.bHipCrotchCP = points.mHip.shift( @@ -52,11 +55,11 @@ export default function (part) { points.fCutOutHip = new Path() .move(points.fWaistSide) .curve(points.fWaistCrotchCP, points.fHipCrotchCP, points.mHip) - .shiftAlong(measurements.waistToHips + hem) + .shiftAlong(measurements.waistToHips + waistBand) points.bCutOutHip = new Path() .move(points.bWaistSide) .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) - .shiftAlong(measurements.waistToHips + hem) + .shiftAlong(measurements.waistToHips + waistBand) let waistSeatDifferenceBack = measurements.seat / 2 - waistBack let waistSeatDifferenceFront = measurements.seat / 2 - (waist - waistBack) @@ -70,6 +73,9 @@ export default function (part) { waistSeatDifferenceFront * options.frontWaistAdjustment ) + console.log({adjustmentBack: waistSeatDifferenceBack * options.backWaistAdjustment}) + console.log({adjustmentFront: waistSeatDifferenceFront * options.frontWaistAdjustment}) + points.mLeg = points.mHip.shift(270, measurements.inseam * (1 - options.legShortening)) points.fLegSide = points.mLeg.shift(180, options.crotchFront * circumference4) points.bLegSide = points.mLeg.shift(0, options.crotchBack * circumference4) @@ -138,8 +144,21 @@ export default function (part) { .curve(points.bWaistAdjusted, points.bCutOutHipCp2, points.bCutOutHip) .setRender(false) - points.fWaistSide = points.fWaistAdjusted.clone() - points.bWaistSide = points.bWaistAdjusted.clone() + points.fWaistSideHem = paths.frontTopCutOut.reverse().shiftAlong(waistBand) + points.fWaistSide = paths.frontTopCutOut.reverse().shiftAlong(waistBand*2).flipY(points.fWaistSideHem) + points.bWaistSideHem = paths.backTopCutOut.shiftAlong(waistBand) + points.bWaistSide = paths.backTopCutOut.shiftAlong(waistBand*2).flipY(points.bWaistSideHem) + + paths.frontTopCutOut = new Path() + .move(points.fCutOutHip) + .curve(points.fCutOutHipCp1, points.fWaistAdjusted, points.fWaistSideHem) + .line(points.fWaistSide) + .setRender(false) + paths.backTopCutOut = new Path() + .move(points.bWaistSide) + .move(points.bWaistSideHem) + .curve(points.bWaistAdjusted, points.bCutOutHipCp2, points.bCutOutHip) + .setRender(false) paths.cutout = new Path() .move(points.bWaistSide) @@ -152,7 +171,7 @@ export default function (part) { paths.waistBack = new Path() .move(points.bWaistBackOverlap) .line(points.bWaistBack) - .line(points.bWaistSideTemp) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line. + // .line(points.bWaistSideTemp) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line. .line(points.bWaistSide) .setRender(false) paths.waistFront = new Path() From d085ec854567790ba06b20f031ecb223ddee9b37 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Thu, 4 Aug 2022 04:47:11 +0000 Subject: [PATCH 09/16] Waistband correction --- designs/waralee/src/pantsproto.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index 45beb0ffc1f..894222c94d3 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -151,13 +151,13 @@ export default function (part) { paths.frontTopCutOut = new Path() .move(points.fCutOutHip) - .curve(points.fCutOutHipCp1, points.fWaistAdjusted, points.fWaistSideHem) + .curve(points.fCutOutHipCp1, points.fWaistSideHem, points.fWaistSideHem) .line(points.fWaistSide) .setRender(false) paths.backTopCutOut = new Path() .move(points.bWaistSide) - .move(points.bWaistSideHem) - .curve(points.bWaistAdjusted, points.bCutOutHipCp2, points.bCutOutHip) + .line(points.bWaistSideHem) + .curve(points.bWaistSideHem, points.bCutOutHipCp2, points.bCutOutHip) .setRender(false) paths.cutout = new Path() From d3759575658466da5f76bc2e846485f3b3416347 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Thu, 4 Aug 2022 15:13:19 +0000 Subject: [PATCH 10/16] Tweaks for mini<->notMini --- designs/waralee/config/index.js | 5 ++++- designs/waralee/src/cutout.js | 1 + designs/waralee/src/mini.js | 2 ++ designs/waralee/src/pants.js | 2 ++ designs/waralee/src/pantsproto.js | 10 +++++++++- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index ce47539f51b..e1f35446b9c 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -36,10 +36,13 @@ export default { pocket: 'pantsproto', facings: 'pantsproto', cutout: 'pantsproto', + mini: 'pantsproto', + pants: 'pantsproto', + cutout: 'pantsproto', }, inject: { pants: 'pantsproto', mini: 'pantsproto', cutout: 'pantsproto' }, hide: ['pantsproto'], - parts: ['pants', 'mini', 'cutout', 'pocket', 'backPocket', 'facings'], + parts: ['pants', 'mini', 'cutout', 'pocket', 'backPocket', 'facings', 'pantsproto'], options: { minimizer: 4, frontPocketVerticalOffset: 0.07, diff --git a/designs/waralee/src/cutout.js b/designs/waralee/src/cutout.js index 64298275658..fb12b1c53f4 100644 --- a/designs/waralee/src/cutout.js +++ b/designs/waralee/src/cutout.js @@ -76,6 +76,7 @@ export default function (part) { x: points.mWaist.x + 15, }) } + part.render = options.showMini return part } diff --git a/designs/waralee/src/mini.js b/designs/waralee/src/mini.js index 7a6b56c1275..4508ca5479c 100644 --- a/designs/waralee/src/mini.js +++ b/designs/waralee/src/mini.js @@ -48,6 +48,8 @@ export default function (part) { .line(points.fWaistSide) .attr('class', 'help') + paths.seam.setRender(true) + // Complete? if (complete) { macro('scalebox', { at: points.mLeg.shift(-90, 35) }) diff --git a/designs/waralee/src/pants.js b/designs/waralee/src/pants.js index 413d5c4f69c..f1df4849ad6 100644 --- a/designs/waralee/src/pants.js +++ b/designs/waralee/src/pants.js @@ -16,6 +16,8 @@ export default function (part) { paths.legFold = paths.leg.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm') paths.backFold = paths.back.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm') + paths.seam.setRender(true) + // Complete? if (complete) { points.title = points.fWaistFront.shift(270, 400) diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index 894222c94d3..d3f7f69794d 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -119,6 +119,11 @@ export default function (part) { .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) .split(points.bCutOutHip) + fPaths[0].setRender(false) + fPaths[1].setRender(false) + bPaths[0].setRender(false) + bPaths[1].setRender(false) + points.fCutOutHipCp1 = fPaths[1].ops[1].cp1.shiftFractionTowards(points.fCutOutHip, 1.25) points.fCutOutHipCp2 = fPaths[1].ops[1].cp1.clone() points.mHipCp1 = fPaths[1].ops[1].cp2.clone() @@ -199,6 +204,7 @@ export default function (part) { .join(paths.cutout) .close() .attr('class', 'fabric') + .setRender(false) if (options.frontPocket) { points.frontPocketTop = points.fWaistSide @@ -265,7 +271,9 @@ export default function (part) { .setRender(false) } - // part.render = false + part.render = false + + console.log({part:part}) return part } From 6997a91e1df5f0a2f6d11b2d404de7f0b59a3638 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Mon, 8 Aug 2022 20:44:20 +0000 Subject: [PATCH 11/16] Separate Waistband (1) --- designs/waralee/config/index.js | 2 + designs/waralee/src/cutout.js | 8 +-- designs/waralee/src/mini.js | 49 +++++++++--------- designs/waralee/src/pants.js | 69 ++++++++++++++----------- designs/waralee/src/pantsproto.js | 85 +++++++++++++++++++++---------- 5 files changed, 131 insertions(+), 82 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index e1f35446b9c..1ee75e791a1 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -12,6 +12,7 @@ export default { options: ['showMini'], fit: ['fitWaist','backRaise', 'waistRaise'], style: [ + 'separateWaistband', 'hemWidth', 'legShortening', 'waistOverlap', @@ -75,5 +76,6 @@ export default { backRaise: { pct: 10, min: 0, max: 25 }, showMini: { bool: true }, fitWaist: { bool: true }, + separateWaistband: { bool: false }, }, } diff --git a/designs/waralee/src/cutout.js b/designs/waralee/src/cutout.js index fb12b1c53f4..4683ccf8ad5 100644 --- a/designs/waralee/src/cutout.js +++ b/designs/waralee/src/cutout.js @@ -17,7 +17,7 @@ export default function (part) { paths.seam = new Path() .move(points.mWaist1) .line(points.mWaist2) - .line(points.bWaistSide) + .line(options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) .join(paths.backTopCutOut) .join(paths.backBottomCutOut) .join(paths.frontBottomCutOut) @@ -43,7 +43,7 @@ export default function (part) { if (sa) { paths.seamAlternate = new Path() - .move(points.bWaistSide) + .move(options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) .join(paths.backTopCutOut) .join(paths.backBottomCutOut) .join(paths.frontBottomCutOut) @@ -58,12 +58,12 @@ export default function (part) { macro('hd', { from: points.fWaistSide, to: points.mWaist, - y: points.mWaist.y, + y: (options.separateWaistband ? points.fWaistSideCp2 : points.mWaist).y, }) macro('hd', { from: points.mWaist, to: points.bWaistSide, - y: points.mWaist.y, + y: (options.separateWaistband ? points.fWaistSideCp2 : points.mWaist).y, }) macro('vd', { from: points.mWaist1, diff --git a/designs/waralee/src/mini.js b/designs/waralee/src/mini.js index 4508ca5479c..b7c76961cc3 100644 --- a/designs/waralee/src/mini.js +++ b/designs/waralee/src/mini.js @@ -42,10 +42,10 @@ export default function (part) { .attr('class', 'fabric stroke-sm') paths.cutOut = new Path() - .move(points.bWaistSide) + .move(options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) .line(points.mWaist2) .line(points.mWaist1) - .line(points.fWaistSide) + .line(options.separateWaistband ? points.fWaistSideSeam : points.fWaistSide) .attr('class', 'help') paths.seam.setRender(true) @@ -71,13 +71,16 @@ export default function (part) { .attr("data-text", "useMeasurementsToCutFromFabric") .attr("data-text-class", "center"); - // Paperless? - // if (paperless) { + let fWaistSide = (options.separateWaistband ? points.fWaistSideSeam : points.fWaistSide) + let fWaistFrontOverlap = (options.separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap) + let bWaistSide = (options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) + let bWaistBackOverlap = (options.separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap) + macro('hd', { from: points.fWaistFrontOverlap, - to: points.fWaistSide, - y: points.fWaistSide.y +10, - text: part.units(points.fWaistSide.dist(points.fWaistFrontOverlap) * mini), + to: fWaistSide, + y: fWaistSide.y +10, + text: part.units(fWaistSide.dist(points.fWaistFrontOverlap) * mini), }) macro('hd', { from: points.fLegFrontOverlap, @@ -98,51 +101,51 @@ export default function (part) { text: part.units((points.mHip.x -points.fWaistFrontOverlap.x) * mini), }) macro('vd', { - from: points.fWaistFrontOverlap, + from: fWaistFrontOverlap, to: points.fLegFrontOverlap, x: points.fLegFrontOverlap.x +10, - text: part.units(points.fWaistFrontOverlap.dist(points.fLegFrontOverlap) * mini), + text: part.units(fWaistFrontOverlap.dist(points.fLegFrontOverlap) * mini), }) macro('vd', { from: points.bLegBackOverlap, - to: points.bWaistBackOverlap, + to: bWaistBackOverlap, x: points.bLegBackOverlap.x -10, - text: part.units(points.bWaistBackOverlap.dist(points.bLegBackOverlap) * mini), + text: part.units(bWaistBackOverlap.dist(points.bLegBackOverlap) * mini), }) macro('vd', { from: points.bLegBackOverlap, - to: points.bWaistSideTemp, - x: points.bWaistSideTemp.x +10, - text: part.units((points.bLegBackOverlap.y -points.bWaistSideTemp.y) * mini), + to: bWaistSide, + x: bWaistSide.x +10, + text: part.units((points.bLegBackOverlap.y -bWaistSide.y) * mini), }) if (options.frontPocket) { macro('hd', { - from: points.fWaistFrontOverlap, + from: fWaistFrontOverlap, to: points.frontPocketBottom2, y: points.frontPocketBottom2.y +20, - text: part.units((points.frontPocketBottom2.x -points.fWaistFrontOverlap.x) * mini), + text: part.units((points.frontPocketBottom2.x -fWaistFrontOverlap.x) * mini), }) macro('vd', { - from: points.fWaistFrontOverlap, + from: fWaistFrontOverlap, to: points.frontPocketBottom2, x: points.frontPocketBottom2.x +20, - text: part.units((points.frontPocketBottom2.y -points.fWaistFrontOverlap.y) * mini), + text: part.units((points.frontPocketBottom2.y -fWaistFrontOverlap.y) * mini), }) } if (options.backPocket) { macro('hd', { from: points.backPocketRight, - to: points.bWaistBackOverlap, - y: points.bWaistBackOverlap.y +40, - text: part.units((points.bWaistBackOverlap.x -points.backPocketRight.x) * mini), + to: bWaistBackOverlap, + y: bWaistBackOverlap.y +40, + text: part.units((bWaistBackOverlap.x -points.backPocketRight.x) * mini), }) macro('vd', { - from: points.bWaistBack, + from: bWaistBackOverlap, to: points.backPocketRight, x: points.backPocketRight.x, - text: part.units((points.backPocketRight.y -points.bWaistBack.y) * mini), + text: part.units((points.backPocketRight.y -bWaistBackOverlap.y) * mini), }) } } diff --git a/designs/waralee/src/pants.js b/designs/waralee/src/pants.js index f1df4849ad6..554e90fc738 100644 --- a/designs/waralee/src/pants.js +++ b/designs/waralee/src/pants.js @@ -2,15 +2,17 @@ export default function (part) { let { options, points, Path, paths, Snippet, snippets, complete, sa, paperless, macro, store } = part.shorthand() + if( false == options.separateWaistband ) { paths.waistFoldBack = new Path() .move(points.bWaistSideHem) - .line(points.bWaistBack.shift(270, store.get('waistBand'))) - .line(points.bWaistBackOverlap.shift(270, store.get('waistBand'))) + .line(options.separateWaistband ? points.bWaistBackSeam : points.bWaistBackHem) + .line(options.separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlapHem) .attr('class', 'fabric stroke-sm') paths.waistFoldFront = new Path() .move(points.fWaistSideHem) - .line(points.fWaistFrontOverlap.shift(270, store.get('waistBand'))) + .line(points.fWaistFrontOverlapHem) .attr('class', 'fabric stroke-sm') + } paths.frontFold = paths.front.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm') paths.legFold = paths.leg.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm') @@ -41,87 +43,96 @@ export default function (part) { // Paperless? if (paperless) { + let fWaistSide = (options.separateWaistband ? points.fWaistSideSeam : points.fWaistSide) + let bWaistSide = (options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) macro('hd', { - from: points.fWaistSide, - to: points.mWaist, - y: points.fWaistSide.y, + from: fWaistSide, + to: points.mWaist1, + y: fWaistSide.y, }) macro('hd', { from: points.fWaistFrontOverlap, - to: points.mWaist, - y: points.fWaistSide.y - sa - 15, + to: points.mWaist1, + y: fWaistSide.y - sa - 15, }) macro('hd', { from: points.mWaist, - to: points.bWaistSide, - y: points.bWaistSide.y, + to: bWaistSide, + y: bWaistSide.y, }) macro('hd', { - from: points.mWaist, - to: points.bWaistBack, - y: points.bWaistSide.y - sa - 15, + from: points.mWaist1, + to: options.separateWaistband ? points.bWaistBackSeam : points.bWaistBack, + y: bWaistSide.y - sa - 15, }) macro('hd', { - from: points.mWaist, - to: points.bWaistBackOverlap, - y: points.bWaistSide.y - sa - 30, + from: points.mWaist1, + to: options.separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlap, + y: bWaistSide.y - sa - 30, }) macro('vd', { - from: points.mWaist, + from: points.mWaist1, to: points.mHip, x: points.mWaist.x, }) macro('vd', { - from: points.bWaistSide, - to: points.bWaistBack, - x: points.bWaistSide.x + 15, + from: bWaistSide, + to: options.separateWaistband ? points.bWaistBackSeam : points.bWaistBack, + x: bWaistSide.x + 15, }) macro('vd', { - from: points.bWaistBackOverlap, + from: options.separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlap, to: points.bLegBackOverlap, x: points.bLegBackOverlap.x - 30, }) + if( false == options.separateWaistband ) { + macro('vd', { + from: points.fWaistSide, + to: points.fWaistSideHem, + x: points.fWaistSide.x +10, + }) + } if (options.frontPocket) { macro('vd', { - from: points.fWaistSide, + from: fWaistSide, to: points.frontPocketTop, x: points.frontPocketTop.x, }) macro('vd', { - from: points.fWaistSide, + from: fWaistSide, to: points.frontPocketBottom, x: points.frontPocketBottom.x, }) macro('hd', { from: points.frontPocketTop, - to: points.fWaistSide, + to: fWaistSide, y: points.frontPocketTop.y, }) macro('hd', { from: points.frontPocketBottom, - to: points.fWaistSide, + to: fWaistSide, y: points.frontPocketBottom.y, }) } if (options.backPocket) { macro('vd', { - from: points.bWaistSide, + from: bWaistSide, to: points.backPocketLeft, x: points.backPocketLeft.x, }) macro('vd', { - from: points.bWaistSide, + from: bWaistSide, to: points.backPocketRight, x: points.backPocketRight.x, }) macro('hd', { - from: points.bWaistSide, + from: bWaistSide, to: points.backPocketLeft, y: points.backPocketLeft.y, }) macro('hd', { - from: points.bWaistSide, + from: bWaistSide, to: points.backPocketRight, y: points.backPocketRight.y, }) diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index d3f7f69794d..9275013591c 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -87,9 +87,6 @@ export default function (part) { points.fLegFront = points.fLegSide.shift(180, circumference4) points.fLegFrontOverlap = points.fLegFront.shift(180, options.waistOverlap * circumference4) - points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) - points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) - // Calculate the distance we need to move horizontally to get to the point that will // diagonally be the distance we're looking for (circumference/4) let bHorDistance = Math.sqrt( @@ -150,49 +147,85 @@ export default function (part) { .setRender(false) points.fWaistSideHem = paths.frontTopCutOut.reverse().shiftAlong(waistBand) - points.fWaistSide = paths.frontTopCutOut.reverse().shiftAlong(waistBand*2).flipY(points.fWaistSideHem) + points.fWaistSideSeam = paths.frontTopCutOut.reverse().shiftAlong(waistBand*2) + points.fWaistSide = points.fWaistSideSeam.flipY(points.fWaistSideHem) points.bWaistSideHem = paths.backTopCutOut.shiftAlong(waistBand) - points.bWaistSide = paths.backTopCutOut.shiftAlong(waistBand*2).flipY(points.bWaistSideHem) + points.bWaistSideSeam = paths.backTopCutOut.shiftAlong(waistBand*2) + points.bWaistSide = points.bWaistSideSeam.flipY(points.bWaistSideHem) + + points.fWaistFrontOverlapHem = points.fWaistFrontOverlap.shift(270, waistBand) + points.bWaistBackHem = points.bWaistBack.shift(270, waistBand) + points.bWaistBackOverlapHem = points.bWaistBackOverlap.shift(270, waistBand) + points.fWaistFrontOverlapSeam = points.fWaistFrontOverlap.shift(270, waistBand*2) + points.bWaistBackSeam = points.bWaistBack.shift(270, waistBand*2) + points.bWaistBackOverlapSeam = points.bWaistBackOverlap.shift(270, waistBand*2) + points.fWaistSideCp2 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp2.clone() + + points.fWaistSideCp2 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp2.clone() + points.fWaistHipCp1 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp1.clone() + points.bWaistSideCp1 = paths.backTopCutOut.split(points.bWaistSideSeam)[1].ops[1].cp1.clone() + points.bWaistHipCp2 = paths.backTopCutOut.split(points.bWaistSideSeam)[1].ops[1].cp2.clone() + + if( options.separateWaistband ) { + points.mWaist1 = new Point(points.mWaist.x, points.fWaistSideSeam.y) + // points.mWaist = new Point(points.mWaist.x, points.fWaistSideSeam.y) + } else { + points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) + } + if( options.separateWaistband ) { + points.mWaist2 = new Point(points.mWaist.x, points.bWaistSideSeam.y) + } else { + points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) + } paths.frontTopCutOut = new Path() .move(points.fCutOutHip) - .curve(points.fCutOutHipCp1, points.fWaistSideHem, points.fWaistSideHem) - .line(points.fWaistSide) + .curve(points.fCutOutHipCp1, points.fWaistSideCp2, points.fWaistSideSeam) .setRender(false) - paths.backTopCutOut = new Path() - .move(points.bWaistSide) - .line(points.bWaistSideHem) - .curve(points.bWaistSideHem, points.bCutOutHipCp2, points.bCutOutHip) + if( false == options.separateWaistband ) { + paths.frontTopCutOut.line(points.fWaistSideHem) + paths.frontTopCutOut.line(points.fWaistSide) + } + if( false == options.separateWaistband ) { + paths.backTopCutOut = new Path() + .move(points.bWaistSide) + .line(points.bWaistSideHem) + .line(points.bWaistSideSeam) + } else { + paths.backTopCutOut = new Path() + .move(points.bWaistSideSeam) + } + paths.backTopCutOut.curve(points.bWaistSideCp1, points.bCutOutHipCp2, points.bCutOutHip) .setRender(false) - paths.cutout = new Path() - .move(points.bWaistSide) - .join(paths.backTopCutOut) + points.bCutOutHip.attr('data-text', 'X') + .attr('data-text-class', 'center') + + paths.cutout = paths.backTopCutOut .join(paths.backBottomCutOut) .join(paths.frontBottomCutOut) .join(paths.frontTopCutOut) .setRender(false) paths.waistBack = new Path() - .move(points.bWaistBackOverlap) - .line(points.bWaistBack) + .move(options.separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap) + .line(options.separateWaistband ? points.bWaistBackSeam : points.bWaistBack) // .line(points.bWaistSideTemp) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line. - .line(points.bWaistSide) + .line(options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) .setRender(false) paths.waistFront = new Path() - .move(points.fWaistSide) - .line(points.fWaistFront) - .line(points.fWaistFrontOverlap) + .move(options.separateWaistband ? points.fWaistSideSeam : points.fWaistSide) + .line(options.separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap) .setRender(false) paths.front = new Path() - .move(points.fWaistFrontOverlap) + .move(options.separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap) .line(points.fHipFrontOverlap) .line(points.fLegFrontOverlap) .setRender(false) paths.back = new Path() .move(points.bLegBackOverlap) .line(points.bHipBackOverlap) - .line(points.bWaistBackOverlap) + .line(options.separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap) .setRender(false) paths.leg = new Path().move(points.fLegFrontOverlap).line(points.bLegBackOverlap).setRender(false) @@ -207,12 +240,12 @@ export default function (part) { .setRender(false) if (options.frontPocket) { - points.frontPocketTop = points.fWaistSide + points.frontPocketTop = points.fWaistSideSeam .shift( 270, options.frontPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ + - waistBand * 2 + waistBand * (options.separateWaistband ? 1 : 2) ) .shift(180, options.frontPocketHorizontalOffset * measurements.seat) @@ -239,7 +272,7 @@ export default function (part) { .shift( 270, options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ + - waistBand * 2 + waistBand * (options.separateWaistband ? 1 : 2) ) points.backPocketLeft = points.bWaistBack .shiftTowards( @@ -250,7 +283,7 @@ export default function (part) { .shift( 270, options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ + - waistBand * 2 + waistBand * (options.separateWaistband ? 1 : 2) ) points.backPocketRight2 = points.backPocketRight.shift( points.backPocketRight.angle(points.backPocketLeft) + 90, From fb3bdef3b25ead4ddea8b5cca9d9bf58b7291e09 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Wed, 10 Aug 2022 05:08:39 +0000 Subject: [PATCH 12/16] waistBand 2 --- designs/waralee/config/index.js | 32 ++++- designs/waralee/src/backpocket.js | 15 ++- designs/waralee/src/cutout.js | 16 ++- designs/waralee/src/facings.js | 69 ++++++----- designs/waralee/src/index.js | 6 +- designs/waralee/src/mini.js | 93 ++++++++------- designs/waralee/src/pants.js | 57 +++++---- designs/waralee/src/pantsproto.js | 81 ++++++------- designs/waralee/src/pocket.js | 4 +- designs/waralee/src/waistband.js | 188 ++++++++++++++++++++++++++++++ 10 files changed, 408 insertions(+), 153 deletions(-) create mode 100644 designs/waralee/src/waistband.js diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index 1ee75e791a1..9f3f2a55d52 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -10,7 +10,7 @@ export default { difficulty: 2, optionGroups: { options: ['showMini'], - fit: ['fitWaist','backRaise', 'waistRaise'], + fit: ['fitWaist', 'backRaise', 'waistRaise'], style: [ 'separateWaistband', 'hemWidth', @@ -20,6 +20,7 @@ export default { 'frontPocketStyle', 'backPocket', 'waistbandWidth', + 'knotInFront', ], advanced: [ 'crotchFront', @@ -35,15 +36,39 @@ export default { dependencies: { backPocket: 'pantsproto', pocket: 'pantsproto', + waistbandFront: 'pantsproto', + waistbandBack: 'pantsproto', + strapFront: 'pantsproto', + strapBack: 'pantsproto', facings: 'pantsproto', cutout: 'pantsproto', mini: 'pantsproto', pants: 'pantsproto', cutout: 'pantsproto', }, - inject: { pants: 'pantsproto', mini: 'pantsproto', cutout: 'pantsproto' }, + inject: { + pants: 'pantsproto', + mini: 'pantsproto', + cutout: 'pantsproto', + waistbandFront: 'pantsproto', + waistbandBack: 'pantsproto', + strapFront: 'pantsproto', + strapBack: 'pantsproto', + }, hide: ['pantsproto'], - parts: ['pants', 'mini', 'cutout', 'pocket', 'backPocket', 'facings', 'pantsproto'], + parts: [ + 'pants', + 'mini', + 'cutout', + 'pocket', + 'backPocket', + 'facings', + 'pantsproto', + 'waistbandFront', + 'waistbandBack', + 'strapFront', + 'strapBack', + ], options: { minimizer: 4, frontPocketVerticalOffset: 0.07, @@ -77,5 +102,6 @@ export default { showMini: { bool: true }, fitWaist: { bool: true }, separateWaistband: { bool: false }, + knotInFront: { bool: true }, }, } diff --git a/designs/waralee/src/backpocket.js b/designs/waralee/src/backpocket.js index cd6a8a0ce3a..821123d563b 100644 --- a/designs/waralee/src/backpocket.js +++ b/designs/waralee/src/backpocket.js @@ -11,10 +11,10 @@ export default function (part) { complete, paperless, macro, - sa + sa, } = part.shorthand() - if( false == options.backPocket ) { + if (false == options.backPocket) { return part } @@ -23,18 +23,18 @@ export default function (part) { points.topLeft = new Point(0, 0) points.bottomLeft = points.topLeft.shift( 270, - (pocketDepth /*+ 30*/) * 2 + - options.backPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) + pocketDepth /*+ 30*/ * 2 + + options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ ) points.topRight = points.topLeft.shift( 0, - options.backPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) /*+ 24*/ + options.backPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/ /*+ 24*/ ) points.bottomRight = points.topRight.shift( 270, - (pocketDepth /*+ 30*/) * 2 + - options.backPocketVerticalOffset * (measurements.crotchDepth /*- measurements.waistToHips*/) + pocketDepth /*+ 30*/ * 2 + + options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ ) paths.seam = new Path() @@ -63,7 +63,6 @@ export default function (part) { .attr('data-text-class', 'center') if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') - } // Paperless? diff --git a/designs/waralee/src/cutout.js b/designs/waralee/src/cutout.js index 4683ccf8ad5..65ff182e3b7 100644 --- a/designs/waralee/src/cutout.js +++ b/designs/waralee/src/cutout.js @@ -14,10 +14,15 @@ export default function (part) { macro, } = part.shorthand() + let separateWaistband = options.separateWaistband + if ('waistband' == options.frontPocketStyle) { + separateWaistband = true + } + paths.seam = new Path() .move(points.mWaist1) .line(points.mWaist2) - .line(options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) + .line(separateWaistband ? points.bWaistSideSeam : points.bWaistSide) .join(paths.backTopCutOut) .join(paths.backBottomCutOut) .join(paths.frontBottomCutOut) @@ -27,7 +32,6 @@ export default function (part) { paths.cutout.setRender(false) - // Complete? if (complete) { points.title = points.mWaist.shift(270, 75) @@ -43,12 +47,12 @@ export default function (part) { if (sa) { paths.seamAlternate = new Path() - .move(options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) + .move(separateWaistband ? points.bWaistSideSeam : points.bWaistSide) .join(paths.backTopCutOut) .join(paths.backBottomCutOut) .join(paths.frontBottomCutOut) .join(paths.frontTopCutOut) - + paths.sa = paths.seamAlternate.offset(sa).attr('class', 'fabric sa') } } @@ -58,12 +62,12 @@ export default function (part) { macro('hd', { from: points.fWaistSide, to: points.mWaist, - y: (options.separateWaistband ? points.fWaistSideCp2 : points.mWaist).y, + y: (separateWaistband ? points.fWaistSideCp2 : points.mWaist).y, }) macro('hd', { from: points.mWaist, to: points.bWaistSide, - y: (options.separateWaistband ? points.fWaistSideCp2 : points.mWaist).y, + y: (separateWaistband ? points.fWaistSideCp2 : points.mWaist).y, }) macro('vd', { from: points.mWaist1, diff --git a/designs/waralee/src/facings.js b/designs/waralee/src/facings.js index a06d5c6c55e..1b2a6a17c76 100644 --- a/designs/waralee/src/facings.js +++ b/designs/waralee/src/facings.js @@ -11,21 +11,21 @@ export default function (part) { complete, paperless, macro, - sa + sa, } = part.shorthand() let frontPocketSize = - options.frontPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) + options.frontPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/ let backPocketSize = - options.backPocketSize * (measurements.crotchDepth /*- measurements.waistToHips*/) + options.backPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/ points.frontTL = new Point(0, 0) - points.frontTR = points.frontTL.shift(0, frontPocketSize +sa +sa) + points.frontTR = points.frontTL.shift(0, frontPocketSize + sa + sa) points.frontBL = points.frontTL.shift(270, frontPocketSize / 2) points.frontBR = points.frontTR.shift(270, frontPocketSize / 2) points.backTL = points.frontBL.shift(270, 50) - points.backTR = points.backTL.shift(0, backPocketSize + sa +sa) + points.backTR = points.backTL.shift(0, backPocketSize + sa + sa) points.backBL = points.backTL.shift(270, backPocketSize / 2) points.backBR = points.backTR.shift(270, backPocketSize / 2) @@ -37,8 +37,9 @@ export default function (part) { .line(points.frontTL) .close() .attr('class', 'fabric') - .setRender(options.frontPocket) - paths.backSeam = new Path() + .setRender(options.frontPocket && 'welt' == options.frontPocketStyle) + + paths.backSeam = new Path() .move(points.backTL) .line(points.backBL) .line(points.backBR) @@ -50,16 +51,16 @@ export default function (part) { // Complete? if (complete) { - if( options.frontPocket ) { + if (options.frontPocket && 'welt' == options.frontPocketStyle) { points.frontTitle = points.frontTL.shift(270, 30).shift(0, 40) macro('title', { nr: 5, at: points.frontTitle.shift(0, 30), title: 'frontFacing', prefix: 'front', - scale: .6 + scale: 0.6, }) - + points.frontLogo = points.frontTitle.shift(270, 0) snippets.frontLogo = new Snippet('logo', points.frontLogo).attr('data-scale', 0.3) points.frontText = points.frontLogo @@ -67,14 +68,14 @@ export default function (part) { .attr('data-text', 'Waralee') .attr('data-text-class', 'center') } - if( options.backPocket ) { + if (options.backPocket) { points.backTitle = points.backTL.shift(270, 30).shift(0, 40) macro('title', { nr: 6, at: points.backTitle.shift(0, 30), title: 'backFacing', prefix: 'back', - scale: .6 + scale: 0.6, }) points.backLogo = points.backTitle.shift(270, 0) snippets.backLogo = new Snippet('logo', points.backLogo).attr('data-scale', 0.3) @@ -86,26 +87,30 @@ export default function (part) { } // Paperless? if (paperless) { - macro('hd', { - from: points.frontTL, - to: points.frontTR, - y: points.frontTL.y + 15, - }) - macro('hd', { - from: points.backTL, - to: points.backTR, - y: points.backTL.y + 15, - }) - macro('vd', { - from: points.frontTL, - to: points.frontBL, - x: points.frontTL.x + 15, - }) - macro('vd', { - from: points.backTL, - to: points.backBL, - x: points.backTL.x + 15, - }) + if (options.frontPocket && 'welt' == options.frontPocketStyle) { + macro('hd', { + from: points.frontTL, + to: points.frontTR, + y: points.frontTL.y + 15, + }) + macro('vd', { + from: points.frontTL, + to: points.frontBL, + x: points.frontTL.x + 15, + }) + } + if (options.backPocket) { + macro('hd', { + from: points.backTL, + to: points.backTR, + y: points.backTL.y + 15, + }) + macro('vd', { + from: points.backTL, + to: points.backBL, + x: points.backTL.x + 15, + }) + } } return part diff --git a/designs/waralee/src/index.js b/designs/waralee/src/index.js index a417b60a1e5..0e97c7f1806 100644 --- a/designs/waralee/src/index.js +++ b/designs/waralee/src/index.js @@ -8,6 +8,7 @@ import draftPocket from './pocket' import draftBackPocket from './backpocket' import draftFacings from './facings' import draftMini from './mini' +import draftWaistband from './waistband' // Create new design const Waralee = new freesewing.Design(config, plugins) @@ -19,8 +20,11 @@ Waralee.prototype.draftCutout = draftCutout Waralee.prototype.draftPocket = draftPocket Waralee.prototype.draftBackPocket = draftBackPocket Waralee.prototype.draftFacings = draftFacings +Waralee.prototype.draftWaistbandFront = (part) => draftWaistband('waistBandFront', part) +Waralee.prototype.draftWaistbandBack = (part) => draftWaistband('waistBandBack', part) +Waralee.prototype.draftStrapFront = (part) => draftWaistband('strapFront', part) +Waralee.prototype.draftStrapBack = (part) => draftWaistband('strapBack', part) Waralee.prototype.draftMini = draftMini - // Named exports export { config, Waralee } diff --git a/designs/waralee/src/mini.js b/designs/waralee/src/mini.js index b7c76961cc3..64a43439931 100644 --- a/designs/waralee/src/mini.js +++ b/designs/waralee/src/mini.js @@ -20,6 +20,10 @@ export default function (part) { } = part.shorthand() let mini = options.minimizer + let separateWaistband = options.separateWaistband + if ('waistband' == options.frontPocketStyle) { + separateWaistband = true + } for (var p in points) { points[p].x = points[p].x / mini @@ -42,10 +46,10 @@ export default function (part) { .attr('class', 'fabric stroke-sm') paths.cutOut = new Path() - .move(options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) + .move(separateWaistband ? points.bWaistSideSeam : points.bWaistSide) .line(points.mWaist2) .line(points.mWaist1) - .line(options.separateWaistband ? points.fWaistSideSeam : points.fWaistSide) + .line(separateWaistband ? points.fWaistSideSeam : points.fWaistSide) .attr('class', 'help') paths.seam.setRender(true) @@ -54,83 +58,94 @@ export default function (part) { if (complete) { macro('scalebox', { at: points.mLeg.shift(-90, 35) }) - if( options.frontPocket ) {paths.frontPocket.setRender( true )} - if( options.backPocket ) {paths.backPocket.setRender( true )} - - if (sa) { - paths.sa = paths.seam.offset(sa /mini).attr('class', 'fabric sa') + if (options.frontPocket && 'welt' == options.frontPocketStyle) { + paths.frontPocket.setRender(true) + } + if (options.backPocket) { + paths.backPocket.setRender(true) } - points.pText1 = points.mHip.shiftFractionTowards(points.mLeg, .5) - .attr("data-text", "thisIsNotAPart") - .attr("data-text-class", "center"); - points.pText2 = points.mHip.shiftFractionTowards(points.mLeg, .6) - .attr("data-text", "doNotCutFromFabric") - .attr("data-text-class", "center"); - points.pText3 = points.mHip.shiftFractionTowards(points.mLeg, .7) - .attr("data-text", "useMeasurementsToCutFromFabric") - .attr("data-text-class", "center"); + if (sa) { + paths.sa = paths.seam.offset(sa / mini).attr('class', 'fabric sa') + } + + points.pText1 = points.mHip + .shiftFractionTowards(points.mLeg, 0.5) + .attr('data-text', 'thisIsNotAPart') + .attr('data-text-class', 'center') + points.pText2 = points.mHip + .shiftFractionTowards(points.mLeg, 0.6) + .attr('data-text', 'doNotCutFromFabric') + .attr('data-text-class', 'center') + points.pText3 = points.mHip + .shiftFractionTowards(points.mLeg, 0.7) + .attr('data-text', 'useMeasurementsToCutFromFabric') + .attr('data-text-class', 'center') + + let fWaistSide = separateWaistband ? points.fWaistSideSeam : points.fWaistSide + let fWaistFrontOverlap = separateWaistband + ? points.fWaistFrontOverlapSeam + : points.fWaistFrontOverlap + let bWaistSide = separateWaistband ? points.bWaistSideSeam : points.bWaistSide + let bWaistBackOverlap = separateWaistband + ? points.bWaistBackOverlapSeam + : points.bWaistBackOverlap - let fWaistSide = (options.separateWaistband ? points.fWaistSideSeam : points.fWaistSide) - let fWaistFrontOverlap = (options.separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap) - let bWaistSide = (options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) - let bWaistBackOverlap = (options.separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap) - macro('hd', { from: points.fWaistFrontOverlap, to: fWaistSide, - y: fWaistSide.y +10, + y: fWaistSide.y + 10, text: part.units(fWaistSide.dist(points.fWaistFrontOverlap) * mini), }) macro('hd', { from: points.fLegFrontOverlap, to: points.bLegBackOverlap, - y: points.bLegBackOverlap.y -10, + y: points.bLegBackOverlap.y - 10, text: part.units(points.fLegFrontOverlap.dist(points.bLegBackOverlap) * mini), }) macro('hd', { from: points.bWaistBack, to: points.bWaistBackOverlap, - y: points.bWaistBackOverlap.y +20, + y: points.bWaistBackOverlap.y + 20, text: part.units(points.bWaistBackOverlap.dist(points.bWaistBack) * mini), }) macro('hd', { from: points.fWaistFrontOverlap, to: points.mHip, - y: points.mHip.y +10, - text: part.units((points.mHip.x -points.fWaistFrontOverlap.x) * mini), + y: points.mHip.y + 10, + text: part.units((points.mHip.x - points.fWaistFrontOverlap.x) * mini), }) macro('vd', { from: fWaistFrontOverlap, to: points.fLegFrontOverlap, - x: points.fLegFrontOverlap.x +10, + x: points.fLegFrontOverlap.x + 10, text: part.units(fWaistFrontOverlap.dist(points.fLegFrontOverlap) * mini), }) macro('vd', { from: points.bLegBackOverlap, to: bWaistBackOverlap, - x: points.bLegBackOverlap.x -10, + x: points.bLegBackOverlap.x - 10, text: part.units(bWaistBackOverlap.dist(points.bLegBackOverlap) * mini), }) macro('vd', { from: points.bLegBackOverlap, to: bWaistSide, - x: bWaistSide.x +10, - text: part.units((points.bLegBackOverlap.y -bWaistSide.y) * mini), + x: bWaistSide.x + 10, + text: part.units((points.bLegBackOverlap.y - bWaistSide.y) * mini), }) - if (options.frontPocket) { + if (options.frontPocket && 'welt' == options.frontPocketStyle) { macro('hd', { from: fWaistFrontOverlap, to: points.frontPocketBottom2, - y: points.frontPocketBottom2.y +20, - text: part.units((points.frontPocketBottom2.x -fWaistFrontOverlap.x) * mini), + y: points.frontPocketBottom2.y + 20, + text: part.units((points.frontPocketBottom2.x - fWaistFrontOverlap.x) * mini), }) macro('vd', { from: fWaistFrontOverlap, to: points.frontPocketBottom2, - x: points.frontPocketBottom2.x +20, - text: part.units((points.frontPocketBottom2.y -fWaistFrontOverlap.y) * mini), + x: points.frontPocketBottom2.x + 20, + text: part.units((points.frontPocketBottom2.y - fWaistFrontOverlap.y) * mini), }) } @@ -138,19 +153,19 @@ export default function (part) { macro('hd', { from: points.backPocketRight, to: bWaistBackOverlap, - y: bWaistBackOverlap.y +40, - text: part.units((bWaistBackOverlap.x -points.backPocketRight.x) * mini), + y: bWaistBackOverlap.y + 40, + text: part.units((bWaistBackOverlap.x - points.backPocketRight.x) * mini), }) macro('vd', { from: bWaistBackOverlap, to: points.backPocketRight, x: points.backPocketRight.x, - text: part.units((points.backPocketRight.y -bWaistBackOverlap.y) * mini), + text: part.units((points.backPocketRight.y - bWaistBackOverlap.y) * mini), }) } } - part.render = options.showMini + part.render = options.showMini return part } diff --git a/designs/waralee/src/pants.js b/designs/waralee/src/pants.js index 554e90fc738..068cbc5101f 100644 --- a/designs/waralee/src/pants.js +++ b/designs/waralee/src/pants.js @@ -2,16 +2,21 @@ export default function (part) { let { options, points, Path, paths, Snippet, snippets, complete, sa, paperless, macro, store } = part.shorthand() - if( false == options.separateWaistband ) { - paths.waistFoldBack = new Path() - .move(points.bWaistSideHem) - .line(options.separateWaistband ? points.bWaistBackSeam : points.bWaistBackHem) - .line(options.separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlapHem) - .attr('class', 'fabric stroke-sm') - paths.waistFoldFront = new Path() - .move(points.fWaistSideHem) - .line(points.fWaistFrontOverlapHem) - .attr('class', 'fabric stroke-sm') + let separateWaistband = options.separateWaistband + if ('waistband' == options.frontPocketStyle) { + separateWaistband = true + } + + if (false == separateWaistband) { + paths.waistFoldBack = new Path() + .move(points.bWaistSideHem) + .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBackHem) + .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlapHem) + .attr('class', 'fabric stroke-sm') + paths.waistFoldFront = new Path() + .move(points.fWaistSideHem) + .line(points.fWaistFrontOverlapHem) + .attr('class', 'fabric stroke-sm') } paths.frontFold = paths.front.offset(-1 * store.get('hem')).attr('class', 'fabric stroke-sm') @@ -38,13 +43,17 @@ export default function (part) { if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') } - if( options.frontPocket ) {paths.frontPocket.setRender( true )} - if( options.backPocket ) {paths.backPocket.setRender( true )} - + if (options.frontPocket && 'welt' == options.frontPocketStyle) { + paths.frontPocket.setRender(true) + } + if (options.backPocket) { + paths.backPocket.setRender(true) + } + // Paperless? if (paperless) { - let fWaistSide = (options.separateWaistband ? points.fWaistSideSeam : points.fWaistSide) - let bWaistSide = (options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) + let fWaistSide = separateWaistband ? points.fWaistSideSeam : points.fWaistSide + let bWaistSide = separateWaistband ? points.bWaistSideSeam : points.bWaistSide macro('hd', { from: fWaistSide, to: points.mWaist1, @@ -62,12 +71,12 @@ export default function (part) { }) macro('hd', { from: points.mWaist1, - to: options.separateWaistband ? points.bWaistBackSeam : points.bWaistBack, + to: separateWaistband ? points.bWaistBackSeam : points.bWaistBack, y: bWaistSide.y - sa - 15, }) macro('hd', { from: points.mWaist1, - to: options.separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlap, + to: separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlap, y: bWaistSide.y - sa - 30, }) macro('vd', { @@ -77,23 +86,23 @@ export default function (part) { }) macro('vd', { from: bWaistSide, - to: options.separateWaistband ? points.bWaistBackSeam : points.bWaistBack, + to: separateWaistband ? points.bWaistBackSeam : points.bWaistBack, x: bWaistSide.x + 15, }) macro('vd', { - from: options.separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlap, + from: separateWaistband ? points.bWaistBackSeam : points.bWaistBackOverlap, to: points.bLegBackOverlap, x: points.bLegBackOverlap.x - 30, }) - if( false == options.separateWaistband ) { + if (false == separateWaistband) { macro('vd', { from: points.fWaistSide, to: points.fWaistSideHem, - x: points.fWaistSide.x +10, + x: points.fWaistSide.x + 10, }) } - if (options.frontPocket) { + if (options.frontPocket && 'welt' == options.frontPocketStyle) { macro('vd', { from: fWaistSide, to: points.frontPocketTop, @@ -115,6 +124,7 @@ export default function (part) { y: points.frontPocketBottom.y, }) } + if (options.backPocket) { macro('vd', { from: bWaistSide, @@ -138,7 +148,8 @@ export default function (part) { }) } } - part.render = (options.showMini == false) + + part.render = options.showMini == false return part } diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index 9275013591c..617eeff0092 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -13,7 +13,14 @@ export default function (part) { ? waist / 2 : measurements.waistBack - if( circumference < waist ) {circumference = waist} + let separateWaistband = options.separateWaistband + if ('waistband' == options.frontPocketStyle) { + separateWaistband = true + } + + if (circumference < waist) { + circumference = waist + } let circumference4 = circumference / 4 let hem = measurements.inseam * options.hemWidth @@ -23,7 +30,6 @@ export default function (part) { points.mWaist = new Point(0, 0) - points.mHip = points.mWaist.shift(270, seatDepth) points.fWaistSide = points.mWaist @@ -31,7 +37,7 @@ export default function (part) { .shift(90, waistBand) points.fWaistCrotchCP = points.fWaistSide.shift( 270, - seatDepth * options.crotchFactorFrontVer +waistBand + seatDepth * options.crotchFactorFrontVer + waistBand ) points.fHipCrotchCP = points.mHip.shift( 180, @@ -73,8 +79,8 @@ export default function (part) { waistSeatDifferenceFront * options.frontWaistAdjustment ) - console.log({adjustmentBack: waistSeatDifferenceBack * options.backWaistAdjustment}) - console.log({adjustmentFront: waistSeatDifferenceFront * options.frontWaistAdjustment}) + console.log({ adjustmentBack: waistSeatDifferenceBack * options.backWaistAdjustment }) + console.log({ adjustmentFront: waistSeatDifferenceFront * options.frontWaistAdjustment }) points.mLeg = points.mHip.shift(270, measurements.inseam * (1 - options.legShortening)) points.fLegSide = points.mLeg.shift(180, options.crotchFront * circumference4) @@ -147,18 +153,18 @@ export default function (part) { .setRender(false) points.fWaistSideHem = paths.frontTopCutOut.reverse().shiftAlong(waistBand) - points.fWaistSideSeam = paths.frontTopCutOut.reverse().shiftAlong(waistBand*2) + points.fWaistSideSeam = paths.frontTopCutOut.reverse().shiftAlong(waistBand * 2) points.fWaistSide = points.fWaistSideSeam.flipY(points.fWaistSideHem) points.bWaistSideHem = paths.backTopCutOut.shiftAlong(waistBand) - points.bWaistSideSeam = paths.backTopCutOut.shiftAlong(waistBand*2) + points.bWaistSideSeam = paths.backTopCutOut.shiftAlong(waistBand * 2) points.bWaistSide = points.bWaistSideSeam.flipY(points.bWaistSideHem) points.fWaistFrontOverlapHem = points.fWaistFrontOverlap.shift(270, waistBand) points.bWaistBackHem = points.bWaistBack.shift(270, waistBand) points.bWaistBackOverlapHem = points.bWaistBackOverlap.shift(270, waistBand) - points.fWaistFrontOverlapSeam = points.fWaistFrontOverlap.shift(270, waistBand*2) - points.bWaistBackSeam = points.bWaistBack.shift(270, waistBand*2) - points.bWaistBackOverlapSeam = points.bWaistBackOverlap.shift(270, waistBand*2) + points.fWaistFrontOverlapSeam = points.fWaistFrontOverlap.shift(270, waistBand * 2) + points.bWaistBackSeam = points.bWaistBack.shift(270, waistBand * 2) + points.bWaistBackOverlapSeam = points.bWaistBackOverlap.shift(270, waistBand * 2) points.fWaistSideCp2 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp2.clone() points.fWaistSideCp2 = paths.frontTopCutOut.split(points.fWaistSideSeam)[0].ops[1].cp2.clone() @@ -166,40 +172,37 @@ export default function (part) { points.bWaistSideCp1 = paths.backTopCutOut.split(points.bWaistSideSeam)[1].ops[1].cp1.clone() points.bWaistHipCp2 = paths.backTopCutOut.split(points.bWaistSideSeam)[1].ops[1].cp2.clone() - if( options.separateWaistband ) { - points.mWaist1 = new Point(points.mWaist.x, points.fWaistSideSeam.y) - // points.mWaist = new Point(points.mWaist.x, points.fWaistSideSeam.y) - } else { - points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) + if (separateWaistband) { + points.mWaist1 = new Point(points.mWaist.x, points.fWaistSideSeam.y) + // points.mWaist = new Point(points.mWaist.x, points.fWaistSideSeam.y) + } else { + points.mWaist1 = new Point(points.mWaist.x, points.fWaistSide.y) } - if( options.separateWaistband ) { - points.mWaist2 = new Point(points.mWaist.x, points.bWaistSideSeam.y) - } else { - points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) + if (separateWaistband) { + points.mWaist2 = new Point(points.mWaist.x, points.bWaistSideSeam.y) + } else { + points.mWaist2 = new Point(points.mWaist.x, points.bWaistSide.y) } paths.frontTopCutOut = new Path() .move(points.fCutOutHip) .curve(points.fCutOutHipCp1, points.fWaistSideCp2, points.fWaistSideSeam) .setRender(false) - if( false == options.separateWaistband ) { + if (false == separateWaistband) { paths.frontTopCutOut.line(points.fWaistSideHem) paths.frontTopCutOut.line(points.fWaistSide) } - if( false == options.separateWaistband ) { + if (false == separateWaistband) { paths.backTopCutOut = new Path() .move(points.bWaistSide) .line(points.bWaistSideHem) .line(points.bWaistSideSeam) } else { - paths.backTopCutOut = new Path() - .move(points.bWaistSideSeam) + paths.backTopCutOut = new Path().move(points.bWaistSideSeam) } - paths.backTopCutOut.curve(points.bWaistSideCp1, points.bCutOutHipCp2, points.bCutOutHip) - .setRender(false) - - points.bCutOutHip.attr('data-text', 'X') - .attr('data-text-class', 'center') + paths.backTopCutOut + .curve(points.bWaistSideCp1, points.bCutOutHipCp2, points.bCutOutHip) + .setRender(false) paths.cutout = paths.backTopCutOut .join(paths.backBottomCutOut) @@ -208,24 +211,24 @@ export default function (part) { .setRender(false) paths.waistBack = new Path() - .move(options.separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap) - .line(options.separateWaistband ? points.bWaistBackSeam : points.bWaistBack) + .move(separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap) + .line(separateWaistband ? points.bWaistBackSeam : points.bWaistBack) // .line(points.bWaistSideTemp) // This is a trick to make the offset() call work. Without it, the offset is crossing the cutout line. - .line(options.separateWaistband ? points.bWaistSideSeam : points.bWaistSide) + .line(separateWaistband ? points.bWaistSideSeam : points.bWaistSide) .setRender(false) paths.waistFront = new Path() - .move(options.separateWaistband ? points.fWaistSideSeam : points.fWaistSide) - .line(options.separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap) + .move(separateWaistband ? points.fWaistSideSeam : points.fWaistSide) + .line(separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap) .setRender(false) paths.front = new Path() - .move(options.separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap) + .move(separateWaistband ? points.fWaistFrontOverlapSeam : points.fWaistFrontOverlap) .line(points.fHipFrontOverlap) .line(points.fLegFrontOverlap) .setRender(false) paths.back = new Path() .move(points.bLegBackOverlap) .line(points.bHipBackOverlap) - .line(options.separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap) + .line(separateWaistband ? points.bWaistBackOverlapSeam : points.bWaistBackOverlap) .setRender(false) paths.leg = new Path().move(points.fLegFrontOverlap).line(points.bLegBackOverlap).setRender(false) @@ -245,7 +248,7 @@ export default function (part) { 270, options.frontPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ + - waistBand * (options.separateWaistband ? 1 : 2) + waistBand * (separateWaistband ? 1 : 2) ) .shift(180, options.frontPocketHorizontalOffset * measurements.seat) @@ -272,7 +275,7 @@ export default function (part) { .shift( 270, options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ + - waistBand * (options.separateWaistband ? 1 : 2) + waistBand * (separateWaistband ? 1 : 2) ) points.backPocketLeft = points.bWaistBack .shiftTowards( @@ -283,7 +286,7 @@ export default function (part) { .shift( 270, options.backPocketVerticalOffset * measurements.crotchDepth /*- measurements.waistToHips*/ + - waistBand * (options.separateWaistband ? 1 : 2) + waistBand * (separateWaistband ? 1 : 2) ) points.backPocketRight2 = points.backPocketRight.shift( points.backPocketRight.angle(points.backPocketLeft) + 90, @@ -306,7 +309,7 @@ export default function (part) { part.render = false - console.log({part:part}) + console.log({ part: part }) return part } diff --git a/designs/waralee/src/pocket.js b/designs/waralee/src/pocket.js index 0229da5a981..521fdf17854 100644 --- a/designs/waralee/src/pocket.js +++ b/designs/waralee/src/pocket.js @@ -14,10 +14,10 @@ export default function (part) { macro, } = part.shorthand() - if( false == options.frontPocket ) { + if (false == options.frontPocket) { return part } - + let pocketDepth = (measurements.crotchDepth - measurements.waistToHips) * options.frontPocketDepthFactor diff --git a/designs/waralee/src/waistband.js b/designs/waralee/src/waistband.js new file mode 100644 index 00000000000..40262485a73 --- /dev/null +++ b/designs/waralee/src/waistband.js @@ -0,0 +1,188 @@ +export default function (type, part) { + let { + options, + measurements, + Point, + Path, + points, + paths, + Snippet, + snippets, + complete, + paperless, + macro, + sa, + store, + } = part.shorthand() + + const WidthReduction = 6 + let waistBand = store.get('waistBand') + let waistBandLengthFront = points.fWaistSideHem.dist(points.fWaistFrontOverlapHem) + let waistBandLengthBack = + points.bWaistSideHem.dist(points.bWaistBackHem) + + points.bWaistBackHem.dist(points.bWaistBackOverlapHem) + + let strapLength = measurements.waist + measurements.crotchDepth * 1.75 + let partNr = 0 + let partN = 0 + + switch (type) { + case 'waistBandFront': + if (false == options.separateWaistband && 'welt' == options.frontPocketStyle) { + return part + } + partNr = 9 + points.tr = points.fWaistSide + points.mr = points.fWaistSideHem + points.br = points.fWaistSideSeam + points.ml = points.fWaistSideHem.shift(180, (waistBandLengthFront / WidthReduction) * 2) + points.tl = points.ml.shift(90, waistBand) + points.bl = points.ml.shift(270, waistBand) + + macro('hd', { + from: points.ml, + to: points.mr, + y: points.mr.y, + text: part.units(waistBandLengthFront), + }) + + break + + case 'waistBandBack': + if (false == options.separateWaistband && 'welt' == options.frontPocketStyle) { + return part + } + partNr = 10 + points.tl = points.bWaistSide + points.ml = points.bWaistSideHem + points.bl = points.bWaistSideSeam + points.mr = points.bWaistSideHem.shift(0, (waistBandLengthBack / WidthReduction) * 2) + points.tr = points.mr.shift(90, waistBand) + points.br = points.mr.shift(270, waistBand) + + macro('hd', { + from: points.ml, + to: points.mr, + y: points.mr.y, + text: part.units(waistBandLengthBack), + }) + + break + + case 'strapFront': + partNr = 7 + strapLength -= waistBandLengthFront * 2 + strapLength += options.knotInFront ? measurements.waist / 2 : 0 + + points.mr = new Point(0, 0) + points.tr = points.mr.shift(90, waistBand) + points.br = points.mr.shift(270, waistBand) + points.ml = points.mr.shift(180, (waistBandLengthFront / WidthReduction) * 2) + points.tl = points.ml.shift(90, waistBand) + points.bl = points.ml.shift(270, waistBand) + + macro('hd', { + from: points.ml, + to: points.mr, + y: points.mr.y, + text: part.units(strapLength), + }) + + break + + case 'strapBack': + partNr = 8 + strapLength -= waistBandLengthBack * 2 + strapLength += options.knotInFront ? 0 : measurements.waist / 2 + + points.mr = new Point(0, 0) + points.tr = points.mr.shift(90, waistBand) + points.br = points.mr.shift(270, waistBand) + points.ml = points.mr.shift(180, (waistBandLengthFront / WidthReduction) * 2) + points.tl = points.ml.shift(90, waistBand) + points.bl = points.ml.shift(270, waistBand) + + macro('hd', { + from: points.ml, + to: points.mr, + y: points.mr.y, + text: part.units(strapLength), + }) + + break + } + + points.zigzagTop = points.tr.shift(180, waistBandLengthFront / WidthReduction) + points.zigzagTopR = points.zigzagTop.shift(0, waistBand / 8) + points.zigzagTopT = points.zigzagTop.shift(90, waistBand / 4) + points.zigzagTopL = points.zigzagTop.shift(180, waistBand / 8) + points.zigzagTopB = points.zigzagTop.shift(270, waistBand / 4) + points.zigzagBottom = points.br.shift(180, waistBandLengthFront / WidthReduction) + points.zigzagBottomR = points.zigzagBottom.shift(0, waistBand / 8) + points.zigzagBottomT = points.zigzagBottom.shift(90, waistBand / 4) + points.zigzagBottomL = points.zigzagBottom.shift(180, waistBand / 8) + points.zigzagBottomB = points.zigzagBottom.shift(270, waistBand / 4) + + paths.ZZtop = new Path() + .move(points.zigzagTopR) + .line(points.zigzagTopT) + .line(points.zigzagTopB) + .line(points.zigzagTopL) + .attr('class', 'dotted') + paths.ZZbottom = new Path() + .move(points.zigzagBottomR) + .line(points.zigzagBottomT) + .line(points.zigzagBottomB) + .line(points.zigzagBottomL) + .attr('class', 'dotted') + paths.right = new Path() + .move(points.zigzagBottomR) + .line(points.br) + .line(points.mr) + .line(points.tr) + .line(points.zigzagTopR) + paths.left = new Path() + .move(points.zigzagBottomL) + .line(points.bl) + .line(points.ml) + .line(points.tl) + .line(points.zigzagTopL) + + paths.seam = new Path() + .move(points.br) + .line(points.mr) + .line(points.tr) + .line(points.tl) + .line(points.ml) + .line(points.bl) + .line(points.br) + .close() + .setRender(false) + + // Complete? + if (complete) { + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + + points.title = points.tl.shiftFractionTowards(points.br, 0.2).shift(270, 20) + macro('title', { + nr: partNr, + at: points.title, + title: type, + prefix: 'front', + scale: 0.4, + }) + + points.logo = points.tl.shiftFractionTowards(points.br, 0.8) + snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.3) + } + // Paperless? + if (paperless) { + macro('vd', { + from: points.tr, + to: points.br, + x: points.br.x + sa + 10, + }) + } + + return part +} From 89497956197213d363db55b200f03f92ac144dd6 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Wed, 24 Aug 2022 15:19:15 +0000 Subject: [PATCH 13/16] Tweaks --- designs/waralee/config/index.js | 3 ++- designs/waralee/src/pantsproto.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index 9f3f2a55d52..d1236056373 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -80,12 +80,13 @@ export default { backPocketVerticalOffset: 0.2, backPocketHorizontalOffset: 0.045, backPocketSize: 0.45, - backWaistAdjustment: 0.14, + backWaistAdjustment: 0.3, frontPocket: { bool: true }, frontPocketStyle: { dflt: 'welt', list: ['welt', 'waistband'], }, + crotchEase: 1.08, backPocket: { bool: true }, hemWidth: { pct: 1.75, min: 1, max: 2.5 }, waistbandWidth: { pct: 3.5, min: 2, max: 5 }, diff --git a/designs/waralee/src/pantsproto.js b/designs/waralee/src/pantsproto.js index 617eeff0092..b5fbf2379f7 100644 --- a/designs/waralee/src/pantsproto.js +++ b/designs/waralee/src/pantsproto.js @@ -2,7 +2,7 @@ export default function (part) { let { options, measurements, Point, Path, points, paths, store } = part.shorthand() let seatDepth = - measurements.crotchDepth /* - measurements.waistToHips */ * (1 + options.waistRaise) + measurements.crotchDepth /* - measurements.waistToHips */ * (1 + options.waistRaise) *options.crotchEase let circumference = measurements.seat let waist = typeof measurements.waist == 'undefined' || false == options.fitWaist @@ -65,7 +65,7 @@ export default function (part) { points.bCutOutHip = new Path() .move(points.bWaistSide) .curve(points.bWaistCrotchCP, points.bHipCrotchCP, points.mHip) - .shiftAlong(measurements.waistToHips + waistBand) + .shiftAlong(measurements.waistToHips + waistBand +(options.backRaise * seatDepth)) let waistSeatDifferenceBack = measurements.seat / 2 - waistBack let waistSeatDifferenceFront = measurements.seat / 2 - (waist - waistBack) From 0c98a1d62a57dc2bec2437a8255a75ceda7e2949 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Mon, 5 Sep 2022 19:16:42 +0000 Subject: [PATCH 14/16] Pocket adjustment --- designs/waralee/src/pocket.js | 87 +++++++++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 18 deletions(-) diff --git a/designs/waralee/src/pocket.js b/designs/waralee/src/pocket.js index 521fdf17854..5cafc8a9498 100644 --- a/designs/waralee/src/pocket.js +++ b/designs/waralee/src/pocket.js @@ -18,19 +18,24 @@ export default function (part) { return part } + const c = 0.55191502449351 + let pocketDepth = (measurements.crotchDepth - measurements.waistToHips) * options.frontPocketDepthFactor + let frontPocketSize = + options.frontPocketSize * measurements.crotchDepth /*- measurements.waistToHips*/ - points.topLeft = new Point(0, 0) - points.bottomLeft = points.topLeft.shift(270, pocketDepth) - - points.topRight = points.topLeft.shift(0, pocketDepth * (1 / 3)) - points.bottomRight = points.topRight.shift(290, pocketDepth * (5 / 6)) - - points.bottomLeftCP = points.bottomLeft.shift(0, pocketDepth * (1 / 6)) - points.bottomRightCP = points.bottomRight.shift(225, pocketDepth * (1 / 4)) - - paths.seam = new Path() + if( 'welt' == options.frontPocketStyle ) { + points.topLeft = new Point(0, 0) + points.bottomLeft = points.topLeft.shift(270, pocketDepth) + + points.topRight = points.topLeft.shift(0, pocketDepth * (1 / 3)) + points.bottomRight = points.topRight.shift(290, pocketDepth * (5 / 6)) + + points.bottomLeftCP = points.bottomLeft.shift(0, pocketDepth * (1 / 6)) + points.bottomRightCP = points.bottomRight.shift(225, pocketDepth * (1 / 4)) + + paths.seam = new Path() .move(points.topLeft) .line(points.bottomLeft) .curve(points.bottomLeftCP, points.bottomRightCP, points.bottomRight) @@ -38,15 +43,34 @@ export default function (part) { .line(points.topLeft) .close() .attr('class', 'fabric') + } else { + points.topLeft = new Point(0, 0) + points.topRight = points.topLeft.shift( 0, frontPocketSize ) + points.bottomLeft = points.topLeft.shift( 270, frontPocketSize *1.5) + points.bottomRight = points.topRight.shift( 270, frontPocketSize *1.5) + points.bottomLeftCornerUp = points.bottomLeft.shift( 90, frontPocketSize /4 ) + points.bottomLeftCornerUpCp1 = points.bottomLeftCornerUp.shift( 270, (frontPocketSize /4) *c ) + points.bottomLeftCornerOver = points.bottomLeft.shift( 0, frontPocketSize /4 ) + points.bottomLeftCornerOverCp2 = points.bottomLeftCornerOver.shift( 180, (frontPocketSize /4) *c ) + points.bottomRightCornerUp = points.bottomRight.shift( 90, frontPocketSize /4 ) + points.bottomRightCornerUpCp2 = points.bottomRightCornerUp.shift( 270, (frontPocketSize /4) *c ) + points.bottomRightCornerOver = points.bottomRight.shift( 180, frontPocketSize /4 ) + points.bottomRightCornerOverCp1 = points.bottomRightCornerOver.shift(0, (frontPocketSize /4) *c ) + + paths.seam = new Path() + .move(points.topLeft) + .line(points.bottomLeftCornerUp) + .curve(points.bottomLeftCornerUpCp1,points.bottomLeftCornerOverCp2,points.bottomLeftCornerOver) + .line(points.bottomRightCornerOver) + .curve(points.bottomRightCornerOverCp1,points.bottomRightCornerUpCp2,points.bottomRightCornerUp) + .line(points.topRight) + .line(points.topLeft) + .close() + .attr('class', 'fabric') + } // Complete? if (complete) { - macro('cutonfold', { - from: points.topLeft, - to: points.bottomLeft, - margin: 5, - offset: 10, - }) points.title = points.topLeft.shift(270, 75).shift(0, 50) macro('title', { nr: 3, @@ -61,8 +85,17 @@ export default function (part) { .attr('data-text', 'Waralee') .attr('data-text-class', 'center') + if( 'welt' == options.frontPocketStyle ) { + macro('cutonfold', { + from: points.topLeft, + to: points.bottomLeft, + margin: 5, + offset: 10, + }) + } if (sa) { - paths.sa = new Path() + if( 'welt' == options.frontPocketStyle ) { + paths.sa = new Path() .move(points.bottomLeft) .join( new Path() @@ -74,12 +107,17 @@ export default function (part) { ) .line(points.topLeft) .attr('class', 'fabric sa') + } else { + paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') + } } + } // Paperless? if (paperless) { - macro('hd', { + if( 'welt' == options.frontPocketStyle ) { + macro('hd', { from: points.topLeft, to: points.topRight, y: points.topLeft.y + 15, @@ -104,6 +142,19 @@ export default function (part) { to: points.bottomLeft, x: points.bottomRight.x, }) + } else { + macro('hd', { + from: points.topLeft, + to: points.topRight, + y: points.topLeft.y + 15, + }) + macro('vd', { + from: points.topLeft, + to: points.bottomLeftCornerOver, + x: points.bottomLeftCornerOver.x, + }) + + } } return part From 64ac4718aca7269ac2c8c989c522a6f9db97566b Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Mon, 5 Sep 2022 19:41:54 +0000 Subject: [PATCH 15/16] Documentation additions for new options. --- markdown/org/docs/patterns/waralee/options/fitwaist/en.md | 6 ++++++ .../docs/patterns/waralee/options/frontpocketstyle/en.md | 5 +++++ .../org/docs/patterns/waralee/options/knotinfront/en.md | 6 ++++++ .../docs/patterns/waralee/options/separatewaistband/en.md | 8 ++++++++ markdown/org/docs/patterns/waralee/options/showmini/en.md | 7 +++++++ 5 files changed, 32 insertions(+) create mode 100644 markdown/org/docs/patterns/waralee/options/fitwaist/en.md create mode 100644 markdown/org/docs/patterns/waralee/options/frontpocketstyle/en.md create mode 100644 markdown/org/docs/patterns/waralee/options/knotinfront/en.md create mode 100644 markdown/org/docs/patterns/waralee/options/separatewaistband/en.md create mode 100644 markdown/org/docs/patterns/waralee/options/showmini/en.md diff --git a/markdown/org/docs/patterns/waralee/options/fitwaist/en.md b/markdown/org/docs/patterns/waralee/options/fitwaist/en.md new file mode 100644 index 00000000000..3594f733f51 --- /dev/null +++ b/markdown/org/docs/patterns/waralee/options/fitwaist/en.md @@ -0,0 +1,6 @@ +--- +title: "Fit waist" +--- + +This setting uses the waist measurement to adjust the shaping of the front and back. It will draw in the +waist above the hips if your measurements indicate that the pattern should for a better fit. \ No newline at end of file diff --git a/markdown/org/docs/patterns/waralee/options/frontpocketstyle/en.md b/markdown/org/docs/patterns/waralee/options/frontpocketstyle/en.md new file mode 100644 index 00000000000..265fbcef41b --- /dev/null +++ b/markdown/org/docs/patterns/waralee/options/frontpocketstyle/en.md @@ -0,0 +1,5 @@ +--- +title: "Front pocket style" +--- + +Change the front pocket from welt pocket to one that is hidden in the front seam. \ No newline at end of file diff --git a/markdown/org/docs/patterns/waralee/options/knotinfront/en.md b/markdown/org/docs/patterns/waralee/options/knotinfront/en.md new file mode 100644 index 00000000000..050136b8a2a --- /dev/null +++ b/markdown/org/docs/patterns/waralee/options/knotinfront/en.md @@ -0,0 +1,6 @@ +--- +title: "Knot in Front" +--- + +Normally the Waralee is closed with the tie in the front. This allows you to change +that to a bow tie in the back. \ No newline at end of file diff --git a/markdown/org/docs/patterns/waralee/options/separatewaistband/en.md b/markdown/org/docs/patterns/waralee/options/separatewaistband/en.md new file mode 100644 index 00000000000..cb7fa3b2b66 --- /dev/null +++ b/markdown/org/docs/patterns/waralee/options/separatewaistband/en.md @@ -0,0 +1,8 @@ +--- +title: "Separate waist band" +--- + +This setting changes the way the waistband is constructed. Normally the waistband is just +folded over, like a hem. Turning this option on will generate a separate waistband. + +Mainly used for hiding the pockets in the waistband seam. \ No newline at end of file diff --git a/markdown/org/docs/patterns/waralee/options/showmini/en.md b/markdown/org/docs/patterns/waralee/options/showmini/en.md new file mode 100644 index 00000000000..4f5331a11a4 --- /dev/null +++ b/markdown/org/docs/patterns/waralee/options/showmini/en.md @@ -0,0 +1,7 @@ +--- +title: "Show mini" +--- + +Show the mini form of the main pants. This reduces the amount of pages that need to be printed dramatically. +Just use the measurements in the mini part to cut out the main pants part. + From 526fc2f8d72b6080de71c81dec5dae3dea676f70 Mon Sep 17 00:00:00 2001 From: Wouter van Wageningen Date: Mon, 5 Sep 2022 19:56:56 +0000 Subject: [PATCH 16/16] Deepscan fixes --- designs/waralee/config/index.js | 1 - designs/waralee/src/cutout.js | 2 -- designs/waralee/src/mini.js | 5 ----- 3 files changed, 8 deletions(-) diff --git a/designs/waralee/config/index.js b/designs/waralee/config/index.js index d1236056373..55e75f5e35d 100644 --- a/designs/waralee/config/index.js +++ b/designs/waralee/config/index.js @@ -44,7 +44,6 @@ export default { cutout: 'pantsproto', mini: 'pantsproto', pants: 'pantsproto', - cutout: 'pantsproto', }, inject: { pants: 'pantsproto', diff --git a/designs/waralee/src/cutout.js b/designs/waralee/src/cutout.js index 65ff182e3b7..3b3e292a14a 100644 --- a/designs/waralee/src/cutout.js +++ b/designs/waralee/src/cutout.js @@ -1,8 +1,6 @@ export default function (part) { let { options, - measurements, - Point, Path, points, paths, diff --git a/designs/waralee/src/mini.js b/designs/waralee/src/mini.js index 64a43439931..09c5414aeef 100644 --- a/designs/waralee/src/mini.js +++ b/designs/waralee/src/mini.js @@ -5,16 +5,11 @@ export default function (part) { let { options, - measurements, - Point, Path, points, paths, - Snippet, - snippets, complete, sa, - paperless, macro, store, } = part.shorthand()