🎨 Updated prettier config
This commit is contained in:
parent
b8e632998b
commit
6710d76b08
401 changed files with 13193 additions and 15620 deletions
|
@ -11,31 +11,31 @@ export default function(part) {
|
|||
paths,
|
||||
Path,
|
||||
measurements
|
||||
} = part.shorthand();
|
||||
} = part.shorthand()
|
||||
|
||||
let scale = 1;
|
||||
let base = scale * measurements.headCircumference * (1 + options.headEase);
|
||||
let scale = 1
|
||||
let base = scale * measurements.headCircumference * (1 + options.headEase)
|
||||
|
||||
points.tipRight = new Point(base * 0.147, 0);
|
||||
points.tipLeft = points.tipRight.flipX();
|
||||
points.tipRightCp2 = points.tipRight.shift(-115, base * 0.051);
|
||||
points.tipLeftCp1 = points.tipRightCp2.flipX();
|
||||
points.tipRightCp1 = points.tipRight.shift(-75, base * 0.195);
|
||||
points.tipLeftCp2 = points.tipRightCp1.flipX();
|
||||
points.innerMid = new Point(0, base * 0.13);
|
||||
points.outerMid = new Point(0, base * 0.226);
|
||||
points.innerMidCp2 = points.innerMid.shift(180, base * 0.13);
|
||||
points.innerMidCp1 = points.innerMidCp2.flipX();
|
||||
points.outerMidCp1 = points.outerMid.shift(180, base * 0.066);
|
||||
points.outerMidCp2 = points.outerMidCp1.flipX();
|
||||
points.tipRight = new Point(base * 0.147, 0)
|
||||
points.tipLeft = points.tipRight.flipX()
|
||||
points.tipRightCp2 = points.tipRight.shift(-115, base * 0.051)
|
||||
points.tipLeftCp1 = points.tipRightCp2.flipX()
|
||||
points.tipRightCp1 = points.tipRight.shift(-75, base * 0.195)
|
||||
points.tipLeftCp2 = points.tipRightCp1.flipX()
|
||||
points.innerMid = new Point(0, base * 0.13)
|
||||
points.outerMid = new Point(0, base * 0.226)
|
||||
points.innerMidCp2 = points.innerMid.shift(180, base * 0.13)
|
||||
points.innerMidCp1 = points.innerMidCp2.flipX()
|
||||
points.outerMidCp1 = points.outerMid.shift(180, base * 0.066)
|
||||
points.outerMidCp2 = points.outerMidCp1.flipX()
|
||||
|
||||
store.set(
|
||||
"brimInnerLength",
|
||||
'brimInnerLength',
|
||||
new Path()
|
||||
.move(points.tipRight)
|
||||
.curve(points.tipRightCp2, points.innerMidCp1, points.innerMid)
|
||||
.length() * 2
|
||||
);
|
||||
)
|
||||
|
||||
paths.seam = new Path()
|
||||
.move(points.tipLeft)
|
||||
|
@ -45,48 +45,45 @@ export default function(part) {
|
|||
.curve(points.innerMidCp2, points.tipLeftCp1, points.tipLeft)
|
||||
.line(points.tipLeft)
|
||||
.close()
|
||||
.attr("class", "fabric");
|
||||
.attr('class', 'fabric')
|
||||
|
||||
if (complete) {
|
||||
points.title = points.innerMid.shiftFractionTowards(
|
||||
points.outerMidCp2,
|
||||
0.35
|
||||
);
|
||||
macro("title", {
|
||||
points.title = points.innerMid.shiftFractionTowards(points.outerMidCp2, 0.35)
|
||||
macro('title', {
|
||||
at: points.title,
|
||||
nr: 3,
|
||||
title: "brimBottom"
|
||||
});
|
||||
macro("grainline", {
|
||||
title: 'brimBottom'
|
||||
})
|
||||
macro('grainline', {
|
||||
from: points.outerMid,
|
||||
to: points.innerMid
|
||||
});
|
||||
})
|
||||
|
||||
if (sa) paths.sa = paths.seam.offset(sa).attr("class", "fabric sa");
|
||||
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
|
||||
|
||||
if (paperless) {
|
||||
macro("hd", {
|
||||
macro('hd', {
|
||||
from: points.tipLeft,
|
||||
to: points.tipRight,
|
||||
y: points.tipLeft.y - sa - 15
|
||||
});
|
||||
macro("hd", {
|
||||
from: paths.seam.edge("left"),
|
||||
to: paths.seam.edge("right"),
|
||||
})
|
||||
macro('hd', {
|
||||
from: paths.seam.edge('left'),
|
||||
to: paths.seam.edge('right'),
|
||||
y: points.tipLeft.y - sa - 30
|
||||
});
|
||||
macro("vd", {
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.outerMid,
|
||||
to: points.innerMid,
|
||||
x: points.innerMid.x - 15
|
||||
});
|
||||
macro("vd", {
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.outerMid,
|
||||
to: points.tipRight,
|
||||
x: points.tipRight.x + sa + 18
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return part;
|
||||
return part
|
||||
}
|
||||
|
|
|
@ -1,99 +1,88 @@
|
|||
export default function(part) {
|
||||
let {
|
||||
paperless,
|
||||
sa,
|
||||
complete,
|
||||
points,
|
||||
macro,
|
||||
paths,
|
||||
Path
|
||||
} = part.shorthand();
|
||||
let { paperless, sa, complete, points, macro, paths, Path } = part.shorthand()
|
||||
|
||||
paths.hint = paths.seam.clone().attr("class", "dashed stroke-sm");
|
||||
paths.hint = paths.seam.clone().attr('class', 'dashed stroke-sm')
|
||||
|
||||
paths.outset = new Path()
|
||||
.move(points.tipLeft)
|
||||
.curve(points.tipLeftCp2, points.outerMidCp1, points.outerMid)
|
||||
.curve(points.outerMidCp2, points.tipRightCp1, points.tipRight)
|
||||
.attr("class", "lining");
|
||||
.attr('class', 'lining')
|
||||
//.offset(1.5)
|
||||
points.outsetStart = paths.outset.shiftAlong(5);
|
||||
points.outsetEnd = paths.outset.reverse().shiftAlong(5);
|
||||
points.outsetStart = paths.outset.shiftAlong(5)
|
||||
points.outsetEnd = paths.outset.reverse().shiftAlong(5)
|
||||
paths.outset = paths.outset
|
||||
.split(points.outsetStart)
|
||||
.pop()
|
||||
.split(points.outsetEnd)
|
||||
.shift();
|
||||
.shift()
|
||||
// We check for sa here because it's a good way to sidestep issue #19
|
||||
if (sa) paths.outset = paths.outset.offset(1.5);
|
||||
if (sa) paths.outset = paths.outset.offset(1.5)
|
||||
|
||||
paths.inset = new Path()
|
||||
.move(points.tipLeft)
|
||||
.curve(points.tipLeftCp1, points.innerMidCp2, points.innerMid)
|
||||
.curve(points.innerMidCp1, points.tipRightCp2, points.tipRight)
|
||||
.attr("class", "various");
|
||||
.attr('class', 'various')
|
||||
//.offset(1.5)
|
||||
points.insetStart = paths.inset.shiftAlong(5);
|
||||
points.insetEnd = paths.inset.reverse().shiftAlong(5);
|
||||
points.insetStart = paths.inset.shiftAlong(5)
|
||||
points.insetEnd = paths.inset.reverse().shiftAlong(5)
|
||||
paths.inset = paths.inset
|
||||
.split(points.insetStart)
|
||||
.pop()
|
||||
.split(points.insetEnd)
|
||||
.shift();
|
||||
.shift()
|
||||
// We check for sa here because it's a good way to sidestep issue #19
|
||||
if (sa) paths.inset = paths.inset.offset(1.5);
|
||||
paths.inset.render = false;
|
||||
paths.outset.render = false;
|
||||
if (sa) paths.inset = paths.inset.offset(1.5)
|
||||
paths.inset.render = false
|
||||
paths.outset.render = false
|
||||
|
||||
paths.hint = paths.seam.clone().attr("class", "dashed stroke-sm");
|
||||
paths.hint = paths.seam.clone().attr('class', 'dashed stroke-sm')
|
||||
paths.seam = paths.outset
|
||||
.clone()
|
||||
.line(paths.inset.end())
|
||||
.join(paths.inset.reverse())
|
||||
.line(paths.outset.start())
|
||||
.close()
|
||||
.attr("class", "interfacing");
|
||||
.attr('class', 'interfacing')
|
||||
|
||||
// Clean up
|
||||
for (let i of Object.keys(paths)) {
|
||||
if (["seam", "inset", "outset"].indexOf(i) === -1) delete paths[i];
|
||||
if (['seam', 'inset', 'outset'].indexOf(i) === -1) delete paths[i]
|
||||
}
|
||||
|
||||
if (complete) {
|
||||
points.title = points.innerMid.shiftFractionTowards(
|
||||
points.outerMidCp2,
|
||||
0.35
|
||||
);
|
||||
macro("title", {
|
||||
points.title = points.innerMid.shiftFractionTowards(points.outerMidCp2, 0.35)
|
||||
macro('title', {
|
||||
at: points.title,
|
||||
nr: 5,
|
||||
title: "brimInterfacing"
|
||||
});
|
||||
macro("grainline", {
|
||||
title: 'brimInterfacing'
|
||||
})
|
||||
macro('grainline', {
|
||||
from: points.outerMid,
|
||||
to: points.innerMid
|
||||
});
|
||||
})
|
||||
|
||||
if (sa) paths.sa = paths.seam.offset(sa).attr("class", "fabric sa");
|
||||
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
|
||||
|
||||
if (paperless) {
|
||||
macro("hd", {
|
||||
from: paths.seam.edge("left"),
|
||||
to: paths.seam.edge("right"),
|
||||
macro('hd', {
|
||||
from: paths.seam.edge('left'),
|
||||
to: paths.seam.edge('right'),
|
||||
y: points.tipLeft.y - sa - 15
|
||||
});
|
||||
macro("vd", {
|
||||
from: paths.outset.edge("bottom"),
|
||||
to: paths.inset.edge("bottom"),
|
||||
})
|
||||
macro('vd', {
|
||||
from: paths.outset.edge('bottom'),
|
||||
to: paths.inset.edge('bottom'),
|
||||
x: points.innerMid.x - 15
|
||||
});
|
||||
macro("vd", {
|
||||
from: paths.outset.edge("bottom"),
|
||||
to: paths.inset.edge("topRight"),
|
||||
})
|
||||
macro('vd', {
|
||||
from: paths.outset.edge('bottom'),
|
||||
to: paths.inset.edge('topRight'),
|
||||
x: points.tipRight.x + sa + 18
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return part;
|
||||
return part
|
||||
}
|
||||
|
|
|
@ -1,66 +1,55 @@
|
|||
export default function(part) {
|
||||
let {
|
||||
paperless,
|
||||
sa,
|
||||
complete,
|
||||
points,
|
||||
macro,
|
||||
paths,
|
||||
Path
|
||||
} = part.shorthand();
|
||||
let { paperless, sa, complete, points, macro, paths, Path } = part.shorthand()
|
||||
|
||||
paths.hint = new Path()
|
||||
.move(points.tipLeft)
|
||||
.curve(points.tipLeftCp2, points.outerMidCp1, points.outerMid)
|
||||
.curve(points.outerMidCp2, points.tipRightCp1, points.tipRight)
|
||||
.attr("class", "dashed stroke-sm");
|
||||
.attr('class', 'dashed stroke-sm')
|
||||
|
||||
// We check for sa here because it's a good way to sidestep issue #19
|
||||
if (sa) paths.seam = paths.hint.offset(3);
|
||||
if (sa) paths.seam = paths.hint.offset(3)
|
||||
paths.seam = paths.seam
|
||||
.line(points.tipRight)
|
||||
.curve(points.tipRightCp2, points.innerMidCp1, points.innerMid)
|
||||
.curve(points.innerMidCp2, points.tipLeftCp1, points.tipLeft)
|
||||
.line(paths.seam.start())
|
||||
.close()
|
||||
.attr("class", "fabric");
|
||||
.attr('class', 'fabric')
|
||||
|
||||
if (complete) {
|
||||
points.title = points.innerMid.shiftFractionTowards(
|
||||
points.outerMidCp2,
|
||||
0.35
|
||||
);
|
||||
macro("title", {
|
||||
points.title = points.innerMid.shiftFractionTowards(points.outerMidCp2, 0.35)
|
||||
macro('title', {
|
||||
at: points.title,
|
||||
nr: 4,
|
||||
title: "brimTop"
|
||||
});
|
||||
macro("grainline", {
|
||||
title: 'brimTop'
|
||||
})
|
||||
macro('grainline', {
|
||||
from: points.outerMid,
|
||||
to: points.innerMid
|
||||
});
|
||||
})
|
||||
|
||||
if (sa) paths.sa = paths.seam.offset(sa).attr("class", "fabric sa");
|
||||
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
|
||||
|
||||
if (paperless) {
|
||||
let bottom = paths.seam.edge("bottom");
|
||||
macro("hd", {
|
||||
from: paths.seam.edge("left"),
|
||||
to: paths.seam.edge("right"),
|
||||
let bottom = paths.seam.edge('bottom')
|
||||
macro('hd', {
|
||||
from: paths.seam.edge('left'),
|
||||
to: paths.seam.edge('right'),
|
||||
y: points.tipLeft.y - sa - 15
|
||||
});
|
||||
macro("vd", {
|
||||
})
|
||||
macro('vd', {
|
||||
from: bottom,
|
||||
to: points.innerMid,
|
||||
x: points.innerMid.x - 15
|
||||
});
|
||||
macro("vd", {
|
||||
})
|
||||
macro('vd', {
|
||||
from: bottom,
|
||||
to: points.tipRight,
|
||||
x: points.tipRight.x + sa + 18
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return part;
|
||||
return part
|
||||
}
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
import freesewing from "@freesewing/core";
|
||||
import plugins from "@freesewing/plugin-bundle";
|
||||
import config from "../config";
|
||||
import freesewing from '@freesewing/core'
|
||||
import plugins from '@freesewing/plugin-bundle'
|
||||
import config from '../config'
|
||||
// Parts
|
||||
import draftTop from "./top";
|
||||
import draftSide from "./side";
|
||||
import draftBrimBottom from "./brimbottom";
|
||||
import draftBrimTop from "./brimtop";
|
||||
import draftBrimInterfacing from "./briminterfacing";
|
||||
import draftTop from './top'
|
||||
import draftSide from './side'
|
||||
import draftBrimBottom from './brimbottom'
|
||||
import draftBrimTop from './brimtop'
|
||||
import draftBrimInterfacing from './briminterfacing'
|
||||
|
||||
// Create new design
|
||||
const Pattern = new freesewing.Design(config, plugins);
|
||||
const Pattern = new freesewing.Design(config, plugins)
|
||||
|
||||
// Attachdraft methods to prototype
|
||||
Pattern.prototype.draftTop = draftTop;
|
||||
Pattern.prototype.draftSide = draftSide;
|
||||
Pattern.prototype.draftBrimBottom = draftBrimBottom;
|
||||
Pattern.prototype.draftBrimTop = draftBrimTop;
|
||||
Pattern.prototype.draftBrimInterfacing = draftBrimInterfacing;
|
||||
Pattern.prototype.draftTop = draftTop
|
||||
Pattern.prototype.draftSide = draftSide
|
||||
Pattern.prototype.draftBrimBottom = draftBrimBottom
|
||||
Pattern.prototype.draftBrimTop = draftBrimTop
|
||||
Pattern.prototype.draftBrimInterfacing = draftBrimInterfacing
|
||||
|
||||
export default Pattern;
|
||||
export default Pattern
|
||||
|
|
|
@ -1,45 +1,32 @@
|
|||
export default function(part) {
|
||||
let {
|
||||
paperless,
|
||||
sa,
|
||||
complete,
|
||||
points,
|
||||
macro,
|
||||
paths,
|
||||
Path,
|
||||
snippets,
|
||||
Snippet
|
||||
} = part.shorthand();
|
||||
let { paperless, sa, complete, points, macro, paths, Path, snippets, Snippet } = part.shorthand()
|
||||
|
||||
// Clean up
|
||||
for (let i of Object.keys(paths)) {
|
||||
if (i !== "side") delete paths[i];
|
||||
if (i !== 'side') delete paths[i]
|
||||
}
|
||||
|
||||
paths.seam = paths.side
|
||||
.clone()
|
||||
.line(points.foldTop)
|
||||
.attr("class", "fabric");
|
||||
paths.seam.render = true;
|
||||
.attr('class', 'fabric')
|
||||
paths.seam.render = true
|
||||
|
||||
if (complete) {
|
||||
points.title = points.innerGuide.shiftFractionTowards(
|
||||
points.outerGuide,
|
||||
0.5
|
||||
);
|
||||
macro("title", {
|
||||
points.title = points.innerGuide.shiftFractionTowards(points.outerGuide, 0.5)
|
||||
macro('title', {
|
||||
at: points.title,
|
||||
nr: 2,
|
||||
title: "side"
|
||||
});
|
||||
points.logo = points.tipCp2.shiftFractionTowards(points.outerTopCp1, 0.5);
|
||||
snippets.logo = new Snippet("logo", points.logo).attr("data-scale", 0.75);
|
||||
macro("cutonfold", {
|
||||
title: 'side'
|
||||
})
|
||||
points.logo = points.tipCp2.shiftFractionTowards(points.outerTopCp1, 0.5)
|
||||
snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.75)
|
||||
macro('cutonfold', {
|
||||
from: points.foldBottom,
|
||||
to: points.foldTop,
|
||||
offset: 15,
|
||||
grainline: true
|
||||
});
|
||||
})
|
||||
|
||||
if (sa) {
|
||||
paths.sa = new Path()
|
||||
|
@ -47,37 +34,37 @@ export default function(part) {
|
|||
.line(points.foldTop.shift(180, sa))
|
||||
.join(paths.side.offset(sa))
|
||||
.line(points.foldBottom)
|
||||
.attr("class", "fabric sa");
|
||||
.attr('class', 'fabric sa')
|
||||
}
|
||||
|
||||
if (paperless) {
|
||||
macro("vd", {
|
||||
macro('vd', {
|
||||
from: points.tip,
|
||||
to: points.foldBottom,
|
||||
x: points.tip.x + sa + 15
|
||||
});
|
||||
macro("vd", {
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.outerTop,
|
||||
to: points.foldBottom,
|
||||
x: points.tip.x + sa + 30
|
||||
});
|
||||
macro("hd", {
|
||||
})
|
||||
macro('hd', {
|
||||
from: points.foldTop,
|
||||
to: points.foldBottom,
|
||||
y: points.foldTop.y - 15
|
||||
});
|
||||
macro("hd", {
|
||||
})
|
||||
macro('hd', {
|
||||
from: points.foldTop,
|
||||
to: points.outerTop,
|
||||
y: points.outerTop.y + sa + 15
|
||||
});
|
||||
macro("hd", {
|
||||
})
|
||||
macro('hd', {
|
||||
from: points.foldTop,
|
||||
to: points.tip,
|
||||
y: points.outerTop.y + sa + 30
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return part;
|
||||
return part
|
||||
}
|
||||
|
|
|
@ -10,66 +10,63 @@ export default function(part) {
|
|||
snippets,
|
||||
Snippet,
|
||||
complete
|
||||
} = part.shorthand();
|
||||
} = part.shorthand()
|
||||
|
||||
const fitCap = (part, scale) => {
|
||||
let { points, options, Point, Path, measurements } = part.shorthand();
|
||||
let { points, options, Point, Path, measurements } = part.shorthand()
|
||||
|
||||
let base = scale * measurements.headCircumference * (1 + options.headEase);
|
||||
let base = scale * measurements.headCircumference * (1 + options.headEase)
|
||||
|
||||
// Top
|
||||
points.midFront = new Point(0, 0);
|
||||
points.midFrontCp2 = points.midFront.shift(-90, base * 0.074);
|
||||
points.midMid = points.midFront.shift(0, base * 0.34);
|
||||
points.midBack = new Point(base * 0.654, base * 0.124);
|
||||
points.midSide = new Point(base * 0.2525, base * 0.178);
|
||||
points.midSideCp1 = points.midSide.shift(180, base * 0.185);
|
||||
points.midSideCp2 = points.midSide.shift(0, base * 0.101);
|
||||
points.backHollow = new Point(base * 0.488, base * 0.136);
|
||||
points.backHollowCp1 = points.backHollow.shift(180, base * 0.033);
|
||||
points.backHollowCp2 = points.backHollow.shift(0, base * 0.033);
|
||||
points.backEdge = new Point(base * 0.576, base * 0.185);
|
||||
let angle = points.backEdge.angle(points.midBack) + 90;
|
||||
points.backSide = points.backEdge.shift(angle, base * 0.025);
|
||||
points.backSideCp1 = points.backSide.shift(angle, base * 0.02);
|
||||
points.midMidCp1 = points.midMid.shift(0, base * 0.1);
|
||||
points.midBackCp2 = points.midBack.shift(angle, base * 0.09);
|
||||
points.midFront = new Point(0, 0)
|
||||
points.midFrontCp2 = points.midFront.shift(-90, base * 0.074)
|
||||
points.midMid = points.midFront.shift(0, base * 0.34)
|
||||
points.midBack = new Point(base * 0.654, base * 0.124)
|
||||
points.midSide = new Point(base * 0.2525, base * 0.178)
|
||||
points.midSideCp1 = points.midSide.shift(180, base * 0.185)
|
||||
points.midSideCp2 = points.midSide.shift(0, base * 0.101)
|
||||
points.backHollow = new Point(base * 0.488, base * 0.136)
|
||||
points.backHollowCp1 = points.backHollow.shift(180, base * 0.033)
|
||||
points.backHollowCp2 = points.backHollow.shift(0, base * 0.033)
|
||||
points.backEdge = new Point(base * 0.576, base * 0.185)
|
||||
let angle = points.backEdge.angle(points.midBack) + 90
|
||||
points.backSide = points.backEdge.shift(angle, base * 0.025)
|
||||
points.backSideCp1 = points.backSide.shift(angle, base * 0.02)
|
||||
points.midMidCp1 = points.midMid.shift(0, base * 0.1)
|
||||
points.midBackCp2 = points.midBack.shift(angle, base * 0.09)
|
||||
|
||||
// Side
|
||||
points.foldTop = new Point(0, 0);
|
||||
points.foldTopCp1 = points.foldTop.shift(-90, base * 0.0433);
|
||||
points.foldBottom = points.foldTop.shift(0, base * 0.126);
|
||||
points.foldBottomCp2 = points.foldBottom.shift(-90, base * 0.0866);
|
||||
points.tip = new Point(base * 0.411, base * 0.207);
|
||||
points.tipCp1 = points.tip.shift(-85, base * 0.1);
|
||||
points.tipCp2 = points.tip.shift(177, base * 0.067);
|
||||
points.outerTop = new Point(base * 0.328, base * 0.337);
|
||||
points.outerTopCp1 = points.outerTop.shift(180, base * 0.05);
|
||||
points.outerTopCp2 = points.outerTop.shift(0, base * 0.05);
|
||||
points.outerGuide = new Point(base * 0.0867, base * 0.1913);
|
||||
points.outerGuideCp1 = points.outerGuide.shift(135, base * 0.076);
|
||||
points.outerGuideCp2 = points.outerGuide.shift(-45, base * 0.145);
|
||||
points.innerGuide = new Point(base * 0.22, base * 0.172);
|
||||
points.innerGuideCp1 = points.innerGuide.shift(-38, base * 0.052);
|
||||
points.innerGuideCp2 = points.innerGuide.shift(142, base * 0.035);
|
||||
points.foldTop = new Point(0, 0)
|
||||
points.foldTopCp1 = points.foldTop.shift(-90, base * 0.0433)
|
||||
points.foldBottom = points.foldTop.shift(0, base * 0.126)
|
||||
points.foldBottomCp2 = points.foldBottom.shift(-90, base * 0.0866)
|
||||
points.tip = new Point(base * 0.411, base * 0.207)
|
||||
points.tipCp1 = points.tip.shift(-85, base * 0.1)
|
||||
points.tipCp2 = points.tip.shift(177, base * 0.067)
|
||||
points.outerTop = new Point(base * 0.328, base * 0.337)
|
||||
points.outerTopCp1 = points.outerTop.shift(180, base * 0.05)
|
||||
points.outerTopCp2 = points.outerTop.shift(0, base * 0.05)
|
||||
points.outerGuide = new Point(base * 0.0867, base * 0.1913)
|
||||
points.outerGuideCp1 = points.outerGuide.shift(135, base * 0.076)
|
||||
points.outerGuideCp2 = points.outerGuide.shift(-45, base * 0.145)
|
||||
points.innerGuide = new Point(base * 0.22, base * 0.172)
|
||||
points.innerGuideCp1 = points.innerGuide.shift(-38, base * 0.052)
|
||||
points.innerGuideCp2 = points.innerGuide.shift(142, base * 0.035)
|
||||
|
||||
let backLength = points.backEdge.dist(points.midBack) * 2;
|
||||
let backLength = points.backEdge.dist(points.midBack) * 2
|
||||
let sideLength =
|
||||
new Path()
|
||||
.move(points.tip)
|
||||
.curve(points.tipCp2, points.innerGuideCp1, points.innerGuide)
|
||||
.curve(points.innerGuideCp2, points.foldBottomCp2, points.foldBottom)
|
||||
.length() * 2;
|
||||
.length() * 2
|
||||
|
||||
// Return delta between target and actual seam length
|
||||
return (
|
||||
measurements.headCircumference * (1 + options.headEase) -
|
||||
(backLength + sideLength)
|
||||
);
|
||||
};
|
||||
return measurements.headCircumference * (1 + options.headEase) - (backLength + sideLength)
|
||||
}
|
||||
|
||||
const sideSeamDelta = part => {
|
||||
let { Path } = part.shorthand();
|
||||
let { Path } = part.shorthand()
|
||||
|
||||
let top = new Path()
|
||||
.move(points.midFront)
|
||||
|
@ -77,40 +74,40 @@ export default function(part) {
|
|||
.curve(points.midSideCp2, points.backHollowCp1, points.backHollow)
|
||||
.curve(points.backHollowCp2, points.backSideCp1, points.backSide)
|
||||
.line(points.backEdge)
|
||||
.length();
|
||||
.length()
|
||||
|
||||
let side = new Path()
|
||||
.move(points.foldTop)
|
||||
.curve(points.foldTopCp1, points.outerGuideCp1, points.outerGuide)
|
||||
.curve(points.outerGuideCp2, points.outerTopCp1, points.outerTop)
|
||||
.curve(points.outerTopCp2, points.tipCp1, points.tip)
|
||||
.length();
|
||||
.length()
|
||||
|
||||
return top - side;
|
||||
};
|
||||
return top - side
|
||||
}
|
||||
|
||||
// Fit head
|
||||
let scale = 1;
|
||||
let count = 1;
|
||||
let delta = fitCap(part, scale);
|
||||
let scale = 1
|
||||
let count = 1
|
||||
let delta = fitCap(part, scale)
|
||||
while (Math.abs(delta) > 1 && count < 25) {
|
||||
count++;
|
||||
if (delta > 0) scale = 1000 / (1000 - delta);
|
||||
count++
|
||||
if (delta > 0) scale = 1000 / (1000 - delta)
|
||||
// Too small
|
||||
else scale = 1000 / (1000 + delta); // Too large
|
||||
delta = fitCap(part, scale);
|
||||
else scale = 1000 / (1000 + delta) // Too large
|
||||
delta = fitCap(part, scale)
|
||||
}
|
||||
|
||||
// Match side seam
|
||||
delta = sideSeamDelta(part);
|
||||
count = 1;
|
||||
let top = ["outerTop", "outerTopCp1", "outerTopCp2"];
|
||||
let guide = ["outerGuide", "outerGuideCp1", "outerGuideCp2"];
|
||||
delta = sideSeamDelta(part)
|
||||
count = 1
|
||||
let top = ['outerTop', 'outerTopCp1', 'outerTopCp2']
|
||||
let guide = ['outerGuide', 'outerGuideCp1', 'outerGuideCp2']
|
||||
while (Math.abs(delta) > 1 && count < 25) {
|
||||
for (let i of top) points[i] = points[i].shift(-90, delta / 3);
|
||||
for (let i of guide) points[i] = points[i].shift(-135, delta / 3);
|
||||
delta = sideSeamDelta(part);
|
||||
count++;
|
||||
for (let i of top) points[i] = points[i].shift(-90, delta / 3)
|
||||
for (let i of guide) points[i] = points[i].shift(-135, delta / 3)
|
||||
delta = sideSeamDelta(part)
|
||||
count++
|
||||
}
|
||||
|
||||
// Paths
|
||||
|
@ -124,7 +121,7 @@ export default function(part) {
|
|||
.line(points.midBack)
|
||||
.curve(points.midBackCp2, points.midMidCp1, points.midMid)
|
||||
.close()
|
||||
.attr("class", "fabric");
|
||||
.attr('class', 'fabric')
|
||||
|
||||
paths.side = new Path()
|
||||
.move(points.foldTop)
|
||||
|
@ -133,72 +130,72 @@ export default function(part) {
|
|||
.curve(points.outerTopCp2, points.tipCp1, points.tip)
|
||||
.curve(points.tipCp2, points.innerGuideCp1, points.innerGuide)
|
||||
.curve(points.innerGuideCp2, points.foldBottomCp2, points.foldBottom)
|
||||
.attr("class", "fabric");
|
||||
.attr('class', 'fabric')
|
||||
|
||||
// Uncomment to see the side part here
|
||||
paths.side.render = false;
|
||||
paths.side.render = false
|
||||
|
||||
if (complete) {
|
||||
points.title = new Point(points.midMid.x, points.midFrontCp2.y);
|
||||
macro("title", {
|
||||
points.title = new Point(points.midMid.x, points.midFrontCp2.y)
|
||||
macro('title', {
|
||||
at: points.title,
|
||||
nr: 1,
|
||||
title: "top"
|
||||
});
|
||||
points.logo = new Point(points.title.x / 2, points.title.y);
|
||||
snippets.logo = new Snippet("logo", points.logo).attr("data-scale", 0.75);
|
||||
points.grainlineFrom = new Point(points.midSideCp1.x, points.midBack.y);
|
||||
points.grainlineTo = points.midBack.clone();
|
||||
macro("grainline", {
|
||||
title: 'top'
|
||||
})
|
||||
points.logo = new Point(points.title.x / 2, points.title.y)
|
||||
snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.75)
|
||||
points.grainlineFrom = new Point(points.midSideCp1.x, points.midBack.y)
|
||||
points.grainlineTo = points.midBack.clone()
|
||||
macro('grainline', {
|
||||
from: points.grainlineFrom,
|
||||
to: points.grainlineTo
|
||||
});
|
||||
})
|
||||
|
||||
if (sa) paths.sa = paths.seam.offset(sa).attr("class", "fabric sa");
|
||||
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
|
||||
|
||||
if (paperless) {
|
||||
macro("vd", {
|
||||
macro('vd', {
|
||||
from: points.midSide,
|
||||
to: points.foldTop,
|
||||
x: points.foldTop.x - sa - 15
|
||||
});
|
||||
macro("vd", {
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.backHollow,
|
||||
to: points.midMid,
|
||||
x: points.midMid.x - 15
|
||||
});
|
||||
macro("vd", {
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.midBack,
|
||||
to: points.midMid,
|
||||
x: points.midBack.x + sa + 15
|
||||
});
|
||||
macro("vd", {
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.backEdge,
|
||||
to: points.midMid,
|
||||
x: points.midBack.x + sa + 30
|
||||
});
|
||||
macro("hd", {
|
||||
})
|
||||
macro('hd', {
|
||||
from: points.foldTop,
|
||||
to: points.midSide,
|
||||
y: points.midSide.y + sa + 15
|
||||
});
|
||||
macro("hd", {
|
||||
})
|
||||
macro('hd', {
|
||||
from: points.foldTop,
|
||||
to: points.backHollow,
|
||||
y: points.midSide.y + sa + 30
|
||||
});
|
||||
macro("hd", {
|
||||
})
|
||||
macro('hd', {
|
||||
from: points.foldTop,
|
||||
to: points.backEdge,
|
||||
y: points.midSide.y + sa + 45
|
||||
});
|
||||
macro("hd", {
|
||||
})
|
||||
macro('hd', {
|
||||
from: points.foldTop,
|
||||
to: points.midBack,
|
||||
y: points.midSide.y + sa + 60
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return part;
|
||||
return part
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue