{
    "nodes": [
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "0",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "40",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "40",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-20X-Xf20a-f-20Y-Yf20a-f-1.5Z-Zf1.5',float('-20.000000'),float('-20.000000'),float('-1.500000'),float('20.000000'),float('20.000000'),float('1.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -1330.8428716832113,
                -447.3465139949413
            ],
            "name": "c0",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 0
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "3",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "36",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "36",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-18X-Xf18a-f-18Y-Yf18a-f1.5Z-Zf4.5',float('-18.000000'),float('-18.000000'),float('1.500000'),float('18.000000'),float('18.000000'),float('4.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -1342.9296183208678,
                -206.33866230465875
            ],
            "name": "c1",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 1
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__5.__6,__0.__6,__7.__6,__17.__6,__11.__6]",
                    "name": "a",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0011[__1.__6,__15.__6,__13.__6,__3.__6,__9.__6]",
                    "name": "b",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                },
                {
                    "expr": "\u0012fab.types.Shape('iiiiiam__f1aa-f-14X-Xf14a-f-14Y-Yf14a-f7.5Z-Zf10.5am__f1aa-f-20X-Xf20a-f-20Y-Yf20a-f-1.5Z-Zf1.5am__f1aa-f-12X-Xf12a-f-12Y-Yf12a-f10.5Z-Zf13.5am__f1aa-f-2X-Xf2a-f-2Y-Yf2a-f25.5Z-Zf28.5am__f1aa-f-8X-Xf8a-f-8Y-Yf8a-f16.5Z-Zf19.5iiiiam__f1aa-f-18X-Xf18a-f-18Y-Yf18a-f1.5Z-Zf4.5am__f1aa-f-4X-Xf4a-f-4Y-Yf4a-f22.5Z-Zf25.5am__f1aa-f-6X-Xf6a-f-6Y-Yf6a-f19.5Z-Zf22.5am__f1aa-f-16X-Xf16a-f-16Y-Yf16a-f4.5Z-Zf7.5am__f1aa-f-10X-Xf10a-f-10Y-Yf10a-f13.5Z-Zf16.5',float('-20.000000'),float('-20.000000'),float('-1.500000'),float('20.000000'),float('20.000000'),float('28.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                -644.1863176908753,
                296.13572662332103
            ],
            "name": "u0",
            "script": [
                "import fab.types",
                "",
                "title('Union')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a | b)",
                ""
            ],
            "uid": 2
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "6",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "32",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "32",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-16X-Xf16a-f-16Y-Yf16a-f4.5Z-Zf7.5',float('-16.000000'),float('-16.000000'),float('4.500000'),float('16.000000'),float('16.000000'),float('7.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -1343.277490812382,
                39.01706187713762
            ],
            "name": "c2",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 3
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "9",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "28",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "28",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-14X-Xf14a-f-14Y-Yf14a-f7.5Z-Zf10.5',float('-14.000000'),float('-14.000000'),float('7.500000'),float('14.000000'),float('14.000000'),float('10.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -1391.0051085450355,
                311.58618091829993
            ],
            "name": "c3",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 5
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "12",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "24",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "24",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-12X-Xf12a-f-12Y-Yf12a-f10.5Z-Zf13.5',float('-12.000000'),float('-12.000000'),float('10.500000'),float('12.000000'),float('12.000000'),float('13.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -1388.7595879543803,
                561.3694373943143
            ],
            "name": "c4",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 7
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "15",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "20",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "20",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-10X-Xf10a-f-10Y-Yf10a-f13.5Z-Zf16.5',float('-10.000000'),float('-10.000000'),float('13.500000'),float('10.000000'),float('10.000000'),float('16.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -1416.7374611943292,
                831.9858788608801
            ],
            "name": "c5",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 9
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "18",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "16",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "16",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-8X-Xf8a-f-8Y-Yf8a-f16.5Z-Zf19.5',float('-8.000000'),float('-8.000000'),float('16.500000'),float('8.000000'),float('8.000000'),float('19.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -991.6714747037638,
                683.3049044952883
            ],
            "name": "c6",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 11
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "21",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "12",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "12",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-6X-Xf6a-f-6Y-Yf6a-f19.5Z-Zf22.5',float('-6.000000'),float('-6.000000'),float('19.500000'),float('6.000000'),float('6.000000'),float('22.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -1008.5400768521235,
                335.66130762581236
            ],
            "name": "c7",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 13
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "24",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "8",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "8",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-4X-Xf4a-f-4Y-Yf4a-f22.5Z-Zf25.5',float('-4.000000'),float('-4.000000'),float('22.500000'),float('4.000000'),float('4.000000'),float('25.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -980.5359459885634,
                50.012491679173124
            ],
            "name": "c8",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 15
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "27",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "4",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "4",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "3",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-2X-Xf2a-f-2Y-Yf2a-f25.5Z-Zf28.5',float('-2.000000'),float('-2.000000'),float('25.500000'),float('2.000000'),float('2.000000'),float('28.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -996.0182173109094,
                -299.0493484733082
            ],
            "name": "c9",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 17
        },
        {
            "datums": [
                {
                    "expr": "45",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "110",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "176",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "76",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "39",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-43X-Xf133a-f-38Y-Yf38a-f90.5Z-Zf129.5',float('-43.000000'),float('-38.000000'),float('90.500000'),float('133.000000'),float('38.000000'),float('129.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -220.31383814324803,
                -269.6866732902887
            ],
            "name": "c11",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 21
        },
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "112",
                    "name": "z",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "50",
                    "name": "width",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "50",
                    "name": "height",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "35",
                    "name": "depth",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f-25X-Xf25a-f-25Y-Yf25a-f94.5Z-Zf129.5',float('-25.000000'),float('-25.000000'),float('94.500000'),float('25.000000'),float('25.000000'),float('129.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -228.80017441132864,
                17.945452535757372
            ],
            "name": "c12",
            "script": [
                "# Neil Gershenfeld 1/24/15",
                "# Matt Keeter 5/22/15",
                "",
                "import fab",
                "",
                "title('Cube (center)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('z', float)",
                "input('width', float)",
                "input('height', float)",
                "input('depth', float)",
                "",
                "xmin, xmax = x - width/2, x + width/2",
                "ymin, ymax = y - height/2, y + height/2",
                "zmin, zmax = z - depth/2, z + depth/2",
                "",
                "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)",
                "",
                "def drag_hwd(this, dx,dy,dz):",
                "   this.width += 2*dx",
                "   this.height += 2*dy",
                "   this.depth += 2*dz",
                "",
                "sb.ui.point(x, y, z)",
                "sb.ui.point(x + width/2.0, y + height/2.0, z + depth/2.0,",
                "             drag=drag_hwd)",
                "",
                ""
            ],
            "uid": 4
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__21.__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-f-43X-Xf133a-f-38Y-Yf38a-f90.5Z-Zf129.5nam__f1aa-f-25X-Xf25a-f-25Y-Yf25a-f94.5Z-Zf129.5',float('-43.000000'),float('-38.000000'),float('90.500000'),float('133.000000'),float('38.000000'),float('129.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                246.45151870015462,
                -34.74360448325935
            ],
            "name": "d0",
            "script": [
                "import fab.types",
                "",
                "title('Difference')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a & ~b)",
                ""
            ],
            "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": "0",
                    "name": "dy",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "96",
                    "name": "dz",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0011[__2.__2]",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                },
                {
                    "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf96iiiiiam__f1aa-f-14X-Xf14a-f-14Y-Yf14a-f7.5Z-Zf10.5am__f1aa-f-20X-Xf20a-f-20Y-Yf20a-f-1.5Z-Zf1.5am__f1aa-f-12X-Xf12a-f-12Y-Yf12a-f10.5Z-Zf13.5am__f1aa-f-2X-Xf2a-f-2Y-Yf2a-f25.5Z-Zf28.5am__f1aa-f-8X-Xf8a-f-8Y-Yf8a-f16.5Z-Zf19.5iiiiam__f1aa-f-18X-Xf18a-f-18Y-Yf18a-f1.5Z-Zf4.5am__f1aa-f-4X-Xf4a-f-4Y-Yf4a-f22.5Z-Zf25.5am__f1aa-f-6X-Xf6a-f-6Y-Yf6a-f19.5Z-Zf22.5am__f1aa-f-16X-Xf16a-f-16Y-Yf16a-f4.5Z-Zf7.5am__f1aa-f-10X-Xf10a-f-10Y-Yf10a-f13.5Z-Zf16.5',float('-20.000000'),float('-20.000000'),float('94.500000'),float('20.000000'),float('20.000000'),float('124.500000'))",
                    "name": "out",
                    "type": "_fabtypes.Shape",
                    "uid": 7
                }
            ],
            "inspector": [
                235.37186416742387,
                277.75534031039774
            ],
            "name": "t0",
            "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": "\u0011[__6.__2]",
                    "name": "a",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0011[__8.__7]",
                    "name": "b",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                },
                {
                    "expr": "\u0012fab.types.Shape('iaam__f1aa-f-43X-Xf133a-f-38Y-Yf38a-f90.5Z-Zf129.5nam__f1aa-f-25X-Xf25a-f-25Y-Yf25a-f94.5Z-Zf129.5m-Xf0-Yf0-Zf96iiiiiam__f1aa-f-14X-Xf14a-f-14Y-Yf14a-f7.5Z-Zf10.5am__f1aa-f-20X-Xf20a-f-20Y-Yf20a-f-1.5Z-Zf1.5am__f1aa-f-12X-Xf12a-f-12Y-Yf12a-f10.5Z-Zf13.5am__f1aa-f-2X-Xf2a-f-2Y-Yf2a-f25.5Z-Zf28.5am__f1aa-f-8X-Xf8a-f-8Y-Yf8a-f16.5Z-Zf19.5iiiiam__f1aa-f-18X-Xf18a-f-18Y-Yf18a-f1.5Z-Zf4.5am__f1aa-f-4X-Xf4a-f-4Y-Yf4a-f22.5Z-Zf25.5am__f1aa-f-6X-Xf6a-f-6Y-Yf6a-f19.5Z-Zf22.5am__f1aa-f-16X-Xf16a-f-16Y-Yf16a-f4.5Z-Zf7.5am__f1aa-f-10X-Xf10a-f-10Y-Yf10a-f13.5Z-Zf16.5',float('-43.000000'),float('-38.000000'),float('90.500000'),float('133.000000'),float('38.000000'),float('129.500000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                561.4597659328227,
                136.2752716498655
            ],
            "name": "u1",
            "script": [
                "import fab.types",
                "",
                "title('Union')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a | b)",
                ""
            ],
            "uid": 10
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__10.__2]",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0012fab.types.Shape('iaam__f1aa-f-43X-Xf133a-f-38Y-Yf38a-f90.5Z-Zf129.5nam__f1aa-f-25X-Xf25a-f-25Y-Yf25a-f94.5Z-Zf129.5m-Xf0-Yf0-Zf96iiiiiam__f1aa-f-14X-Xf14a-f-14Y-Yf14a-f7.5Z-Zf10.5am__f1aa-f-20X-Xf20a-f-20Y-Yf20a-f-1.5Z-Zf1.5am__f1aa-f-12X-Xf12a-f-12Y-Yf12a-f10.5Z-Zf13.5am__f1aa-f-2X-Xf2a-f-2Y-Yf2a-f25.5Z-Zf28.5am__f1aa-f-8X-Xf8a-f-8Y-Yf8a-f16.5Z-Zf19.5iiiiam__f1aa-f-18X-Xf18a-f-18Y-Yf18a-f1.5Z-Zf4.5am__f1aa-f-4X-Xf4a-f-4Y-Yf4a-f22.5Z-Zf25.5am__f1aa-f-6X-Xf6a-f-6Y-Yf6a-f19.5Z-Zf22.5am__f1aa-f-16X-Xf16a-f-16Y-Yf16a-f4.5Z-Zf7.5am__f1aa-f-10X-Xf10a-f-10Y-Yf10a-f13.5Z-Zf16.5',float('-43.000000'),float('-38.000000'),float('90.500000'),float('133.000000'),float('38.000000'),float('129.500000'))",
                    "name": "out",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                }
            ],
            "inspector": [
                912.4848634934463,
                119.45256394823295
            ],
            "name": "h0",
            "script": [
                "import fab",
                "",
                "title('Heightmap (.png)')",
                "",
                "input('shape', fab.types.Shape)",
                "output('out', shape)",
                "",
                "sb.export.heightmap(shape)",
                ""
            ],
            "uid": 12
        }
    ],
    "protocol": 6,
    "type": "sb"
}
