sparkles: New examples for freesewing v0.9.0
This commit is contained in:
parent
bb5d192b29
commit
bba03b46e5
8 changed files with 231 additions and 1 deletions
|
@ -45,7 +45,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"freesewing": "^0.8.3",
|
"freesewing": "^0.9.0",
|
||||||
"@freesewing/plugin-bundle": "0.0.1"
|
"@freesewing/plugin-bundle": "0.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -32,11 +32,17 @@ import pathReverse from "./path.reverse";
|
||||||
import pathShiftAlong from "./path.shiftalong";
|
import pathShiftAlong from "./path.shiftalong";
|
||||||
import pathShiftFractionAlong from "./path.shiftfractionalong";
|
import pathShiftFractionAlong from "./path.shiftfractionalong";
|
||||||
import pathEdge from "./path.edge";
|
import pathEdge from "./path.edge";
|
||||||
|
import pathCrossesX from "./path.crossesx";
|
||||||
|
import pathCrossesY from "./path.crossesy";
|
||||||
|
import pathIntersects from "./path.intersects";
|
||||||
|
import pathDivide from "./path.divide";
|
||||||
|
|
||||||
import utilsLinesCross from "./utils.linescross";
|
import utilsLinesCross from "./utils.linescross";
|
||||||
import utilsBeamsCross from "./utils.beamscross";
|
import utilsBeamsCross from "./utils.beamscross";
|
||||||
import utilsBeamCrossesX from "./utils.beamcrossesx";
|
import utilsBeamCrossesX from "./utils.beamcrossesx";
|
||||||
import utilsBeamCrossesY from "./utils.beamcrossesy";
|
import utilsBeamCrossesY from "./utils.beamcrossesy";
|
||||||
|
import utilsCurveCrossesLine from "./utils.curvecrossesline";
|
||||||
|
import utilsCurveCrossesCurve from "./utils.curvecrossescurve";
|
||||||
|
|
||||||
import settingsSa from "./settings.sa";
|
import settingsSa from "./settings.sa";
|
||||||
import macroGrainline from "./macro.grainline";
|
import macroGrainline from "./macro.grainline";
|
||||||
|
@ -74,11 +80,17 @@ pattern.draft = function() {
|
||||||
this.parts.pathShiftAlong = this.draftPathShiftAlong(new pattern.Part());
|
this.parts.pathShiftAlong = this.draftPathShiftAlong(new pattern.Part());
|
||||||
this.parts.pathShiftFractionAlong = this.draftPathShiftFractionAlong(new pattern.Part());
|
this.parts.pathShiftFractionAlong = this.draftPathShiftFractionAlong(new pattern.Part());
|
||||||
this.parts.pathEdge = this.draftPathEdge(new pattern.Part());
|
this.parts.pathEdge = this.draftPathEdge(new pattern.Part());
|
||||||
|
this.parts.pathCrossesX = this.draftPathCrossesX(new pattern.Part());
|
||||||
|
this.parts.pathCrossesY = this.draftPathCrossesY(new pattern.Part());
|
||||||
|
this.parts.pathIntersects = this.draftPathIntersects(new pattern.Part());
|
||||||
|
this.parts.pathDivide = this.draftPathDivide(new pattern.Part());
|
||||||
|
|
||||||
this.parts.utilsLinesCross = this.draftUtilsLinesCross(new pattern.Part());
|
this.parts.utilsLinesCross = this.draftUtilsLinesCross(new pattern.Part());
|
||||||
this.parts.utilsBeamsCross = this.draftUtilsBeamsCross(new pattern.Part());
|
this.parts.utilsBeamsCross = this.draftUtilsBeamsCross(new pattern.Part());
|
||||||
this.parts.utilsBeamCrossesX = this.draftUtilsBeamCrossesX(new pattern.Part());
|
this.parts.utilsBeamCrossesX = this.draftUtilsBeamCrossesX(new pattern.Part());
|
||||||
this.parts.utilsBeamCrossesY = this.draftUtilsBeamCrossesY(new pattern.Part());
|
this.parts.utilsBeamCrossesY = this.draftUtilsBeamCrossesY(new pattern.Part());
|
||||||
|
this.parts.utilsCurveCrossesLine = this.draftUtilsCurveCrossesLine(new pattern.Part());
|
||||||
|
this.parts.utilsCurveCrossesCurve = this.draftUtilsCurveCrossesCurve(new pattern.Part());
|
||||||
|
|
||||||
this.parts.settingsSa = this.draftSettingsSa(new pattern.Part());
|
this.parts.settingsSa = this.draftSettingsSa(new pattern.Part());
|
||||||
this.parts.macroGrainline = this.draftMacroGrainline(new pattern.Part());
|
this.parts.macroGrainline = this.draftMacroGrainline(new pattern.Part());
|
||||||
|
@ -113,11 +125,17 @@ pattern.draftPathReverse = part => pathReverse.draft(part);
|
||||||
pattern.draftPathShiftAlong = part => pathShiftAlong.draft(part);
|
pattern.draftPathShiftAlong = part => pathShiftAlong.draft(part);
|
||||||
pattern.draftPathShiftFractionAlong = part => pathShiftFractionAlong.draft(part);
|
pattern.draftPathShiftFractionAlong = part => pathShiftFractionAlong.draft(part);
|
||||||
pattern.draftPathEdge = part => pathEdge.draft(part);
|
pattern.draftPathEdge = part => pathEdge.draft(part);
|
||||||
|
pattern.draftPathCrossesX = part => pathCrossesX.draft(part);
|
||||||
|
pattern.draftPathCrossesY = part => pathCrossesY.draft(part);
|
||||||
|
pattern.draftPathIntersects = part => pathIntersects.draft(part);
|
||||||
|
pattern.draftPathDivide = part => pathDivide.draft(part);
|
||||||
|
|
||||||
pattern.draftUtilsLinesCross = part => utilsLinesCross.draft(part);
|
pattern.draftUtilsLinesCross = part => utilsLinesCross.draft(part);
|
||||||
pattern.draftUtilsBeamsCross = part => utilsBeamsCross.draft(part);
|
pattern.draftUtilsBeamsCross = part => utilsBeamsCross.draft(part);
|
||||||
pattern.draftUtilsBeamCrossesX = part => utilsBeamCrossesX.draft(part);
|
pattern.draftUtilsBeamCrossesX = part => utilsBeamCrossesX.draft(part);
|
||||||
pattern.draftUtilsBeamCrossesY = part => utilsBeamCrossesY.draft(part);
|
pattern.draftUtilsBeamCrossesY = part => utilsBeamCrossesY.draft(part);
|
||||||
|
pattern.draftUtilsCurveCrossesLine = part => utilsCurveCrossesLine.draft(part);
|
||||||
|
pattern.draftUtilsCurveCrossesCurve = part => utilsCurveCrossesCurve.draft(part);
|
||||||
|
|
||||||
pattern.draftSettingsSa = part => settingsSa.draft(part);
|
pattern.draftSettingsSa = part => settingsSa.draft(part);
|
||||||
pattern.draftMacroGrainline = part => macroGrainline.draft(part);
|
pattern.draftMacroGrainline = part => macroGrainline.draft(part);
|
||||||
|
|
34
packages/examples/src/path.crossesx.js
Normal file
34
packages/examples/src/path.crossesx.js
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
import freesewing from "freesewing";
|
||||||
|
|
||||||
|
var pathCrossesX = {
|
||||||
|
draft: function(part) {
|
||||||
|
// prettier-ignore
|
||||||
|
let {Point, points, Path, paths, Snippet, snippets, macro} = part.shorthand();
|
||||||
|
|
||||||
|
points.A = new Point(95, 50);
|
||||||
|
points.B = new Point(10, 30);
|
||||||
|
points.BCp2 = new Point(40, 20);
|
||||||
|
points.C = new Point(90, 30);
|
||||||
|
points.CCp1 = new Point(50, -30);
|
||||||
|
points.D = new Point(50, 130);
|
||||||
|
points.DCp1 = new Point(150, 30);
|
||||||
|
|
||||||
|
points.top = new Point(60,-10);
|
||||||
|
points.bot = new Point(60,140);
|
||||||
|
paths.line = new Path()
|
||||||
|
.move(points.top)
|
||||||
|
.line(points.bot)
|
||||||
|
.attr('class', 'lining dashed');
|
||||||
|
paths.example = new Path()
|
||||||
|
.move(points.A)
|
||||||
|
.line(points.B)
|
||||||
|
.curve(points.BCp2, points.CCp1, points.C)
|
||||||
|
.curve(points.DCp1, points.DCp1, points.D);
|
||||||
|
|
||||||
|
for (let p of paths.example.crossesX(60)) snippets[part.getUid()] = new Snippet('x', p);
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default pathCrossesX;
|
33
packages/examples/src/path.crossesy.js
Normal file
33
packages/examples/src/path.crossesy.js
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import freesewing from "freesewing";
|
||||||
|
|
||||||
|
var pathCrossesY = {
|
||||||
|
draft: function(part) {
|
||||||
|
// prettier-ignore
|
||||||
|
let {Point, points, Path, paths, Snippet, snippets, macro} = part.shorthand();
|
||||||
|
|
||||||
|
points.A = new Point(55, 40);
|
||||||
|
points.B = new Point(10, 70);
|
||||||
|
points.BCp2 = new Point(40, 20);
|
||||||
|
points.C = new Point(90, 60);
|
||||||
|
points.CCp1 = new Point(50, -30);
|
||||||
|
points.D = new Point(50, 80);
|
||||||
|
points.DCp1 = new Point(140, 50);
|
||||||
|
|
||||||
|
points.top = new Point(10, 58);
|
||||||
|
points.bot = new Point(130, 58);
|
||||||
|
paths.line = new Path()
|
||||||
|
.move(points.top)
|
||||||
|
.line(points.bot)
|
||||||
|
.attr('class', 'lining dashed');
|
||||||
|
paths.example = new Path()
|
||||||
|
.move(points.A)
|
||||||
|
.line(points.B)
|
||||||
|
.curve(points.BCp2, points.CCp1, points.C)
|
||||||
|
.curve(points.DCp1, points.DCp1, points.D);
|
||||||
|
for (let p of paths.example.crossesY(58)) snippets[part.getUid()] = new Snippet('x', p);
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default pathCrossesY;
|
33
packages/examples/src/path.divide.js
Normal file
33
packages/examples/src/path.divide.js
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import freesewing from "freesewing";
|
||||||
|
|
||||||
|
var pathDivide = {
|
||||||
|
draft: function(part) {
|
||||||
|
// prettier-ignore
|
||||||
|
let {Point, points, Path, paths, Snippet, snippets, macro} = part.shorthand();
|
||||||
|
|
||||||
|
points.A = new Point(55, 40);
|
||||||
|
points.B = new Point(10, 70);
|
||||||
|
points.BCp2 = new Point(40, 20);
|
||||||
|
points.C = new Point(90, 60);
|
||||||
|
points.CCp1 = new Point(50, -30);
|
||||||
|
points.D = new Point(50, 80);
|
||||||
|
points.DCp1 = new Point(140, 50);
|
||||||
|
|
||||||
|
paths.example = new Path()
|
||||||
|
.move(points.A)
|
||||||
|
.line(points.B)
|
||||||
|
.curve(points.BCp2, points.CCp1, points.C)
|
||||||
|
.curve(points.DCp1, points.DCp1, points.D)
|
||||||
|
.close();
|
||||||
|
|
||||||
|
let i = 1;
|
||||||
|
for(let p of paths.example.divide()) {
|
||||||
|
paths[i] = p.attr('style', `stroke-width: 4; stroke-opacity: 0.5; stroke: hsl(${i*70}, 100%, 50%)`);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default pathDivide;
|
41
packages/examples/src/path.intersects.js
Normal file
41
packages/examples/src/path.intersects.js
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import freesewing from "freesewing";
|
||||||
|
|
||||||
|
var pathIntersects = {
|
||||||
|
draft: function(part) {
|
||||||
|
// prettier-ignore
|
||||||
|
let {Point, points, Path, paths, Snippet, snippets, macro} = part.shorthand();
|
||||||
|
|
||||||
|
points.A = new Point(45, 60);
|
||||||
|
points.B = new Point(10, 30);
|
||||||
|
points.BCp2 = new Point(40, 20);
|
||||||
|
points.C = new Point(90, 30);
|
||||||
|
points.CCp1 = new Point(50, -30);
|
||||||
|
points.D = new Point(50, 130);
|
||||||
|
points.DCp1 = new Point(150, 30);
|
||||||
|
|
||||||
|
points._A = new Point(55, 40);
|
||||||
|
points._B = new Point(0, 55);
|
||||||
|
points._BCp2 = new Point(40, -20);
|
||||||
|
points._C = new Point(90, 40);
|
||||||
|
points._CCp1 = new Point(50, -30);
|
||||||
|
points._D = new Point(40, 120);
|
||||||
|
points._DCp1 = new Point(180, 40);
|
||||||
|
|
||||||
|
paths.example1 = new Path()
|
||||||
|
.move(points.A)
|
||||||
|
.line(points.B)
|
||||||
|
.curve(points.BCp2, points.CCp1, points.C)
|
||||||
|
.curve(points.DCp1, points.DCp1, points.D);
|
||||||
|
paths.example2 = new Path()
|
||||||
|
.move(points._A)
|
||||||
|
.line(points._B)
|
||||||
|
.curve(points._BCp2, points._CCp1, points._C)
|
||||||
|
.curve(points._DCp1, points._DCp1, points._D);
|
||||||
|
|
||||||
|
for (let p of paths.example1.intersects(paths.example2)) snippets[part.getUid()] = new Snippet('x', p);
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default pathIntersects;
|
38
packages/examples/src/utils.curvecrossescurve.js
Normal file
38
packages/examples/src/utils.curvecrossescurve.js
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
import freesewing from "freesewing";
|
||||||
|
|
||||||
|
var utilsCurveCrossesCurve = {
|
||||||
|
draft: function(part) {
|
||||||
|
// prettier-ignore
|
||||||
|
let {debug, Point, points, Path, paths, Snippet, snippets, utils} = part.shorthand();
|
||||||
|
|
||||||
|
points.A = new Point(10, 10);
|
||||||
|
points.Acp = new Point(310, 40);
|
||||||
|
points.B = new Point(110, 70);
|
||||||
|
points.Bcp = new Point(-210, 40);
|
||||||
|
|
||||||
|
points.C = new Point(20, -5);
|
||||||
|
points.Ccp = new Point(60, 300);
|
||||||
|
points.D = new Point (100, 85);
|
||||||
|
points.Dcp = new Point (70, -220);
|
||||||
|
paths.curveA = new Path()
|
||||||
|
.move(points.A)
|
||||||
|
.curve(points.Acp, points.Bcp, points.B);
|
||||||
|
paths.curveB = new Path()
|
||||||
|
.move(points.C)
|
||||||
|
.curve(points.Ccp, points.Dcp, points.D);
|
||||||
|
|
||||||
|
for (let p of utils.curveCrossesCurve(
|
||||||
|
points.A,
|
||||||
|
points.Acp,
|
||||||
|
points.Bcp,
|
||||||
|
points.B,
|
||||||
|
points.C,
|
||||||
|
points.Ccp,
|
||||||
|
points.Dcp,
|
||||||
|
points.D)) snippets[part.getUid()] = new Snippet('x', p);
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default utilsCurveCrossesCurve;
|
33
packages/examples/src/utils.curvecrossesline.js
Normal file
33
packages/examples/src/utils.curvecrossesline.js
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import freesewing from "freesewing";
|
||||||
|
|
||||||
|
var utilsCurveCrossesLine = {
|
||||||
|
draft: function(part) {
|
||||||
|
// prettier-ignore
|
||||||
|
let {debug, Point, points, Path, paths, Snippet, snippets, utils} = part.shorthand();
|
||||||
|
|
||||||
|
points.A = new Point(10, 10);
|
||||||
|
points.Acp = new Point(310, 40);
|
||||||
|
points.B = new Point(110, 70);
|
||||||
|
points.Bcp = new Point(-210, 40);
|
||||||
|
points.E = new Point(20, -5);
|
||||||
|
points.D = new Point (100, 85);
|
||||||
|
paths.curve = new Path()
|
||||||
|
.move(points.A)
|
||||||
|
.curve(points.Acp, points.Bcp, points.B);
|
||||||
|
paths.line = new Path()
|
||||||
|
.move(points.E)
|
||||||
|
.line(points.D);
|
||||||
|
|
||||||
|
for (let p of freesewing.utils.curveCrossesLine(
|
||||||
|
points.A,
|
||||||
|
points.Acp,
|
||||||
|
points.Bcp,
|
||||||
|
points.B,
|
||||||
|
points.E,
|
||||||
|
points.D)) snippets[part.getUid()] = new Snippet('x', p);
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default utilsCurveCrossesLine;
|
Loading…
Add table
Add a link
Reference in a new issue