makerjs 0.17.1 → 0.17.2
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 +134 -82
- package/dist/index.d.ts +1 -1
- package/dist/index.js +131 -76
- 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.2
|
|
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
|
/**
|
|
@@ -8018,7 +8016,7 @@ var MakerJs;
|
|
|
8018
8016
|
var tag = new exporter.XmlTag('text', {
|
|
8019
8017
|
"alignment-baseline": "middle",
|
|
8020
8018
|
"text-anchor": "middle",
|
|
8021
|
-
"transform": "rotate("
|
|
8019
|
+
"transform": "rotate(".concat(MakerJs.angle.ofLineInDegrees(anchor), ",").concat(center[0], ",").concat(center[1], ")"),
|
|
8022
8020
|
"x": center[0],
|
|
8023
8021
|
"y": center[1]
|
|
8024
8022
|
});
|
|
@@ -8120,14 +8118,18 @@ var MakerJs;
|
|
|
8120
8118
|
}
|
|
8121
8119
|
result.models['p_' + ++pathCount] = m;
|
|
8122
8120
|
}
|
|
8123
|
-
function getPoint(cmd, offset) {
|
|
8121
|
+
function getPoint(cmd, offset, from) {
|
|
8124
8122
|
if (offset === void 0) { offset = 0; }
|
|
8123
|
+
if (from === void 0) { from = cmd.from; }
|
|
8124
|
+
if (offset < 0) { // get point from end of list (negative index)
|
|
8125
|
+
offset = offset + cmd.data.length;
|
|
8126
|
+
}
|
|
8125
8127
|
var p = MakerJs.point.mirror([cmd.data[0 + offset], cmd.data[1 + offset]], false, true);
|
|
8126
8128
|
if (cmd.absolute) {
|
|
8127
8129
|
return p;
|
|
8128
8130
|
}
|
|
8129
8131
|
else {
|
|
8130
|
-
return MakerJs.point.add(p,
|
|
8132
|
+
return MakerJs.point.add(p, from);
|
|
8131
8133
|
}
|
|
8132
8134
|
}
|
|
8133
8135
|
function lineTo(cmd, end) {
|
|
@@ -8139,7 +8141,15 @@ var MakerJs;
|
|
|
8139
8141
|
var map = {};
|
|
8140
8142
|
map['M'] = function (cmd) {
|
|
8141
8143
|
firstPoint = getPoint(cmd);
|
|
8142
|
-
|
|
8144
|
+
if (cmd.data.length > 2) { // implicit lineTo
|
|
8145
|
+
cmd.from = firstPoint;
|
|
8146
|
+
for (var a = 2; a < cmd.data.length; a = a + 2) {
|
|
8147
|
+
cmd.from = lineTo(cmd, getPoint(cmd, a));
|
|
8148
|
+
}
|
|
8149
|
+
return cmd.from;
|
|
8150
|
+
}
|
|
8151
|
+
else
|
|
8152
|
+
return firstPoint;
|
|
8143
8153
|
};
|
|
8144
8154
|
map['Z'] = function (cmd) {
|
|
8145
8155
|
return lineTo(cmd, firstPoint);
|
|
@@ -8166,97 +8176,139 @@ var MakerJs;
|
|
|
8166
8176
|
return lineTo(cmd, end);
|
|
8167
8177
|
};
|
|
8168
8178
|
map['L'] = function (cmd) {
|
|
8169
|
-
var end
|
|
8170
|
-
|
|
8179
|
+
var end;
|
|
8180
|
+
for (var a = 0; a < cmd.data.length; a = a + 2) {
|
|
8181
|
+
end = getPoint(cmd, a);
|
|
8182
|
+
cmd.from = lineTo(cmd, end);
|
|
8183
|
+
}
|
|
8184
|
+
return cmd.from;
|
|
8171
8185
|
};
|
|
8172
8186
|
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
|
-
|
|
8187
|
+
var rx;
|
|
8188
|
+
var ry;
|
|
8189
|
+
var rotation;
|
|
8190
|
+
var large;
|
|
8191
|
+
var decreasing;
|
|
8192
|
+
var end;
|
|
8193
|
+
var elliptic;
|
|
8194
|
+
var xAxis;
|
|
8195
|
+
var arc;
|
|
8196
|
+
var scaleUp;
|
|
8197
|
+
var e;
|
|
8198
|
+
for (var a = 0; a < cmd.data.length; a = a + 7) {
|
|
8199
|
+
rx = cmd.data[0 + a];
|
|
8200
|
+
ry = cmd.data[1 + a];
|
|
8201
|
+
rotation = cmd.data[2 + a];
|
|
8202
|
+
large = cmd.data[3 + a] === 1;
|
|
8203
|
+
decreasing = cmd.data[4 + a] === 1;
|
|
8204
|
+
end = getPoint(cmd, 5 + a);
|
|
8205
|
+
elliptic = rx !== ry;
|
|
8206
|
+
//first, rotate so we are dealing with a zero angle x-axis
|
|
8207
|
+
xAxis = new MakerJs.paths.Line(cmd.from, MakerJs.point.rotate(end, rotation, cmd.from));
|
|
8208
|
+
//next, un-distort any ellipse back into a circle in terms of x axis
|
|
8209
|
+
if (elliptic) {
|
|
8210
|
+
xAxis = MakerJs.path.distort(xAxis, 1, rx / ry);
|
|
8211
|
+
}
|
|
8212
|
+
//now create an arc, making sure we use the large and decreasing flags
|
|
8213
|
+
arc = new MakerJs.paths.Arc(xAxis.origin, xAxis.end, rx, large, decreasing);
|
|
8214
|
+
if (elliptic) {
|
|
8215
|
+
//scale up if radius was insufficient.
|
|
8216
|
+
if (rx < arc.radius) {
|
|
8217
|
+
scaleUp = arc.radius / rx;
|
|
8218
|
+
rx *= scaleUp;
|
|
8219
|
+
ry *= scaleUp;
|
|
8220
|
+
}
|
|
8221
|
+
//create an elliptical arc, this will re-distort
|
|
8222
|
+
e = new MakerJs.models.EllipticArc(arc, 1, ry / rx, options.bezierAccuracy);
|
|
8223
|
+
//un-rotate back to where it should be.
|
|
8224
|
+
MakerJs.model.rotate(e, -rotation, cmd.from);
|
|
8225
|
+
addModel(e);
|
|
8226
|
+
}
|
|
8227
|
+
else {
|
|
8228
|
+
//just use the arc
|
|
8229
|
+
//un-rotate back to where it should be.
|
|
8230
|
+
MakerJs.path.rotate(arc, -rotation, cmd.from);
|
|
8231
|
+
addPath(arc);
|
|
8232
|
+
}
|
|
8233
|
+
cmd.from = end;
|
|
8206
8234
|
}
|
|
8207
8235
|
return end;
|
|
8208
8236
|
};
|
|
8209
8237
|
map['C'] = function (cmd) {
|
|
8210
|
-
var control1
|
|
8211
|
-
var control2
|
|
8212
|
-
var
|
|
8213
|
-
|
|
8238
|
+
var control1;
|
|
8239
|
+
var control2;
|
|
8240
|
+
var start = cmd.from;
|
|
8241
|
+
var end;
|
|
8242
|
+
for (var a = 0; a < cmd.data.length; a = a + 6) {
|
|
8243
|
+
cmd.from = start;
|
|
8244
|
+
control1 = getPoint(cmd, 0 + a, start);
|
|
8245
|
+
control2 = getPoint(cmd, 2 + a, start);
|
|
8246
|
+
end = getPoint(cmd, 4 + a, start);
|
|
8247
|
+
addModel(new MakerJs.models.BezierCurve(start, control1, control2, end, options.bezierAccuracy));
|
|
8248
|
+
start = end;
|
|
8249
|
+
}
|
|
8214
8250
|
return end;
|
|
8215
8251
|
};
|
|
8216
8252
|
map['S'] = function (cmd) {
|
|
8217
8253
|
var control1;
|
|
8218
8254
|
var prevControl2;
|
|
8219
|
-
|
|
8220
|
-
|
|
8221
|
-
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
prevControl2 = getPoint(cmd.prev, 0);
|
|
8225
|
-
control1 = MakerJs.point.rotate(prevControl2, 180, cmd.from);
|
|
8255
|
+
var control2;
|
|
8256
|
+
var start = cmd.from;
|
|
8257
|
+
var end;
|
|
8258
|
+
if (cmd.prev.command === 'C' || cmd.prev.command === 'S') {
|
|
8259
|
+
prevControl2 = getPoint(cmd.prev, -4);
|
|
8226
8260
|
}
|
|
8227
8261
|
else {
|
|
8228
|
-
|
|
8262
|
+
prevControl2 = cmd.from;
|
|
8263
|
+
}
|
|
8264
|
+
for (var a = 0; a < cmd.data.length; a = a + 4) {
|
|
8265
|
+
cmd.from = start;
|
|
8266
|
+
control1 = MakerJs.point.rotate(prevControl2, 180, start);
|
|
8267
|
+
control2 = getPoint(cmd, 0 + a);
|
|
8268
|
+
end = getPoint(cmd, 2 + a);
|
|
8269
|
+
addModel(new MakerJs.models.BezierCurve(start, control1, control2, end, options.bezierAccuracy));
|
|
8270
|
+
start = end;
|
|
8271
|
+
prevControl2 = control2;
|
|
8229
8272
|
}
|
|
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
8273
|
return end;
|
|
8234
8274
|
};
|
|
8235
8275
|
map['Q'] = function (cmd) {
|
|
8236
|
-
var control
|
|
8237
|
-
var
|
|
8238
|
-
|
|
8276
|
+
var control;
|
|
8277
|
+
var start = cmd.from;
|
|
8278
|
+
var end;
|
|
8279
|
+
for (var a = 0; a < cmd.data.length; a = a + 4) {
|
|
8280
|
+
cmd.from = start;
|
|
8281
|
+
control = getPoint(cmd, 0 + a);
|
|
8282
|
+
end = getPoint(cmd, 2 + a);
|
|
8283
|
+
addModel(new MakerJs.models.BezierCurve(start, control, end, options.bezierAccuracy));
|
|
8284
|
+
start = end;
|
|
8285
|
+
}
|
|
8239
8286
|
return end;
|
|
8240
8287
|
};
|
|
8241
8288
|
map['T'] = function (cmd) {
|
|
8242
8289
|
var control;
|
|
8243
8290
|
var prevControl;
|
|
8291
|
+
var end;
|
|
8244
8292
|
if (cmd.prev.command === 'Q') {
|
|
8245
|
-
prevControl = getPoint(cmd.prev,
|
|
8293
|
+
prevControl = getPoint(cmd.prev, -4);
|
|
8246
8294
|
control = MakerJs.point.rotate(prevControl, 180, cmd.from);
|
|
8247
8295
|
}
|
|
8248
8296
|
else if (cmd.prev.command === 'T') {
|
|
8249
|
-
|
|
8250
|
-
control =
|
|
8297
|
+
cmd.prev.absolute = true;
|
|
8298
|
+
control = getPoint(cmd.prev, -2); //see below *
|
|
8251
8299
|
}
|
|
8252
8300
|
else {
|
|
8253
8301
|
control = cmd.from;
|
|
8254
8302
|
}
|
|
8303
|
+
for (var a = 0; a < cmd.data.length; a = a + 2) {
|
|
8304
|
+
end = getPoint(cmd, 0 + a);
|
|
8305
|
+
addModel(new MakerJs.models.BezierCurve(cmd.from, control, end, options.bezierAccuracy));
|
|
8306
|
+
cmd.from = end;
|
|
8307
|
+
control = MakerJs.point.rotate(control, 180, cmd.from);
|
|
8308
|
+
}
|
|
8255
8309
|
//* save the control point in the data list, will be accessible from index 2
|
|
8256
8310
|
var p = MakerJs.point.mirror(control, false, true);
|
|
8257
8311
|
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
8312
|
return end;
|
|
8261
8313
|
};
|
|
8262
8314
|
var firstPoint = [0, 0];
|
|
@@ -9224,11 +9276,11 @@ var MakerJs;
|
|
|
9224
9276
|
}
|
|
9225
9277
|
var Ellipse = /** @class */ (function () {
|
|
9226
9278
|
function Ellipse() {
|
|
9227
|
-
var _this = this;
|
|
9228
9279
|
var args = [];
|
|
9229
9280
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
9230
9281
|
args[_i] = arguments[_i];
|
|
9231
9282
|
}
|
|
9283
|
+
var _this = this;
|
|
9232
9284
|
this.models = {};
|
|
9233
9285
|
var n = 360 / maxBezierArcspan;
|
|
9234
9286
|
var accuracy;
|
|
@@ -9393,11 +9445,11 @@ var MakerJs;
|
|
|
9393
9445
|
}
|
|
9394
9446
|
var ConnectTheDots = /** @class */ (function () {
|
|
9395
9447
|
function ConnectTheDots() {
|
|
9396
|
-
var _this = this;
|
|
9397
9448
|
var args = [];
|
|
9398
9449
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
9399
9450
|
args[_i] = arguments[_i];
|
|
9400
9451
|
}
|
|
9452
|
+
var _this = this;
|
|
9401
9453
|
this.paths = {};
|
|
9402
9454
|
var isClosed;
|
|
9403
9455
|
var points;
|
|
@@ -9778,9 +9830,9 @@ var MakerJs;
|
|
|
9778
9830
|
(function (models) {
|
|
9779
9831
|
var OvalArc = /** @class */ (function () {
|
|
9780
9832
|
function OvalArc(startAngle, endAngle, sweepRadius, slotRadius, selfIntersect, isolateCaps) {
|
|
9781
|
-
var _this = this;
|
|
9782
9833
|
if (selfIntersect === void 0) { selfIntersect = false; }
|
|
9783
9834
|
if (isolateCaps === void 0) { isolateCaps = false; }
|
|
9835
|
+
var _this = this;
|
|
9784
9836
|
this.paths = {};
|
|
9785
9837
|
var capRoot;
|
|
9786
9838
|
if (isolateCaps) {
|
|
@@ -10000,8 +10052,8 @@ var MakerJs;
|
|
|
10000
10052
|
(function (models) {
|
|
10001
10053
|
var Slot = /** @class */ (function () {
|
|
10002
10054
|
function Slot(origin, endPoint, radius, isolateCaps) {
|
|
10003
|
-
var _this = this;
|
|
10004
10055
|
if (isolateCaps === void 0) { isolateCaps = false; }
|
|
10056
|
+
var _this = this;
|
|
10005
10057
|
this.paths = {};
|
|
10006
10058
|
var capRoot;
|
|
10007
10059
|
if (isolateCaps) {
|
|
@@ -10125,9 +10177,9 @@ var MakerJs;
|
|
|
10125
10177
|
* @returns Model of the text.
|
|
10126
10178
|
*/
|
|
10127
10179
|
function Text(font, text, fontSize, combine, centerCharacterOrigin, bezierAccuracy, opentypeOptions) {
|
|
10128
|
-
var _this = this;
|
|
10129
10180
|
if (combine === void 0) { combine = false; }
|
|
10130
10181
|
if (centerCharacterOrigin === void 0) { centerCharacterOrigin = false; }
|
|
10182
|
+
var _this = this;
|
|
10131
10183
|
this.models = {};
|
|
10132
10184
|
var charIndex = 0;
|
|
10133
10185
|
var prevDeleted;
|
|
@@ -10233,6 +10285,6 @@ var MakerJs;
|
|
|
10233
10285
|
];
|
|
10234
10286
|
})(models = MakerJs.models || (MakerJs.models = {}));
|
|
10235
10287
|
})(MakerJs || (MakerJs = {}));
|
|
10236
|
-
MakerJs.version = "0.17.
|
|
10288
|
+
MakerJs.version = "0.17.2";
|
|
10237
10289
|
|
|
10238
10290
|
},{"clone":2,"graham_scan":3,"kdbush":4}]},{},[]);
|
package/dist/index.d.ts
CHANGED
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
|
/**
|
|
@@ -7598,7 +7599,7 @@ var MakerJs;
|
|
|
7598
7599
|
var tag = new exporter.XmlTag('text', {
|
|
7599
7600
|
"alignment-baseline": "middle",
|
|
7600
7601
|
"text-anchor": "middle",
|
|
7601
|
-
"transform": "rotate("
|
|
7602
|
+
"transform": "rotate(".concat(MakerJs.angle.ofLineInDegrees(anchor), ",").concat(center[0], ",").concat(center[1], ")"),
|
|
7602
7603
|
"x": center[0],
|
|
7603
7604
|
"y": center[1]
|
|
7604
7605
|
});
|
|
@@ -7700,14 +7701,18 @@ var MakerJs;
|
|
|
7700
7701
|
}
|
|
7701
7702
|
result.models['p_' + ++pathCount] = m;
|
|
7702
7703
|
}
|
|
7703
|
-
function getPoint(cmd, offset) {
|
|
7704
|
+
function getPoint(cmd, offset, from) {
|
|
7704
7705
|
if (offset === void 0) { offset = 0; }
|
|
7706
|
+
if (from === void 0) { from = cmd.from; }
|
|
7707
|
+
if (offset < 0) { // get point from end of list (negative index)
|
|
7708
|
+
offset = offset + cmd.data.length;
|
|
7709
|
+
}
|
|
7705
7710
|
var p = MakerJs.point.mirror([cmd.data[0 + offset], cmd.data[1 + offset]], false, true);
|
|
7706
7711
|
if (cmd.absolute) {
|
|
7707
7712
|
return p;
|
|
7708
7713
|
}
|
|
7709
7714
|
else {
|
|
7710
|
-
return MakerJs.point.add(p,
|
|
7715
|
+
return MakerJs.point.add(p, from);
|
|
7711
7716
|
}
|
|
7712
7717
|
}
|
|
7713
7718
|
function lineTo(cmd, end) {
|
|
@@ -7719,7 +7724,15 @@ var MakerJs;
|
|
|
7719
7724
|
var map = {};
|
|
7720
7725
|
map['M'] = function (cmd) {
|
|
7721
7726
|
firstPoint = getPoint(cmd);
|
|
7722
|
-
|
|
7727
|
+
if (cmd.data.length > 2) { // implicit lineTo
|
|
7728
|
+
cmd.from = firstPoint;
|
|
7729
|
+
for (var a = 2; a < cmd.data.length; a = a + 2) {
|
|
7730
|
+
cmd.from = lineTo(cmd, getPoint(cmd, a));
|
|
7731
|
+
}
|
|
7732
|
+
return cmd.from;
|
|
7733
|
+
}
|
|
7734
|
+
else
|
|
7735
|
+
return firstPoint;
|
|
7723
7736
|
};
|
|
7724
7737
|
map['Z'] = function (cmd) {
|
|
7725
7738
|
return lineTo(cmd, firstPoint);
|
|
@@ -7746,97 +7759,139 @@ var MakerJs;
|
|
|
7746
7759
|
return lineTo(cmd, end);
|
|
7747
7760
|
};
|
|
7748
7761
|
map['L'] = function (cmd) {
|
|
7749
|
-
var end
|
|
7750
|
-
|
|
7762
|
+
var end;
|
|
7763
|
+
for (var a = 0; a < cmd.data.length; a = a + 2) {
|
|
7764
|
+
end = getPoint(cmd, a);
|
|
7765
|
+
cmd.from = lineTo(cmd, end);
|
|
7766
|
+
}
|
|
7767
|
+
return cmd.from;
|
|
7751
7768
|
};
|
|
7752
7769
|
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
|
-
|
|
7770
|
+
var rx;
|
|
7771
|
+
var ry;
|
|
7772
|
+
var rotation;
|
|
7773
|
+
var large;
|
|
7774
|
+
var decreasing;
|
|
7775
|
+
var end;
|
|
7776
|
+
var elliptic;
|
|
7777
|
+
var xAxis;
|
|
7778
|
+
var arc;
|
|
7779
|
+
var scaleUp;
|
|
7780
|
+
var e;
|
|
7781
|
+
for (var a = 0; a < cmd.data.length; a = a + 7) {
|
|
7782
|
+
rx = cmd.data[0 + a];
|
|
7783
|
+
ry = cmd.data[1 + a];
|
|
7784
|
+
rotation = cmd.data[2 + a];
|
|
7785
|
+
large = cmd.data[3 + a] === 1;
|
|
7786
|
+
decreasing = cmd.data[4 + a] === 1;
|
|
7787
|
+
end = getPoint(cmd, 5 + a);
|
|
7788
|
+
elliptic = rx !== ry;
|
|
7789
|
+
//first, rotate so we are dealing with a zero angle x-axis
|
|
7790
|
+
xAxis = new MakerJs.paths.Line(cmd.from, MakerJs.point.rotate(end, rotation, cmd.from));
|
|
7791
|
+
//next, un-distort any ellipse back into a circle in terms of x axis
|
|
7792
|
+
if (elliptic) {
|
|
7793
|
+
xAxis = MakerJs.path.distort(xAxis, 1, rx / ry);
|
|
7794
|
+
}
|
|
7795
|
+
//now create an arc, making sure we use the large and decreasing flags
|
|
7796
|
+
arc = new MakerJs.paths.Arc(xAxis.origin, xAxis.end, rx, large, decreasing);
|
|
7797
|
+
if (elliptic) {
|
|
7798
|
+
//scale up if radius was insufficient.
|
|
7799
|
+
if (rx < arc.radius) {
|
|
7800
|
+
scaleUp = arc.radius / rx;
|
|
7801
|
+
rx *= scaleUp;
|
|
7802
|
+
ry *= scaleUp;
|
|
7803
|
+
}
|
|
7804
|
+
//create an elliptical arc, this will re-distort
|
|
7805
|
+
e = new MakerJs.models.EllipticArc(arc, 1, ry / rx, options.bezierAccuracy);
|
|
7806
|
+
//un-rotate back to where it should be.
|
|
7807
|
+
MakerJs.model.rotate(e, -rotation, cmd.from);
|
|
7808
|
+
addModel(e);
|
|
7809
|
+
}
|
|
7810
|
+
else {
|
|
7811
|
+
//just use the arc
|
|
7812
|
+
//un-rotate back to where it should be.
|
|
7813
|
+
MakerJs.path.rotate(arc, -rotation, cmd.from);
|
|
7814
|
+
addPath(arc);
|
|
7815
|
+
}
|
|
7816
|
+
cmd.from = end;
|
|
7786
7817
|
}
|
|
7787
7818
|
return end;
|
|
7788
7819
|
};
|
|
7789
7820
|
map['C'] = function (cmd) {
|
|
7790
|
-
var control1
|
|
7791
|
-
var control2
|
|
7792
|
-
var
|
|
7793
|
-
|
|
7821
|
+
var control1;
|
|
7822
|
+
var control2;
|
|
7823
|
+
var start = cmd.from;
|
|
7824
|
+
var end;
|
|
7825
|
+
for (var a = 0; a < cmd.data.length; a = a + 6) {
|
|
7826
|
+
cmd.from = start;
|
|
7827
|
+
control1 = getPoint(cmd, 0 + a, start);
|
|
7828
|
+
control2 = getPoint(cmd, 2 + a, start);
|
|
7829
|
+
end = getPoint(cmd, 4 + a, start);
|
|
7830
|
+
addModel(new MakerJs.models.BezierCurve(start, control1, control2, end, options.bezierAccuracy));
|
|
7831
|
+
start = end;
|
|
7832
|
+
}
|
|
7794
7833
|
return end;
|
|
7795
7834
|
};
|
|
7796
7835
|
map['S'] = function (cmd) {
|
|
7797
7836
|
var control1;
|
|
7798
7837
|
var prevControl2;
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
7802
|
-
|
|
7803
|
-
|
|
7804
|
-
prevControl2 = getPoint(cmd.prev, 0);
|
|
7805
|
-
control1 = MakerJs.point.rotate(prevControl2, 180, cmd.from);
|
|
7838
|
+
var control2;
|
|
7839
|
+
var start = cmd.from;
|
|
7840
|
+
var end;
|
|
7841
|
+
if (cmd.prev.command === 'C' || cmd.prev.command === 'S') {
|
|
7842
|
+
prevControl2 = getPoint(cmd.prev, -4);
|
|
7806
7843
|
}
|
|
7807
7844
|
else {
|
|
7808
|
-
|
|
7845
|
+
prevControl2 = cmd.from;
|
|
7846
|
+
}
|
|
7847
|
+
for (var a = 0; a < cmd.data.length; a = a + 4) {
|
|
7848
|
+
cmd.from = start;
|
|
7849
|
+
control1 = MakerJs.point.rotate(prevControl2, 180, start);
|
|
7850
|
+
control2 = getPoint(cmd, 0 + a);
|
|
7851
|
+
end = getPoint(cmd, 2 + a);
|
|
7852
|
+
addModel(new MakerJs.models.BezierCurve(start, control1, control2, end, options.bezierAccuracy));
|
|
7853
|
+
start = end;
|
|
7854
|
+
prevControl2 = control2;
|
|
7809
7855
|
}
|
|
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
7856
|
return end;
|
|
7814
7857
|
};
|
|
7815
7858
|
map['Q'] = function (cmd) {
|
|
7816
|
-
var control
|
|
7817
|
-
var
|
|
7818
|
-
|
|
7859
|
+
var control;
|
|
7860
|
+
var start = cmd.from;
|
|
7861
|
+
var end;
|
|
7862
|
+
for (var a = 0; a < cmd.data.length; a = a + 4) {
|
|
7863
|
+
cmd.from = start;
|
|
7864
|
+
control = getPoint(cmd, 0 + a);
|
|
7865
|
+
end = getPoint(cmd, 2 + a);
|
|
7866
|
+
addModel(new MakerJs.models.BezierCurve(start, control, end, options.bezierAccuracy));
|
|
7867
|
+
start = end;
|
|
7868
|
+
}
|
|
7819
7869
|
return end;
|
|
7820
7870
|
};
|
|
7821
7871
|
map['T'] = function (cmd) {
|
|
7822
7872
|
var control;
|
|
7823
7873
|
var prevControl;
|
|
7874
|
+
var end;
|
|
7824
7875
|
if (cmd.prev.command === 'Q') {
|
|
7825
|
-
prevControl = getPoint(cmd.prev,
|
|
7876
|
+
prevControl = getPoint(cmd.prev, -4);
|
|
7826
7877
|
control = MakerJs.point.rotate(prevControl, 180, cmd.from);
|
|
7827
7878
|
}
|
|
7828
7879
|
else if (cmd.prev.command === 'T') {
|
|
7829
|
-
|
|
7830
|
-
control =
|
|
7880
|
+
cmd.prev.absolute = true;
|
|
7881
|
+
control = getPoint(cmd.prev, -2); //see below *
|
|
7831
7882
|
}
|
|
7832
7883
|
else {
|
|
7833
7884
|
control = cmd.from;
|
|
7834
7885
|
}
|
|
7886
|
+
for (var a = 0; a < cmd.data.length; a = a + 2) {
|
|
7887
|
+
end = getPoint(cmd, 0 + a);
|
|
7888
|
+
addModel(new MakerJs.models.BezierCurve(cmd.from, control, end, options.bezierAccuracy));
|
|
7889
|
+
cmd.from = end;
|
|
7890
|
+
control = MakerJs.point.rotate(control, 180, cmd.from);
|
|
7891
|
+
}
|
|
7835
7892
|
//* save the control point in the data list, will be accessible from index 2
|
|
7836
7893
|
var p = MakerJs.point.mirror(control, false, true);
|
|
7837
7894
|
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
7895
|
return end;
|
|
7841
7896
|
};
|
|
7842
7897
|
var firstPoint = [0, 0];
|
|
@@ -8804,11 +8859,11 @@ var MakerJs;
|
|
|
8804
8859
|
}
|
|
8805
8860
|
var Ellipse = /** @class */ (function () {
|
|
8806
8861
|
function Ellipse() {
|
|
8807
|
-
var _this = this;
|
|
8808
8862
|
var args = [];
|
|
8809
8863
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
8810
8864
|
args[_i] = arguments[_i];
|
|
8811
8865
|
}
|
|
8866
|
+
var _this = this;
|
|
8812
8867
|
this.models = {};
|
|
8813
8868
|
var n = 360 / maxBezierArcspan;
|
|
8814
8869
|
var accuracy;
|
|
@@ -8973,11 +9028,11 @@ var MakerJs;
|
|
|
8973
9028
|
}
|
|
8974
9029
|
var ConnectTheDots = /** @class */ (function () {
|
|
8975
9030
|
function ConnectTheDots() {
|
|
8976
|
-
var _this = this;
|
|
8977
9031
|
var args = [];
|
|
8978
9032
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
8979
9033
|
args[_i] = arguments[_i];
|
|
8980
9034
|
}
|
|
9035
|
+
var _this = this;
|
|
8981
9036
|
this.paths = {};
|
|
8982
9037
|
var isClosed;
|
|
8983
9038
|
var points;
|
|
@@ -9358,9 +9413,9 @@ var MakerJs;
|
|
|
9358
9413
|
(function (models) {
|
|
9359
9414
|
var OvalArc = /** @class */ (function () {
|
|
9360
9415
|
function OvalArc(startAngle, endAngle, sweepRadius, slotRadius, selfIntersect, isolateCaps) {
|
|
9361
|
-
var _this = this;
|
|
9362
9416
|
if (selfIntersect === void 0) { selfIntersect = false; }
|
|
9363
9417
|
if (isolateCaps === void 0) { isolateCaps = false; }
|
|
9418
|
+
var _this = this;
|
|
9364
9419
|
this.paths = {};
|
|
9365
9420
|
var capRoot;
|
|
9366
9421
|
if (isolateCaps) {
|
|
@@ -9580,8 +9635,8 @@ var MakerJs;
|
|
|
9580
9635
|
(function (models) {
|
|
9581
9636
|
var Slot = /** @class */ (function () {
|
|
9582
9637
|
function Slot(origin, endPoint, radius, isolateCaps) {
|
|
9583
|
-
var _this = this;
|
|
9584
9638
|
if (isolateCaps === void 0) { isolateCaps = false; }
|
|
9639
|
+
var _this = this;
|
|
9585
9640
|
this.paths = {};
|
|
9586
9641
|
var capRoot;
|
|
9587
9642
|
if (isolateCaps) {
|
|
@@ -9705,9 +9760,9 @@ var MakerJs;
|
|
|
9705
9760
|
* @returns Model of the text.
|
|
9706
9761
|
*/
|
|
9707
9762
|
function Text(font, text, fontSize, combine, centerCharacterOrigin, bezierAccuracy, opentypeOptions) {
|
|
9708
|
-
var _this = this;
|
|
9709
9763
|
if (combine === void 0) { combine = false; }
|
|
9710
9764
|
if (centerCharacterOrigin === void 0) { centerCharacterOrigin = false; }
|
|
9765
|
+
var _this = this;
|
|
9711
9766
|
this.models = {};
|
|
9712
9767
|
var charIndex = 0;
|
|
9713
9768
|
var prevDeleted;
|
|
@@ -9813,5 +9868,5 @@ var MakerJs;
|
|
|
9813
9868
|
];
|
|
9814
9869
|
})(models = MakerJs.models || (MakerJs.models = {}));
|
|
9815
9870
|
})(MakerJs || (MakerJs = {}));
|
|
9816
|
-
MakerJs.version = "0.17.
|
|
9871
|
+
MakerJs.version = "0.17.2";
|
|
9817
9872
|
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.2",
|
|
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",
|