diff --git a/packages/examples/src/index.js b/packages/examples/src/index.js index b20ed9660c2..2ca95228207 100644 --- a/packages/examples/src/index.js +++ b/packages/examples/src/index.js @@ -51,8 +51,14 @@ import utilsCirclesIntersect from "./utils.circlesintersect"; import utilsBeamIntersectsCircle from "./utils.beamintersectscircle"; import utilsLineIntersectsCircle from "./utils.lineintersectscircle"; +import pluginGrainline from "./plugin.grainline"; +import pluginCutonfold from "./plugin.cutonfold"; +import pluginDimension from "./plugin.dimension"; +import pluginLogo from "./plugin.logo"; +import pluginTitle from "./plugin.title"; +import pluginScalebox from "./plugin.scalebox"; + import settingsSa from "./settings.sa"; -import macroGrainline from "./macro.grainline"; var pattern = new freesewing.Pattern({ version: version, ...config }).with( pluginBundle @@ -106,8 +112,14 @@ pattern.draft = function() { if (this.needs('utilsBeamIntersectsCircle')) this.parts.utilsBeamIntersectsCircle = this.draftUtilsBeamIntersectsCircle(new pattern.Part()); if (this.needs('utilsLineIntersectsCircle')) this.parts.utilsLineIntersectsCircle = this.draftUtilsLineIntersectsCircle(new pattern.Part()); + if (this.needs('pluginGrainline')) this.parts.pluginGrainline = this.draftPluginGrainline(new pattern.Part()); + if (this.needs('pluginCutonfold')) this.parts.pluginCutonfold = this.draftPluginCutonfold(new pattern.Part()); + if (this.needs('pluginDimension')) this.parts.pluginDimension = this.draftPluginDimension(new pattern.Part()); + if (this.needs('pluginLogo')) this.parts.pluginLogo = this.draftPluginLogo(new pattern.Part()); + if (this.needs('pluginTitle')) this.parts.pluginTitle = this.draftPluginTitle(new pattern.Part()); + if (this.needs('pluginScalebox')) this.parts.pluginScalebox = this.draftPluginScalebox(new pattern.Part()); + if (this.needs('settingsSa')) this.parts.settingsSa = this.draftSettingsSa(new pattern.Part()); - if (this.needs('macroGrainline')) this.parts.macroGrainline = this.draftMacroGrainline(new pattern.Part()); return pattern; }; @@ -158,8 +170,14 @@ pattern.draftUtilsCirclesIntersect = part => utilsCirclesIntersect.draft(part); pattern.draftUtilsBeamIntersectsCircle = part => utilsBeamIntersectsCircle.draft(part); pattern.draftUtilsLineIntersectsCircle = part => utilsLineIntersectsCircle.draft(part); +pattern.draftPluginGrainline = part => pluginGrainline.draft(part); +pattern.draftPluginCutonfold = part => pluginCutonfold.draft(part); +pattern.draftPluginDimension = part => pluginDimension.draft(part); +pattern.draftPluginLogo = part => pluginLogo.draft(part); +pattern.draftPluginTitle = part => pluginTitle.draft(part); +pattern.draftPluginScalebox = part => pluginScalebox.draft(part); + pattern.draftSettingsSa = part => settingsSa.draft(part); -pattern.draftMacroGrainline = part => macroGrainline.draft(part); // Add custom snippet pattern.on('preRender', function(next) { diff --git a/packages/examples/src/plugin.cutonfold.js b/packages/examples/src/plugin.cutonfold.js new file mode 100644 index 00000000000..29c35fb4703 --- /dev/null +++ b/packages/examples/src/plugin.cutonfold.js @@ -0,0 +1,30 @@ +import freesewing from "freesewing"; + +var pluginCutonfold = { + draft: function(part) { + // prettier-ignore + let {Point, points, Path, paths, macro} = part.shorthand(); + + points.topLeft = new Point(0,0); + points.topRight = new Point(150,0); + points.bottomRight = new Point(150,50); + points.bottomLeft = new Point(0,50); + + paths.box = new Path() + .move(points.topLeft) + .line(points.topRight) + .line(points.bottomRight) + .line(points.bottomLeft) + .close() + + macro('cutonfold', { + from: points.topRight, + to: points.topLeft, + grainline: true + }); + + return part; + } +}; + +export default pluginCutonfold; diff --git a/packages/examples/src/plugin.dimension.js b/packages/examples/src/plugin.dimension.js new file mode 100644 index 00000000000..de454023cc0 --- /dev/null +++ b/packages/examples/src/plugin.dimension.js @@ -0,0 +1,56 @@ +import freesewing from "freesewing"; + +var pluginDimension = { + draft: function(part) { + // prettier-ignore + let {Point, points, Path, paths, macro} = part.shorthand(); + + points.A = new Point(0,0); + points.B = new Point(0,100); + points.C = new Point(50,100); + points.D = new Point(100,50); + points.DCp1 = new Point(100,0); + + paths.box = new Path() + .move(points.A) + .line(points.B) + .line(points.C) + .line(points.D) + .curve(points.DCp1, points.A, points.A) + .close() + + macro('vd', { + from: points.A, + to: points.B, + x: points.A.x - 15 + }); + + macro('hd', { + from: points.B, + to: points.C, + y: points.B.y + 15 + }); + + macro('ld', { + from: points.C, + to: points.D, + d: -15 + }); + + macro('ld', { + from: points.C, + to: points.D, + d: -30, + text: 'Custom text' + }); + + macro('pd', { + path: new Path().move(points.A).curve(points.A, points.DCp1, points.D), + d: -15 + }); + + return part; + } +}; + +export default pluginDimension; diff --git a/packages/examples/src/macro.grainline.js b/packages/examples/src/plugin.grainline.js similarity index 86% rename from packages/examples/src/macro.grainline.js rename to packages/examples/src/plugin.grainline.js index 360320a5a2f..5e5a42603e3 100644 --- a/packages/examples/src/macro.grainline.js +++ b/packages/examples/src/plugin.grainline.js @@ -1,6 +1,6 @@ import freesewing from "freesewing"; -var macroGrainline = { +var pluginGrainline = { draft: function(part) { // prettier-ignore let {Point, points, macro} = part.shorthand(); @@ -12,8 +12,9 @@ var macroGrainline = { from: points.grainlineFrom, to: points.grainlineTo }); + return part; } }; -export default macroGrainline; +export default pluginGrainline; diff --git a/packages/examples/src/plugin.logo.js b/packages/examples/src/plugin.logo.js new file mode 100644 index 00000000000..f3cbb5e0caf --- /dev/null +++ b/packages/examples/src/plugin.logo.js @@ -0,0 +1,25 @@ +var pluginLogo = { + draft: function(part) { + // prettier-ignore + let {Point, points, Path, paths, snippets, Snippet} = part.shorthand(); + + points.topLeft = new Point(0,0); + points.topRight = new Point(120,0); + points.bottomRight = new Point(120,70); + points.bottomLeft = new Point(0,70); + points.logoAnchor = new Point(60,47); + + paths.box = new Path() + .move(points.topLeft) + .line(points.topRight) + .line(points.bottomRight) + .line(points.bottomLeft) + .close() + + snippets.logo = new Snippet('logo', points.logoAnchor); + + return part; + } +}; + +export default pluginLogo; diff --git a/packages/examples/src/plugin.scalebox.js b/packages/examples/src/plugin.scalebox.js new file mode 100644 index 00000000000..bfd0d620768 --- /dev/null +++ b/packages/examples/src/plugin.scalebox.js @@ -0,0 +1,16 @@ +var pluginScalebox = { + draft: function(part) { + // prettier-ignore + let {Point, points, Path, paths, macro} = part.shorthand(); + + points.anchor = new Point(0,0); + + macro('scalebox', { + at: points.anchor + }); + + return part; + } +}; + +export default pluginScalebox; diff --git a/packages/examples/src/plugin.title.js b/packages/examples/src/plugin.title.js new file mode 100644 index 00000000000..a633e34ebea --- /dev/null +++ b/packages/examples/src/plugin.title.js @@ -0,0 +1,29 @@ +var pluginTitle = { + draft: function(part) { + // prettier-ignore + let {Point, points, Path, paths, macro} = part.shorthand(); + + points.topLeft = new Point(0,0); + points.topRight = new Point(120,0); + points.bottomRight = new Point(120,70); + points.bottomLeft = new Point(0,70); + points.titleAnchor = new Point(60,35); + + paths.box = new Path() + .move(points.topLeft) + .line(points.topRight) + .line(points.bottomRight) + .line(points.bottomLeft) + .close() + + macro('title', { + at: points.titleAnchor, + nr: 4, + title: "sleeve" + }); + + return part; + } +}; + +export default pluginTitle;