{ "nodes": [ { "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": "7", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "4", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -323, -193 ], "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": 1 }, { "datums": [ { "expr": "\u0011[__1.__6]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__4.__6]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -304, 101 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 2 }, { "datums": [ { "expr": "c2.xmin+1", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "c2.ymin+1", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "c2.zmin", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "c2.xmax-1", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "c2.ymax-1", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "c2.zmin+1.5", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3',float('2.000000'),float('2.000000'),float('1.500000'),float('7.500000'),float('4.500000'),float('3.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ 244, -190 ], "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": 3 }, { "datums": [ { "expr": "1", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "1", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "c0.zmax - 2.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "c2.xmin + 7.5", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "c2.ymin + 4.5", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "c0.zmax+1", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5',float('1.000000'),float('1.000000'),float('1.500000'),float('8.500000'),float('5.500000'),float('5.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -44, -195 ], "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": 4 }, { "datums": [ { "expr": "\u0011[__10.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('aaaaiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf1.5q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf1.5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 529.85311400162595, 673.61171082377223 ], "name": "m0", "script": [ "import fab", "", "title('Mesh (.stl)')", "", "input('shape', fab.types.Shape)", "output('out', shape)", "", "sb.export.stl(shape)", "" ], "uid": 12 }, { "datums": [ { "expr": "\u0011[__3.__6]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__2.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -26.698025124112931, 98.57732353518621 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 13 }, { "datums": [ { "expr": "c2.xmin+0.5", "name": "x", "type": "float", "uid": 0 }, { "expr": "c2.ymin+0.5", "name": "y", "type": "float", "uid": 1 }, { "expr": "c2.zmin-0.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "c2.zmin+0.5", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "0.25", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2',float('1.250000'),float('1.250000'),float('1.000000'),float('1.750000'),float('1.750000'),float('2.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -332.69846693125345, 269.0339454814457 ], "name": "c7", "script": [ "import fab", "import math", "", "title('Cylinder (Z)')", "", "input('x', float)", "input('y', float)", "input('zmin', float)", "input('zmax', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))", "", "# UI", "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])", "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmin)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmax)", " for i in range(36)], close=True)", "", "sb.ui.point(x, y, zmin)", "sb.ui.point(x, y, zmax)", "sb.ui.point(x + r, y, zmin, drag=(r, None, None))", "" ], "uid": 14 }, { "datums": [ { "expr": "c1.xmax+0.5", "name": "x", "type": "float", "uid": 0 }, { "expr": "c1.ymax+0.5", "name": "y", "type": "float", "uid": 1 }, { "expr": "c2.zmin-0.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "c2.zmin+0.5", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "0.25", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2',float('7.750000'),float('4.750000'),float('1.000000'),float('8.250000'),float('5.250000'),float('2.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -43.396050248225777, 270.81916852018009 ], "name": "c4", "script": [ "import fab", "import math", "", "title('Cylinder (Z)')", "", "input('x', float)", "input('y', float)", "input('zmin', float)", "input('zmax', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))", "", "# UI", "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])", "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmin)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmax)", " for i in range(36)], close=True)", "", "sb.ui.point(x, y, zmin)", "sb.ui.point(x, y, zmax)", "sb.ui.point(x + r, y, zmin, drag=(r, None, None))", "" ], "uid": 5 }, { "datums": [ { "expr": "\u0011[__13.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__14.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -353.50388053599909, 521.36986583877854 ], "name": "d3", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 0 }, { "datums": [ { "expr": "c2.xmin+0.5", "name": "x", "type": "float", "uid": 0 }, { "expr": "c1.ymax+0.5", "name": "y", "type": "float", "uid": 1 }, { "expr": "c2.zmin-0.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "c2.zmin+0.5", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "0.25", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf1.5q-Yf5f0.25a-f1Z-Zf2',float('1.250000'),float('4.750000'),float('1.000000'),float('1.750000'),float('5.250000'),float('2.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 243.92961233524971, 278.20068739427745 ], "name": "c3", "script": [ "import fab", "import math", "", "title('Cylinder (Z)')", "", "input('x', float)", "input('y', float)", "input('zmin', float)", "input('zmax', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))", "", "# UI", "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])", "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmin)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmax)", " for i in range(36)], close=True)", "", "sb.ui.point(x, y, zmin)", "sb.ui.point(x, y, zmax)", "sb.ui.point(x + r, y, zmin, drag=(r, None, None))", "" ], "uid": 8 }, { "datums": [ { "expr": "c1.xmax+0.5", "name": "x", "type": "float", "uid": 0 }, { "expr": "c2.ymin+0.5", "name": "y", "type": "float", "uid": 1 }, { "expr": "c2.zmin-0.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "c2.zmin+0.5", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "0.25", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf8q-Yf1.5f0.25a-f1Z-Zf2',float('7.750000'),float('1.250000'),float('1.000000'),float('8.250000'),float('1.750000'),float('2.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 533.15508887751287, 276.4433088379655 ], "name": "c5", "script": [ "import fab", "import math", "", "title('Cylinder (Z)')", "", "input('x', float)", "input('y', float)", "input('zmin', float)", "input('zmax', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))", "", "# UI", "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])", "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmin)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmax)", " for i in range(36)], close=True)", "", "sb.ui.point(x, y, zmin)", "sb.ui.point(x, y, zmax)", "sb.ui.point(x + r, y, zmin, drag=(r, None, None))", "" ], "uid": 6 }, { "datums": [ { "expr": "\u0011[__0.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__5.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -47.771909930440472, 527.26247735814559 ], "name": "d4", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 7 }, { "datums": [ { "expr": "\u0011[__7.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__8.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaaiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf1.5q-Yf5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 224.95520128544987, 529.61893845944496 ], "name": "d1", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 9 }, { "datums": [ { "expr": "\u0011[__9.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaaaiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf1.5q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf1.5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 511.27812569907331, 530.76243447182878 ], "name": "d2", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 10 } ], "protocol": 6, "type": "sb" }