2019-04-06 12:30:11 +02:00
|
|
|
export default function(part) {
|
|
|
|
let {
|
|
|
|
paperless,
|
|
|
|
sa,
|
|
|
|
snippets,
|
|
|
|
Snippet,
|
|
|
|
store,
|
|
|
|
complete,
|
|
|
|
points,
|
|
|
|
macro,
|
|
|
|
Point,
|
|
|
|
paths,
|
|
|
|
Path
|
|
|
|
} = part.shorthand();
|
|
|
|
|
|
|
|
// Give points their original names
|
|
|
|
for (let i of store.get("side")) points[i] = points[i + "Rot2"].clone();
|
|
|
|
|
|
|
|
// Clean up
|
|
|
|
for (let i in paths) delete paths[i];
|
|
|
|
for (let i in snippets) delete snippets[i];
|
|
|
|
|
|
|
|
paths.saBase = new Path()
|
|
|
|
.move(points.hem)
|
|
|
|
.line(points.seat)
|
|
|
|
.curve(points.seatCp2, points.waistCp1, points.waist)
|
|
|
|
.curve_(points.waistCp2, points.armhole)
|
|
|
|
.curve(points.armholeCp2, points.armholeHollowCp1, points.armholeHollow)
|
|
|
|
.curve(points.armholeHollowCp2, points.armholePitchCp1, points.armholePitch)
|
|
|
|
._curve(points.bustPointCp1, points.bustPoint)
|
|
|
|
.curve(points.bustPointCp2, points.psWaistCp1, points.psWaist)
|
|
|
|
.line(points.psHem);
|
|
|
|
paths.seam = paths.saBase
|
|
|
|
.clone()
|
|
|
|
.line(points.hem)
|
|
|
|
.close()
|
|
|
|
.attr("class", "fabric");
|
|
|
|
|
|
|
|
if (complete) {
|
2019-04-06 13:15:59 +02:00
|
|
|
points.title = points.bustPoint.shiftFractionTowards(points.waist, 0.5);
|
2019-04-06 12:30:11 +02:00
|
|
|
macro("title", {
|
|
|
|
at: points.title,
|
|
|
|
nr: "1b",
|
|
|
|
title: "side"
|
|
|
|
});
|
|
|
|
|
|
|
|
points.logo = points.psHem.shiftFractionTowards(points.seat, 0.5);
|
|
|
|
snippets.logo = new Snippet("logo", points.logo);
|
|
|
|
|
|
|
|
points.grainlineFrom = points.psHem.shiftFractionTowards(points.hem, 0.5);
|
|
|
|
points.grainlineTo = new Point(
|
|
|
|
points.grainlineFrom.x,
|
|
|
|
points.armholePitchCp1.y
|
|
|
|
);
|
|
|
|
macro("grainline", {
|
|
|
|
from: points.grainlineFrom,
|
|
|
|
to: points.grainlineTo
|
|
|
|
});
|
2019-04-06 13:15:59 +02:00
|
|
|
snippets.bust = new Snippet("notch", points.bustPoint);
|
2019-04-06 12:30:11 +02:00
|
|
|
|
|
|
|
if (sa) {
|
|
|
|
paths.sa = paths.saBase
|
|
|
|
.offset(sa)
|
|
|
|
.line(points.psHem.shift(-90, 3 * sa).shift(180, sa))
|
|
|
|
.line(points.hem.shift(-90, 3 * sa).shift(0, sa))
|
|
|
|
.close()
|
|
|
|
.attr("class", "fabric sa");
|
|
|
|
}
|
2019-04-06 13:15:59 +02:00
|
|
|
|
|
|
|
if (paperless) {
|
|
|
|
macro("vd", {
|
|
|
|
from: points.psHem,
|
|
|
|
to: points.psWaist,
|
|
|
|
x: points.psWaist.x - sa - 15
|
|
|
|
});
|
|
|
|
macro("vd", {
|
|
|
|
from: points.psHem,
|
|
|
|
to: points.bustPoint,
|
|
|
|
x: points.bustPoint.x - sa - 15
|
|
|
|
});
|
|
|
|
macro("vd", {
|
|
|
|
from: points.hem,
|
|
|
|
to: points.seat,
|
|
|
|
x: points.hem.x + sa + 15
|
|
|
|
});
|
|
|
|
macro("vd", {
|
|
|
|
from: points.hem,
|
|
|
|
to: points.waist,
|
|
|
|
x: points.hem.x + sa + 30
|
|
|
|
});
|
|
|
|
macro("vd", {
|
|
|
|
from: points.hem,
|
|
|
|
to: points.armhole,
|
|
|
|
x: points.hem.x + sa + 45
|
|
|
|
});
|
|
|
|
macro("vd", {
|
|
|
|
from: points.hem,
|
|
|
|
to: points.armholePitch,
|
|
|
|
x: points.hem.x + sa + 60
|
|
|
|
});
|
|
|
|
macro("hd", {
|
|
|
|
from: points.psWaist,
|
|
|
|
to: points.waist
|
|
|
|
});
|
|
|
|
macro("hd", {
|
|
|
|
from: points.bustPoint,
|
|
|
|
to: points.waist,
|
|
|
|
y: points.bustPoint.y
|
|
|
|
});
|
|
|
|
macro("hd", {
|
|
|
|
from: points.bustPoint,
|
|
|
|
to: points.armholePitch,
|
|
|
|
y: points.armholePitch.y - sa - 15
|
|
|
|
});
|
|
|
|
macro("hd", {
|
|
|
|
from: points.bustPoint,
|
|
|
|
to: points.armhole,
|
|
|
|
y: points.armholePitch.y - sa - 30
|
|
|
|
});
|
|
|
|
macro("hd", {
|
|
|
|
from: points.psHem,
|
|
|
|
to: points.hem,
|
|
|
|
y: points.hem.y + 3 * sa + 15
|
|
|
|
});
|
|
|
|
}
|
2019-04-06 12:30:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return part;
|
|
|
|
}
|