How to use the makerjs.model function in makerjs

To help you get started, weā€™ve selected a few makerjs examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github microsoft / maker.js / demos / js / window-arch.js View on Github external
function WindowArch(width, columns, extra, split, spacing, fillet) {
    var radius = width / 2;
    var column = (width + spacing) / columns;
    var dome = new makerjs.models.Dome(width, radius);
    var wireframe = new Wireframe(columns, column, extra, radius, split);
    var frame = makerjs.model.expandPaths(wireframe, spacing / 2);
    this.models = {
        dome: dome,
        frame: frame
    };
    makerjs.model.combineSubtraction(dome, frame);
    //need to simplify to get the maximum fillets
    makerjs.model.simplify(this);
    var chains = makerjs.model.findChains(this);
    chains.forEach(function (chain, i) {
        var fillets = makerjs.chain.fillet(chain, fillet);
        if (!fillets) return;
        frame.models["fillets" + i] = fillets;
    });
}
github microsoft / maker.js / demos / js / exoPanel.js View on Github external
.addTo(this, 'dome3')
    .moveRelative([0, height])
    .$reset()
    .clone()
    .rotate(180)
    .addTo(this, 'dome4')
    .moveRelative([width, height])
    ;

  var outer = new makerjs.models.Rectangle(width, height);

  makerjs.model.combineUnion(this, outer);

  this.models.outer = outer;

  var c = makerjs.model.findSingleChain(this);
  var fillets = makerjs.chain.fillet(c, fillet);
  this.models.fillets = fillets;

  this.models.bolts = new makerjs.models.BoltRectangle(width, height, holeRadius);
}
github microsoft / maker.js / demos / js / makerjs-nameplate.js View on Github external
makerjs.model.center(textModel);
    makerjs.model.center(bolts);

    //make a rectangle around the bolts
    var Rect = rounded ? makerjs.models.RoundRectangle : makerjs.models.Rectangle;
    var rect = new Rect(bolts, boltMargin);

    //save all of these in the model
    this.models = {
        text: textModel,
        rect: rect,
        bolts: bolts
    };

    //move everything to [0, 0]
    makerjs.model.zero(this);

    this.units = makerjs.unitType.Millimeter;
}
github microsoft / maker.js / demos / card.js View on Github external
arc.endAngle = makerjs.angle.mirror(arc.endAngle, true, true);
	        arc.origin = origin;
        }

	    findAndFlip('BottomLeft', [0, 0]);
	    findAndFlip('BottomRight', [innerW, 0]);
	    findAndFlip('TopLeft', [0, innerH]);
	    findAndFlip('TopRight', [innerW, innerH]);
	}
	
	var outer = new makerjs.models.RoundRectangle(w, h, outerRadius);

	var bolts = new makerjs.models.BoltRectangle(w - 2 * rim, h - 2 * rim, boltRadius);
	bolts.origin = [rim, rim];

	var logo = makerjs.model.scale(new makerjs_logo(1.06, .3, .35, logoOutline, 8.3, .65, logoAngle, 1, 2.7, 1.32, 2.31), logoScale);
	hCenter(logo, logoY);

	var text = makerjs.model.scale(new makerjs_monotext('MAKERJS.ORG'), textScale);
	var textW = hCenter(text, textY);

	var tabW = textW + tabMargin;
	var tab = new makerjs.models.RoundRectangle(tabW, tabHeight, tabR);
	hCenter(tab, rim - tabR);

	var innerW = w - 2 * rim;
	var innerH = h - 2 * rim;

	var inner = new makerjs.models.RoundRectangle(innerW, innerH, rim);
	inner.origin = [rim, rim];
	flipArcs(inner);
