makerjs 0.17.1 → 0.17.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.maker.js +136 -83
- package/dist/index.d.ts +5 -1
- package/dist/index.js +133 -77
- package/package.json +1 -1
package/dist/browser.maker.js
CHANGED
|
@@ -39,19 +39,17 @@ and limitations under the License.
|
|
|
39
39
|
* author: Dan Marshall / Microsoft Corporation
|
|
40
40
|
* maintainers: Dan Marshall <danmar@microsoft.com>
|
|
41
41
|
* homepage: https://maker.js.org
|
|
42
|
-
* version: 0.17.
|
|
42
|
+
* version: 0.17.3
|
|
43
43
|
*
|
|
44
44
|
* browserify:
|
|
45
45
|
* license: MIT (http://opensource.org/licenses/MIT)
|
|
46
46
|
* author: James Halliday <mail@substack.net>
|
|
47
|
-
* homepage: https://github.com/browserify/browserify#readme
|
|
48
47
|
* version: 17.0.0
|
|
49
48
|
*
|
|
50
49
|
* clone:
|
|
51
50
|
* license: MIT (http://opensource.org/licenses/MIT)
|
|
52
|
-
* author: Paul Vorbach <paul@vorba.ch>
|
|
53
|
-
* contributors: Blake Miner <miner.blake@gmail.com
|
|
54
|
-
* homepage: https://github.com/pvorb/node-clone#readme
|
|
51
|
+
* author: Paul Vorbach <paul@vorba.ch> (http://paul.vorba.ch/)
|
|
52
|
+
* contributors: Blake Miner <miner.blake@gmail.com> (http://www.blakeminer.com/), Tian You <axqd001@gmail.com> (http://blog.axqd.net/), George Stagas <gstagas@gmail.com> (http://stagas.com/), Tobiasz Cudnik <tobiasz.cudnik@gmail.com> (https://github.com/TobiaszCudnik), Pavel Lang <langpavel@phpskelet.org> (https://github.com/langpavel), Dan MacTough (http://yabfog.com/), w1nk (https://github.com/w1nk), Hugh Kennedy (http://twitter.com/hughskennedy), Dustin Diaz (http://dustindiaz.com), Ilya Shaisultanov (https://github.com/diversario), Nathan MacInnes <nathan@macinn.es> (http://macinn.es/), Benjamin E. Coe <ben@npmjs.com> (https://twitter.com/benjamincoe), Nathan Zadoks (https://github.com/nathan7), Róbert Oroszi <robert+gh@oroszi.net> (https://github.com/oroce), Aurélio A. Heckert (http://softwarelivre.org/aurium), Guy Ellis (http://www.guyellisrocks.com/)
|
|
55
53
|
* version: 1.0.4
|
|
56
54
|
*
|
|
57
55
|
* graham_scan:
|
|
@@ -63,7 +61,6 @@ and limitations under the License.
|
|
|
63
61
|
* kdbush:
|
|
64
62
|
* license: ISC (http://opensource.org/licenses/ISC)
|
|
65
63
|
* author: Vladimir Agafonkin
|
|
66
|
-
* homepage: https://github.com/mourner/kdbush#readme
|
|
67
64
|
* version: 2.0.1
|
|
68
65
|
*
|
|
69
66
|
* This header is generated by licensify (https://github.com/twada/licensify)
|
|
@@ -4979,13 +4976,14 @@ var MakerJs;
|
|
|
4979
4976
|
function parseNumericList(s) {
|
|
4980
4977
|
var result = [];
|
|
4981
4978
|
//http://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly
|
|
4982
|
-
var re =
|
|
4979
|
+
var re = /-?(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
|
|
4983
4980
|
var matches;
|
|
4984
4981
|
while ((matches = re.exec(s)) !== null) {
|
|
4985
4982
|
if (matches.index === re.lastIndex) {
|
|
4986
4983
|
re.lastIndex++;
|
|
4987
4984
|
}
|
|
4988
|
-
|
|
4985
|
+
if (matches[0] !== "")
|
|
4986
|
+
result.push(parseFloat(matches[0]));
|
|
4989
4987
|
}
|
|
4990
4988
|
return result;
|
|
4991
4989
|
}
|
|
@@ -7367,28 +7365,28 @@ var MakerJs;
|
|
|
7367
7365
|
return wrap(chainToJscadScript(c, maxArcFacet, options.accuracy));
|
|
7368
7366
|
}
|
|
7369
7367
|
function scriptUnion(augend, addend) {
|
|
7370
|
-
return augend +
|
|
7368
|
+
return augend + ".union(".concat(addend, ")");
|
|
7371
7369
|
}
|
|
7372
7370
|
function scriptSubtraction(minuend, subtrahend) {
|
|
7373
|
-
return minuend +
|
|
7371
|
+
return minuend + ".subtract(".concat(subtrahend, ")");
|
|
7374
7372
|
}
|
|
7375
7373
|
function to2D(opts) {
|
|
7376
7374
|
return convertChainsTo2D(_chainToJscadScript, scriptUnion, scriptSubtraction, modelToExport, options);
|
|
7377
7375
|
}
|
|
7378
7376
|
function to3D(cag, extrude, z) {
|
|
7379
|
-
var csg = cag +
|
|
7377
|
+
var csg = cag + ".extrude({ offset: [0, 0, ".concat(extrude, "] })");
|
|
7380
7378
|
if (z) {
|
|
7381
|
-
csg = csg +
|
|
7379
|
+
csg = csg + ".translate([0, 0, ".concat(z, "])");
|
|
7382
7380
|
}
|
|
7383
7381
|
return csg;
|
|
7384
7382
|
}
|
|
7385
7383
|
function wrap(s) {
|
|
7386
|
-
return ""
|
|
7384
|
+
return "".concat(nl).concat(indent).concat(s).concat(nl);
|
|
7387
7385
|
}
|
|
7388
7386
|
var indent = new Array((options.indent || 0) + 1).join(' ');
|
|
7389
7387
|
var nl = options.indent ? '\n' : '';
|
|
7390
7388
|
var result = convert2Dto3D(to2D, to3D, scriptUnion, modelToExport, options).trim();
|
|
7391
|
-
return "function "
|
|
7389
|
+
return "function ".concat(options.functionName || 'main', "(){").concat(wrap("return ".concat(result, ";")), "}").concat(nl);
|
|
7392
7390
|
}
|
|
7393
7391
|
exporter.toJscadScript = toJscadScript;
|
|
7394
7392
|
/**
|
|
@@ -7744,7 +7742,8 @@ var MakerJs;
|
|
|
7744
7742
|
"stroke": elOpts.stroke,
|
|
7745
7743
|
"stroke-width": elOpts.strokeWidth,
|
|
7746
7744
|
"fill": elOpts.fill,
|
|
7747
|
-
"style": elOpts.cssStyle || cssStyle(elOpts)
|
|
7745
|
+
"style": elOpts.cssStyle || cssStyle(elOpts),
|
|
7746
|
+
"class": elOpts.className
|
|
7748
7747
|
});
|
|
7749
7748
|
}
|
|
7750
7749
|
function colorLayerOptions(layer) {
|
|
@@ -8018,7 +8017,7 @@ var MakerJs;
|
|
|
8018
8017
|
var tag = new exporter.XmlTag('text', {
|
|
8019
8018
|
"alignment-baseline": "middle",
|
|
8020
8019
|
"text-anchor": "middle",
|
|
8021
|
-
"transform": "rotate("
|
|
8020
|
+
"transform": "rotate(".concat(MakerJs.angle.ofLineInDegrees(anchor), ",").concat(center[0], ",").concat(center[1], ")"),
|
|
8022
8021
|
"x": center[0],
|
|
8023
8022
|
"y": center[1]
|
|
8024
8023
|
});
|
|
@@ -8120,14 +8119,18 @@ var MakerJs;
|
|
|
8120
8119
|
}
|
|
8121
8120
|
result.models['p_' + ++pathCount] = m;
|
|
8122
8121
|
}
|
|
8123
|
-
function getPoint(cmd, offset) {
|
|
8122
|
+
function getPoint(cmd, offset, from) {
|
|
8124
8123
|
if (offset === void 0) { offset = 0; }
|
|
8124
|
+
if (from === void 0) { from = cmd.from; }
|
|
8125
|
+
if (offset < 0) { // get point from end of list (negative index)
|
|
8126
|
+
offset = offset + cmd.data.length;
|
|
8127
|
+
}
|
|
8125
8128
|
var p = MakerJs.point.mirror([cmd.data[0 + offset], cmd.data[1 + offset]], false, true);
|
|
8126
8129
|
if (cmd.absolute) {
|
|
8127
8130
|
return p;
|
|
8128
8131
|
}
|
|
8129
8132
|
else {
|
|
8130
|
-
return MakerJs.point.add(p,
|
|
8133
|
+
return MakerJs.point.add(p, from);
|
|
8131
8134
|
}
|
|
8132
8135
|
}
|
|
8133
8136
|
function lineTo(cmd, end) {
|
|
@@ -8139,7 +8142,15 @@ var MakerJs;
|
|
|
8139
8142
|
var map = {};
|
|
8140
8143
|
map['M'] = function (cmd) {
|
|
8141
8144
|
firstPoint = getPoint(cmd);
|
|
8142
|
-
|
|
8145
|
+
if (cmd.data.length > 2) { // implicit lineTo
|
|
8146
|
+
cmd.from = firstPoint;
|
|
8147
|
+
for (var a = 2; a < cmd.data.length; a = a + 2) {
|
|
8148
|
+
cmd.from = lineTo(cmd, getPoint(cmd, a));
|
|
8149
|
+
}
|
|
8150
|
+
return cmd.from;
|
|
8151
|
+
}
|
|
8152
|
+
else
|
|
8153
|
+
return firstPoint;
|
|
8143
8154
|
};
|
|
8144
8155
|
map['Z'] = function (cmd) {
|
|
8145
8156
|
return lineTo(cmd, firstPoint);
|
|
@@ -8166,97 +8177,139 @@ var MakerJs;
|
|
|
8166
8177
|
return lineTo(cmd, end);
|
|
8167
8178
|
};
|
|
8168
8179
|
map['L'] = function (cmd) {
|
|
8169
|
-
var end
|
|
8170
|
-
|
|
8180
|
+
var end;
|
|
8181
|
+
for (var a = 0; a < cmd.data.length; a = a + 2) {
|
|
8182
|
+
end = getPoint(cmd, a);
|
|
8183
|
+
cmd.from = lineTo(cmd, end);
|
|
8184
|
+
}
|
|
8185
|
+
return cmd.from;
|
|
8171
8186
|
};
|
|
8172
8187
|
map['A'] = function (cmd) {
|
|
8173
|
-
var rx
|
|
8174
|
-
var ry
|
|
8175
|
-
var rotation
|
|
8176
|
-
var large
|
|
8177
|
-
var decreasing
|
|
8178
|
-
var end
|
|
8179
|
-
var elliptic
|
|
8180
|
-
|
|
8181
|
-
var
|
|
8182
|
-
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
|
|
8187
|
-
|
|
8188
|
-
|
|
8189
|
-
|
|
8190
|
-
|
|
8191
|
-
|
|
8192
|
-
|
|
8193
|
-
|
|
8194
|
-
|
|
8195
|
-
|
|
8196
|
-
|
|
8197
|
-
|
|
8198
|
-
|
|
8199
|
-
|
|
8200
|
-
|
|
8201
|
-
|
|
8202
|
-
|
|
8203
|
-
|
|
8204
|
-
|
|
8205
|
-
|
|
8188
|
+
var rx;
|
|
8189
|
+
var ry;
|
|
8190
|
+
var rotation;
|
|
8191
|
+
var large;
|
|
8192
|
+
var decreasing;
|
|
8193
|
+
var end;
|
|
8194
|
+
var elliptic;
|
|
8195
|
+
var xAxis;
|
|
8196
|
+
var arc;
|
|
8197
|
+
var scaleUp;
|
|
8198
|
+
var e;
|
|
8199
|
+
for (var a = 0; a < cmd.data.length; a = a + 7) {
|
|
8200
|
+
rx = cmd.data[0 + a];
|
|
8201
|
+
ry = cmd.data[1 + a];
|
|
8202
|
+
rotation = cmd.data[2 + a];
|
|
8203
|
+
large = cmd.data[3 + a] === 1;
|
|
8204
|
+
decreasing = cmd.data[4 + a] === 1;
|
|
8205
|
+
end = getPoint(cmd, 5 + a);
|
|
8206
|
+
elliptic = rx !== ry;
|
|
8207
|
+
//first, rotate so we are dealing with a zero angle x-axis
|
|
8208
|
+
xAxis = new MakerJs.paths.Line(cmd.from, MakerJs.point.rotate(end, rotation, cmd.from));
|
|
8209
|
+
//next, un-distort any ellipse back into a circle in terms of x axis
|
|
8210
|
+
if (elliptic) {
|
|
8211
|
+
xAxis = MakerJs.path.distort(xAxis, 1, rx / ry);
|
|
8212
|
+
}
|
|
8213
|
+
//now create an arc, making sure we use the large and decreasing flags
|
|
8214
|
+
arc = new MakerJs.paths.Arc(xAxis.origin, xAxis.end, rx, large, decreasing);
|
|
8215
|
+
if (elliptic) {
|
|
8216
|
+
//scale up if radius was insufficient.
|
|
8217
|
+
if (rx < arc.radius) {
|
|
8218
|
+
scaleUp = arc.radius / rx;
|
|
8219
|
+
rx *= scaleUp;
|
|
8220
|
+
ry *= scaleUp;
|
|
8221
|
+
}
|
|
8222
|
+
//create an elliptical arc, this will re-distort
|
|
8223
|
+
e = new MakerJs.models.EllipticArc(arc, 1, ry / rx, options.bezierAccuracy);
|
|
8224
|
+
//un-rotate back to where it should be.
|
|
8225
|
+
MakerJs.model.rotate(e, -rotation, cmd.from);
|
|
8226
|
+
addModel(e);
|
|
8227
|
+
}
|
|
8228
|
+
else {
|
|
8229
|
+
//just use the arc
|
|
8230
|
+
//un-rotate back to where it should be.
|
|
8231
|
+
MakerJs.path.rotate(arc, -rotation, cmd.from);
|
|
8232
|
+
addPath(arc);
|
|
8233
|
+
}
|
|
8234
|
+
cmd.from = end;
|
|
8206
8235
|
}
|
|
8207
8236
|
return end;
|
|
8208
8237
|
};
|
|
8209
8238
|
map['C'] = function (cmd) {
|
|
8210
|
-
var control1
|
|
8211
|
-
var control2
|
|
8212
|
-
var
|
|
8213
|
-
|
|
8239
|
+
var control1;
|
|
8240
|
+
var control2;
|
|
8241
|
+
var start = cmd.from;
|
|
8242
|
+
var end;
|
|
8243
|
+
for (var a = 0; a < cmd.data.length; a = a + 6) {
|
|
8244
|
+
cmd.from = start;
|
|
8245
|
+
control1 = getPoint(cmd, 0 + a, start);
|
|
8246
|
+
control2 = getPoint(cmd, 2 + a, start);
|
|
8247
|
+
end = getPoint(cmd, 4 + a, start);
|
|
8248
|
+
addModel(new MakerJs.models.BezierCurve(start, control1, control2, end, options.bezierAccuracy));
|
|
8249
|
+
start = end;
|
|
8250
|
+
}
|
|
8214
8251
|
return end;
|
|
8215
8252
|
};
|
|
8216
8253
|
map['S'] = function (cmd) {
|
|
8217
8254
|
var control1;
|
|
8218
8255
|
var prevControl2;
|
|
8219
|
-
|
|
8220
|
-
|
|
8221
|
-
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
prevControl2 = getPoint(cmd.prev, 0);
|
|
8225
|
-
control1 = MakerJs.point.rotate(prevControl2, 180, cmd.from);
|
|
8256
|
+
var control2;
|
|
8257
|
+
var start = cmd.from;
|
|
8258
|
+
var end;
|
|
8259
|
+
if (cmd.prev.command === 'C' || cmd.prev.command === 'S') {
|
|
8260
|
+
prevControl2 = getPoint(cmd.prev, -4);
|
|
8226
8261
|
}
|
|
8227
8262
|
else {
|
|
8228
|
-
|
|
8263
|
+
prevControl2 = cmd.from;
|
|
8264
|
+
}
|
|
8265
|
+
for (var a = 0; a < cmd.data.length; a = a + 4) {
|
|
8266
|
+
cmd.from = start;
|
|
8267
|
+
control1 = MakerJs.point.rotate(prevControl2, 180, start);
|
|
8268
|
+
control2 = getPoint(cmd, 0 + a);
|
|
8269
|
+
end = getPoint(cmd, 2 + a);
|
|
8270
|
+
addModel(new MakerJs.models.BezierCurve(start, control1, control2, end, options.bezierAccuracy));
|
|
8271
|
+
start = end;
|
|
8272
|
+
prevControl2 = control2;
|
|
8229
8273
|
}
|
|
8230
|
-
var control2 = getPoint(cmd, 0);
|
|
8231
|
-
var end = getPoint(cmd, 2);
|
|
8232
|
-
addModel(new MakerJs.models.BezierCurve(cmd.from, control1, control2, end, options.bezierAccuracy));
|
|
8233
8274
|
return end;
|
|
8234
8275
|
};
|
|
8235
8276
|
map['Q'] = function (cmd) {
|
|
8236
|
-
var control
|
|
8237
|
-
var
|
|
8238
|
-
|
|
8277
|
+
var control;
|
|
8278
|
+
var start = cmd.from;
|
|
8279
|
+
var end;
|
|
8280
|
+
for (var a = 0; a < cmd.data.length; a = a + 4) {
|
|
8281
|
+
cmd.from = start;
|
|
8282
|
+
control = getPoint(cmd, 0 + a);
|
|
8283
|
+
end = getPoint(cmd, 2 + a);
|
|
8284
|
+
addModel(new MakerJs.models.BezierCurve(start, control, end, options.bezierAccuracy));
|
|
8285
|
+
start = end;
|
|
8286
|
+
}
|
|
8239
8287
|
return end;
|
|
8240
8288
|
};
|
|
8241
8289
|
map['T'] = function (cmd) {
|
|
8242
8290
|
var control;
|
|
8243
8291
|
var prevControl;
|
|
8292
|
+
var end;
|
|
8244
8293
|
if (cmd.prev.command === 'Q') {
|
|
8245
|
-
prevControl = getPoint(cmd.prev,
|
|
8294
|
+
prevControl = getPoint(cmd.prev, -4);
|
|
8246
8295
|
control = MakerJs.point.rotate(prevControl, 180, cmd.from);
|
|
8247
8296
|
}
|
|
8248
8297
|
else if (cmd.prev.command === 'T') {
|
|
8249
|
-
|
|
8250
|
-
control =
|
|
8298
|
+
cmd.prev.absolute = true;
|
|
8299
|
+
control = getPoint(cmd.prev, -2); //see below *
|
|
8251
8300
|
}
|
|
8252
8301
|
else {
|
|
8253
8302
|
control = cmd.from;
|
|
8254
8303
|
}
|
|
8304
|
+
for (var a = 0; a < cmd.data.length; a = a + 2) {
|
|
8305
|
+
end = getPoint(cmd, 0 + a);
|
|
8306
|
+
addModel(new MakerJs.models.BezierCurve(cmd.from, control, end, options.bezierAccuracy));
|
|
8307
|
+
cmd.from = end;
|
|
8308
|
+
control = MakerJs.point.rotate(control, 180, cmd.from);
|
|
8309
|
+
}
|
|
8255
8310
|
//* save the control point in the data list, will be accessible from index 2
|
|
8256
8311
|
var p = MakerJs.point.mirror(control, false, true);
|
|
8257
8312
|
cmd.data.push.apply(cmd.data, p);
|
|
8258
|
-
var end = getPoint(cmd, 0);
|
|
8259
|
-
addModel(new MakerJs.models.BezierCurve(cmd.from, control, end, options.bezierAccuracy));
|
|
8260
8313
|
return end;
|
|
8261
8314
|
};
|
|
8262
8315
|
var firstPoint = [0, 0];
|
|
@@ -9224,11 +9277,11 @@ var MakerJs;
|
|
|
9224
9277
|
}
|
|
9225
9278
|
var Ellipse = /** @class */ (function () {
|
|
9226
9279
|
function Ellipse() {
|
|
9227
|
-
var _this = this;
|
|
9228
9280
|
var args = [];
|
|
9229
9281
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
9230
9282
|
args[_i] = arguments[_i];
|
|
9231
9283
|
}
|
|
9284
|
+
var _this = this;
|
|
9232
9285
|
this.models = {};
|
|
9233
9286
|
var n = 360 / maxBezierArcspan;
|
|
9234
9287
|
var accuracy;
|
|
@@ -9393,11 +9446,11 @@ var MakerJs;
|
|
|
9393
9446
|
}
|
|
9394
9447
|
var ConnectTheDots = /** @class */ (function () {
|
|
9395
9448
|
function ConnectTheDots() {
|
|
9396
|
-
var _this = this;
|
|
9397
9449
|
var args = [];
|
|
9398
9450
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
9399
9451
|
args[_i] = arguments[_i];
|
|
9400
9452
|
}
|
|
9453
|
+
var _this = this;
|
|
9401
9454
|
this.paths = {};
|
|
9402
9455
|
var isClosed;
|
|
9403
9456
|
var points;
|
|
@@ -9778,9 +9831,9 @@ var MakerJs;
|
|
|
9778
9831
|
(function (models) {
|
|
9779
9832
|
var OvalArc = /** @class */ (function () {
|
|
9780
9833
|
function OvalArc(startAngle, endAngle, sweepRadius, slotRadius, selfIntersect, isolateCaps) {
|
|
9781
|
-
var _this = this;
|
|
9782
9834
|
if (selfIntersect === void 0) { selfIntersect = false; }
|
|
9783
9835
|
if (isolateCaps === void 0) { isolateCaps = false; }
|
|
9836
|
+
var _this = this;
|
|
9784
9837
|
this.paths = {};
|
|
9785
9838
|
var capRoot;
|
|
9786
9839
|
if (isolateCaps) {
|
|
@@ -10000,8 +10053,8 @@ var MakerJs;
|
|
|
10000
10053
|
(function (models) {
|
|
10001
10054
|
var Slot = /** @class */ (function () {
|
|
10002
10055
|
function Slot(origin, endPoint, radius, isolateCaps) {
|
|
10003
|
-
var _this = this;
|
|
10004
10056
|
if (isolateCaps === void 0) { isolateCaps = false; }
|
|
10057
|
+
var _this = this;
|
|
10005
10058
|
this.paths = {};
|
|
10006
10059
|
var capRoot;
|
|
10007
10060
|
if (isolateCaps) {
|
|
@@ -10125,9 +10178,9 @@ var MakerJs;
|
|
|
10125
10178
|
* @returns Model of the text.
|
|
10126
10179
|
*/
|
|
10127
10180
|
function Text(font, text, fontSize, combine, centerCharacterOrigin, bezierAccuracy, opentypeOptions) {
|
|
10128
|
-
var _this = this;
|
|
10129
10181
|
if (combine === void 0) { combine = false; }
|
|
10130
10182
|
if (centerCharacterOrigin === void 0) { centerCharacterOrigin = false; }
|
|
10183
|
+
var _this = this;
|
|
10131
10184
|
this.models = {};
|
|
10132
10185
|
var charIndex = 0;
|
|
10133
10186
|
var prevDeleted;
|
|
@@ -10233,6 +10286,6 @@ var MakerJs;
|
|
|
10233
10286
|
];
|
|
10234
10287
|
})(models = MakerJs.models || (MakerJs.models = {}));
|
|
10235
10288
|
})(MakerJs || (MakerJs = {}));
|
|
10236
|
-
MakerJs.version = "0.17.
|
|
10289
|
+
MakerJs.version = "0.17.3";
|
|
10237
10290
|
|
|
10238
10291
|
},{"clone":2,"graham_scan":3,"kdbush":4}]},{},[]);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Type definitions for Maker.js 0.17.
|
|
1
|
+
// Type definitions for Maker.js 0.17.3
|
|
2
2
|
// Project: https://github.com/Microsoft/maker.js
|
|
3
3
|
// Definitions by: Dan Marshall <https://github.com/danmarshall>
|
|
4
4
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
@@ -3314,6 +3314,10 @@ declare namespace MakerJs.exporter {
|
|
|
3314
3314
|
* CSS style to apply to elements.
|
|
3315
3315
|
*/
|
|
3316
3316
|
cssStyle?: string;
|
|
3317
|
+
/**
|
|
3318
|
+
* SVG class name of the rendered paths.
|
|
3319
|
+
*/
|
|
3320
|
+
className?: string;
|
|
3317
3321
|
}
|
|
3318
3322
|
/**
|
|
3319
3323
|
* Annotate paths with directional flow marks.
|
package/dist/index.js
CHANGED
|
@@ -4559,13 +4559,14 @@ var MakerJs;
|
|
|
4559
4559
|
function parseNumericList(s) {
|
|
4560
4560
|
var result = [];
|
|
4561
4561
|
//http://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly
|
|
4562
|
-
var re =
|
|
4562
|
+
var re = /-?(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
|
|
4563
4563
|
var matches;
|
|
4564
4564
|
while ((matches = re.exec(s)) !== null) {
|
|
4565
4565
|
if (matches.index === re.lastIndex) {
|
|
4566
4566
|
re.lastIndex++;
|
|
4567
4567
|
}
|
|
4568
|
-
|
|
4568
|
+
if (matches[0] !== "")
|
|
4569
|
+
result.push(parseFloat(matches[0]));
|
|
4569
4570
|
}
|
|
4570
4571
|
return result;
|
|
4571
4572
|
}
|
|
@@ -6947,28 +6948,28 @@ var MakerJs;
|
|
|
6947
6948
|
return wrap(chainToJscadScript(c, maxArcFacet, options.accuracy));
|
|
6948
6949
|
}
|
|
6949
6950
|
function scriptUnion(augend, addend) {
|
|
6950
|
-
return augend +
|
|
6951
|
+
return augend + ".union(".concat(addend, ")");
|
|
6951
6952
|
}
|
|
6952
6953
|
function scriptSubtraction(minuend, subtrahend) {
|
|
6953
|
-
return minuend +
|
|
6954
|
+
return minuend + ".subtract(".concat(subtrahend, ")");
|
|
6954
6955
|
}
|
|
6955
6956
|
function to2D(opts) {
|
|
6956
6957
|
return convertChainsTo2D(_chainToJscadScript, scriptUnion, scriptSubtraction, modelToExport, options);
|
|
6957
6958
|
}
|
|
6958
6959
|
function to3D(cag, extrude, z) {
|
|
6959
|
-
var csg = cag +
|
|
6960
|
+
var csg = cag + ".extrude({ offset: [0, 0, ".concat(extrude, "] })");
|
|
6960
6961
|
if (z) {
|
|
6961
|
-
csg = csg +
|
|
6962
|
+
csg = csg + ".translate([0, 0, ".concat(z, "])");
|
|
6962
6963
|
}
|
|
6963
6964
|
return csg;
|
|
6964
6965
|
}
|
|
6965
6966
|
function wrap(s) {
|
|
6966
|
-
return ""
|
|
6967
|
+
return "".concat(nl).concat(indent).concat(s).concat(nl);
|
|
6967
6968
|
}
|
|
6968
6969
|
var indent = new Array((options.indent || 0) + 1).join(' ');
|
|
6969
6970
|
var nl = options.indent ? '\n' : '';
|
|
6970
6971
|
var result = convert2Dto3D(to2D, to3D, scriptUnion, modelToExport, options).trim();
|
|
6971
|
-
return "function "
|
|
6972
|
+
return "function ".concat(options.functionName || 'main', "(){").concat(wrap("return ".concat(result, ";")), "}").concat(nl);
|
|
6972
6973
|
}
|
|
6973
6974
|
exporter.toJscadScript = toJscadScript;
|
|
6974
6975
|
/**
|
|
@@ -7324,7 +7325,8 @@ var MakerJs;
|
|
|
7324
7325
|
"stroke": elOpts.stroke,
|
|
7325
7326
|
"stroke-width": elOpts.strokeWidth,
|
|
7326
7327
|
"fill": elOpts.fill,
|
|
7327
|
-
"style": elOpts.cssStyle || cssStyle(elOpts)
|
|
7328
|
+
"style": elOpts.cssStyle || cssStyle(elOpts),
|
|
7329
|
+
"class": elOpts.className
|
|
7328
7330
|
});
|
|
7329
7331
|
}
|
|
7330
7332
|
function colorLayerOptions(layer) {
|
|
@@ -7598,7 +7600,7 @@ var MakerJs;
|
|
|
7598
7600
|
var tag = new exporter.XmlTag('text', {
|
|
7599
7601
|
"alignment-baseline": "middle",
|
|
7600
7602
|
"text-anchor": "middle",
|
|
7601
|
-
"transform": "rotate("
|
|
7603
|
+
"transform": "rotate(".concat(MakerJs.angle.ofLineInDegrees(anchor), ",").concat(center[0], ",").concat(center[1], ")"),
|
|
7602
7604
|
"x": center[0],
|
|
7603
7605
|
"y": center[1]
|
|
7604
7606
|
});
|
|
@@ -7700,14 +7702,18 @@ var MakerJs;
|
|
|
7700
7702
|
}
|
|
7701
7703
|
result.models['p_' + ++pathCount] = m;
|
|
7702
7704
|
}
|
|
7703
|
-
function getPoint(cmd, offset) {
|
|
7705
|
+
function getPoint(cmd, offset, from) {
|
|
7704
7706
|
if (offset === void 0) { offset = 0; }
|
|
7707
|
+
if (from === void 0) { from = cmd.from; }
|
|
7708
|
+
if (offset < 0) { // get point from end of list (negative index)
|
|
7709
|
+
offset = offset + cmd.data.length;
|
|
7710
|
+
}
|
|
7705
7711
|
var p = MakerJs.point.mirror([cmd.data[0 + offset], cmd.data[1 + offset]], false, true);
|
|
7706
7712
|
if (cmd.absolute) {
|
|
7707
7713
|
return p;
|
|
7708
7714
|
}
|
|
7709
7715
|
else {
|
|
7710
|
-
return MakerJs.point.add(p,
|
|
7716
|
+
return MakerJs.point.add(p, from);
|
|
7711
7717
|
}
|
|
7712
7718
|
}
|
|
7713
7719
|
function lineTo(cmd, end) {
|
|
@@ -7719,7 +7725,15 @@ var MakerJs;
|
|
|
7719
7725
|
var map = {};
|
|
7720
7726
|
map['M'] = function (cmd) {
|
|
7721
7727
|
firstPoint = getPoint(cmd);
|
|
7722
|
-
|
|
7728
|
+
if (cmd.data.length > 2) { // implicit lineTo
|
|
7729
|
+
cmd.from = firstPoint;
|
|
7730
|
+
for (var a = 2; a < cmd.data.length; a = a + 2) {
|
|
7731
|
+
cmd.from = lineTo(cmd, getPoint(cmd, a));
|
|
7732
|
+
}
|
|
7733
|
+
return cmd.from;
|
|
7734
|
+
}
|
|
7735
|
+
else
|
|
7736
|
+
return firstPoint;
|
|
7723
7737
|
};
|
|
7724
7738
|
map['Z'] = function (cmd) {
|
|
7725
7739
|
return lineTo(cmd, firstPoint);
|
|
@@ -7746,97 +7760,139 @@ var MakerJs;
|
|
|
7746
7760
|
return lineTo(cmd, end);
|
|
7747
7761
|
};
|
|
7748
7762
|
map['L'] = function (cmd) {
|
|
7749
|
-
var end
|
|
7750
|
-
|
|
7763
|
+
var end;
|
|
7764
|
+
for (var a = 0; a < cmd.data.length; a = a + 2) {
|
|
7765
|
+
end = getPoint(cmd, a);
|
|
7766
|
+
cmd.from = lineTo(cmd, end);
|
|
7767
|
+
}
|
|
7768
|
+
return cmd.from;
|
|
7751
7769
|
};
|
|
7752
7770
|
map['A'] = function (cmd) {
|
|
7753
|
-
var rx
|
|
7754
|
-
var ry
|
|
7755
|
-
var rotation
|
|
7756
|
-
var large
|
|
7757
|
-
var decreasing
|
|
7758
|
-
var end
|
|
7759
|
-
var elliptic
|
|
7760
|
-
|
|
7761
|
-
var
|
|
7762
|
-
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
|
|
7775
|
-
|
|
7776
|
-
|
|
7777
|
-
|
|
7778
|
-
|
|
7779
|
-
|
|
7780
|
-
|
|
7781
|
-
|
|
7782
|
-
|
|
7783
|
-
|
|
7784
|
-
|
|
7785
|
-
|
|
7771
|
+
var rx;
|
|
7772
|
+
var ry;
|
|
7773
|
+
var rotation;
|
|
7774
|
+
var large;
|
|
7775
|
+
var decreasing;
|
|
7776
|
+
var end;
|
|
7777
|
+
var elliptic;
|
|
7778
|
+
var xAxis;
|
|
7779
|
+
var arc;
|
|
7780
|
+
var scaleUp;
|
|
7781
|
+
var e;
|
|
7782
|
+
for (var a = 0; a < cmd.data.length; a = a + 7) {
|
|
7783
|
+
rx = cmd.data[0 + a];
|
|
7784
|
+
ry = cmd.data[1 + a];
|
|
7785
|
+
rotation = cmd.data[2 + a];
|
|
7786
|
+
large = cmd.data[3 + a] === 1;
|
|
7787
|
+
decreasing = cmd.data[4 + a] === 1;
|
|
7788
|
+
end = getPoint(cmd, 5 + a);
|
|
7789
|
+
elliptic = rx !== ry;
|
|
7790
|
+
//first, rotate so we are dealing with a zero angle x-axis
|
|
7791
|
+
xAxis = new MakerJs.paths.Line(cmd.from, MakerJs.point.rotate(end, rotation, cmd.from));
|
|
7792
|
+
//next, un-distort any ellipse back into a circle in terms of x axis
|
|
7793
|
+
if (elliptic) {
|
|
7794
|
+
xAxis = MakerJs.path.distort(xAxis, 1, rx / ry);
|
|
7795
|
+
}
|
|
7796
|
+
//now create an arc, making sure we use the large and decreasing flags
|
|
7797
|
+
arc = new MakerJs.paths.Arc(xAxis.origin, xAxis.end, rx, large, decreasing);
|
|
7798
|
+
if (elliptic) {
|
|
7799
|
+
//scale up if radius was insufficient.
|
|
7800
|
+
if (rx < arc.radius) {
|
|
7801
|
+
scaleUp = arc.radius / rx;
|
|
7802
|
+
rx *= scaleUp;
|
|
7803
|
+
ry *= scaleUp;
|
|
7804
|
+
}
|
|
7805
|
+
//create an elliptical arc, this will re-distort
|
|
7806
|
+
e = new MakerJs.models.EllipticArc(arc, 1, ry / rx, options.bezierAccuracy);
|
|
7807
|
+
//un-rotate back to where it should be.
|
|
7808
|
+
MakerJs.model.rotate(e, -rotation, cmd.from);
|
|
7809
|
+
addModel(e);
|
|
7810
|
+
}
|
|
7811
|
+
else {
|
|
7812
|
+
//just use the arc
|
|
7813
|
+
//un-rotate back to where it should be.
|
|
7814
|
+
MakerJs.path.rotate(arc, -rotation, cmd.from);
|
|
7815
|
+
addPath(arc);
|
|
7816
|
+
}
|
|
7817
|
+
cmd.from = end;
|
|
7786
7818
|
}
|
|
7787
7819
|
return end;
|
|
7788
7820
|
};
|
|
7789
7821
|
map['C'] = function (cmd) {
|
|
7790
|
-
var control1
|
|
7791
|
-
var control2
|
|
7792
|
-
var
|
|
7793
|
-
|
|
7822
|
+
var control1;
|
|
7823
|
+
var control2;
|
|
7824
|
+
var start = cmd.from;
|
|
7825
|
+
var end;
|
|
7826
|
+
for (var a = 0; a < cmd.data.length; a = a + 6) {
|
|
7827
|
+
cmd.from = start;
|
|
7828
|
+
control1 = getPoint(cmd, 0 + a, start);
|
|
7829
|
+
control2 = getPoint(cmd, 2 + a, start);
|
|
7830
|
+
end = getPoint(cmd, 4 + a, start);
|
|
7831
|
+
addModel(new MakerJs.models.BezierCurve(start, control1, control2, end, options.bezierAccuracy));
|
|
7832
|
+
start = end;
|
|
7833
|
+
}
|
|
7794
7834
|
return end;
|
|
7795
7835
|
};
|
|
7796
7836
|
map['S'] = function (cmd) {
|
|
7797
7837
|
var control1;
|
|
7798
7838
|
var prevControl2;
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
7802
|
-
|
|
7803
|
-
|
|
7804
|
-
prevControl2 = getPoint(cmd.prev, 0);
|
|
7805
|
-
control1 = MakerJs.point.rotate(prevControl2, 180, cmd.from);
|
|
7839
|
+
var control2;
|
|
7840
|
+
var start = cmd.from;
|
|
7841
|
+
var end;
|
|
7842
|
+
if (cmd.prev.command === 'C' || cmd.prev.command === 'S') {
|
|
7843
|
+
prevControl2 = getPoint(cmd.prev, -4);
|
|
7806
7844
|
}
|
|
7807
7845
|
else {
|
|
7808
|
-
|
|
7846
|
+
prevControl2 = cmd.from;
|
|
7847
|
+
}
|
|
7848
|
+
for (var a = 0; a < cmd.data.length; a = a + 4) {
|
|
7849
|
+
cmd.from = start;
|
|
7850
|
+
control1 = MakerJs.point.rotate(prevControl2, 180, start);
|
|
7851
|
+
control2 = getPoint(cmd, 0 + a);
|
|
7852
|
+
end = getPoint(cmd, 2 + a);
|
|
7853
|
+
addModel(new MakerJs.models.BezierCurve(start, control1, control2, end, options.bezierAccuracy));
|
|
7854
|
+
start = end;
|
|
7855
|
+
prevControl2 = control2;
|
|
7809
7856
|
}
|
|
7810
|
-
var control2 = getPoint(cmd, 0);
|
|
7811
|
-
var end = getPoint(cmd, 2);
|
|
7812
|
-
addModel(new MakerJs.models.BezierCurve(cmd.from, control1, control2, end, options.bezierAccuracy));
|
|
7813
7857
|
return end;
|
|
7814
7858
|
};
|
|
7815
7859
|
map['Q'] = function (cmd) {
|
|
7816
|
-
var control
|
|
7817
|
-
var
|
|
7818
|
-
|
|
7860
|
+
var control;
|
|
7861
|
+
var start = cmd.from;
|
|
7862
|
+
var end;
|
|
7863
|
+
for (var a = 0; a < cmd.data.length; a = a + 4) {
|
|
7864
|
+
cmd.from = start;
|
|
7865
|
+
control = getPoint(cmd, 0 + a);
|
|
7866
|
+
end = getPoint(cmd, 2 + a);
|
|
7867
|
+
addModel(new MakerJs.models.BezierCurve(start, control, end, options.bezierAccuracy));
|
|
7868
|
+
start = end;
|
|
7869
|
+
}
|
|
7819
7870
|
return end;
|
|
7820
7871
|
};
|
|
7821
7872
|
map['T'] = function (cmd) {
|
|
7822
7873
|
var control;
|
|
7823
7874
|
var prevControl;
|
|
7875
|
+
var end;
|
|
7824
7876
|
if (cmd.prev.command === 'Q') {
|
|
7825
|
-
prevControl = getPoint(cmd.prev,
|
|
7877
|
+
prevControl = getPoint(cmd.prev, -4);
|
|
7826
7878
|
control = MakerJs.point.rotate(prevControl, 180, cmd.from);
|
|
7827
7879
|
}
|
|
7828
7880
|
else if (cmd.prev.command === 'T') {
|
|
7829
|
-
|
|
7830
|
-
control =
|
|
7881
|
+
cmd.prev.absolute = true;
|
|
7882
|
+
control = getPoint(cmd.prev, -2); //see below *
|
|
7831
7883
|
}
|
|
7832
7884
|
else {
|
|
7833
7885
|
control = cmd.from;
|
|
7834
7886
|
}
|
|
7887
|
+
for (var a = 0; a < cmd.data.length; a = a + 2) {
|
|
7888
|
+
end = getPoint(cmd, 0 + a);
|
|
7889
|
+
addModel(new MakerJs.models.BezierCurve(cmd.from, control, end, options.bezierAccuracy));
|
|
7890
|
+
cmd.from = end;
|
|
7891
|
+
control = MakerJs.point.rotate(control, 180, cmd.from);
|
|
7892
|
+
}
|
|
7835
7893
|
//* save the control point in the data list, will be accessible from index 2
|
|
7836
7894
|
var p = MakerJs.point.mirror(control, false, true);
|
|
7837
7895
|
cmd.data.push.apply(cmd.data, p);
|
|
7838
|
-
var end = getPoint(cmd, 0);
|
|
7839
|
-
addModel(new MakerJs.models.BezierCurve(cmd.from, control, end, options.bezierAccuracy));
|
|
7840
7896
|
return end;
|
|
7841
7897
|
};
|
|
7842
7898
|
var firstPoint = [0, 0];
|
|
@@ -8804,11 +8860,11 @@ var MakerJs;
|
|
|
8804
8860
|
}
|
|
8805
8861
|
var Ellipse = /** @class */ (function () {
|
|
8806
8862
|
function Ellipse() {
|
|
8807
|
-
var _this = this;
|
|
8808
8863
|
var args = [];
|
|
8809
8864
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
8810
8865
|
args[_i] = arguments[_i];
|
|
8811
8866
|
}
|
|
8867
|
+
var _this = this;
|
|
8812
8868
|
this.models = {};
|
|
8813
8869
|
var n = 360 / maxBezierArcspan;
|
|
8814
8870
|
var accuracy;
|
|
@@ -8973,11 +9029,11 @@ var MakerJs;
|
|
|
8973
9029
|
}
|
|
8974
9030
|
var ConnectTheDots = /** @class */ (function () {
|
|
8975
9031
|
function ConnectTheDots() {
|
|
8976
|
-
var _this = this;
|
|
8977
9032
|
var args = [];
|
|
8978
9033
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
8979
9034
|
args[_i] = arguments[_i];
|
|
8980
9035
|
}
|
|
9036
|
+
var _this = this;
|
|
8981
9037
|
this.paths = {};
|
|
8982
9038
|
var isClosed;
|
|
8983
9039
|
var points;
|
|
@@ -9358,9 +9414,9 @@ var MakerJs;
|
|
|
9358
9414
|
(function (models) {
|
|
9359
9415
|
var OvalArc = /** @class */ (function () {
|
|
9360
9416
|
function OvalArc(startAngle, endAngle, sweepRadius, slotRadius, selfIntersect, isolateCaps) {
|
|
9361
|
-
var _this = this;
|
|
9362
9417
|
if (selfIntersect === void 0) { selfIntersect = false; }
|
|
9363
9418
|
if (isolateCaps === void 0) { isolateCaps = false; }
|
|
9419
|
+
var _this = this;
|
|
9364
9420
|
this.paths = {};
|
|
9365
9421
|
var capRoot;
|
|
9366
9422
|
if (isolateCaps) {
|
|
@@ -9580,8 +9636,8 @@ var MakerJs;
|
|
|
9580
9636
|
(function (models) {
|
|
9581
9637
|
var Slot = /** @class */ (function () {
|
|
9582
9638
|
function Slot(origin, endPoint, radius, isolateCaps) {
|
|
9583
|
-
var _this = this;
|
|
9584
9639
|
if (isolateCaps === void 0) { isolateCaps = false; }
|
|
9640
|
+
var _this = this;
|
|
9585
9641
|
this.paths = {};
|
|
9586
9642
|
var capRoot;
|
|
9587
9643
|
if (isolateCaps) {
|
|
@@ -9705,9 +9761,9 @@ var MakerJs;
|
|
|
9705
9761
|
* @returns Model of the text.
|
|
9706
9762
|
*/
|
|
9707
9763
|
function Text(font, text, fontSize, combine, centerCharacterOrigin, bezierAccuracy, opentypeOptions) {
|
|
9708
|
-
var _this = this;
|
|
9709
9764
|
if (combine === void 0) { combine = false; }
|
|
9710
9765
|
if (centerCharacterOrigin === void 0) { centerCharacterOrigin = false; }
|
|
9766
|
+
var _this = this;
|
|
9711
9767
|
this.models = {};
|
|
9712
9768
|
var charIndex = 0;
|
|
9713
9769
|
var prevDeleted;
|
|
@@ -9813,5 +9869,5 @@ var MakerJs;
|
|
|
9813
9869
|
];
|
|
9814
9870
|
})(models = MakerJs.models || (MakerJs.models = {}));
|
|
9815
9871
|
})(MakerJs || (MakerJs = {}));
|
|
9816
|
-
MakerJs.version = "0.17.
|
|
9872
|
+
MakerJs.version = "0.17.3";
|
|
9817
9873
|
var Bezier = require('bezier-js');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "makerjs",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.3",
|
|
4
4
|
"description": "Maker.js, a Microsoft Garage project, is a JavaScript library for creating and sharing modular line drawings for CNC and laser cutters.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|