Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const fix_corner_raw = (a, mirrored_a, b, mirrored_b, outer, target) => {
const center = m.path.intersection(a, b).intersectionPoints[0]
const angle_a = m.angle.ofLineInDegrees(a) + (mirrored_a ? 180 : 0)
const angle_b = m.angle.ofLineInDegrees(b) + (mirrored_b ? 180 : 0)
const angle = angle_b - angle_a
let radius = Math.tan(m.angle.toRadians(Math.abs(angle) / 2)) * corner_radius
const sign = radius > 0 ? 1 : -1
radius = Math.abs(radius)
const circ = circle(center, radius)
const cas = m.path.intersection(a, circ).intersectionPoints
const cbs = m.path.intersection(b, circ).intersectionPoints
// there can be multiple intersections, so we want the points
// furthest from the control (either inner or outer) point
const furthest = (arr, control) => {
let max
let max_dist = 0
const fix_corner_raw = (a, mirrored_a, b, mirrored_b, outer, target) => {
const center = m.path.intersection(a, b).intersectionPoints[0]
const angle_a = m.angle.ofLineInDegrees(a) + (mirrored_a ? 180 : 0)
const angle_b = m.angle.ofLineInDegrees(b) + (mirrored_b ? 180 : 0)
const angle = angle_b - angle_a
let radius = Math.tan(m.angle.toRadians(Math.abs(angle) / 2)) * corner_radius
const sign = radius > 0 ? 1 : -1
radius = Math.abs(radius)
const circ = circle(center, radius)
const cas = m.path.intersection(a, circ).intersectionPoints
const cbs = m.path.intersection(b, circ).intersectionPoints
// there can be multiple intersections, so we want the points
// furthest from the control (either inner or outer) point
const furthest = (arr, control) => {
let max
let max_dist = 0
for (const point of arr) {
const d = m.measure.pointDistance(point, control)
if (d > max_dist) {
max_dist = d
max = point
}
}
return max
function trimLines(line1, propertyName1, line2, propertyName2) {
var intersection = makerjs.path.intersection(line1, line2);
if (intersection) {
line1[propertyName1] = intersection.intersectionPoints[0];
line2[propertyName2] = intersection.intersectionPoints[0];
}
return intersection;
}
makerjs.model.originate(spoke);
var wedge = new SpokeWedge(spoke, outerRadius, innerRadius, count);
if (innerFillet) {
var innerFilletArc = makerjs.path.fillet(wedge.paths.ShapeLine2, wedge.paths.ShapeLine4, innerFillet);
if (innerFilletArc) {
wedge.paths.innerFillet = innerFilletArc;
} else {
wedge.paths.innerFillet1 = makerjs.path.fillet(wedge.paths.ShapeLine2, wedge.paths.Ring_inner, innerFillet);
wedge.paths.innerFillet2 = makerjs.path.fillet(wedge.paths.ShapeLine4, wedge.paths.Ring_inner, innerFillet);
}
}
if (outerFillet) {
wedge.paths.outerFillet1 = makerjs.path.fillet(wedge.paths.ShapeLine2, wedge.paths.Ring_outer, outerFillet);
wedge.paths.outerFillet2 = makerjs.path.fillet(wedge.paths.ShapeLine4, wedge.paths.Ring_outer, outerFillet);
}
this.models = {};
for (var i = 0; i < count; i++) {
var iwedge = makerjs.cloneObject(wedge);
this.models['wedge' + i] = makerjs.model.rotate(iwedge, i * a, [0, 0]);
}
if (addRing) {
this.models.ring2 = new makerjs.models.Ring(outerRadius + spokeWidth, innerRadius - spokeWidth);
}
}
function FlaredSpokes(outerRadius, innerRadius, count, spokeWidth, flareWidth, innerFillet, outerFillet, addRing) {
var a = 360 / count;
var halfSpokeWidth = spokeWidth / 2;
var halfFlareWidth = flareWidth / 2;
var flareLine = new makerjs.paths.Line([halfFlareWidth, 0], [halfFlareWidth, outerRadius]);
var outerCircle = new makerjs.paths.Circle([0, 0], outerRadius);
var int = makerjs.path.intersection(flareLine, outerCircle);
var flareY = int.intersectionPoints[0][1];
var points = [
[halfSpokeWidth, 0],
[halfFlareWidth, flareY],
[halfFlareWidth, outerRadius + 1],
[-halfFlareWidth, outerRadius + 1],
[-halfFlareWidth, flareY],
[-halfSpokeWidth, 0]
];
var spoke = new makerjs.models.ConnectTheDots(true, points);
var wedge = new SpokeWedge(spoke, outerRadius, innerRadius, count);
if (innerFillet) {
var innerFilletArc = makerjs.path.fillet(wedge.paths.ShapeLine1, wedge.paths.ShapeLine5, innerFillet);
if (innerFilletArc) {
VentgridCircle.prototype.checkCircle = function (id, circle) {
var distanceToCenter = makerjs.measure.pointDistance([0, 0], circle.origin);
if (makerjs.round(distanceToCenter + circle.radius) <= this.radius) {
//inside
this.paths[id] = circle;
}
else if (makerjs.round(distanceToCenter - circle.radius) > this.radius) {
}
else {
//border
var arcIntersection = makerjs.path.intersection(circle, this.rim);
if (arcIntersection && arcIntersection.path1Angles.length == 2) {
var filterArc = new makerjs.paths.Arc(circle.origin, circle.radius, arcIntersection.path1Angles[1], arcIntersection.path1Angles[0]);
this.paths[id] = filterArc;
var rimArc = new makerjs.paths.Arc([0, 0], this.radius, arcIntersection.path2Angles[0], arcIntersection.path2Angles[1]);
this.paths[id + '_rim'] = rimArc;
}
}
};
return VentgridCircle;
function PolygonStackBoxInside(angle, radius, holeRadius, rimThickness) {
var rim = Math.min(rimThickness, holeRadius);
var a2 = angle * 2;
var innerFilletCenter = point.rotate([radius + 2 * holeRadius + rim, 0], 90 + angle, [radius, 0]);
var innerFilletTop = new arc(innerFilletCenter, holeRadius, 270 + angle, angle);
var innerFilletTopPoints = point.fromArc(innerFilletTop);
var innerFilletBottomPoint = [innerFilletTopPoints[1][0], -innerFilletTopPoints[1][1]];
this.paths = {
innerFilletTop: innerFilletTop,
innerFilletBottom: makerjs.path.mirror(innerFilletTop, false, true),
innerLine: new line(innerFilletTopPoints[1], point.rotate(innerFilletBottomPoint, a2, [0, 0])),
innerFillet: new arc([radius, 0], holeRadius + rim, 90 + angle, 270 - angle)
};
}
return PolygonStackBoxInside;
var int = makerjs.path.intersection(flareLine, outerCircle);
var flareY = int.intersectionPoints[0][1];
var points = [
[halfSpokeWidth, 0],
[halfFlareWidth, flareY],
[halfFlareWidth, outerRadius + 1],
[-halfFlareWidth, outerRadius + 1],
[-halfFlareWidth, flareY],
[-halfSpokeWidth, 0]
];
var spoke = new makerjs.models.ConnectTheDots(true, points);
var wedge = new SpokeWedge(spoke, outerRadius, innerRadius, count);
if (innerFillet) {
var innerFilletArc = makerjs.path.fillet(wedge.paths.ShapeLine1, wedge.paths.ShapeLine5, innerFillet);
if (innerFilletArc) {
wedge.paths.innerFillet = innerFilletArc;
} else {
wedge.paths.innerFillet1 = makerjs.path.fillet(wedge.paths.ShapeLine1, wedge.paths.Ring_inner, innerFillet);
wedge.paths.innerFillet2 = makerjs.path.fillet(wedge.paths.ShapeLine5, wedge.paths.Ring_inner, innerFillet);
}
}
if (outerFillet) {
wedge.paths.outerFillet1 = makerjs.path.fillet(wedge.paths.ShapeLine1, wedge.paths.Ring_outer, outerFillet);
wedge.paths.outerFillet2 = makerjs.path.fillet(wedge.paths.ShapeLine5, wedge.paths.Ring_outer, outerFillet);
}
this.models = {};
for (var i = 0; i < count; i++) {
}
var right = makerjs.model.zero(new HalfBandClamp(radius1, band, tabWidth, tabHeight, gap));
filletAll(right);
var left = makerjs.model.mirror(makerjs.model.zero(new HalfBandClamp(radius2, band, tabWidth, tabHeight, gap)), true, false);
filletAll(left);
this.models = {
right: right,
left: left
};
makerjs.model.originate(this);
var filletBetween = makerjs.path.fillet(right.paths['bandOuter'], left.paths['bandOuter'], betweenFillet);
this.paths = {
filletBetween: filletBetween
};
}
function trimBends(b1, b2) {
var intersection = trimLines(b1.paths.Vertical, 'origin', b2.paths.Horizontal, 'origin');
if (intersection) return;
intersection = makerjs.path.intersection(b1.paths.arc, b2.paths.Horizontal);
if (intersection) {
b1.paths.arc.startAngle = intersection.path1Angles[0];
b2.paths.Horizontal.origin = intersection.intersectionPoints[0];
delete b1.paths.Vertical;
return;
}
intersection = makerjs.path.intersection(b1.paths.arc, b2.paths.arc);
if (intersection) {
b1.paths.arc.startAngle = intersection.path1Angles[0];
b2.paths.arc.endAngle = intersection.path2Angles[0];
delete b1.paths.Vertical;
delete b2.paths.Horizontal;
return;
}
}