{ "nodes": [ { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "100", "name": "y0", "type": "float", "uid": 1 }, { "expr": "80", "name": "width", "type": "float", "uid": 2 }, { "expr": "200", "name": "height", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f-40X-Xf40a-f0Y-Yf200',float('-40.000000'),float('0.000000'),float('-inf'),float('40.000000'),float('200.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -378.87752630502371, -278.49663159330174 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('x0', float)", "input('y0', float)", "input('width', float)", "input('height', float)", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2", "", "output('shape', fab.shapes.rectangle(xmin, xmax, ymin, ymax))", "", "def drag_hw(this, x, y, z):", " this.width = abs(2 * (x - this.x0))", " this.height = abs(2 * (y - this.y0))", "", "# UI", "sb.ui.wireframe(", " [(xmin, ymin, 0), (xmax, ymin, 0), (xmax, ymax, 0), (xmin, ymax, 0)],", " close=True)", "sb.ui.point(x0, y0)", "sb.ui.point(xmax, ymax, drag=drag_hw, relative=False)", "" ], "uid": 0 }, { "datums": [ { "expr": "40.0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "75", "name": "x1", "type": "float", "uid": 2 }, { "expr": "0", "name": "y1", "type": "float", "uid": 3 }, { "expr": "40", "name": "x2", "type": "float", "uid": 4 }, { "expr": "100", "name": "y2", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100',float('40.000000'),float('0.000000'),float('-inf'),float('75.000000'),float('100.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -384, -85 ], "name": "t0", "script": [ "import fab", "", "title('Triangle')", "", "input('x0', float)", "input('y0', float)", "input('x1', float)", "input('y1', float)", "input('x2', float)", "input('y2', float)", "", "output('shape', fab.shapes.triangle(x0, y0, x1, y1, x2, y2))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x1, y1, 0), (x2, y2, 0)], close=True)", "sb.ui.point(x0, y0, 0)", "sb.ui.point(x1, y1, 0)", "sb.ui.point(x2, y2, 0)", "" ], "uid": 1 }, { "datums": [ { "expr": "-40", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "-75", "name": "x1", "type": "float", "uid": 2 }, { "expr": "0", "name": "y1", "type": "float", "uid": 3 }, { "expr": "-40", "name": "x2", "type": "float", "uid": 4 }, { "expr": "100", "name": "y2", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100',float('-75.000000'),float('0.000000'),float('-inf'),float('-40.000000'),float('100.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -383.39005363279574, 158.02815830742477 ], "name": "t1", "script": [ "import fab", "", "title('Triangle')", "", "input('x0', float)", "input('y0', float)", "input('x1', float)", "input('y1', float)", "input('x2', float)", "input('y2', float)", "", "output('shape', fab.shapes.triangle(x0, y0, x1, y1, x2, y2))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x1, y1, 0), (x2, y2, 0)], close=True)", "sb.ui.point(x0, y0, 0)", "sb.ui.point(x1, y1, 0)", "sb.ui.point(x2, y2, 0)", "" ], "uid": 2 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "5", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "\u0011[__0.__4,__1.__6,__2.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1iiaa-f-40X-Xf40a-f0Y-Yf200ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100a-f0Z-Zf5',float('-75.000000'),float('0.000000'),float('0.000000'),float('75.000000'),float('200.000000'),float('5.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 20.612368474881464, -259.71584278350679 ], "name": "e0", "script": [ "import fab", "", "title('Extrude')", "", "input('_x', float)", "input('_y', float)", "input('zmin', float)", "input('zmax', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.extrude_z(shape, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(_x, _y, zmin), (_x, _y, zmax)], color=sb.color.green)", "sb.ui.point(_x, _y, zmin, color=sb.color.green)", "sb.ui.point(_x, _y, zmax, color=sb.color.green)", "", "" ], "uid": 3 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "z", "type": "float", "uid": 2 }, { "expr": "90", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__3.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0am__f1iiaa-f-40X-Xf40a-f0Y-Yf200ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100a-f0Z-Zf5',float('-75.000000'),float('-5.000000'),float('0.000000'),float('75.000000'),float('0.000000'),float('200.000000'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 21.986526373206914, -70.082052814597063 ], "name": "r1", "script": [ "import fab", "import math", "", "title('Rotate (X)')", "", "input('_x', float)", "input('y', float)", "input('z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_x(shape, a, y, z))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(_x, y + math.cos(rad), z + math.sin(rad)),", " (_x, y, z),", " (_x, y + 1, z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (_x, y + math.cos(math.radians(a_)) * 0.3,", " z + math.sin(math.radians(a_)) * 0.3)", " for a_ in range(int(a) % 360)], color=sb.color.teal)", "", "sb.ui.point(_x, y, z, color=sb.color.teal)", "", "def drag_pt(this, x, y, z):", " this.a = math.degrees(math.atan2(z - this.z, y - this.y))", "sb.ui.point(_x, y + math.cos(rad), z + math.sin(rad),", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 4 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "210", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__4.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf210-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0am__f1iiaa-f-40X-Xf40a-f0Y-Yf200ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100a-f0Z-Zf5',float('-75.000000'),float('205.000000'),float('0.000000'),float('75.000000'),float('210.000000'),float('200.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 20.612368474881492, 149.78321091747216 ], "name": "t2", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 5 }, { "datums": [ { "expr": "-40", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "0", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "0", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "40", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "200", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "5", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f-40X-Xf40a-f0Y-Yf200a-f0Z-Zf5',float('-40.000000'),float('0.000000'),float('0.000000'),float('40.000000'),float('200.000000'),float('5.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -382.01589573447029, 453.47210644739278 ], "name": "c0", "script": [ "import fab", "", "title('Cube (corner)')", "", "input('xmin', float)", "input('ymin', float)", "input('zmin', float)", "input('xmax', float)", "input('ymax', float)", "input('zmax', float)", "", "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(xmin, ymin, zmin)", "sb.ui.point(xmax, ymax, zmax)", "" ], "uid": 6 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__4.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf5-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0am__f1iiaa-f-40X-Xf40a-f0Y-Yf200ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100a-f0Z-Zf5',float('-75.000000'),float('0.000000'),float('0.000000'),float('75.000000'),float('5.000000'),float('200.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 24.734842169857785, 335.29452719140562 ], "name": "t3", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 7 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__6.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf5-Zf0am__f1aa-f-40X-Xf40a-f0Y-Yf200a-f0Z-Zf5',float('-40.000000'),float('5.000000'),float('0.000000'),float('40.000000'),float('205.000000'),float('5.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 26.109000068183207, 535.92158034691863 ], "name": "t4", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 8 }, { "datums": [ { "expr": "-0", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "-0", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "-0.0", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "5", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "200", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "190", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f0X-Xf5a-f0Y-Yf200a-f-0Z-Zf190',float('0.000000'),float('0.000000'),float('-0.000000'),float('5.000000'),float('200.000000'),float('190.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -380.6417378361449, 753.03852828233721 ], "name": "c1", "script": [ "import fab", "", "title('Cube (corner)')", "", "input('xmin', float)", "input('ymin', float)", "input('zmin', float)", "input('xmax', float)", "input('ymax', float)", "input('zmax', float)", "", "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(xmin, ymin, zmin)", "sb.ui.point(xmax, ymax, zmax)", "" ], "uid": 9 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "35", "name": "dx", "type": "float", "uid": 3 }, { "expr": "5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "5", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__9.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf35-Yf5-Zf5am__f1aa-f0X-Xf5a-f0Y-Yf200a-f-0Z-Zf190',float('35.000000'),float('5.000000'),float('5.000000'),float('40.000000'),float('205.000000'),float('195.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 27.483157966508657, 737.92279140075743 ], "name": "t5", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 10 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "-40", "name": "dx", "type": "float", "uid": 3 }, { "expr": "5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "5", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__9.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf-40-Yf5-Zf5am__f1aa-f0X-Xf5a-f0Y-Yf200a-f-0Z-Zf190',float('-40.000000'),float('5.000000'),float('5.000000'),float('-35.000000'),float('205.000000'),float('195.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 28.857315864834078, 923.43410767469084 ], "name": "t6", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 11 }, { "datums": [ { "expr": "0", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "0", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "0", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "10", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "200", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "5", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f0X-Xf10a-f0Y-Yf200a-f0Z-Zf5',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('200.000000'),float('5.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -379.26757993781928, 1016.8768447608197 ], "name": "c2", "script": [ "import fab", "", "title('Cube (corner)')", "", "input('xmin', float)", "input('ymin', float)", "input('zmin', float)", "input('xmax', float)", "input('ymax', float)", "input('zmax', float)", "", "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(xmin, ymin, zmin)", "sb.ui.point(xmax, ymax, zmax)", "" ], "uid": 12 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "-40", "name": "dx", "type": "float", "uid": 3 }, { "expr": "5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "195", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__12.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf-40-Yf5-Zf195am__f1aa-f0X-Xf10a-f0Y-Yf200a-f0Z-Zf5',float('-40.000000'),float('5.000000'),float('195.000000'),float('-30.000000'),float('205.000000'),float('200.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 27.483157966508685, 1133.6802661184822 ], "name": "t7", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 13 }, { "datums": [ { "expr": "0", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "0", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "0", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "40", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "200", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "5", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f0X-Xf40a-f0Y-Yf200a-f0Z-Zf5',float('0.000000'),float('0.000000'),float('0.000000'),float('40.000000'),float('200.000000'),float('5.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -376.51926414116849, 1277.9668454426526 ], "name": "c3", "script": [ "import fab", "", "title('Cube (corner)')", "", "input('xmin', float)", "input('ymin', float)", "input('zmin', float)", "input('xmax', float)", "input('ymax', float)", "input('zmax', float)", "", "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(xmin, ymin, zmin)", "sb.ui.point(xmax, ymax, zmax)", "" ], "uid": 14 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "195", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__14.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf5-Zf195am__f1aa-f0X-Xf40a-f0Y-Yf200a-f0Z-Zf5',float('0.000000'),float('5.000000'),float('195.000000'),float('40.000000'),float('205.000000'),float('200.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 28.857315864834089, 1341.1781087656225 ], "name": "t8", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 15 }, { "datums": [ { "expr": "0", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "0", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "0", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "5", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "200", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "150", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f0X-Xf5a-f0Y-Yf200a-f0Z-Zf150',float('0.000000'),float('0.000000'),float('0.000000'),float('5.000000'),float('200.000000'),float('150.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -372.39679044619226, 1540.4310040228102 ], "name": "c4", "script": [ "import fab", "", "title('Cube (corner)')", "", "input('xmin', float)", "input('ymin', float)", "input('zmin', float)", "input('xmax', float)", "input('ymax', float)", "input('zmax', float)", "", "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(xmin, ymin, zmin)", "sb.ui.point(xmax, ymax, zmax)", "" ], "uid": 16 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "15", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__16.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf5-Zf15am__f1aa-f0X-Xf5a-f0Y-Yf200a-f0Z-Zf150',float('0.000000'),float('5.000000'),float('15.000000'),float('5.000000'),float('205.000000'),float('165.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 30.231473763159521, 1550.0501093110881 ], "name": "t9", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__17.__7,__15.__7,__13.__7,__11.__7,__10.__7,__8.__7,__7.__7,__5.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "1", "name": "hue", "type": "float", "uid": 1 }, { "expr": "0", "name": "saturation", "type": "float", "uid": 2 }, { "expr": "1", "name": "brightness", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('iiiiiiim-Xf0-Yf5-Zf15am__f1aa-f0X-Xf5a-f0Y-Yf200a-f0Z-Zf150m-Xf0-Yf5-Zf195am__f1aa-f0X-Xf40a-f0Y-Yf200a-f0Z-Zf5m-Xf-40-Yf5-Zf195am__f1aa-f0X-Xf10a-f0Y-Yf200a-f0Z-Zf5m-Xf-40-Yf5-Zf5am__f1aa-f0X-Xf5a-f0Y-Yf200a-f-0Z-Zf190m-Xf35-Yf5-Zf5am__f1aa-f0X-Xf5a-f0Y-Yf200a-f-0Z-Zf190m-Xf0-Yf5-Zf0am__f1aa-f-40X-Xf40a-f0Y-Yf200a-f0Z-Zf5m-Xf0-Yf5-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0am__f1iiaa-f-40X-Xf40a-f0Y-Yf200ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100a-f0Z-Zf5m-Xf0-Yf210-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0am__f1iiaa-f-40X-Xf40a-f0Y-Yf200ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100a-f0Z-Zf5',float('-75.000000'),float('0.000000'),float('0.000000'),float('75.000000'),float('210.000000'),float('200.000000'),color=(255,255,255))", "name": "out", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 436.98221166748766, 685.70479126439068 ], "name": "s0", "script": [ "import math", "import fab", "", "title('Set color (HSB)')", "", "input(\"shape\", fab.types.Shape)", "input(\"hue\", float)", "input(\"saturation\", float)", "input(\"brightness\", float)", "", "# copied from Java's HSBtoRGB", "# http://www.docjar.com/html/api/java/awt/Color.java.html", "", "r = 0", "g = 0", "b = 0", "", "if saturation == 0:", " r = g = b = int(brightness * 255.0 + 0.5)", "else:", " h = (hue - float(math.floor(hue))) * 6.0", " f = h - float(math.floor(h))", " p = brightness * (1-saturation)", " q = brightness * (1-saturation*f)", " t = brightness * (1-(saturation*(1-f)))", "", " h = int(h)", "", " if(h==0):", " r = int(brightness * 255.0 + 0.5)", " g = int(t * 255.0 + 0.5)", " b = int(p * 255.0 + 0.5)", " elif(h==1):", " r = int(q * 255.0 + 0.5)", " g = int(brightness * 255.0 + 0.5)", " b = int(p * 255.0 + 0.5)", " elif(h==2):", " r = int(p * 255.0 + 0.5)", " g = int(brightness * 255.0 + 0.5)", " b = int(t * 255.0 + 0.5)", " elif(h==3):", " r = int(p * 255.0 + 0.5)", " g = int(q * 255.0 + 0.5)", " b = int(brightness * 255.0 + 0.5)", " elif(h==4):", " r = int(t * 255.0 + 0.5)", " g = int(p * 255.0 + 0.5)", " b = int(brightness * 255.0 + 0.5)", " elif(h==5):", " r = int(brightness * 255.0 + 0.5)", " g = int(p * 255.0 + 0.5)", " b = int(q * 255.0 + 0.5)", "", "output(\"out\", fab.shapes.set_color(shape, r, g, b))", "" ], "uid": 18 }, { "datums": [ { "expr": "\u0011[__18.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('iiiiiiim-Xf0-Yf5-Zf15am__f1aa-f0X-Xf5a-f0Y-Yf200a-f0Z-Zf150m-Xf0-Yf5-Zf195am__f1aa-f0X-Xf40a-f0Y-Yf200a-f0Z-Zf5m-Xf-40-Yf5-Zf195am__f1aa-f0X-Xf10a-f0Y-Yf200a-f0Z-Zf5m-Xf-40-Yf5-Zf5am__f1aa-f0X-Xf5a-f0Y-Yf200a-f-0Z-Zf190m-Xf35-Yf5-Zf5am__f1aa-f0X-Xf5a-f0Y-Yf200a-f-0Z-Zf190m-Xf0-Yf5-Zf0am__f1aa-f-40X-Xf40a-f0Y-Yf200a-f0Z-Zf5m-Xf0-Yf5-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0am__f1iiaa-f-40X-Xf40a-f0Y-Yf200ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100a-f0Z-Zf5m-Xf0-Yf210-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0am__f1iiaa-f-40X-Xf40a-f0Y-Yf200ni-*f-0-Xf75*f-35-Yf0i-*f100-Xf40*f0-Yf-0-*f-100-Xf40*f35-Yf100ni-*f0-Xf-40*f-35-Yf0i-*f100-Xf-75*f35-Yf0-*f-100-Xf-40*f0-Yf100a-f0Z-Zf5',float('-75.000000'),float('0.000000'),float('0.000000'),float('75.000000'),float('210.000000'),float('200.000000'),color=(255,255,255))", "name": "out", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 781.89584414717126, 797.01158102875104 ], "name": "m0", "script": [ "import fab", "", "title('Mesh (.stl)')", "", "input('shape', fab.types.Shape)", "output('out', shape)", "", "sb.export.stl(shape)", "" ], "uid": 19 } ], "protocol": 6, "type": "sb" }