github microsoft / maker.js / demos / js / makerjs-spokes-straight.js View on Github external
} 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);
    }
}
github microsoft / maker.js / demos / js / exoPanel.js View on Github external
.moveRelative([width, 0])
    .$reset()
    .clone()
    .rotate(270)
    .addTo(this, 'dome3')
    .moveRelative([0, height])
    .$reset()
    .clone()
    .rotate(180)
    .addTo(this, 'dome4')
    .moveRelative([width, height])
    ;

  var outer = new makerjs.models.Rectangle(width, height);

  makerjs.model.combineUnion(this, outer);

  this.models.outer = outer;

  var c = makerjs.model.findSingleChain(this);
  var fillets = makerjs.chain.fillet(c, fillet);
  this.models.fillets = fillets;

  this.models.bolts = new makerjs.models.BoltRectangle(width, height, holeRadius);
}
github microsoft / maker.js / demos / js / makerjs-double-band-clamp.js View on Github external
if (fillet) {
            half.paths[fName] = fillet;
        }
    }

    function filletAll(half) {
        if (gap) {
            tryFillet(half, 'innerFillet', 'bandInner', 'tabInner', roundFillet);
        }
        tryFillet(half, 'outerFillet', 'bandOuter', 'tabOuter', roundFillet);

        tryFillet(half, 'tabInnerFillet', 'tabInner', 'tabCap', capFillet);
        tryFillet(half, 'tabOuterFillet', 'tabOuter', 'tabCap', capFillet);
    }

    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
github microsoft / maker.js / demos / js / arc-text.js View on Github external
circleB: new makerjs.paths.Circle(arcRadius - h2)
        };
    }

    //move each character to a percentage of the total arc
    var span = makerjs.angle.ofArcSpan(arc);
    for (var i = 0; i < text.length; i++) {
        var char = textModel.models[i];

        //get the x distance of each character as a percentage
        var distFromFirst = char.origin[0] - left;
        var center = distFromFirst / textWidth;

        //set a new origin at the center of the text
        var o = makerjs.point.add(char.origin, [0, h2]);
        makerjs.model.originate(char, o);

        //project the character x position into an angle
        var angle = center * span;
        var angleFromEnd = onTop ? endAngle - angle : startAngle + angle;
        var p = makerjs.point.fromAngleOnCircle(angleFromEnd, arc);
        char.origin = p;

        //rotate the char to 90 from tangent
        makerjs.model.rotate(char, onTop ? angleFromEnd - 90 : angleFromEnd + 90, p);
    }
}
github microsoft / maker.js / demos / js / window-arch-grid.js View on Github external
function WindowArchGrid(width, height, rows, columns, extra, split, spacing, fillet, outerFrame, outerFrameWidth) {
    var column = (width - (columns - 1) * spacing) / columns;
    var row = (height - (rows) * spacing + spacing / 2) / rows;
    var cell = new makerjs.models.RoundRectangle(column, row, fillet);
    var grid = makerjs.layout.cloneToGrid(cell, columns, rows, spacing);

    makerjs.model.center(grid, true, false);
    grid.origin[1] = -height;

    this.models = {
        arch: new WindowArch(width, columns, extra, split, spacing, fillet),
        grid: grid
    };

    if (outerFrame) {
        var frame = new makerjs.models.Dome(width + 2 * outerFrameWidth, height + width / 2 + 2 * outerFrameWidth);
        frame.origin = [0, -height - outerFrameWidth];
        this.models.frame = frame;
    }
}
github microsoft / maker.js / packages / maker.js / examples / starbox.js View on Github external
function starboxInner(width, height, holeRadius, rimThickness) {
        var mm = makerjs.model;
        var corner = new starboxCorner(holeRadius, rimThickness);
        this.models = {
            bottomLeft: corner,
            bottomRight: mm.move(mm.mirror(corner, true, false), [width, 0]),
            topLeft: mm.move(mm.mirror(corner, false, true), [0, height]),
            topRight: mm.move(mm.mirror(corner, true, true), [width, height])
        };
        var line = makerjs.paths.Line;
        var rim = Math.min(rimThickness, holeRadius);
        var d = 2 * holeRadius + rim;
        this.paths = {
            bottom: new line([d, -holeRadius], [width - d, -holeRadius]),
            top: new line([d, height + holeRadius], [width - d, height + holeRadius]),
            left: new line([-holeRadius, d], [-holeRadius, height - d]),
            right: new line([width + holeRadius, d], [width + holeRadius, height - d])
        };

makerjs

Maker.js, a Microsoft Garage project, is a JavaScript library for creating and sharing modular line drawings for CNC and laser cutters.

Apache-2.0
Latest version published 7 months ago

Package Health Score

77 / 100
Full package analysis