diff --git a/designs/carlton/config/index.js b/designs/carlton/config/index.js deleted file mode 100644 index 6b5fcbbf5da..00000000000 --- a/designs/carlton/config/index.js +++ /dev/null @@ -1,176 +0,0 @@ -import pkg from '../package.json' assert { type: 'json' } - -const { version } = pkg - -export default { - version, - name: 'carlton', - design: ['Anneke Caramin', 'Joost De Cock'], - code: 'Joost De Cock', - department: 'coats', - type: 'pattern', - difficulty: 5, - optionGroups: { - fit: [ - 'acrossBackFactor', - 'armholeDepthFactor', - 'bicepsEase', - 'chestEase', - 'cuffEase', - 'shoulderEase', - 'sleeveBend', - 'sleeveLengthBonus', - 'waistEase', - 'seatEase', - 'draftForHighBust', - ], - advanced: [ - 'backNeckCutout', - 'frontArmholeDeeper', - 'frontOverlap', - 'lapelReduction', - 'shoulderSlopeReduction', - 'sleevecapHeight', - 'sleevecapEase', - ], - pockets: [ - 'pocketPlacementHorizontal', - 'pocketPlacementVertical', - 'pocketWidth', - 'pocketHeight', - 'pocketRadius', - 'pocketFlapRadius', - 'chestPocketHeight', - 'chestPocketWidth', - 'chestPocketPlacement', - 'chestPocketAngle', - 'innerPocketPlacement', - 'innerPocketWidth', - 'innerPocketDepth', - 'innerPocketWeltHeight', - ], - style: [ - 'beltWidth', - 'buttonSpacingHorizontal', - 'cuffLength', - 'length', - 's3Collar', - 's3Armhole', - ], - collar: ['collarHeight', 'collarSpread', 'collarFlare'], - }, - measurements: [ - 'biceps', - 'chest', - 'hips', - 'hpsToWaistBack', - 'waist', - 'waistToHips', - 'neck', - 'shoulderSlope', - 'shoulderToElbow', - 'shoulderToShoulder', - 'shoulderToWrist', - 'wrist', - 'waistToFloor', - 'waistToSeat', - 'seat', - ], - optionalMeasurements: ['highBust'], - dependencies: { - bentBack: 'bentBase', - bentFront: 'bentBack', - bentTopSleeve: 'bentSleeve', - bentUnderSleeve: 'bentSleeve', - front: 'bentFront', - back: 'bentBack', - tail: ['front', 'back'], - topSleeve: ['bentTopSleeve', 'bentFront'], - underSleeve: ['bentUnderSleeve', 'bentFront'], - belt: 'back', - collarStand: ['front', 'back'], - collar: 'collarStand', - cuffFacing: ['topSleeve', 'underSleeve', 'bentFront'], - pocket: 'front', - pocketFlap: 'front', - pocketLining: 'pocket', - chestPocketWelt: 'front', - chestPocketBag: 'front', - innerPocketWelt: 'front', - innerPocketBag: 'front', - innerPocketTab: 'front', - }, - inject: { - bentBack: 'bentBase', - bentFront: 'bentBack', - bentTopSleeve: 'bentSleeve', - bentUnderSleeve: 'bentSleeve', - front: 'bentFront', - back: 'bentBack', - topSleeve: 'bentTopSleeve', - underSleeve: 'bentUnderSleeve', - collar: 'collarStand', - pocketLining: 'pocket', - }, - hide: ['bentBase', 'bentBack', 'bentFront', 'bentSleeve', 'bentTopSleeve', 'bentUnderSleeve'], - options: { - // Constants - brianFitSleeve: true, - brianFitCollar: true, - collarFactor: 4.8, - chestShapingMax: 5, - backPleat: 0.048, - lengthBonus: 0, - collarEase: 0.145, - - // Options inherited from Bent - acrossBackFactor: { pct: 97, min: 93, max: 100 }, - armholeDepthFactor: { pct: 65, min: 50, max: 70 }, - bicepsEase: { pct: 20, min: 0, max: 50 }, - chestEase: { pct: 10, min: 5, max: 20 }, - cuffEase: { pct: 60, min: 30, max: 100 }, - shoulderEase: { pct: 0, min: -2, max: 6 }, - sleeveBend: { deg: 10, min: 0, max: 20 }, - sleevecapHeight: { pct: 45, min: 40, max: 60 }, - sleevecapEase: { pct: 1, min: 0, max: 10 }, - sleeveLengthBonus: { pct: 7, min: 0, max: 20 }, - shoulderSlopeReduction: { pct: 12, min: 0, max: 80 }, - backNeckCutout: { pct: 5, min: 2, max: 8 }, - frontArmholeDeeper: { pct: 0.5, min: 0, max: 1.5 }, - - // Carlton options - waistEase: { pct: 14, min: 8, max: 25 }, - seatEase: { pct: 14, min: 8, max: 25 }, - length: { pct: 69, min: 35, max: 100 }, - buttonSpacingHorizontal: { pct: 43.5, min: 15, max: 60 }, - frontOverlap: { pct: 1.5, min: 1, max: 2 }, - lapelReduction: { pct: 5, min: 0, max: 10 }, - pocketPlacementHorizontal: { pct: 11, min: 5, max: 60 }, - pocketPlacementVertical: { pct: 6, min: 5, max: 60 }, - pocketWidth: { pct: 95, min: 70, max: 120 }, - pocketHeight: { pct: 15, min: 0, max: 40 }, - pocketRadius: { pct: 20, min: 0, max: 50 }, - pocketFlapRadius: { pct: 15, min: 0, max: 50 }, - chestPocketHeight: { pct: 60, min: 40, max: 80 }, - chestPocketWidth: { pct: 25, min: 15, max: 50 }, - chestPocketPlacement: { pct: 55, min: 30, max: 65 }, - chestPocketAngle: { deg: 4, min: 0, max: 6 }, - - innerPocketPlacement: { pct: 53, min: 42, max: 62 }, - innerPocketWidth: { pct: 50, min: 45, max: 65 }, - innerPocketDepth: { pct: 110, min: 75, max: 140 }, - innerPocketWeltHeight: { pct: 3.5, min: 2.5, max: 5 }, - - beltWidth: { pct: 15, min: 10, max: 20 }, - cuffLength: { pct: 15, min: 10, max: 20 }, - collarHeight: { pct: 9.6, min: 8, max: 11 }, - collarSpread: { deg: 4, min: 2, max: 6 }, - collarFlare: { pct: 20, min: 0, max: 40 }, - // s3 is short for Shoulder Seam Shift - s3Collar: { pct: 0, min: -100, max: 100 }, - s3Armhole: { pct: 0, min: -100, max: 100 }, - - // draft for high bust - draftForHighBust: { bool: false }, - }, -} diff --git a/designs/carlton/src/back.mjs b/designs/carlton/src/back.mjs index c563c885c89..d96d60e3f1a 100644 --- a/designs/carlton/src/back.mjs +++ b/designs/carlton/src/back.mjs @@ -1,6 +1,7 @@ -import { calculateRatios } from './shared' +import { back as bentBack } from '@freesewing/bent' +import { calculateRatios } from './shared.mjs' -export default function (part) { +function draftCarltonBack (part) { let { paperless, sa, @@ -226,3 +227,20 @@ export default function (part) { return part } + +export const back = { + name: 'carlton.back', + from: bentBack, + hideDependencies: true, + measurements: [ + 'chest', + 'hpsToWaistBack', + ], + options: { + backPleat: 0.048, + beltWidth: { pct: 15, min: 10, max: 20, menu: 'style' }, + waistEase: { pct: 14, min: 8, max: 25, menu: 'fit' }, + seatEase: { pct: 14, min: 8, max: 25, menu: 'fit' }, + }, + draft: draftCarltonBack, +} diff --git a/designs/carlton/src/belt.mjs b/designs/carlton/src/belt.mjs index 03ed67dd62b..7099e546e0d 100644 --- a/designs/carlton/src/belt.mjs +++ b/designs/carlton/src/belt.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { back } from './back.mjs' + +function draftCarltonBelt (part) { let { paperless, sa, snippets, Snippet, store, complete, points, macro, Point, paths, Path } = part.shorthand() @@ -82,3 +84,9 @@ export default function (part) { return part } + +export const belt = { + name: 'carlton.belt', + after: back, + draft: draftCarltonBelt, +} diff --git a/designs/carlton/src/chestpocketbag.mjs b/designs/carlton/src/chestpocketbag.mjs index bc6554a925d..0e6271f8c63 100644 --- a/designs/carlton/src/chestpocketbag.mjs +++ b/designs/carlton/src/chestpocketbag.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { front } from './front.mjs' + +function draftCarltonChestPocketBag (part) { let { units, paperless, sa, store, complete, points, macro, Point, paths, Path } = part.shorthand() @@ -65,3 +67,9 @@ export default function (part) { return part } + +export const chestPocketBag = { + name: 'carlton.chestPocketBag', + after: front, + draft: draftCarltonChestPocketBag, +} diff --git a/designs/carlton/src/chestpocketwelt.mjs b/designs/carlton/src/chestpocketwelt.mjs index 8530705de44..e435e7acfc2 100644 --- a/designs/carlton/src/chestpocketwelt.mjs +++ b/designs/carlton/src/chestpocketwelt.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { front } from './front.mjs' + +function draftCarltonChestPocketWelt (part) { let { paperless, sa, store, complete, points, macro, Point, paths, Path } = part.shorthand() points.topLeft = new Point(0, 0) @@ -45,3 +47,9 @@ export default function (part) { return part } + +export const chestPocketWelt = { + name: 'carlton.chestPocketWelt', + after: front, + draft: draftCarltonChestPocketWelt, +} diff --git a/designs/carlton/src/collar.mjs b/designs/carlton/src/collar.mjs index 90819b728e9..46c55e8251f 100644 --- a/designs/carlton/src/collar.mjs +++ b/designs/carlton/src/collar.mjs @@ -1,10 +1,12 @@ +import { collarStand } from './collarstand.mjs' + /** * This collar is the most difficult part about this pattern * That's because slash&spread is easy with paper and scissors * but gets complicated when doing it in code. */ -export default function (part) { +function draftCarltonCollar (part) { let { paperless, sa, complete, points, options, macro, paths, Path } = part.shorthand() // We're going to slash and spread this collar. Slashing first: @@ -243,3 +245,12 @@ export default function (part) { return part } + +export const collar = { + name: 'carlton.collar', + from: collarStand, + options: { + collarSpread: { deg: 4, min: 2, max: 6, menu: 'collar' }, + }, + draft: draftCarltonCollar, +} diff --git a/designs/carlton/src/collarstand.mjs b/designs/carlton/src/collarstand.mjs index d0c56a30ae2..1dd40a8aded 100644 --- a/designs/carlton/src/collarstand.mjs +++ b/designs/carlton/src/collarstand.mjs @@ -1,4 +1,7 @@ -export default function (part) { +import { front } from './front.mjs' +import { back } from './back.mjs' + +function draftCarltonCollarStand (part) { let { paperless, sa, store, complete, points, measurements, options, macro, Point, paths, Path } = part.shorthand() @@ -68,3 +71,13 @@ export default function (part) { return part } + +export const collarStand = { + name: 'carlton.collarStand', + after: [ front, back ], + options: { + collarHeight: { pct: 9.6, min: 8, max: 11, menu: 'collar' }, + collarFlare: { pct: 20, min: 0, max: 40, menu: 'collar' }, + }, + draft: draftCarltonCollarStand, +} diff --git a/designs/carlton/src/cufffacing.mjs b/designs/carlton/src/cufffacing.mjs index d77256729ae..ff4829e1324 100644 --- a/designs/carlton/src/cufffacing.mjs +++ b/designs/carlton/src/cufffacing.mjs @@ -1,4 +1,7 @@ -export default function (part) { +import { topSleeve } from './topsleeve.mjs' +import { underSleeve } from './undersleeve.mjs' + +function draftCarltonCuffFacing (part) { let { paperless, sa, store, complete, points, macro, Point, paths, Path } = part.shorthand() points.topLeft = new Point(0, 0) @@ -75,3 +78,9 @@ export default function (part) { return part } + +export const cuffFacing = { + name: 'carlton.cuffFacing', + after: [ topSleeve, underSleeve ], + draft: draftCarltonCuffFacing, +} diff --git a/designs/carlton/src/front.mjs b/designs/carlton/src/front.mjs index 24dce76e215..bda66ec68ea 100644 --- a/designs/carlton/src/front.mjs +++ b/designs/carlton/src/front.mjs @@ -1,6 +1,7 @@ -import { calculateRatios } from './shared' +import { front as bentFront } from '@freesewing/bent' +import { calculateRatios } from './shared.mjs' -export default function (part) { +function draftCarltonFront (part) { let { paperless, sa, @@ -473,3 +474,37 @@ export default function (part) { return part } + +export const front = { + name: 'carlton.front', + from: bentFront, + hideDependencies: true, + measurements: [ + 'waist', + 'waistToFloor', + 'waistToSeat', + ], + options: { + chestEase: { pct: 10, min: 5, max: 20, menu: 'fit' }, + buttonSpacingHorizontal: { pct: 43.5, min: 15, max: 60, menu: 'style' }, + length: { pct: 69, min: 35, max: 100, menu: 'style' }, + lapelReduction: { pct: 5, min: 0, max: 10, menu: 'advanced' }, + frontOverlap: { pct: 1.5, min: 1, max: 2, menu: 'advanced' }, + pocketPlacementHorizontal: { pct: 11, min: 5, max: 60, menu: 'pockets' }, + pocketPlacementVertical: { pct: 6, min: 5, max: 60, menu: 'pockets' }, + pocketWidth: { pct: 95, min: 70, max: 120, menu: 'pockets' }, + pocketHeight: { pct: 15, min: 0, max: 40, menu: 'pockets' }, + pocketRadius: { pct: 20, min: 0, max: 50, menu: 'pockets' }, + pocketFlapRadius: { pct: 15, min: 0, max: 50, menu: 'pockets' }, + chestPocketPlacement: { pct: 55, min: 30, max: 65, menu: 'pockets' }, + chestPocketAngle: { deg: 4, min: 0, max: 6, menu: 'pockets' }, + chestPocketHeight: { pct: 60, min: 40, max: 80, menu: 'pockets' }, + chestPocketWidth: { pct: 25, min: 15, max: 50, menu: 'pockets' }, + innerPocketPlacement: { pct: 53, min: 42, max: 62, menu: 'pockets' }, + innerPocketWidth: { pct: 50, min: 45, max: 65, menu: 'pockets' }, + waistEase: { pct: 14, min: 8, max: 25, menu: 'fit' }, + seatEase: { pct: 14, min: 8, max: 25, menu: 'fit' }, + innerPocketWeltHeight: { pct: 3.5, min: 2.5, max: 5, menu: 'pockets' }, + }, + draft: draftCarltonFront, +} diff --git a/designs/carlton/src/index.mjs b/designs/carlton/src/index.mjs index dd3ff6ff63b..8f72c3cf682 100644 --- a/designs/carlton/src/index.mjs +++ b/designs/carlton/src/index.mjs @@ -1,83 +1,36 @@ -import freesewing from '@freesewing/core' -import plugins from '@freesewing/plugin-bundle' -import plugin from '@freesewing/plugin-bust' // Note: conditional plugin -import Bent from '@freesewing/bent' -import config from '../config' +import { Design } from '@freesewing/core' +import { data } from '../data.mjs' // Parts -import draftFront from './front' -import draftBack from './back' -import draftTail from './tail' -import draftTopSleeve from './topsleeve' -import draftUnderSleeve from './undersleeve' -import draftBelt from './belt' -import draftCollarStand from './collarstand' -import draftCollar from './collar' -import draftCuffFacing from './cufffacing' -import draftPocket from './pocket' -import draftPocketFlap from './pocketflap' -import draftPocketLining from './pocketlining' -import draftChestPocketWelt from './chestpocketwelt' -import draftChestPocketBag from './chestpocketbag' -import draftInnerPocketWelt from './innerpocketwelt' -import draftInnerPocketBag from './innerpocketbag' -import draftInnerPocketTab from './innerpockettab' - -/* Check to see whether we should load the bust plugin - * Only of the `draftForHighBust` options is set - * AND the highBust measurement is available - */ -const condition = (settings = false) => - settings && - settings.options && - settings.options.draftForHighBust && - settings.measurements.highBust - ? true - : false +import { front } from './front.mjs' +import { back } from './back.mjs' +import { tail } from './tail.mjs' +import { topSleeve } from './topsleeve.mjs' +import { underSleeve } from './undersleeve.mjs' +import { belt } from './belt.mjs' +import { collarStand } from './collarstand.mjs' +import { collar } from './collar.mjs' +import { cuffFacing } from './cufffacing.mjs' +import { pocket } from './pocket.mjs' +import { pocketFlap } from './pocketflap.mjs' +import { pocketLining } from './pocketlining.mjs' +import { chestPocketWelt } from './chestpocketwelt.mjs' +import { chestPocketBag } from './chestpocketbag.mjs' +import { innerPocketWelt } from './innerpocketwelt.mjs' +import { innerPocketBag } from './innerpocketbag.mjs' +import { innerPocketTab } from './innerpockettab.mjs' // Create design -const Carlton = new freesewing.Design(config, plugins, { plugin, condition }) - -// Attach draft methods from Bent to prototype -Carlton.prototype.draftBentBase = function (part) { - return new Bent(this.settings).draftBase(part) -} -Carlton.prototype.draftBentFront = function (part) { - return new Bent(this.settings).draftFront(part) -} -Carlton.prototype.draftBentBack = function (part) { - return new Bent(this.settings).draftBack(part) -} -Carlton.prototype.draftBentSleeve = function (part) { - return new Bent(this.settings).draftSleeve(part) -} -Carlton.prototype.draftBentTopSleeve = function (part) { - return new Bent(this.settings).draftTopSleeve(part) -} -Carlton.prototype.draftBentUnderSleeve = function (part) { - return new Bent(this.settings).draftUnderSleeve(part) -} - -// Attach own draft methods to prototype -Carlton.prototype.draftFront = draftFront -Carlton.prototype.draftBack = draftBack -Carlton.prototype.draftTail = draftTail -Carlton.prototype.draftTopSleeve = draftTopSleeve -Carlton.prototype.draftUnderSleeve = draftUnderSleeve -Carlton.prototype.draftBelt = draftBelt -Carlton.prototype.draftCollarStand = draftCollarStand -Carlton.prototype.draftCollar = draftCollar -Carlton.prototype.draftCuffFacing = draftCuffFacing -Carlton.prototype.draftPocket = draftPocket -Carlton.prototype.draftPocketFlap = draftPocketFlap -Carlton.prototype.draftPocketLining = draftPocketLining -Carlton.prototype.draftChestPocketWelt = draftChestPocketWelt -Carlton.prototype.draftChestPocketBag = draftChestPocketBag -Carlton.prototype.draftInnerPocketWelt = draftInnerPocketWelt -Carlton.prototype.draftInnerPocketBag = draftInnerPocketBag -Carlton.prototype.draftInnerPocketTab = draftInnerPocketTab +const Carlton = new Design({ + data, + parts: [ front, back, tail, topSleeve, underSleeve, belt, collarStand, + collar, cuffFacing, pocket, pocketFlap, pocketLining, chestPocketWelt, + chestPocketBag, innerPocketWelt, innerPocketBag, innerPocketTab, ], +}) // Named exports -export { config, Carlton } - -// Default export -export default Carlton +export { + front, back, tail, topSleeve, underSleeve, belt, collarStand, collar, + cuffFacing, pocket, pocketFlap, pocketLining, chestPocketWelt, + chestPocketBag, innerPocketWelt, innerPocketBag, innerPocketTab, + Carlton +} diff --git a/designs/carlton/src/innerpocketbag.mjs b/designs/carlton/src/innerpocketbag.mjs index 45ac361c134..79844b3b54d 100644 --- a/designs/carlton/src/innerpocketbag.mjs +++ b/designs/carlton/src/innerpocketbag.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { front } from './front.mjs' + +function draftCarltonInnerPocketBag (part) { let { units, paperless, sa, store, complete, points, options, macro, Point, paths, Path } = part.shorthand() @@ -65,3 +67,12 @@ export default function (part) { return part } + +export const innerPocketBag = { + name: 'carlton.innerPocketBag', + after: front, + options: { + innerPocketDepth: { pct: 110, min: 75, max: 140, menu: 'pockets' }, + }, + draft: draftCarltonInnerPocketBag, +} diff --git a/designs/carlton/src/innerpockettab.mjs b/designs/carlton/src/innerpockettab.mjs index b2e8c16cd54..b948ad98558 100644 --- a/designs/carlton/src/innerpockettab.mjs +++ b/designs/carlton/src/innerpockettab.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { front } from './front.mjs' + +function draftCarltonInnerPocketTab (part) { let { paperless, sa, store, complete, points, macro, Point, paths, Path } = part.shorthand() points.topLeft = new Point(0, 0) @@ -55,3 +57,9 @@ export default function (part) { return part } + +export const innerPocketTab = { + name: 'carlton.innerPocketTab', + after: front, + draft: draftCarltonInnerPocketTab, +} diff --git a/designs/carlton/src/innerpocketwelt.mjs b/designs/carlton/src/innerpocketwelt.mjs index 858796fad3a..607b276fe41 100644 --- a/designs/carlton/src/innerpocketwelt.mjs +++ b/designs/carlton/src/innerpocketwelt.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { front } from './front.mjs' + +function draftCarltonInnerPocketWelt (part) { let { paperless, sa, store, complete, points, macro, Point, paths, Path } = part.shorthand() points.topLeft = new Point(0, 0) @@ -78,3 +80,9 @@ export default function (part) { } return part } + +export const innerPocketWelt = { + name: 'carlton.innerPocketWelt', + after: front, + draft: draftCarltonInnerPocketWelt, +} diff --git a/designs/carlton/src/pocket.mjs b/designs/carlton/src/pocket.mjs index 3d07e42a149..4b0947fc979 100644 --- a/designs/carlton/src/pocket.mjs +++ b/designs/carlton/src/pocket.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { front } from './front.mjs' + +function draftCarltonPocket (part) { let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = part.shorthand() @@ -85,3 +87,9 @@ export default function (part) { return part } + +export const pocket = { + name: 'carlton.pocket', + after: front, + draft: draftCarltonPocket, +} diff --git a/designs/carlton/src/pocketflap.mjs b/designs/carlton/src/pocketflap.mjs index 4977c5f360c..a338f996c42 100644 --- a/designs/carlton/src/pocketflap.mjs +++ b/designs/carlton/src/pocketflap.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { front } from './front.mjs' + +function draftCarltonPocketFlap (part) { let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = part.shorthand() @@ -80,3 +82,9 @@ export default function (part) { return part } + +export const pocketFlap = { + name: 'carlton.pocketFlap', + after: front, + draft: draftCarltonPocketFlap, +} diff --git a/designs/carlton/src/pocketlining.mjs b/designs/carlton/src/pocketlining.mjs index d54809f2c3d..ef546611a89 100644 --- a/designs/carlton/src/pocketlining.mjs +++ b/designs/carlton/src/pocketlining.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { pocket } from './pocket.mjs' + +function draftCarltonPocketLining (part) { let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = part.shorthand() @@ -72,3 +74,9 @@ export default function (part) { return part } + +export const pocketLining = { + name: 'carlton.pocketLining', + from: pocket, + draft: draftCarltonPocketLining, +} diff --git a/designs/carlton/src/shared.mjs b/designs/carlton/src/shared.mjs index 6b46ca693d3..35d6b999855 100644 --- a/designs/carlton/src/shared.mjs +++ b/designs/carlton/src/shared.mjs @@ -1,7 +1,7 @@ /** * This calculates a bunch of helper variables and stores them */ -export const calculateRatios = (part) => { +export function calculateRatios (part) { let { store, measurements, options } = part.shorthand() // Calculate different values for reducing from chest to hips via waist diff --git a/designs/carlton/src/tail.mjs b/designs/carlton/src/tail.mjs index 86bd8125919..be76889ad2d 100644 --- a/designs/carlton/src/tail.mjs +++ b/designs/carlton/src/tail.mjs @@ -1,4 +1,7 @@ -export default function (part) { +import { front } from './front.mjs' +import { back } from './back.mjs' + +function draftCarltonTail (part) { let { units, paperless, sa, store, complete, points, macro, Point, paths, Path } = part.shorthand() @@ -117,3 +120,9 @@ export default function (part) { return part } + +export const tail = { + name: 'carlton.tail', + after: [ front, back ], + draft: draftCarltonTail, +} diff --git a/designs/carlton/src/topsleeve.mjs b/designs/carlton/src/topsleeve.mjs index e36ee5520f7..934df58b595 100644 --- a/designs/carlton/src/topsleeve.mjs +++ b/designs/carlton/src/topsleeve.mjs @@ -1,4 +1,7 @@ -export default function (part) { +import { topSleeve as bentTopSleeve } from '@freesewing/bent' +import { front as bentFront } from '@freesewing/bent' + +function draftCarltonTopSleeve (part) { let { paperless, sa, @@ -138,3 +141,37 @@ export default function (part) { return part } + +export const topSleeve = { + name: 'carlton.topSleeve', + from: bentTopSleeve, + after: bentFront, + hideDependencies: true, + measurements: [ 'shoulderToWrist' ], + options: { + cuffLength: { pct: 15, min: 10, max: 20, menu: 'style' }, + // The remainder of options are for Bent sleeves. + brianFitSleeve: true, + brianFitCollar: true, + collarFactor: 4.8, + chestShapingMax: 5, + lengthBonus: 0, + collarEase: 0.145, + acrossBackFactor: { pct: 97, min: 93, max: 100, menu: 'fit' }, + armholeDepthFactor: { pct: 65, min: 50, max: 70, menu: 'fit' }, + bicepsEase: { pct: 20, min: 0, max: 50, menu: 'fit' }, + cuffEase: { pct: 60, min: 30, max: 100, menu: 'fit' }, + shoulderEase: { pct: 0, min: -2, max: 6, menu: 'fit' }, + sleeveBend: { deg: 10, min: 0, max: 20, menu: 'fit' }, + sleeveLengthBonus: { pct: 7, min: 0, max: 20, menu: 'fit' }, + s3Collar: { pct: 0, min: -100, max: 100, menu: 'style' }, + s3Armhole: { pct: 0, min: -100, max: 100, menu: 'style' }, + draftForHighBust: { bool: false, menu: 'fit' }, + backNeckCutout: { pct: 5, min: 2, max: 8, menu: 'advanced' }, + frontArmholeDeeper: { pct: 0.5, min: 0, max: 1.5, menu: 'advanced' }, + shoulderSlopeReduction: { pct: 12, min: 0, max: 80, menu: 'advanced' }, + sleevecapHeight: { pct: 45, min: 40, max: 60, menu: 'advanced' }, + sleevecapEase: { pct: 1, min: 0, max: 10, menu: 'advanced' }, + }, + draft: draftCarltonTopSleeve, +} diff --git a/designs/carlton/src/undersleeve.mjs b/designs/carlton/src/undersleeve.mjs index bae16e7607b..09819853c64 100644 --- a/designs/carlton/src/undersleeve.mjs +++ b/designs/carlton/src/undersleeve.mjs @@ -1,4 +1,7 @@ -export default function (part) { +import { underSleeve as bentUnderSleeve } from '@freesewing/bent' +import { front as bentFront } from '@freesewing/bent' + +function draftCarltonUnderSleeve (part) { let { paperless, sa, store, complete, points, measurements, options, macro, Point, paths, Path } = part.shorthand() @@ -105,3 +108,37 @@ export default function (part) { return part } + +export const underSleeve = { + name: 'carlton.underSleeve', + from: bentUnderSleeve, + after: bentFront, + hideDependencies: true, + measurements: [ 'shoulderToWrist' ], + options: { + cuffLength: { pct: 15, min: 10, max: 20, menu: 'style' }, + // The remainder of options are for Bent sleeves. + brianFitSleeve: true, + brianFitCollar: true, + collarFactor: 4.8, + chestShapingMax: 5, + lengthBonus: 0, + collarEase: 0.145, + acrossBackFactor: { pct: 97, min: 93, max: 100, menu: 'fit' }, + armholeDepthFactor: { pct: 65, min: 50, max: 70, menu: 'fit' }, + bicepsEase: { pct: 20, min: 0, max: 50, menu: 'fit' }, + cuffEase: { pct: 60, min: 30, max: 100, menu: 'fit' }, + shoulderEase: { pct: 0, min: -2, max: 6, menu: 'fit' }, + sleeveBend: { deg: 10, min: 0, max: 20, menu: 'fit' }, + sleeveLengthBonus: { pct: 7, min: 0, max: 20, menu: 'fit' }, + s3Collar: { pct: 0, min: -100, max: 100, menu: 'style' }, + s3Armhole: { pct: 0, min: -100, max: 100, menu: 'style' }, + draftForHighBust: { bool: false, menu: 'fit' }, + backNeckCutout: { pct: 5, min: 2, max: 8, menu: 'advanced' }, + frontArmholeDeeper: { pct: 0.5, min: 0, max: 1.5, menu: 'advanced' }, + shoulderSlopeReduction: { pct: 12, min: 0, max: 80, menu: 'advanced' }, + sleevecapHeight: { pct: 45, min: 40, max: 60, menu: 'advanced' }, + sleevecapEase: { pct: 1, min: 0, max: 10, menu: 'advanced' }, + }, + draft: draftCarltonUnderSleeve, +}