1
0
Fork 0

chore(paco): Prepare for v3 beta

This commit is contained in:
Joost De Cock 2023-09-18 11:04:03 +02:00
parent a781bd6480
commit bfd6c0a3d3
18 changed files with 482 additions and 283 deletions

View file

@ -286,7 +286,7 @@
"design": "Joost De Cock",
"difficulty": 3,
"tags": ["bottoms", "trousers"],
"techniques": []
"techniques": ["elastic", "curvedSeam", "pocket", "weltPocket", "hem"]
},
"penelope": {
"description": "A FreeSewing pattern for a pencil skirt",

View file

@ -11,7 +11,14 @@
"frontPocketBag": "Front pocket bag",
"waistband": "Waistband"
},
"s": {},
"s": {
"cutBackPocketBag.t": "The back pocket bag is not shown",
"cutBackPocketBag.d": "The **Back pocket bag** (6) is a rectangular piece of lining {{{ w }}} wide and {{{ l }}} long (this includes seam allowance). It is not shown because the **expand** core setting is currently disabled. Enable it to show this pattern part.",
"cutBackPocketWelt.t": "The back pocket welt is not shown",
"cutBackPocketWelt.d": "The **Back pocket welt** (7) is a rectangular piece of lining {{{ w }}} wide and {{{ l }}} long (this includes seam allowance). It is not shown because the **expand** core setting is currently disabled. Enable it to show this pattern part.",
"cutBackPocketWeltInterfacing.t": "The back pocket welt interfacing is not shown",
"cutBackPocketWeltInterfacing.d": "The **Back pocket welt interfacing** (8) is a rectangular piece of fusible interfacing {{{ w }}} wide and {{{ l }}} long (this part does not use any seam allowance). It is not shown because the **expand** core setting is currently disabled. Enable it to show this pattern part."
},
"o": {
"heelEase": {
"t": "Heel ease",
@ -21,6 +28,14 @@
"t": "Front pockets",
"d": "Whether or not to add front pockets on the side seam"
},
"frontPocketsNo": {
"t": "Do not include front pockets",
"d": "Draft a pattern without front pockets"
},
"frontPocketsYes": {
"t": "Include front pockets",
"d": "Draft a pattern with front pockets"
},
"frontPocketFlapSize": {
"t": "Front pocket flap size",
"d": "This option controls the front pocket flap size, but it is not exposed to the UI"
@ -29,9 +44,25 @@
"t": "Back pockets",
"d": "Whether or not to add welt pockets to the back"
},
"elasticatedHem": {
"t": "Elasticated hem",
"d": "Whether or not you want an elasticated hem"
"backPocketsNo": {
"t": "Do not include back pockets",
"d": "Draft a pattern without back pockets"
},
"backPocketsYes": {
"t": "Include back pockets",
"d": "Draft a pattern with back pockets"
},
"elasticatedCuff": {
"t": "Elasticated cuff",
"d": "Whether you want to include an elasticated cuff at the legs, or prefer a classic hemmed finish"
},
"elasticatedCuffNo": {
"t": "No elasticated cuffs",
"d": "Draft a pattern without elasticated cuffs"
},
"elasticatedCuffYes": {
"t": "With elasticated cuffs",
"d": "Draft a pattern with a elasticated cuffs"
},
"ankleElastic": {
"t": "Ankle/Hem elastic width",

View file

@ -69,7 +69,7 @@ function pacoBack({
// Shorter leg if we have an elasticated hem
store.set('ankleElastic', absoluteOptions.ankleElastic)
if (options.elasticatedHem) {
if (options.elasticatedCuff) {
for (const p of ['floor', 'floorIn', 'floorOut'])
points[p] = points[p].shift(90, store.get('ankleElastic'))
}
@ -146,7 +146,7 @@ function pacoBack({
if (sa) {
const waistIn = points.styleWaistIn || points.waistIn
const hemSa = options.elasticatedHem ? sa : 4 * sa
const hemSa = options.elasticatedCuff ? sa : 4 * sa
paths.sa = drawInseam()
.offset(sa)
.line(points.floorIn.shift(180, sa).shift(-90, hemSa))
@ -191,10 +191,12 @@ function pacoBack({
store.cutlist.setCut({ cut: 2, from: 'fabric' })
// Notches
macro('sprinkle', {
snippet: 'bnotch',
on: ['pocketLeft', 'pocketRight', 'pocketBagWaistLeft', 'pocketBagWaistRight'],
})
if (options.backPockets) {
macro('sprinkle', {
snippet: 'bnotch',
on: ['pocketLeft', 'pocketRight', 'pocketBagWaistLeft', 'pocketBagWaistRight'],
})
}
// Dimensions
macro('hd', {
@ -363,7 +365,7 @@ export const back = {
waistHeight: { pct: 5, min: 0, max: 100, menu: 'style' },
lengthBonus: { pct: 0, min: -15, max: 10, menu: 'style' },
crotchDrop: { pct: 2, min: 0, max: 10, menu: 'style' },
elasticatedHem: { bool: true, menu: 'style' },
elasticatedCuff: { bool: true, menu: 'style' },
// Elastic
waistbandWidth: {
pct: 3,

View file

@ -6,9 +6,12 @@ function pacoBackPocketBag({
Path,
paths,
snippets,
store,
options,
complete,
paperless,
expand,
units,
macro,
part,
}) {
@ -16,12 +19,35 @@ function pacoBackPocketBag({
// See https://github.com/freesewing/freesewing/issues/2878
for (const path in paths) delete paths[path]
for (const snippet in snippets) delete snippets[snippet]
macro('scalebox', false)
macro('title', false)
macro('rmscalebox')
macro('rmtitle')
// Don't bother of we're not drafting back pockets
if (!options.backPockets) return part.hide()
if (expand) store.flag.preset('expandIsOn')
else {
// Expand is on, do not draw the part but flag this to the user
store.flag.note({
msg: `paco:cutBackPocketBag`,
replace: {
w: units(points.pocketBagWaistLeft.dist(points.pocketBagWaistRight) + 2 * sa),
l: units(points.pocketBagWaistLeft.dist(points.pocketBagBottomLeft) * 2 + 2 * sa),
},
suggest: {
text: 'flag:show',
icon: 'expand',
update: {
settings: ['expand', 1],
},
},
})
// Also hint about expand
store.flag.preset('expandIsOff')
return part.hide()
}
// Rotate all points around topRight, so the part is aligned vertically
const list = [
'pocketBagWaistLeft',
@ -46,68 +72,84 @@ function pacoBackPocketBag({
.close()
.attr('class', 'lining')
if (complete) {
points.title = points.pocketLeft.shiftFractionTowards(points.pocketBagBottomRight, 0.4)
macro('title', {
at: points.title,
nr: 6,
title: 'backPocketBag',
})
macro('cutonfold', {
to: points.pocketBagBottomRight,
from: points.pocketBagBottomLeft,
})
macro('grainline', {
from: points.pocketBagBottomLeft.shift(0, 15),
to: points.pocketBagWaistLeft.shift(0, 15),
})
macro('scalebox', false)
if (complete)
paths.cut = new Path()
.move(points.pocketLeft)
.line(points.pocketRight)
.attr('class', 'lining lashed')
macro('sprinkle', {
snippet: 'bnotch',
on: ['pocketLeft', 'pocketRight', 'pocketBagWaistLeft', 'pocketBagWaistRight'],
})
if (sa) {
paths.sa = new Path()
.move(points.pocketBagBottomRight)
.line(points.pocketBagWaistRight)
.line(points.pocketBagWaistLeft)
.line(points.pocketBagBottomLeft)
.offset(sa)
paths.sa = new Path()
.move(points.pocketBagBottomRight)
.join(paths.sa)
.line(points.pocketBagBottomLeft)
.attr('class', 'lining sa')
}
if (sa) {
paths.sa = new Path()
.move(points.pocketBagBottomRight)
.line(points.pocketBagWaistRight)
.line(points.pocketBagWaistLeft)
.line(points.pocketBagBottomLeft)
.offset(sa)
paths.sa = new Path()
.move(points.pocketBagBottomRight)
.join(paths.sa)
.line(points.pocketBagBottomLeft)
.attr('class', 'lining sa')
}
if (paperless) {
macro('hd', {
from: points.pocketBagBottomLeft,
to: points.pocketBagBottomRight,
y: points.pocketBagBottomLeft.y + 15 + sa,
})
macro('hd', {
from: points.pocketLeft,
to: points.pocketRight,
y: points.pocketLeft.y + 15 + sa,
})
macro('vd', {
from: points.pocketRight,
to: points.pocketBagWaistRight,
x: points.pocketBagBottomRight.x + 15 + sa,
})
macro('vd', {
from: points.pocketBagBottomRight,
to: points.pocketBagWaistRight,
x: points.pocketBagBottomRight.x + 30 + sa,
})
}
/*
* Annotations
*/
// Cutlist
store.cutlist.setCut({ cut: 2, from: 'lining', onFold: true })
// Title
points.title = points.pocketBagWaistLeft.shiftFractionTowards(points.pocketBagBottomRight, 0.5)
macro('title', {
at: points.title,
nr: 6,
title: 'backPocketBag',
align: 'center',
})
// Cutonfold
macro('cutonfold', {
to: points.pocketBagBottomRight,
from: points.pocketBagBottomLeft,
})
// Grainline
macro('grainline', {
from: points.pocketBagBottomLeft.shift(0, 15),
to: points.pocketBagWaistLeft.shift(0, 15),
})
// Notches
macro('sprinkle', {
snippet: 'bnotch',
on: ['pocketLeft', 'pocketRight', 'pocketBagWaistLeft', 'pocketBagWaistRight'],
})
// Dimensions
macro('hd', {
id: 'wFull',
from: points.pocketBagBottomLeft,
to: points.pocketBagBottomRight,
y: points.pocketBagBottomLeft.y + 15 + sa,
})
macro('hd', {
id: 'wCut',
from: points.pocketLeft,
to: points.pocketRight,
y: points.pocketLeft.y + 15 + sa,
})
macro('vd', {
id: 'hTopToCut',
from: points.pocketRight,
to: points.pocketBagWaistRight,
x: points.pocketBagBottomRight.x + 15 + sa,
})
macro('vd', {
id: 'hFull',
from: points.pocketBagBottomRight,
to: points.pocketBagWaistRight,
x: points.pocketBagBottomRight.x + 30 + sa,
})
return part
}

View file

@ -10,6 +10,9 @@ function pacoBackPocketWelt({
options,
complete,
paperless,
expand,
store,
units,
macro,
part,
}) {
@ -17,17 +20,43 @@ function pacoBackPocketWelt({
// See https://github.com/freesewing/freesewing/issues/2878
for (const path in paths) delete paths[path]
for (const snippet in snippets) delete snippets[snippet]
macro('scalebox', false)
macro('title', false)
macro('rmscalebox')
macro('rmtitle')
// Don't bother of we're not drafting back pockets
if (!options.backPockets) return part.hide()
let welt = points.pocketLeft.dist(points.pocketRight) * options.weltFactor
const w = points.pocketBagWaistLeft.dist(points.pocketBagWaistRight)
const h = points.pocketLeft.dist(points.pocketRight) * options.weltFactor
// Define these here, as they are used in backpocketinterfacing to calculate w/h
points.topLeft = new Point(points.pocketBagWaistLeft.x, points.pocketLeft.y)
points.topRight = new Point(points.pocketBagWaistRight.x, points.topLeft.y)
points.bottomLeft = points.topLeft.shift(-90, welt * 2)
points.bottomRight = points.topRight.shift(-90, welt * 2)
points.bottomLeft = points.topLeft.shift(-90, h * 2)
points.bottomRight = points.topRight.shift(-90, h * 2)
if (expand) store.flag.preset('expandIsOn')
else {
// Expand is on, do not draw the part but flag this to the user
store.flag.note({
msg: `paco:cutBackPocketWelt`,
replace: {
h: units(h + 2 * sa),
w: units(w + 2 * sa),
},
suggest: {
text: 'flag:show',
icon: 'expand',
update: {
settings: ['expand', 1],
},
},
})
// Also hint about expand
store.flag.preset('expandIsOff')
return part.hide()
}
paths.seam = new Path()
.move(points.topLeft)
@ -38,44 +67,55 @@ function pacoBackPocketWelt({
.close()
.attr('class', 'fabric')
if (complete) {
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.4)
macro('title', {
at: points.title,
nr: 7,
title: 'pocketWelt',
})
macro('grainline', {
from: points.topLeft.shift(0, 15),
to: points.bottomLeft.shift(0, 15),
})
macro('sprinkle', {
snippet: 'bnotch',
on: ['pocketLeft', 'pocketRight', 'pocketBagWaistLeft', 'pocketBagWaistRight'],
})
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
if (sa) {
paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
}
/*
* Annotations
*/
// Cutlist
store.cutlist.setCut({ cut: 2, from: 'fabric' })
if (paperless) {
macro('hd', {
from: points.bottomLeft,
to: points.bottomRight,
y: points.bottomLeft.y + 15 + sa,
})
macro('hd', {
from: points.pocketLeft,
to: points.pocketRight,
y: points.topLeft.y - 15 - sa,
})
macro('vd', {
from: points.bottomRight,
to: points.topLeft,
x: points.topRight.x + 15 + sa,
})
}
}
// Title
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.4)
macro('title', {
at: points.title,
nr: 7,
title: 'backPocketWelt',
align: 'center',
scale: 0.666,
})
// Grainline
macro('grainline', {
from: points.topLeft.shift(0, 15),
to: points.bottomLeft.shift(0, 15),
})
// Notches
macro('sprinkle', {
snippet: 'bnotch',
on: ['pocketLeft', 'pocketRight', 'pocketBagWaistLeft', 'pocketBagWaistRight'],
})
// Dimensions
macro('hd', {
id: 'wFull',
from: points.bottomLeft,
to: points.bottomRight,
y: points.bottomLeft.y + 15 + sa,
})
macro('hd', {
id: 'wBetweenNotches',
from: points.pocketLeft,
to: points.pocketRight,
y: points.topLeft.y - 15 - sa,
})
macro('vd', {
id: 'hFull',
from: points.bottomRight,
to: points.topLeft,
x: points.topRight.x + 15 + sa,
})
return part
}

View file

@ -8,6 +8,9 @@ function pacoBackPocketWeltInterfacing({
options,
complete,
paperless,
expand,
store,
units,
macro,
part,
}) {
@ -15,12 +18,35 @@ function pacoBackPocketWeltInterfacing({
// See https://github.com/freesewing/freesewing/issues/2878
for (const path in paths) delete paths[path]
for (const snippet in snippets) delete snippets[snippet]
macro('scalebox', false)
macro('title', false)
macro('rmscalebox')
macro('rmtitle')
// Don't bother of we're not drafting back pockets
if (!options.backPockets) return part.hide()
if (expand) store.flag.preset('expandIsOn')
else {
// Expand is on, do not draw the part but flag this to the user
store.flag.note({
msg: `paco:cutBackPocketWeltInterfacing`,
replace: {
h: units(points.topLeft.dist(points.bottomLeft)),
w: units(points.topLeft.dist(points.topRight)),
},
suggest: {
text: 'flag:show',
icon: 'expand',
update: {
settings: ['expand', 1],
},
},
})
// Also hint about expand
store.flag.preset('expandIsOff')
return part.hide()
}
paths.seam = new Path()
.move(points.topLeft)
.line(points.bottomLeft)
@ -30,36 +56,47 @@ function pacoBackPocketWeltInterfacing({
.close()
.attr('class', 'interfacing')
if (complete) {
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.4)
macro('title', {
at: points.title,
nr: 8,
title: 'pocketWeltInterfacing',
})
macro('sprinkle', {
snippet: 'bnotch',
on: ['pocketLeft', 'pocketRight', 'pocketBagWaistLeft', 'pocketBagWaistRight'],
})
/*
* Annotations
*/
// Cutlist
store.cutlist.setCut({ cut: 2, from: 'interfacing' })
if (paperless) {
macro('hd', {
from: points.bottomLeft,
to: points.bottomRight,
y: points.bottomLeft.y + 15,
})
macro('hd', {
from: points.pocketLeft,
to: points.pocketRight,
y: points.topLeft.y - 15,
})
macro('vd', {
from: points.bottomRight,
to: points.topRight,
x: points.topRight.x + 15,
})
}
}
// Title
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5)
macro('title', {
at: points.title,
nr: 8,
title: 'pocketWeltInterfacing',
align: 'center',
scale: 0.666,
})
// Notches
macro('sprinkle', {
snippet: 'bnotch',
on: ['pocketLeft', 'pocketRight', 'pocketBagWaistLeft', 'pocketBagWaistRight'],
})
// Dimensions
macro('hd', {
id: 'wFull',
from: points.bottomLeft,
to: points.bottomRight,
y: points.bottomLeft.y + 15,
})
macro('hd', {
id: 'wBetweenNotches',
from: points.pocketLeft,
to: points.pocketRight,
y: points.topLeft.y - 15,
})
macro('vd', {
id: 'hFull',
from: points.bottomRight,
to: points.topRight,
x: points.topRight.x + 15,
})
return part
}

View file

@ -10,19 +10,45 @@ function pacoCuff({
options,
complete,
paperless,
expand,
units,
macro,
part,
}) {
if (!options.elasticatedHem) return part.hide()
if (!options.elasticatedCuff) return part.hide()
const l = store.get('frontAnkle') + store.get('backAnkle')
const w = store.get('ankleElastic') * 1.05
if (expand) store.flag.preset('expandIsOn')
else {
// Expand is on, do not draw the part but flag this to the user
store.flag.note({
msg: `paco:cutCuff`,
replace: {
w: units(w * 2 + 4 * sa),
l: units(l + 2 * sa),
},
suggest: {
text: 'flag:show',
icon: 'expand',
update: {
settings: ['expand', 1],
},
},
})
// Also hint about expand
store.flag.preset('expandIsOff')
return part.hide()
}
let len = store.get('frontAnkle') + store.get('backAnkle')
points.topLeft = new Point(0, 0)
points.midLeft = new Point(0, store.get('ankleElastic') * 1.05)
points.bottomLeft = new Point(0, store.get('ankleElastic') * 2.1)
points.topRight = points.topLeft.shift(0, len)
points.midRight = points.midLeft.shift(0, len)
points.bottomRight = points.bottomLeft.shift(0, len)
points.topMid = new Point(w, 0)
points.topRight = new Point(2 * w, 0)
points.bottomLeft = new Point(0, l)
points.bottomMid = new Point(w, l)
points.bottomRight = new Point(2 * w, l)
paths.seam = new Path()
.move(points.topLeft)
@ -33,49 +59,54 @@ function pacoCuff({
.close()
.attr('class', 'fabric')
if (complete) {
paths.fold = new Path().move(points.midLeft).line(points.midRight).attr('class', 'help')
if (complete)
paths.fold = new Path().move(points.topMid).line(points.bottomMid).attr('class', 'help')
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.4)
macro('title', {
at: points.title,
nr: 4,
title: 'cuff',
})
macro('grainline', {
from: points.topLeft.shift(0, 15),
to: points.bottomLeft.shift(0, 15),
})
if (sa)
paths.sa = new Path()
.move(points.topLeft.shift(180, 2 * sa))
.line(points.bottomLeft.shift(180, 2 * sa))
.line(points.bottomRight)
.line(points.topRight)
.line(points.topLeft.shift(180, 2 * sa))
.close()
.offset(sa)
.attr('class', 'fabric sa')
if (sa) {
paths.sa = new Path()
.move(points.topLeft)
.line(points.bottomLeft.shift(-90, 2 * sa))
.line(points.bottomRight.shift(-90, 2 * sa))
.line(points.topRight)
.line(points.topLeft)
.close()
.offset(sa)
.attr('class', 'fabric sa')
paths.saHint = new Path()
.move(points.bottomLeft.shift(-90, sa).shift(180, sa))
.line(points.bottomRight.shift(-90, sa).shift(0, sa))
.attr('class', 'help')
}
}
/*
* Annotations
*/
// Cutlist
store.cutlist.setCut({ cut: 2, from: 'fabric' })
if (paperless) {
macro('vd', {
from: points.bottomRight,
to: points.topRight,
x: points.topRight.x + 15 + sa,
})
macro('hd', {
from: points.bottomLeft,
to: points.bottomRight,
y: points.bottomRight.y + 15 + sa,
})
}
// Title
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5)
macro('title', {
at: points.title,
nr: 4,
title: 'cuff',
align: 'center',
})
// Grainline
macro('grainline', {
from: points.topMid.shift(0, 15),
to: points.bottomMid.shift(0, 15),
})
// Dimensions
macro('vd', {
id: 'hfull',
from: points.bottomRight,
to: points.topRight,
x: points.topRight.x + 15 + sa,
})
macro('hd', {
id: 'wfull',
from: points.bottomLeft,
to: points.bottomRight,
y: points.bottomRight.y + 15 + sa,
})
return part
}

View file

@ -79,8 +79,8 @@ function pacoFront({
points.kneeIn = points.knee.shift(0, quarterHeel)
points.kneeInCp2 = points.kneeIn
// Shorter leg if we have an elasticated hem
if (options.elasticatedHem) {
// Shorter leg if we have an elasticated cuff
if (options.elasticatedCuff) {
for (const p of ['floor', 'floorIn', 'floorOut'])
points[p] = points[p].shift(90, options.ankleElastic)
}
@ -160,7 +160,7 @@ function pacoFront({
if (sa) {
const waistIn = points.styleWaistIn || points.waistIn
const waistOut = points.styleWaistOut || points.waistOut
const hemSa = options.elasticatedHem ? sa : 4 * sa
const hemSa = options.elasticatedCuff ? sa : 4 * sa
paths.sa = drawOutseam()
.offset(sa)
.line(points.floorOut.shift(180, sa).shift(-90, hemSa))

View file

@ -5,6 +5,7 @@ function pacoFrontPocketBag({
points,
Path,
paths,
store,
snippets,
options,
complete,
@ -36,71 +37,85 @@ function pacoFrontPocketBag({
.close()
.attr('class', 'lining')
if (complete) {
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5)
macro('title', {
at: points.title,
nr: 5,
title: 'pocketBag',
})
macro('cutonfold', {
from: points.bottomRight,
to: points.topRight,
grainline: true,
})
macro('sprinkle', {
snippet: 'notch',
on: ['flapTopLeft', 'flapBottomLeft'],
})
if (sa) {
paths.sa = new Path()
.move(points.topRight)
.line(points.topLeft)
.line(points.flapBottomLeft)
._curve(points.bottomCp1, points.bottom)
.line(points.bottomRight)
.offset(sa)
paths.sa = new Path()
.move(points.topRight)
.join(paths.sa)
.line(points.bottomRight)
.attr('class', 'lining sa')
}
if (sa) {
paths.sa = new Path()
.move(points.topRight)
.line(points.topLeft)
.line(points.flapBottomLeft)
._curve(points.bottomCp1, points.bottom)
.line(points.bottomRight)
.offset(sa)
paths.sa = new Path()
.move(points.topRight)
.join(paths.sa)
.line(points.bottomRight)
.attr('class', 'lining sa')
}
if (paperless) {
macro('hd', {
from: points.flapBottomLeft,
to: points.bottomRight,
y: points.bottomRight.y + 15 + sa,
})
macro('hd', {
from: points.topLeft,
to: points.topRight,
y: points.topLeft.y - 15 - sa,
})
macro('vd', {
from: points.bottomRight,
to: points.topRight,
x: points.topRight.x + 15 + sa,
})
macro('vd', {
from: points.bottomRight,
to: points.topLeft,
x: points.topRight.x + 30 + sa,
})
macro('ld', {
from: points.flapTopLeft,
to: points.topLeft,
d: 15 + sa,
})
macro('ld', {
from: points.flapBottomLeft,
to: points.flapTopLeft,
d: 15 + sa,
})
}
/*
* Annotations
*/
// Cutlist
store.cutlist.setCut({ cut: 2, from: 'lining' })
// Title
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5)
macro('title', {
at: points.title,
nr: 5,
title: 'pocketBag',
})
// Cutonfold
macro('cutonfold', {
from: points.bottomRight,
to: points.topRight,
grainline: true,
})
// Notches
macro('sprinkle', {
snippet: 'notch',
on: ['flapTopLeft', 'flapBottomLeft'],
})
// Dimensions
macro('hd', {
id: 'wFull',
from: points.flapBottomLeft,
to: points.bottomRight,
y: points.bottomRight.y + 15 + sa,
})
macro('hd', {
id: 'wAtWaist',
from: points.topLeft,
to: points.topRight,
y: points.topLeft.y - 15 - sa,
})
macro('vd', {
id: 'hAtFold',
from: points.bottomRight,
to: points.topRight,
x: points.topRight.x + 15 + sa,
})
macro('vd', {
id: 'hFull',
from: points.bottomRight,
to: points.topLeft,
x: points.topRight.x + 30 + sa,
})
macro('ld', {
id: 'lWaistToOpening',
from: points.flapTopLeft,
to: points.topLeft,
d: 15 + sa,
})
macro('ld', {
id: 'lOpening',
from: points.flapBottomLeft,
to: points.flapTopLeft,
d: 15 + sa,
})
return part
}

View file

@ -42,14 +42,14 @@ function pacoWaistband({
}
points.topLeft = new Point(0, 0)
points.midLeft = new Point(0, store.get('waistbandWidth'))
points.bottomLeft = new Point(0, store.get('waistbandWidth') * 2)
points.eyeletLeft = new Point(20, store.get('waistbandWidth') / 2)
points.eyeletRight = points.eyeletLeft.shift(0, l - 40)
points.topMid = new Point(w, 0)
points.topRight = new Point(w * 2, 0)
points.bottomLeft = new Point(0, l)
points.bottomMid = new Point(w, l)
points.bottomRight = new Point(w * 2, l)
points.topRight = points.topLeft.shift(0, l)
points.midRight = points.midLeft.shift(0, l)
points.bottomRight = points.bottomLeft.shift(0, l)
points.eyeletTop = new Point(w * 1.5, w / 2)
points.eyeletBottom = points.bottomLeft.translate(w * 1.5, w / -2)
paths.seam = new Path()
.move(points.topLeft)
@ -61,15 +61,15 @@ function pacoWaistband({
.addClass('fabric')
if (complete)
paths.fold = new Path().move(points.midLeft).line(points.midRight).attr('class', 'help')
paths.fold = new Path().move(points.topMid).line(points.bottomMid).attr('class', 'help')
if (sa)
paths.sa = new Path()
.move(points.topLeft)
.line(points.bottomLeft.shift(-90, 2 * sa))
.line(points.bottomRight.shift(-90, 2 * sa))
.move(points.topLeft.shift(180, 2 * sa))
.line(points.bottomLeft.shift(180, 2 * sa))
.line(points.bottomRight)
.line(points.topRight)
.line(points.topLeft)
.line(points.topLeft.shift(180, 2 * sa))
.close()
.offset(sa)
.setClass('fabric sa')
@ -95,32 +95,32 @@ function pacoWaistband({
})
// Notches
macro('sprinkle', { snippet: 'eyelet', on: ['eyeletLeft', 'eyeletRight'] })
macro('sprinkle', { snippet: 'notch', on: ['midLeft', 'midRight'] })
macro('sprinkle', { snippet: 'eyelet', on: ['eyeletTop', 'eyeletBottom'] })
//macro('sprinkle', { snippet: 'notch', on: ['midLeft', 'midRight'] })
// Dimensions
macro('hd', {
id: 'wFull',
from: points.midLeft,
to: points.midRight,
y: points.bottomRight.y + 3 * sa + 15,
from: points.topLeft,
to: points.topRight,
y: points.bottomRight.y + sa + 15,
})
macro('hd', {
id: 'wEyeletLeft',
from: points.midLeft,
to: points.eyeletLeft,
y: points.topRight.y - sa - 15,
id: 'wEyeletTop',
from: points.eyeletTop,
to: points.topRight,
y: points.topLeft.y - sa - 15,
})
macro('hd', {
id: 'wEyeletRight',
from: points.eyeletRight,
to: points.midRight,
y: points.topRight.y - sa - 15,
macro('vd', {
id: 'hEyeletTop',
from: points.eyeletTop,
to: points.topRight,
x: points.topRight.x + sa + 15,
})
macro('vd', {
from: points.bottomRight,
to: points.topRight,
x: points.topRight.x + 15 + sa,
x: points.topLeft.x - 15 - 3 * sa,
})
return part

View file

@ -1,5 +1,5 @@
---
title: "Elasticated hem"
title: "Elasticated cuff"
---
Whether you want to include an elasticated cuff at the ankle,

View file

@ -35,6 +35,7 @@ editCurrentMeasiesHeader: Edit Pattern Measurements
editMeasiesByHand: Edit measurements by hand
editMeasiesByHandDesc: Manually set or override any measurements. These changes will only apply to the current pattern.
editSettings: Edit configuration
elastic: Elastic
export: Export
exportAsData: Export as data
exportForEditing: Export for editing