1
0
Fork 0

sparkles: Added sleeve

This commit is contained in:
Joost De Cock 2018-12-23 17:25:53 +01:00
parent dab7345608
commit 9901d61f8d
5 changed files with 108 additions and 7 deletions

View file

@ -26,7 +26,8 @@ export default {
frontLeft: "front", frontLeft: "front",
buttonPlacket: "front", buttonPlacket: "front",
buttonholePlacket: "front", buttonholePlacket: "front",
yoke: "backBase" yoke: "backBase",
sleeve: ["sleeveBase", "front", "back"]
}, },
inject: { inject: {
frontBase: "base", frontBase: "base",
@ -37,16 +38,17 @@ export default {
frontLeft: "front", frontLeft: "front",
buttonPlacket: "front", buttonPlacket: "front",
buttonholePlacket: "front", buttonholePlacket: "front",
yoke: "backBase" yoke: "backBase",
sleeve: "sleeveBase"
}, },
hide: ["base", "frontBase", "front", "backBase"], hide: ["base", "frontBase", "front", "backBase", "sleeveBase"],
options: { options: {
// Constants // Constants
collarFactor: 5, collarFactor: 5,
minimalDartShaping: 5, minimalDartShaping: 5,
brianFitSleeve: true, brianFitSleeve: true,
cuffOverlap: 0.05,
// Toggles frenchCuffRoundFactor: 0.05,
// Lists // Lists
extraTopButton: { extraTopButton: {

View file

@ -113,7 +113,7 @@ let settings1 = { ...settings };
pattern1.settings.options.buttonholePlacketType = "seperate"; pattern1.settings.options.buttonholePlacketType = "seperate";
//pattern1.settings.options.splitYoke = "yes"; //pattern1.settings.options.splitYoke = "yes";
pattern1.settings.sa = 10; pattern1.settings.sa = 10;
pattern1.settings.only = ["yoke" ]; //pattern1.settings.only = "sleeve";
pattern1.draft(); pattern1.draft();
console.log(pattern1); console.log(pattern1);
document.getElementById("svg1").innerHTML = pattern1.render(); document.getElementById("svg1").innerHTML = pattern1.render();

View file

@ -12,6 +12,7 @@ import draftButtonPlacket from "./buttonplacket";
import draftFrontLeft from "./frontleft"; import draftFrontLeft from "./frontleft";
import draftButtonholePlacket from "./buttonholeplacket"; import draftButtonholePlacket from "./buttonholeplacket";
import draftYoke from "./yoke"; import draftYoke from "./yoke";
import draftSleeve from "./sleeve";
// Constructor // Constructor
const Simon = function(settings) { const Simon = function(settings) {
@ -38,6 +39,10 @@ Simon.prototype.draftFrontBase = function(part) {
Simon.prototype.draftBackBase = function(part) { Simon.prototype.draftBackBase = function(part) {
return new Brian(this.settings).draftBack(part); return new Brian(this.settings).draftBack(part);
}; };
Simon.prototype.draftSleeveBase = function(part) {
let brian = new Brian(this.settings);
return brian.draftSleeve(brian.draftSleevecap(part));
};
Simon.prototype.draftBack = draftBack; Simon.prototype.draftBack = draftBack;
Simon.prototype.draftFront = draftFront; Simon.prototype.draftFront = draftFront;
Simon.prototype.draftFrontRight = draftFrontRight; Simon.prototype.draftFrontRight = draftFrontRight;
@ -45,6 +50,7 @@ Simon.prototype.draftButtonPlacket = draftButtonPlacket;
Simon.prototype.draftFrontLeft = draftFrontLeft; Simon.prototype.draftFrontLeft = draftFrontLeft;
Simon.prototype.draftButtonholePlacket = draftButtonholePlacket; Simon.prototype.draftButtonholePlacket = draftButtonholePlacket;
Simon.prototype.draftYoke = draftYoke; Simon.prototype.draftYoke = draftYoke;
Simon.prototype.draftSleeve = draftSleeve;
export default Simon; export default Simon;

View file

@ -0,0 +1,93 @@
import { calculateReduction } from "./shared";
export default part => {
// prettier-ignore
let {store, measurements, utils, sa, Point, points, Path, paths, Snippet, snippets, complete, paperless, macro, options} = part.shorthand();
// TODO: Sleeve pleats
// Sleeve width depends on cuff style
let width =
measurements.wristCircumference *
(1 + options.cuffEase + options.cuffOverlap + options.cuffDrape);
if (
options.cuffStyle === "straightFrenchcuff" ||
options.cuffStyle === "roundedFrenchcuff" ||
options.cuffStyle === "angledFrenchCuff"
)
width =
measurements.wristCircumference *
(1 + options.cuffEase + options.cuffOverlap * 1.5);
points.wristRight.x = width / 2;
points.wristLeft.x = width / -2;
let cuffLength = measurements.shoulderToWrist * options.cuffLength;
points.wristRight = points.wristRight.shift(90, cuffLength);
points.wristLeft = points.wristLeft.shift(90, cuffLength);
points.cuffMid = new Point(0, points.wristLeft.y);
points.cuffLeftMid = points.cuffMid.shiftFractionTowards(
points.wristLeft,
0.5
);
points.cuffRightMid = points.cuffMid.shiftFractionTowards(
points.wristRight,
0.5
);
points.cuffLeftCusp = points.cuffLeftMid.shift(90, width / 50);
points.cuffRightCusp = points.cuffRightMid.shift(-90, width / 50);
points.cuffLeftCuspCp1 = points.cuffLeftCusp.shift(180, width / 10);
points.cuffLeftCuspCp2 = points.cuffLeftCusp.shift(0, width / 10);
points.cuffRightCuspCp1 = points.cuffRightCusp.shift(180, width / 10);
points.cuffRightCuspCp2 = points.cuffRightCusp.shift(0, width / 10);
paths.frenchBase = new Path()
.move(points.wristRight)
.line(points.bicepsRight)
._curve(points.capQ1Cp1, points.capQ1)
.curve(points.capQ1Cp2, points.capQ2Cp1, points.capQ2)
.curve(points.capQ2Cp2, points.capQ3Cp1, points.capQ3)
.curve(points.capQ3Cp2, points.capQ4Cp1, points.capQ4)
.curve_(points.capQ4Cp2, points.bicepsLeft);
paths.frenchBase.render = false;
paths.saBase = new Path().move(points.bicepsLeft).line(points.wristLeft);
paths.saBase.render = false;
paths.cuffBase = new Path()
.move(points.wristLeft)
._curve(points.cuffLeftCuspCp1, points.cuffLeftCusp)
.curve(
points.cuffLeftCuspCp2,
points.cuffRightCuspCp1,
points.cuffRightCusp
)
.curve_(points.cuffRightCuspCp2, points.wristRight);
paths.cuffBase.render = false;
paths.seam = paths.frenchBase
.clone()
.line(points.wristLeft)
.join(paths.cuffBase)
.attr("class", "fabric");
// Complete pattern?
if (complete) {
macro("title", { at: points.centerBiceps, nr: 5, title: "sleeve" });
macro("grainline", { from: points.cuffMid, to: points.sleeveTip });
if (sa) {
paths.sa = paths.frenchBase
.offset(sa * 2)
.join(paths.saBase.offset(sa))
.join(paths.cuffBase.offset(sa))
.close()
.attr("class", "fabric sa");
}
}
// Paperless?
if (paperless) {
}
return part;
};

View file

@ -23,7 +23,7 @@ export default part => {
paths.seam = paths.seam.close().attr("class", "fabric"); paths.seam = paths.seam.close().attr("class", "fabric");
// Complete pattern? // Complete pattern?
if (sa) { if (complete) {
delete snippets.armholePitchNotch; delete snippets.armholePitchNotch;
points.title = new Point(points.neck.x, points.cbYoke.y / 3); points.title = new Point(points.neck.x, points.cbYoke.y / 3);
macro("title", { at: points.title, nr: 4, title: "yoke", scale: 0.8 }); macro("title", { at: points.title, nr: 4, title: "yoke", scale: 0.8 });