{ "nodes": [ { "datums": [ { "expr": "0.158", "name": "th", "type": "float", "uid": 3 }, { "expr": "0.6", "name": "w", "type": "float", "uid": 2 }, { "expr": "4", "name": "dx", "type": "float", "uid": 1 }, { "expr": "0.004", "name": "kerf", "type": "float", "uid": 0 } ], "inspector": [ -372.47549565915227, -438.48249689939456 ], "name": "var", "script": [ "import fab", "", "title('parameters')", "input('th', float)", "input('w', float)", "input('dx', float)", "", "input('kerf', float)" ], "uid": 0 }, { "datums": [ { "expr": "var.th", "name": "th", "subdatum": [ -986.26021468890667, -280.76636494420723 ], "type": "float", "uid": 0 }, { "expr": "var.w", "name": "w", "subdatum": [ -986.26021468890667, -241.92518728406372 ], "type": "float", "uid": 2 }, { "expr": "var.dx", "name": "dx", "subdatum": [ -987.33913629057724, -204.16293122559091 ], "type": "float", "uid": 3 }, { "expr": "var.kerf", "name": "kerf", "subdatum": [ -985.1812930872361, -165.3217535654473 ], "type": "float", "uid": 4 }, { "expr": "var.dx / 8", "name": "slot", "subdatum": [ -985.1812930872361, -127.55949750697442 ], "type": "float", "uid": 7 }, { "expr": "\u0013[__18.__2]", "name": "leg", "subdatum": [ 1308.9007418235151, 351.64497541527271 ], "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0013[__20.__2]", "name": "hlfLeg", "subdatum": [ 1652.5034184692729, 610.17851823773333 ], "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -375.48949813963691, -244.91598511709373 ], "name": "leg", "subgraph": [ { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 2 }, { "expr": "\u0011[__parent.__2]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__parent.__3]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__4]", "name": "kerf", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f-1X-Xf1a-f-1Y-Yf1',float('-1.000000'),float('-1.000000'),float('-inf'),float('1.000000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 57.616543567333508, -290.96475507608625 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = dx/2", "height = width", "", "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": "\u0011[__0.__2]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__0.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__3]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248',float('0.302000'),float('-0.248000'),float('-inf'),float('0.456000'),float('0.248000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2.0844772094372388, -956.46348544153943 ], "name": "r3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = 0", "", "width = th - kerf", "height = dx/8 - kerf", "", "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": 3 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__3.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__3.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.374947'),float('-1.006299'),float('-inf'),float('0.637545'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1093.995137635055, -512.67406121263571 ], "name": "p0", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 8 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__8.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__8.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.006299'),float('-inf'),float('0.383053'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1414.3977051061563, -511.20500632692091 ], "name": "p1", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 9 }, { "datums": [ { "expr": "\u0011[__9.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__9.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__9.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__9.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.374947'),float('0.743701'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1727.1638301471498, -511.81477683378768 ], "name": "p2", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 10 }, { "datums": [ { "expr": "\u0011[__10.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__10.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__10.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__10.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('0.743701'),float('-inf'),float('0.383053'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2060.7185808916788, -511.33121436988927 ], "name": "p3", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 11 }, { "datums": [ { "expr": "\u0011[__8.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__9.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.006299'),float('-inf'),float('0.637545'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1230.397392917153, -346.89618126298575 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 12 }, { "datums": [ { "expr": "\u0011[__10.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__11.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('0.743701'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1924.1897554431241, -341.47592843075159 ], "name": "u3", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 13 }, { "datums": [ { "expr": "\u0011[__12.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__13.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.006299'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1604.3948383413092, -268.30251519559056 ], "name": "u4", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 14 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__15.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502iaa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248',float('-1.000000'),float('-1.000000'),float('-inf'),float('1.000000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 430.04460600542654, 22.521583239297442 ], "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": "\u0011[__66.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__68.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502iaa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248',float('-0.456000'),float('-1.002000'),float('-inf'),float('0.456000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1619.9952893251057, 239.59599120688267 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 15 }, { "datums": [ { "expr": "\u0011[__27.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaiiim-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yniiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498iaa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498aaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502iaa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248',float('-1.000000'),float('-1.006299'),float('-inf'),float('1.000000'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 958.0552955489577, 233.06822242573222 ], "name": "u7", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 18 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "-2.5", "name": "y0", "type": "float", "uid": 1 }, { "expr": "10", "name": "width", "type": "float", "uid": 2 }, { "expr": "5", "name": "height", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f-5X-Xf5a-f-5Y-Yf0',float('-5.000000'),float('-5.000000'),float('-inf'),float('5.000000'),float('0.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 921.19335899339421, 383.77958613666692 ], "name": "r6", "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": 19 }, { "datums": [ { "expr": "\u0011[__18.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__19.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaiiim-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yniiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498iaa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498aaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502iaa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248naa-f-5X-Xf5a-f-5Y-Yf0',float('-1.000000'),float('-1.006299'),float('-inf'),float('1.000000'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1290.0488931996817, 513.92324805370674 ], "name": "d1", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 20 }, { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__3]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__4]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__7]", "name": "slot", "type": "float", "uid": 0 }, { "expr": "\u0012fab.types.Shape('aa-f-0.752X-Xf-0.248a-f-0.16Y-Yf0.16',float('-0.752000'),float('-0.160000'),float('-inf'),float('-0.248000'),float('0.160000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -292.79425953553584, 167.31403429395345 ], "name": "r7", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "input('slot', float)", "", "x0 = -dx/8", "y0 = 0", "", "width = slot + kerf", "height = 2*th + kerf", "", "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": 21 }, { "datums": [ { "expr": "\u0011[__21.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__21.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__21.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0011[__21.__0]", "name": "slot", "type": "float", "uid": 0 }, { "expr": "\u0012fab.types.Shape('aa-f0.248X-Xf0.752a-f-0.16Y-Yf0.16',float('0.248000'),float('-0.160000'),float('-inf'),float('0.752000'),float('0.160000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 28.215489157214677, 210.69706654710802 ], "name": "r8", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "input('slot', float)", "", "x0 = +dx/8", "y0 = 0", "", "width = slot + kerf", "height = 2*th + kerf", "", "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": 22 }, { "datums": [ { "expr": "\u0011[__21.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__22.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.752X-Xf-0.248a-f-0.16Y-Yf0.16aa-f0.248X-Xf0.752a-f-0.16Y-Yf0.16',float('-0.752000'),float('-0.160000'),float('-inf'),float('0.752000'),float('0.160000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -12.280696135443918, 440.49119708234923 ], "name": "u8", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 23 }, { "datums": [ { "expr": "\u0011[__4.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__5.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502',float('0.302000'),float('-1.002000'),float('-inf'),float('0.456000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 574.52434947415372, -150.70301414807059 ], "name": "u0", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 7 }, { "datums": [ { "expr": "\u0011[__4.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__4.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__4.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__4.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502',float('0.302000'),float('-1.002000'),float('-inf'),float('0.456000'),float('-0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 730.53236005693384, -326.88220606400853 ], "name": "r5", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -(dx/2)*3/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 5 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__3.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__3.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f0.502Y-Yf1.002',float('0.302000'),float('0.502000'),float('-inf'),float('0.456000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 419.15824671239557, -328.3670853467919 ], "name": "r4", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = (dx/2)*3/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 4 }, { "datums": [ { "expr": "\u0011[__22.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__22.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__22.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0011[__22.__0]", "name": "slot", "type": "float", "uid": 0 }, { "expr": "\u0012fab.types.Shape('aa-f-0.752X-Xf-0.248a-f-1.16Y-Yf-0.84',float('-0.752000'),float('-1.160000'),float('-inf'),float('-0.248000'),float('-0.840000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 100.01037037349056, 699.32034780626213 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "input('slot', float)", "", "x0 = -dx/8", "y0 = -dx/4", "", "width = slot + kerf", "height = 2*th + kerf", "", "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": 1 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__0]", "name": "slot", "type": "float", "uid": 0 }, { "expr": "\u0012fab.types.Shape('aa-f0.248X-Xf0.752a-f-1.16Y-Yf-0.84',float('0.248000'),float('-1.160000'),float('-inf'),float('0.752000'),float('-0.840000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 427.85421460098507, 704.68029168615283 ], "name": "r2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "input('slot', float)", "", "x0 = dx/8", "y0 = -dx/4", "", "width = slot + kerf", "height = 2*th + kerf", "", "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": 2 }, { "datums": [ { "expr": "\u0011[__1.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__2.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.752X-Xf-0.248a-f-1.16Y-Yf-0.84aa-f0.248X-Xf0.752a-f-1.16Y-Yf-0.84',float('-0.752000'),float('-1.160000'),float('-inf'),float('0.752000'),float('-0.840000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 278.40336720656467, 951.21150462242917 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 16 }, { "datums": [ { "expr": "\u0011[__18.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__16.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaiiim-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yniiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498iaa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498aaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502iaa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248iaa-f-0.752X-Xf-0.248a-f-1.16Y-Yf-0.84aa-f0.248X-Xf0.752a-f-1.16Y-Yf-0.84',float('-1.000000'),float('-1.160000'),float('-inf'),float('1.000000'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 772.56934399821694, 997.61206582352338 ], "name": "u6", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__3.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__3.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002',float('0.340500'),float('0.502000'),float('-inf'),float('0.417500'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 894.21305578365627, -814.96614246034267 ], "name": "r9", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = (dx/2)*3/8", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 25 }, { "datums": [ { "expr": "\u0011[__25.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__25.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__25.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__25.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498',float('0.340500'),float('-0.998000'),float('-inf'),float('0.417500'),float('-0.498000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1191.2287263060468, -815.8880245824239 ], "name": "r10", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -(dx/2)*3/8", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 26 }, { "datums": [ { "expr": "\u0011[__76.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__62.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiiim-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yniiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498iaa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498',float('-0.637545'),float('-1.006299'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1599.7376426055991, -87.098628553310803 ], "name": "d2", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 27 }, { "datums": [ { "expr": "\u0011[__25.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__26.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498',float('0.340500'),float('-0.998000'),float('-inf'),float('0.417500'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1052.894118448238, -641.13559090688011 ], "name": "u10", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 28 }, { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 1 }, { "expr": "\u0011[__parent.__2]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__parent.__3]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__4]", "name": "kerf", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f-1X-Xf1a-f-1Y-Yf1',float('-1.000000'),float('-1.000000'),float('-inf'),float('1.000000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -2134.9642820177969, 393.95314466031414 ], "name": "r11", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = dx/2", "height = width", "", "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": 29 }, { "datums": [ { "expr": "\u0011[__29.__1]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__29.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__29.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__29.__3]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f0Y-Yf0.248',float('0.302000'),float('0.000000'),float('-inf'),float('0.456000'),float('0.248000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1896.9511785431826, 773.81971875034776 ], "name": "r12", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w + th)/2", "y0 = 0", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 , 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": 30 }, { "datums": [ { "expr": "\u0011[__30.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__30.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__30.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__30.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f0.502Y-Yf1.002',float('0.302000'),float('0.502000'),float('-inf'),float('0.456000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1569.8468026930727, 778.60126872465992 ], "name": "r13", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w + th)/2", "y0 = (dx/2)*3/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 31 }, { "datums": [ { "expr": "\u0011[__29.__1]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__29.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__29.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__29.__3]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.374947'),float('0.743701'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1934.1096111626209, 1257.6455958481281 ], "name": "p4", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) + (w + th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 32 }, { "datums": [ { "expr": "\u0011[__32.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__32.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__32.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__32.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('0.743701'),float('-inf'),float('0.383053'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1600.3369358537261, 1260.8365057076139 ], "name": "p5", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) + (w + th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 33 }, { "datums": [ { "expr": "\u0011[__31.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__31.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__31.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__31.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f0Y-Yf0.248',float('-0.456000'),float('0.000000'),float('-inf'),float('-0.302000'),float('0.248000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1237.17898275173, 766.61986650880931 ], "name": "r15", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w + th)/2", "y0 = 0", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 , 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": 36 }, { "datums": [ { "expr": "\u0011[__36.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__36.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__36.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__36.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f0.502Y-Yf0.998',float('-0.456000'),float('0.502000'),float('-inf'),float('-0.302000'),float('0.998000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -900.38179016249933, 767.06439304128776 ], "name": "r16", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w + th)/2", "y0 = (dx/2)*3/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "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": 37 }, { "datums": [ { "expr": "\u0011[__33.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__33.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__33.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__33.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('0.743701'),float('-inf'),float('-0.374947'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1269.2730273450084, 1259.3699375465881 ], "name": "p7", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) - (w + th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 38 }, { "datums": [ { "expr": "\u0011[__38.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__38.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__38.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__38.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.383053'),float('0.743701'),float('-inf'),float('-0.120455'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -936.10153081025749, 1260.6336026070544 ], "name": "p8", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) - (w + th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 39 }, { "datums": [ { "expr": "\u0011[__37.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__37.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__37.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.077X-Xf0.077a-f-0.248Y-Yf0',float('-0.077000'),float('-0.248000'),float('-inf'),float('0.077000'),float('0.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -570.65146125121726, 766.17533997633041 ], "name": "r18", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0", "", "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": 41 }, { "datums": [ { "expr": "\u0011[__41.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__41.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__41.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.077X-Xf0.077a-f-1.002Y-Yf-0.502',float('-0.077000'),float('-1.002000'),float('-inf'),float('0.077000'),float('-0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -239.88583995915295, 764.71545687483911 ], "name": "r19", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = -(dx/2)*3/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 42 }, { "datums": [ { "expr": "\u0011[__39.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__39.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "0.004", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.004053'),float('-1.006299'),float('-inf'),float('0.258545'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -614.00353593355578, 1262.4145788216069 ], "name": "p9", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 43 }, { "datums": [ { "expr": "\u0011[__43.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__43.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__43.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.258545'),float('-1.006299'),float('-inf'),float('0.004053'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -278.47607808356008, 1264.4571687993116 ], "name": "p10", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 44 }, { "datums": [ { "expr": "\u0011[__30.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__31.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.302X-Xf0.456a-f0Y-Yf0.248aa-f0.302X-Xf0.456a-f0.502Y-Yf1.002',float('0.302000'),float('0.000000'),float('-inf'),float('0.456000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -1708.5186559928188, 968.92500960666575 ], "name": "u11", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 46 }, { "datums": [ { "expr": "\u0011[__36.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__37.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.456X-Xf-0.302a-f0Y-Yf0.248aa-f-0.456X-Xf-0.302a-f0.502Y-Yf0.998',float('-0.456000'),float('0.000000'),float('-inf'),float('-0.302000'),float('0.998000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -1043.4577026533323, 967.01391491316144 ], "name": "u12", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 47 }, { "datums": [ { "expr": "\u0011[__41.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__42.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.077X-Xf0.077a-f-0.248Y-Yf0aa-f-0.077X-Xf0.077a-f-1.002Y-Yf-0.502',float('-0.077000'),float('-1.002000'),float('-inf'),float('0.077000'),float('0.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -374.57455992683725, 949.81406267162299 ], "name": "u13", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 48 }, { "datums": [ { "expr": "\u0011[__46.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__47.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f0.302X-Xf0.456a-f0Y-Yf0.248aa-f0.302X-Xf0.456a-f0.502Y-Yf1.002iaa-f-0.456X-Xf-0.302a-f0Y-Yf0.248aa-f-0.456X-Xf-0.302a-f0.502Y-Yf0.998',float('-0.456000'),float('0.000000'),float('-inf'),float('0.456000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -1388.4241227220814, 1085.8188652057304 ], "name": "u14", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 49 }, { "datums": [ { "expr": "\u0011[__49.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__48.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaa-f0.302X-Xf0.456a-f0Y-Yf0.248aa-f0.302X-Xf0.456a-f0.502Y-Yf1.002iaa-f-0.456X-Xf-0.302a-f0Y-Yf0.248aa-f-0.456X-Xf-0.302a-f0.502Y-Yf0.998iaa-f-0.077X-Xf0.077a-f-0.248Y-Yf0aa-f-0.077X-Xf0.077a-f-1.002Y-Yf-0.502',float('-0.456000'),float('-1.002000'),float('-inf'),float('0.456000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -715.45894710199263, 1060.2887858354668 ], "name": "u15", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 50 }, { "datums": [ { "expr": "\u0011[__32.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__33.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('0.743701'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -1738.9764532422528, 1464.6481327337867 ], "name": "u16", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 51 }, { "datums": [ { "expr": "\u0011[__38.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__39.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('0.743701'),float('-inf'),float('-0.120455'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -1095.5811278440815, 1458.5343849212613 ], "name": "u17", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 52 }, { "datums": [ { "expr": "\u0011[__43.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__44.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.258545'),float('-1.006299'),float('-inf'),float('0.258545'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -436.88817981512443, 1446.4359430186889 ], "name": "u18", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 53 }, { "datums": [ { "expr": "\u0011[__51.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__52.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('0.743701'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -1431.6489584711001, 1575.485989979464 ], "name": "u19", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 54 }, { "datums": [ { "expr": "\u0011[__54.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__53.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.006299'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -776.55019141335106, 1575.4859899794642 ], "name": "u20", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 55 }, { "datums": [ { "expr": "\u0011[__29.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__50.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0Y-Yf0.248aa-f0.302X-Xf0.456a-f0.502Y-Yf1.002iaa-f-0.456X-Xf-0.302a-f0Y-Yf0.248aa-f-0.456X-Xf-0.302a-f0.502Y-Yf0.998iaa-f-0.077X-Xf0.077a-f-0.248Y-Yf0aa-f-0.077X-Xf0.077a-f-1.002Y-Yf-0.502',float('-1.000000'),float('-1.000000'),float('-inf'),float('1.000000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 169.71007179720908, 1169.7231747794126 ], "name": "d3", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 58 }, { "datums": [ { "expr": "\u0011[__26.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__26.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__26.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__26.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002',float('-0.417500'),float('0.502000'),float('-inf'),float('-0.340500'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1494.1494260936324, -814.93128385071395 ], "name": "r21", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = (dx/2)*3/8", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 34 }, { "datums": [ { "expr": "\u0011[__34.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__34.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__34.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__34.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498',float('-0.417500'),float('-0.998000'),float('-inf'),float('-0.340500'),float('-0.498000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1791.1650966160228, -815.85316597279507 ], "name": "r22", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -(dx/2)*3/8", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 35 }, { "datums": [ { "expr": "\u0011[__34.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__35.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498',float('-0.417500'),float('-0.998000'),float('-inf'),float('-0.340500'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1680.1228384165875, -645.74116209605495 ], "name": "u24", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 61 }, { "datums": [ { "expr": "\u0011[__28.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__61.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498iaa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498',float('-0.417500'),float('-0.998000'),float('-inf'),float('0.417500'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1372.9584190206604, -627.03320441631581 ], "name": "u25", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 62 }, { "datums": [ { "expr": "\u0011[__64.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__64.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__64.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__64.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502',float('-0.456000'),float('-1.002000'),float('-inf'),float('-0.302000'),float('-0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1285.582071950606, -170.36346630764493 ], "name": "r14", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -(dx/2)*3/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 63 }, { "datums": [ { "expr": "\u0011[__5.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__5.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__5.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__5.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002',float('-0.456000'),float('0.502000'),float('-inf'),float('-0.302000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 972.25437540931625, -171.84834559042827 ], "name": "r23", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = (dx/2)*3/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 64 }, { "datums": [ { "expr": "\u0011[__64.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__63.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502',float('-0.456000'),float('-1.002000'),float('-inf'),float('-0.302000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1174.1035012476605, 7.8143327870060597 ], "name": "u26", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 65 }, { "datums": [ { "expr": "\u0011[__7.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__65.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502',float('-0.456000'),float('-1.002000'),float('-inf'),float('0.456000'),float('1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 828.31927542264236, 7.8143327870060597 ], "name": "u27", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 66 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__3.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__3.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248',float('-0.456000'),float('-0.248000'),float('-inf'),float('-0.302000'),float('0.248000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 348.10078705069782, -995.30306536032742 ], "name": "r24", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = 0", "", "width = th - kerf", "height = dx/8 - kerf", "", "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": 67 }, { "datums": [ { "expr": "\u0011[__3.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__67.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248',float('-0.456000'),float('-0.248000'),float('-inf'),float('0.456000'),float('0.248000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 218.80131803616968, -738.45444837207265 ], "name": "u28", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 68 }, { "datums": [ { "expr": "\u0011[__11.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__11.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__11.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__11.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.383053'),float('-1.006299'),float('-inf'),float('-0.120455'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2393.4390257571163, -511.64410565174569 ], "name": "p6", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 69 }, { "datums": [ { "expr": "\u0011[__71.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__71.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__71.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__71.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.383053'),float('0.743701'),float('-inf'),float('-0.120455'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 3026.6077182692102, -510.7848212728976 ], "name": "p11", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 70 }, { "datums": [ { "expr": "\u0011[__69.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__69.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__69.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__69.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.006299'),float('-inf'),float('-0.374947'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2713.8415932282173, -510.17505076603095 ], "name": "p12", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 71 }, { "datums": [ { "expr": "\u0011[__70.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__70.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__70.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__70.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('0.743701'),float('-inf'),float('-0.374947'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 3360.1624690137401, -510.30125880899925 ], "name": "p13", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/2)*7/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 72 }, { "datums": [ { "expr": "\u0011[__69.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__71.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.006299'),float('-inf'),float('-0.120455'),float('-0.743701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2587.8578206832312, -340.86168868617949 ], "name": "u29", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 73 }, { "datums": [ { "expr": "\u0011[__70.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__72.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('0.743701'),float('-inf'),float('-0.120455'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 3233.7010202991505, -345.34671090573448 ], "name": "u30", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 74 }, { "datums": [ { "expr": "\u0011[__73.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__74.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.006299'),float('-inf'),float('-0.120455'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2906.2943982716361, -278.07137761240961 ], "name": "u31", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 75 }, { "datums": [ { "expr": "\u0011[__75.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__14.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.006299'),float('-inf'),float('0.637545'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2262.6937097654941, -275.82886650263208 ], "name": "u32", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 76 }, { "datums": [ { "expr": "\u0011[__59.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__57.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0Y-Yf0.248aa-f0.302X-Xf0.456a-f0.502Y-Yf1.002iaa-f-0.456X-Xf-0.302a-f0Y-Yf0.248aa-f-0.456X-Xf-0.302a-f0.502Y-Yf0.998iaa-f-0.077X-Xf0.077a-f-0.248Y-Yf0aa-f-0.077X-Xf0.077a-f-1.002Y-Yf-0.502iiim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yniiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f-0.379X-Xf-0.379a-f0.579Y-Yf1.079aa-f0X-Xf0a-f-0.921Y-Yf-0.579',float('-1.000000'),float('-1.006299'),float('-inf'),float('1.000000'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -435.31947930780098, 1970.3228899926739 ], "name": "d4", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 60 }, { "datums": [ { "expr": "0.158", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__40.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__40.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0X-Xf0a-f-0.921Y-Yf-0.579',float('0.000000'),float('-0.921000'),float('-inf'),float('0.000000'),float('-0.579000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1261.6283593654259, 1817.4901794034693 ], "name": "r20", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = -(dx/2)*3/8", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "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": 45 }, { "datums": [ { "expr": "fab.types.Shape('aa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002',float('0.340500'),float('0.502000'),float('-inf'),float('0.417500'),float('1.002000'),float('inf'))", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__40.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f-0.379X-Xf-0.379a-f0.579Y-Yf1.079',float('-0.379000'),float('0.502000'),float('-inf'),float('0.417500'),float('1.079000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -1765.108602627721, 2034.48260624159 ], "name": "u21", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 56 }, { "datums": [ { "expr": "\u0011[__56.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__45.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f-0.379X-Xf-0.379a-f0.579Y-Yf1.079aa-f0X-Xf0a-f-0.921Y-Yf-0.579',float('-0.379000'),float('-0.921000'),float('-inf'),float('0.417500'),float('1.079000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -1392.9471502664546, 2027.3938166728042 ], "name": "u22", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 57 }, { "datums": [ { "expr": "\u0011[__58.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__55.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0Y-Yf0.248aa-f0.302X-Xf0.456a-f0.502Y-Yf1.002iaa-f-0.456X-Xf-0.302a-f0Y-Yf0.248aa-f-0.456X-Xf-0.302a-f0.502Y-Yf0.998iaa-f-0.077X-Xf0.077a-f-0.248Y-Yf0aa-f-0.077X-Xf0.077a-f-1.002Y-Yf-0.502iiim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-1.000000'),float('-1.006299'),float('-inf'),float('1.000000'),float('1.006299'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -369.22414631440824, 1786.5684499084271 ], "name": "u23", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 59 }, { "datums": [ { "expr": "0.158", "name": "th", "type": "float", "uid": 5 }, { "expr": "0.6", "name": "w", "type": "float", "uid": 0 }, { "expr": "4.0", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__40.__5]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.379X-Xf-0.379a-f0.579Y-Yf1.079',float('-0.379000'),float('0.579000'),float('-inf'),float('-0.379000'),float('1.079000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1614.8502532355121, 1815.5260001784407 ], "name": "r17", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w + th)/2", "y0 = (dx/2)*3/8", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 40 } ], "uid": 1 }, { "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": "-3.5", "name": "dx", "type": "float", "uid": 3 }, { "expr": "1.5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__1]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf-3.5-Yf1.5-Zf0iaiiim-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yniiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498iaa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498aaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502iaa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248',float('-4.500000'),float('0.493701'),float('-inf'),float('-2.500000'),float('2.506299'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ -56.766082396595081, -247.7552490402382 ], "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))", "", "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": 2 }, { "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": "-1", "name": "dx", "type": "float", "uid": 3 }, { "expr": "1.5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf-1-Yf1.5-Zf0aiaiiim-Xf-0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf0.506246-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf0.506246-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf0.875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yniiaa-f0.3405X-Xf0.4175a-f0.502Y-Yf1.002aa-f0.3405X-Xf0.4175a-f-0.998Y-Yf-0.498iaa-f-0.4175X-Xf-0.3405a-f0.502Y-Yf1.002aa-f-0.4175X-Xf-0.3405a-f-0.998Y-Yf-0.498aaa-f-1X-Xf1a-f-1Y-Yf1niiiaa-f0.302X-Xf0.456a-f0.502Y-Yf1.002aa-f0.302X-Xf0.456a-f-1.002Y-Yf-0.502iaa-f-0.456X-Xf-0.302a-f0.502Y-Yf1.002aa-f-0.456X-Xf-0.302a-f-1.002Y-Yf-0.502iaa-f0.302X-Xf0.456a-f-0.248Y-Yf0.248aa-f-0.456X-Xf-0.302a-f-0.248Y-Yf0.248naa-f-5X-Xf5a-f-5Y-Yf0',float('-2.000000'),float('0.493701'),float('-inf'),float('0.000000'),float('2.506299'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 238.22184364165196, -247.14151675817604 ], "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))", "", "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": 6 }, { "datums": [ { "expr": "var.th", "name": "th", "subdatum": [ -401, -285 ], "type": "float", "uid": 0 }, { "expr": "var.w", "name": "w", "subdatum": [ -403, -249 ], "type": "float", "uid": 1 }, { "expr": "var.dx", "name": "dx", "subdatum": [ -402, -213 ], "type": "float", "uid": 2 }, { "expr": "var.kerf", "name": "kerf", "subdatum": [ -402, -177 ], "type": "float", "uid": 3 }, { "expr": "var.dx / 4", "name": "slot", "subdatum": [ -402, -141 ], "type": "float", "uid": 4 }, { "expr": "\u0013[__29.__2]", "name": "railM0", "subdatum": [ 1861.106576644074, 654.80204112759782 ], "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -373.04796767516717, 11.585607010154632 ], "name": "railM0", "subgraph": [ { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-2X-Xf2a-f-1.5Y-Yf0.6',float('-2.000000'),float('-1.500000'),float('-inf'),float('2.000000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -45, -293 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = dx", "height = w + dx*3/8", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - dx*3/8, y0 + w", "", "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": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__parent.__4]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u0012fab.types.Shape('aa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077',float('-1.498000'),float('-0.077000'),float('-inf'),float('-0.502000'),float('0.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -52, -74 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 =-dx/4", "y0 = 0", "", "width = slot - kerf", "height = th - kerf", "", "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": 1 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__7]", "name": "w", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__1.__9]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u0012fab.types.Shape('aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077',float('0.502000'),float('-0.077000'),float('-inf'),float('1.498000'),float('0.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 242, -76 ], "name": "r2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 = dx/4", "y0 = 0", "", "width = slot - kerf", "height = th - kerf", "", "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": 2 }, { "datums": [ { "expr": "\u0011[__1.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__2.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077',float('-1.498000'),float('-0.077000'),float('-inf'),float('1.498000'),float('0.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 146, 137 ], "name": "u0", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 3 }, { "datums": [ { "expr": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__0]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__6]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__0.__7]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5',float('0.302000'),float('-0.748000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 413.50297611654094, -741.6130815792867 ], "name": "r3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0", "", "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": 4 }, { "datums": [ { "expr": "\u0011[__4.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__4.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__4.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__4.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002',float('0.302000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 738.98078476373473, -742.33592563475349 ], "name": "r4", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx*5/16", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 5 }, { "datums": [ { "expr": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__0]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__6]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__0.__7]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.374947'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 683.46224265863975, -344.18961860507039 ], "name": "p2", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 10 }, { "datums": [ { "expr": "\u0011[__10.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__10.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__10.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__10.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.506299'),float('-inf'),float('0.383053'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 996.20699151668236, -345.55216251679201 ], "name": "p3", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 11 }, { "datums": [ { "expr": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__0]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__6]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__0.__7]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002',float('0.340500'),float('-1.498000'),float('-inf'),float('0.417500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 667.04196506177698, 57.089912336471741 ], "name": "r5", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx*5/16", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "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": 12 }, { "datums": [ { "expr": "\u0011[__32.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__32.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__32.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__32.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923',float('1.500000'),float('-1.077000'),float('-inf'),float('1.621000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1703.8113119084064, -746.63968977384286 ], "name": "r6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx/2 - dx/8", "y0 = -dx/4", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0, x0 + width", "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": 13 }, { "datums": [ { "expr": "\u0011[__13.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__13.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__13.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__13.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923',float('1.750000'),float('-1.077000'),float('-inf'),float('2.000000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2027.0193153392402, -746.4736788768447 ], "name": "r7", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx/2 - dx*1/16", "y0 = -dx/4", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0, x0 + width + kerf", "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": 14 }, { "datums": [ { "expr": "\u0011[__14.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__14.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__14.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__14.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923',float('-1.621000'),float('-1.077000'),float('-inf'),float('-1.500000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2344.0737103798256, -745.78815638166054 ], "name": "r8", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx/2 + dx/8", "y0 = -dx/4", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width, x0", "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": 15 }, { "datums": [ { "expr": "\u0011[__15.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__15.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__15.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__15.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('-1.750000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2668.7613616758899, -746.62214548466238 ], "name": "r9", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx/2 + dx*1/16", "y0 = -dx/4", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width - kerf, x0", "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": 16 }, { "datums": [ { "expr": "\u0011[__4.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__5.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002',float('0.302000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 590.43049470085771, -570.52834319408726 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__31.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__32.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('-0.302000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1260.4695954287972, -563.8942926918304 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 18 }, { "datums": [ { "expr": "\u0011[__13.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__14.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923',float('1.500000'),float('-1.077000'),float('-inf'),float('2.000000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1908.3951944825476, -566.10564285924931 ], "name": "u3", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 19 }, { "datums": [ { "expr": "\u0011[__17.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__18.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 931.00478500199347, -499.52785716911387 ], "name": "u4", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 20 }, { "datums": [ { "expr": "\u0011[__19.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__33.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('2.000000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2228.0029443425487, -495.07879231565749 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 21 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__30.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaa-f-2X-Xf2a-f-1.5Y-Yf0.6niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077',float('-2.000000'),float('-1.500000'),float('-inf'),float('2.000000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1549.3446768657338, 248.34440029793637 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 22 }, { "datums": [ { "expr": "\u0011[__7.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__7.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__7.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__7.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('-1.165009'),float('-inf'),float('2.001149'),float('-1.037710'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2252.7720478354827, -347.07308046667765 ], "name": "p0", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = dx/2 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 - (th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 6 }, { "datums": [ { "expr": "\u0011[__35.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__35.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__35.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__35.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('-0.962292'),float('-inf'),float('2.001149'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1932.7484762937952, -345.59078194726283 ], "name": "p1", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = dx/2 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 + (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 7 }, { "datums": [ { "expr": "\u0011[__6.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__6.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__6.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__6.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-0.962292'),float('-inf'),float('-1.873850'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2569.2559404665049, -346.57502366476103 ], "name": "p4", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx/2 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 + (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 8 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__8.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__8.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('-1.873850'),float('-1.037710'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2881.277562782378, -346.40901276776287 ], "name": "p5", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx/2 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 - (th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 9 }, { "datums": [ { "expr": "\u0011[__10.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__11.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 865.90772092565521, -175.04873064534809 ], "name": "u6", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 23 }, { "datums": [ { "expr": "\u0011[__36.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__35.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('-0.120455'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1477.4112866467378, -172.71474757007678 ], "name": "u7", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 24 }, { "datums": [ { "expr": "\u0011[__7.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('-1.165009'),float('-inf'),float('2.001149'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2126.2585815721613, -170.38076449480548 ], "name": "u8", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 25 }, { "datums": [ { "expr": "\u0011[__23.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__24.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1171.6595037861964, -86.357373785038391 ], "name": "u9", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 26 }, { "datums": [ { "expr": "\u0011[__26.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__38.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.506299'),float('-inf'),float('2.001149'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1820.5067987116201, -93.359323010852307 ], "name": "u10", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 27 }, { "datums": [ { "expr": "\u0011[__22.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__27.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaaa-f-2X-Xf2a-f-1.5Y-Yf0.6niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.506299'),float('-inf'),float('2.001149'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1551.3385021422416, 414.98159635198567 ], "name": "u11", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 28 }, { "datums": [ { "expr": "\u0011[__28.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__40.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaaa-f-2X-Xf2a-f-1.5Y-Yf0.6niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yniaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-2.001149'),float('-1.506299'),float('-inf'),float('2.001149'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1543.8441132430037, 567.36750396982256 ], "name": "d1", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 29 }, { "datums": [ { "expr": "\u0011[__34.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__3.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077',float('-2.000000'),float('-1.502000'),float('-inf'),float('2.000000'),float('0.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1551.3385021422416, 92.722873684756721 ], "name": "u12", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 30 }, { "datums": [ { "expr": "\u0011[__5.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__5.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__5.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__5.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5',float('-0.456000'),float('-0.748000'),float('-inf'),float('-0.302000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1061.6775184287212, -743.77198151421896 ], "name": "r10", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0", "", "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": 31 }, { "datums": [ { "expr": "\u0011[__31.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__31.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__31.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__31.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('-0.302000'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1387.1553270759155, -744.49482556968576 ], "name": "r11", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx*5/16", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 32 }, { "datums": [ { "expr": "\u0011[__15.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__16.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('-1.500000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2549.8782521500434, -570.28125433689911 ], "name": "u13", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 33 }, { "datums": [ { "expr": "\u0011[__20.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__21.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.502000'),float('-inf'),float('2.000000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1590.6695523266765, -485.0668140336843 ], "name": "u14", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 34 }, { "datums": [ { "expr": "\u0011[__36.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__36.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__36.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__36.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('-0.374947'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1618.0029731807888, -346.477090760794 ], "name": "p6", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 35 }, { "datums": [ { "expr": "\u0011[__11.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__11.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__11.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__11.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.383053'),float('-1.506299'),float('-inf'),float('-0.120455'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1305.2582243227459, -345.11454684907233 ], "name": "p7", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "x = (th-kerf)/2 + r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 36 }, { "datums": [ { "expr": "\u0011[__8.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__9.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('-1.873850'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2733.4170466492751, -170.42888060642963 ], "name": "u15", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 37 }, { "datums": [ { "expr": "\u0011[__25.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__37.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('2.001149'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2451.5538979540261, -87.399425952015193 ], "name": "u16", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 38 }, { "datums": [ { "expr": "\u0011[__12.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__12.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__12.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__12.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-0.417500'),float('-1.498000'),float('-inf'),float('-0.340500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 993.86488413783218, 58.349969741270215 ], "name": "r12", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx*5/16", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "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": 39 }, { "datums": [ { "expr": "\u0011[__12.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__39.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-0.417500'),float('-1.498000'),float('-inf'),float('0.417500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 852.14440303214792, 240.34842136804184 ], "name": "u17", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 40 } ], "uid": 8 }, { "datums": [ { "expr": "var.th", "name": "th", "subdatum": [ -402, -288 ], "type": "float", "uid": 0 }, { "expr": "var.w", "name": "w", "subdatum": [ -404, -249 ], "type": "float", "uid": 1 }, { "expr": "var.dx", "name": "dx", "subdatum": [ -403, -209 ], "type": "float", "uid": 2 }, { "expr": "var.kerf", "name": "kerf", "subdatum": [ -403, -172 ], "type": "float", "uid": 3 }, { "expr": "var.dx / 4", "name": "slot", "subdatum": [ -403, -134 ], "type": "float", "uid": 4 }, { "expr": "\u0013[__34.__2]", "name": "railMHlf", "subdatum": [ 2033.913400922685, 582.36917615224354 ], "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -368.90639857404818, 223.83082576176849 ], "name": "railMHlf", "subgraph": [ { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-2X-Xf2a-f-1.5Y-Yf0.6',float('-2.000000'),float('-1.500000'),float('-inf'),float('2.000000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 17.72178122489591, -286.27492747908775 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = dx", "height = w + dx*3/8", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - dx*3/8, y0 + w", "", "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": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__0.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa*f-1-f2X*f1-f0.6Y*f-1-X/+*f2-Yf0.6*+f2f-4-+f0.6f2Yf2',float('2.000000'),float('0.600000'),float('-inf'),float('-2.000000'),float('2.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 316.26563416737304, -290.36456930021745 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Right triangle')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx/2", "y0 = w", "", "width = -dx", "height = dx / 2", "", "output('shape', fab.shapes.right_triangle(x0, y0, width, height))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x0 + width, y0, 0), (x0, y0 + height, 0)],", " close=True)", "sb.ui.point(x0, y0)", "sb.ui.point(x0 + width, y0, drag=(None, None, None))", "sb.ui.point(x0, y0 + height, drag=(None, None, None))", "", "" ], "uid": 1 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__1.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-2X-Xf2a-f-1.5Y-Yf0.6aa*f-1-f2X*f1-f0.6Y*f-1-X/+*f2-Yf0.6*+f2f-4-+f0.6f2Yf2',float('-2.000000'),float('-1.500000'),float('-inf'),float('2.000000'),float('2.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 205.62721699042089, -105.28113509909549 ], "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": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__parent.__4]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u0012-1.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "\u00120.5", "name": "y", "type": "float", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aa-f-1.498X-Xf-0.502a-f0.423Y-Yf0.577',float('-1.498000'),float('0.423000'),float('-inf'),float('-0.502000'),float('0.577000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 87.421671283151483, 123.03790773184292 ], "name": "r2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 =-dx/4", "y0 = dx/8", "", "width = slot - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2", "", "output('x', x0)", "output('y', y0)", "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": 3 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__3.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__3.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__3.__9]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u00121.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "\u00121.5", "name": "y", "type": "float", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aa-f0.502X-Xf1.498a-f1.423Y-Yf1.577',float('0.502000'),float('1.423000'),float('-inf'),float('1.498000'),float('1.577000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 404.72995964422012, 123.03790773184292 ], "name": "r3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 = dx/4", "y0 = dx*3/8", "", "width = slot - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2", "", "output('x', x0)", "output('y', y0)", "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": 4 }, { "datums": [ { "expr": "\u0011[__3.__0]", "name": "x", "type": "float", "uid": 0 }, { "expr": "\u0011[__3.__1]", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "26", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__3.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf-1-Yf0.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf1-Yf-0.5-Zf0aa-f-1.498X-Xf-0.502a-f0.423Y-Yf0.577',float('-1.481354'),float('0.212484'),float('-inf'),float('-0.518646'),float('0.787516'),float('inf'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 86.327072090267052, 398.87320012848954 ], "name": "r4", "script": [ "import fab", "import math", "", "title('Rotate (Z)')", "", "input('x', float)", "input('y', float)", "input('_z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_z(shape, a, x, y))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(x + math.cos(rad), y + math.sin(rad), _z),", " (x, y, _z),", " (x + 1, y, _z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (x + math.cos(math.radians(a_)) * 0.3,", " y + math.sin(math.radians(a_)) * 0.3, _z)", " 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(y - this.y, x - this.x))", "sb.ui.point(x + math.cos(rad), y + math.sin(rad), _z,", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 5 }, { "datums": [ { "expr": "\u0011[__4.__0]", "name": "x", "type": "float", "uid": 0 }, { "expr": "\u0011[__4.__1]", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "26", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__4.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf1-Yf1.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf-1-Yf-1.5-Zf0aa-f0.502X-Xf1.498a-f1.423Y-Yf1.577',float('0.518646'),float('1.212484'),float('-inf'),float('1.481354'),float('1.787516'),float('inf'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 407.96779932137383, 399.87320012848954 ], "name": "r5", "script": [ "import fab", "import math", "", "title('Rotate (Z)')", "", "input('x', float)", "input('y', float)", "input('_z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_z(shape, a, x, y))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(x + math.cos(rad), y + math.sin(rad), _z),", " (x, y, _z),", " (x + 1, y, _z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (x + math.cos(math.radians(a_)) * 0.3,", " y + math.sin(math.radians(a_)) * 0.3, _z)", " 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(y - this.y, x - this.x))", "sb.ui.point(x + math.cos(rad), y + math.sin(rad), _z,", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 6 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5',float('0.302000'),float('-0.748000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 869.35995331578488, -705.84904961951997 ], "name": "r6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0", "", "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": 7 }, { "datums": [ { "expr": "\u0011[__7.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__7.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__7.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__7.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002',float('0.302000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1183.4304019996998, -706.53831956629267 ], "name": "r7", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx*5/16", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 8 }, { "datums": [ { "expr": "\u0011[__35.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__35.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__35.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__35.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f1.5X-Xf1.621a-f0.923Y-Yf1.077',float('1.500000'),float('0.923000'),float('-inf'),float('1.621000'),float('1.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2120.938914846884, -709.94618908028212 ], "name": "r8", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx/2 - dx/8", "y0 = -dx/4 + dx/2", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0, x0 + width", "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": 9 }, { "datums": [ { "expr": "\u0011[__9.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__9.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__9.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__9.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f1.75X-Xf2a-f0.923Y-Yf1.077',float('1.750000'),float('0.923000'),float('-inf'),float('2.000000'),float('1.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2433.3904436922212, -711.87583897208651 ], "name": "r9", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx/2 - dx*1/16", "y0 = -dx/4 + dx/2", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0, x0 + width + kerf", "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": 10 }, { "datums": [ { "expr": "\u0011[__10.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__10.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__10.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__10.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923',float('-1.621000'),float('-1.077000'),float('-inf'),float('-1.500000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2750.4583521082577, -712.8054888638909 ], "name": "r10", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx/2 + dx/8", "y0 = -dx/4", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width, x0", "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": 11 }, { "datums": [ { "expr": "\u0011[__11.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__11.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__11.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__11.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('-1.750000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 3069.3855603079037, -711.18656902531404 ], "name": "r11", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx/2 + dx*1/16", "y0 = -dx/4", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width - kerf, x0", "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": 12 }, { "datums": [ { "expr": "\u0011[__7.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__8.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002',float('0.302000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1052.9675623259736, -531.03136633524946 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 13 }, { "datums": [ { "expr": "\u0011[__36.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__35.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('-0.302000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1692.1768335711495, -528.61807278815559 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 14 }, { "datums": [ { "expr": "\u0011[__9.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__10.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f1.5X-Xf1.621a-f0.923Y-Yf1.077aa-f1.75X-Xf2a-f0.923Y-Yf1.077',float('1.500000'),float('0.923000'),float('-inf'),float('2.000000'),float('1.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2319.630013452841, -525.62306954289693 ], "name": "u3", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 15 }, { "datums": [ { "expr": "\u0011[__13.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__14.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1371.7114863284717, -446.25548354354208 ], "name": "u4", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 16 }, { "datums": [ { "expr": "\u0011[__16.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__38.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f0.923Y-Yf1.077aa-f1.75X-Xf2a-f0.923Y-Yf1.077iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.502000'),float('-inf'),float('2.000000'),float('1.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2017.1346856817154, -456.73799490194745 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__5.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-1-Yf0.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf1-Yf-0.5-Zf0aa-f-1.498X-Xf-0.502a-f0.423Y-Yf0.577m-Xf1-Yf1.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf-1-Yf-1.5-Zf0aa-f0.502X-Xf1.498a-f1.423Y-Yf1.577',float('-1.481354'),float('0.212484'),float('-inf'),float('1.481354'),float('1.787516'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 264.17960062005608, 579.06033671264822 ], "name": "u6", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 18 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.374947'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 876.84042842031977, -317.1973446714419 ], "name": "p0", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 19 }, { "datums": [ { "expr": "\u0011[__19.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__19.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__19.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__19.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.506299'),float('-inf'),float('0.383053'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1194.3764107471325, -316.09712673827778 ], "name": "p1", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 20 }, { "datums": [ { "expr": "\u0011[__40.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__40.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__40.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__40.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf1.9375-Yf1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('1.037710'),float('-inf'),float('2.001149'),float('1.165009'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2144.2615522061474, -316.326410651017 ], "name": "p2", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = dx/2 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 + (th-kerf)/2 + r*math.sin(math.pi/8) + dx/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 21 }, { "datums": [ { "expr": "\u0011[__21.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__21.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__21.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__21.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf1.9375-Yf0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('0.834992'),float('-inf'),float('2.001149'),float('0.962292'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2459.2020473757843, -314.84645424982887 ], "name": "p3", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = dx/2 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 - (th-kerf)/2 - r*math.sin(math.pi/8) + dx/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 22 }, { "datums": [ { "expr": "\u0011[__23.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__23.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__23.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__23.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('-1.873850'),float('-1.037710'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 3087.9932782162009, -317.11573274639943 ], "name": "p5", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx/2 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 - (th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 24 }, { "datums": [ { "expr": "\u0011[__19.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__20.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1047.2827757009982, -143.09163955396443 ], "name": "u7", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 25 }, { "datums": [ { "expr": "\u0011[__39.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__40.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('-0.120455'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1729.4351608160182, -144.32518817080896 ], "name": "u8", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 26 }, { "datums": [ { "expr": "\u0011[__21.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__22.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf1.9375-Yf1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('0.834992'),float('-inf'),float('2.001149'),float('1.165009'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2335.1075316866782, -149.25938263818702 ], "name": "u9", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 27 }, { "datums": [ { "expr": "\u0011[__25.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__26.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1367.4466815336179, -69.962388357533939 ], "name": "u10", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 28 }, { "datums": [ { "expr": "\u0011[__28.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__42.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.9375-Yf1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.506299'),float('-inf'),float('2.001149'),float('1.165009'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2038.4495880536024, -71.552442638386992 ], "name": "u11", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 29 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002',float('0.340500'),float('-1.498000'),float('-inf'),float('0.417500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 865.6034131615811, 92.331030737235324 ], "name": "r12", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx*5/16", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "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": 30 }, { "datums": [ { "expr": "\u0011[__2.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__31.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaa-f-2X-Xf2a-f-1.5Y-Yf0.6aa*f-1-f2X*f1-f0.6Y*f-1-X/+*f2-Yf0.6*+f2f-4-+f0.6f2Yf2niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f0.923Y-Yf1.077aa-f1.75X-Xf2a-f0.923Y-Yf1.077iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923im-Xf-1-Yf0.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf1-Yf-0.5-Zf0aa-f-1.498X-Xf-0.502a-f0.423Y-Yf0.577m-Xf1-Yf1.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf-1-Yf-1.5-Zf0aa-f0.502X-Xf1.498a-f1.423Y-Yf1.577',float('-2.000000'),float('-1.500000'),float('-inf'),float('2.000000'),float('2.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1687.4404592275016, 224.17092232073381 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 32 }, { "datums": [ { "expr": "\u0011[__17.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__18.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f0.923Y-Yf1.077aa-f1.75X-Xf2a-f0.923Y-Yf1.077iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923im-Xf-1-Yf0.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf1-Yf-0.5-Zf0aa-f-1.498X-Xf-0.502a-f0.423Y-Yf0.577m-Xf1-Yf1.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf-1-Yf-1.5-Zf0aa-f0.502X-Xf1.498a-f1.423Y-Yf1.577',float('-2.000000'),float('-1.502000'),float('-inf'),float('2.000000'),float('1.787516'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1678.9479891428618, 90.284690212439301 ], "name": "u12", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 31 }, { "datums": [ { "expr": "\u0011[__32.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__29.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaiaa-f-2X-Xf2a-f-1.5Y-Yf0.6aa*f-1-f2X*f1-f0.6Y*f-1-X/+*f2-Yf0.6*+f2f-4-+f0.6f2Yf2niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f0.923Y-Yf1.077aa-f1.75X-Xf2a-f0.923Y-Yf1.077iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923im-Xf-1-Yf0.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf1-Yf-0.5-Zf0aa-f-1.498X-Xf-0.502a-f0.423Y-Yf0.577m-Xf1-Yf1.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf-1-Yf-1.5-Zf0aa-f0.502X-Xf1.498a-f1.423Y-Yf1.577iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.9375-Yf1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.506299'),float('-inf'),float('2.001149'),float('2.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1685.8055099143892, 359.05468003371402 ], "name": "u13", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 33 }, { "datums": [ { "expr": "\u0011[__33.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__44.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaiaa-f-2X-Xf2a-f-1.5Y-Yf0.6aa*f-1-f2X*f1-f0.6Y*f-1-X/+*f2-Yf0.6*+f2f-4-+f0.6f2Yf2niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f0.923Y-Yf1.077aa-f1.75X-Xf2a-f0.923Y-Yf1.077iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923im-Xf-1-Yf0.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf1-Yf-0.5-Zf0aa-f-1.498X-Xf-0.502a-f0.423Y-Yf0.577m-Xf1-Yf1.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf-1-Yf-1.5-Zf0aa-f0.502X-Xf1.498a-f1.423Y-Yf1.577iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.9375-Yf1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yniaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-2.001149'),float('-1.506299'),float('-inf'),float('2.001149'),float('2.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1692.37358332964, 494.79486394889864 ], "name": "d1", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 34 }, { "datums": [ { "expr": "\u0011[__36.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__36.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__36.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__36.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('-0.302000'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1807.6357070215709, -709.28116821819867 ], "name": "r13", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx*5/16", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 35 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__8.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__8.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5',float('-0.456000'),float('-0.748000'),float('-inf'),float('-0.302000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1493.5652583376559, -708.59189827142609 ], "name": "r14", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0", "", "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": 36 }, { "datums": [ { "expr": "\u0011[__11.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__12.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('-1.500000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2935.9523293991506, -532.6510736496723 ], "name": "u14", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 37 }, { "datums": [ { "expr": "\u0011[__15.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__37.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f1.5X-Xf1.621a-f0.923Y-Yf1.077aa-f1.75X-Xf2a-f0.923Y-Yf1.077iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('2.000000'),float('1.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2622.4782525622618, -458.74255146861719 ], "name": "u15", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 38 }, { "datums": [ { "expr": "\u0011[__20.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__20.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__20.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__20.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.383053'),float('-1.506299'),float('-inf'),float('-0.120455'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1506.5030516399092, -315.87213471904204 ], "name": "p6", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 39 }, { "datums": [ { "expr": "\u0011[__39.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__39.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__39.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__39.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('-0.374947'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1824.0390339667215, -314.77191678587775 ], "name": "p7", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 40 }, { "datums": [ { "expr": "\u0011[__22.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__22.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__22.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__22.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-0.962292'),float('-inf'),float('-1.873850'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2775.2323020442777, -317.33533894173718 ], "name": "p4", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx/2 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 + (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 23 }, { "datums": [ { "expr": "\u0011[__23.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__24.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('-1.873850'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2946.5706118841795, -148.47061222672224 ], "name": "u16", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 41 }, { "datums": [ { "expr": "\u0011[__27.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__41.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf1.9375-Yf1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('2.001149'),float('1.165009'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2647.7259180432129, -78.042244888405278 ], "name": "u17", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 42 }, { "datums": [ { "expr": "\u0011[__30.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__30.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__30.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__30.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-0.417500'),float('-1.498000'),float('-inf'),float('-0.340500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1174.5820085722689, 94.083345346595664 ], "name": "r15", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx*5/16", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "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": 43 }, { "datums": [ { "expr": "\u0011[__30.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__43.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-0.417500'),float('-1.498000'),float('-inf'),float('0.417500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1053.6418086542185, 274.23553923876921 ], "name": "u18", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 44 } ], "uid": 9 }, { "datums": [ { "expr": "var.th", "name": "th", "subdatum": [ -404, -290 ], "type": "float", "uid": 0 }, { "expr": "var.w", "name": "w", "subdatum": [ -403, -249 ], "type": "float", "uid": 1 }, { "expr": "var.dx", "name": "dx", "subdatum": [ -405, -210 ], "type": "float", "uid": 2 }, { "expr": "var.kerf", "name": "kerf", "subdatum": [ -406, -172 ], "type": "float", "uid": 3 }, { "expr": "\u0013[__28.__2]", "name": "cnxtr", "subdatum": [ 510.42759879454974, 471.39490006320182 ], "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 270.34239150413879, 51.925485023641158 ], "name": "connector", "subgraph": [ { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-1X-Xf1a-f-0.5Y-Yf0.5',float('-1.000000'),float('-0.500000'),float('-inf'),float('1.000000'),float('0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -14, -300 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = dx/2", "height = width/2", "", "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": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__0.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-0.123Y-Yf0.123',float('0.302000'),float('-0.123000'),float('-inf'),float('0.456000'),float('0.123000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 558, -499 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w + th)/2", "y0 = 0", "", "width = th - kerf", "height = dx/16 - kerf", "", "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": 1 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__1.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f0.252Y-Yf0.502',float('0.302000'),float('0.252000'),float('-inf'),float('0.456000'),float('0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 861, -499 ], "name": "r2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w + th)/2", "y0 = (dx/4)*3/8", "", "width = th - kerf", "height = dx/16 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 2 }, { "datums": [ { "expr": "\u0011[__2.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__2.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__2.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__2.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-0.502Y-Yf-0.252',float('0.302000'),float('-0.502000'),float('-inf'),float('0.456000'),float('-0.252000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1163, -500 ], "name": "r3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w + th)/2", "y0 = -(dx/4)*3/8", "", "width = th - kerf", "height = dx/16 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 3 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__3.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__3.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-0.123Y-Yf0.123',float('-0.456000'),float('-0.123000'),float('-inf'),float('-0.302000'),float('0.123000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1468.7551705687679, -499.66683754620902 ], "name": "r4", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w + th)/2", "y0 = 0", "", "width = th - kerf", "height = dx/16 - kerf", "", "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": 4 }, { "datums": [ { "expr": "\u0011[__6.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__6.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__6.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__6.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-0.502Y-Yf-0.252',float('-0.456000'),float('-0.502000'),float('-inf'),float('-0.302000'),float('-0.252000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2073.7551705687679, -500.66683754620908 ], "name": "r5", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w + th)/2", "y0 = -(dx/4)*3/8", "", "width = th - kerf", "height = dx/16 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 5 }, { "datums": [ { "expr": "\u0011[__4.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__4.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__4.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__4.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f0.252Y-Yf0.502',float('-0.456000'),float('0.252000'),float('-inf'),float('-0.302000'),float('0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1771.7551705687679, -499.66683754620914 ], "name": "r6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w + th)/2", "y0 = (dx/4)*3/8", "", "width = th - kerf", "height = dx/16 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2 + kerf", "", "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": 6 }, { "datums": [ { "expr": "\u0011[__1.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__2.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.302X-Xf0.456a-f-0.123Y-Yf0.123aa-f0.302X-Xf0.456a-f0.252Y-Yf0.502',float('0.302000'),float('-0.123000'),float('-inf'),float('0.456000'),float('0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 729.659853126337, -329.75012593209459 ], "name": "u0", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 7 }, { "datums": [ { "expr": "\u0011[__3.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__4.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.302X-Xf0.456a-f-0.502Y-Yf-0.252aa-f-0.456X-Xf-0.302a-f-0.123Y-Yf0.123',float('-0.456000'),float('-0.502000'),float('-inf'),float('0.456000'),float('0.123000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1323.6778104791881, -329.75012593209459 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 8 }, { "datums": [ { "expr": "\u0011[__6.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__5.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.456X-Xf-0.302a-f0.252Y-Yf0.502aa-f-0.456X-Xf-0.302a-f-0.502Y-Yf-0.252',float('-0.456000'),float('-0.502000'),float('-inf'),float('-0.302000'),float('0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1938.7436482106837, -325.07281918128473 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 9 }, { "datums": [ { "expr": "\u0011[__7.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__8.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f0.302X-Xf0.456a-f-0.123Y-Yf0.123aa-f0.302X-Xf0.456a-f0.252Y-Yf0.502iaa-f0.302X-Xf0.456a-f-0.502Y-Yf-0.252aa-f-0.456X-Xf-0.302a-f-0.123Y-Yf0.123',float('-0.456000'),float('-0.502000'),float('-inf'),float('0.456000'),float('0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1026.6688318027625, -250.23591116832711 ], "name": "u3", "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": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__9.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaa-f0.302X-Xf0.456a-f-0.123Y-Yf0.123aa-f0.302X-Xf0.456a-f0.252Y-Yf0.502iaa-f0.302X-Xf0.456a-f-0.502Y-Yf-0.252aa-f-0.456X-Xf-0.302a-f-0.123Y-Yf0.123iaa-f-0.456X-Xf-0.302a-f0.252Y-Yf0.502aa-f-0.456X-Xf-0.302a-f-0.502Y-Yf-0.252',float('-0.456000'),float('-0.502000'),float('-inf'),float('0.456000'),float('0.502000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1627.7027492818286, -243.21995104211231 ], "name": "u4", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 11 }, { "datums": [ { "expr": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__0.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.416708'),float('-0.501150'),float('-inf'),float('0.544008'),float('-0.373850'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 556.88945488318382, -122.29729205277761 ], "name": "p0", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/4)*7/16", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 12 }, { "datums": [ { "expr": "\u0011[__12.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__12.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__12.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__12.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.213993'),float('-0.501150'),float('-inf'),float('0.341292'),float('-0.373850'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 860.62134383137243, -122.12475302130439 ], "name": "p1", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/4)*7/16", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 13 }, { "datums": [ { "expr": "\u0011[__15.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__15.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__15.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__15.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.213993'),float('0.373850'),float('-inf'),float('0.341292'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1472.2803431267339, -120.86027388221706 ], "name": "p2", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/4)*7/16", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 14 }, { "datums": [ { "expr": "\u0011[__13.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__13.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__13.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__13.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.416708'),float('0.373850'),float('-inf'),float('0.544008'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1168.5484541785454, -121.03281291369026 ], "name": "p3", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/4)*7/16", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 15 }, { "datums": [ { "expr": "\u0011[__18.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__18.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__18.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__18.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.341292'),float('-0.501150'),float('-inf'),float('-0.213993'),float('-0.373850'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2080.8353207749306, -122.8617591538835 ], "name": "p4", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/4)*7/16", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 16 }, { "datums": [ { "expr": "\u0011[__19.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__19.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__19.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__19.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.341292'),float('0.373850'),float('-inf'),float('-0.213993'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2692.4943200702919, -121.59728001479613 ], "name": "p5", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/4)*7/16", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__14.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__14.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__14.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__14.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.544008'),float('-0.501150'),float('-inf'),float('-0.416708'),float('-0.373850'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1777.1034318267414, -123.0342981853567 ], "name": "p6", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/4)*7/16", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 18 }, { "datums": [ { "expr": "\u0011[__16.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__16.__0]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__16.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__16.__7]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.544008'),float('0.373850'),float('-inf'),float('-0.416708'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2388.7624311221034, -121.76981904626933 ], "name": "p7", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = (dx/4)*7/16", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 19 }, { "datums": [ { "expr": "\u0011[__12.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__13.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.213993'),float('-0.501150'),float('-inf'),float('0.544008'),float('-0.373850'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 719.27728583263809, 49.837564748703386 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 20 }, { "datums": [ { "expr": "\u0011[__15.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__14.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.213993'),float('0.373850'),float('-inf'),float('0.544008'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1325.4098300736252, 49.837564748703386 ], "name": "u6", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 21 }, { "datums": [ { "expr": "\u0011[__18.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__16.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.544008'),float('-0.501150'),float('-inf'),float('-0.213993'),float('-0.373850'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1935.5832579428857, 47.143642329854558 ], "name": "u7", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 22 }, { "datums": [ { "expr": "\u0011[__19.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__17.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.544008'),float('0.373850'),float('-inf'),float('-0.213993'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2551.1445306498435, 49.837564748703386 ], "name": "u8", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 23 }, { "datums": [ { "expr": "\u0011[__20.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__21.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.213993'),float('-0.501150'),float('-inf'),float('0.544008'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1017.3987729100747, 130.37604412577616 ], "name": "u9", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 24 }, { "datums": [ { "expr": "\u0011[__22.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__23.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf-0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.544008'),float('-0.501150'),float('-inf'),float('-0.213993'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2240.838258411778, 129.2119723032246 ], "name": "u10", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 25 }, { "datums": [ { "expr": "\u0011[__24.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__25.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yiim-Xf-0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.544008'),float('-0.501150'),float('-inf'),float('0.544008'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1632.612334293477, 195.84594703003449 ], "name": "u11", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 26 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__11.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaa-f-1X-Xf1a-f-0.5Y-Yf0.5niiiaa-f0.302X-Xf0.456a-f-0.123Y-Yf0.123aa-f0.302X-Xf0.456a-f0.252Y-Yf0.502iaa-f0.302X-Xf0.456a-f-0.502Y-Yf-0.252aa-f-0.456X-Xf-0.302a-f-0.123Y-Yf0.123iaa-f-0.456X-Xf-0.302a-f0.252Y-Yf0.502aa-f-0.456X-Xf-0.302a-f-0.502Y-Yf-0.252',float('-1.000000'),float('-0.500000'),float('-inf'),float('1.000000'),float('0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 158.98383636438476, 239.92106214988971 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 27 }, { "datums": [ { "expr": "\u0011[__27.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__26.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaaa-f-1X-Xf1a-f-0.5Y-Yf0.5niiiaa-f0.302X-Xf0.456a-f-0.123Y-Yf0.123aa-f0.302X-Xf0.456a-f0.252Y-Yf0.502iaa-f0.302X-Xf0.456a-f-0.502Y-Yf-0.252aa-f-0.456X-Xf-0.302a-f-0.123Y-Yf0.123iaa-f-0.456X-Xf-0.302a-f0.252Y-Yf0.502aa-f-0.456X-Xf-0.302a-f-0.502Y-Yf-0.252iiim-Xf0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yiim-Xf-0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-1.000000'),float('-0.501150'),float('-inf'),float('1.000000'),float('0.501150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 160.22809801496771, 387.21790353617195 ], "name": "u12", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 28 } ], "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": "2.5", "name": "dx", "type": "float", "uid": 3 }, { "expr": "2", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__9.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf2.5-Yf2-Zf0aiaiaa-f-2X-Xf2a-f-1.5Y-Yf0.6aa*f-1-f2X*f1-f0.6Y*f-1-X/+*f2-Yf0.6*+f2f-4-+f0.6f2Yf2niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f0.923Y-Yf1.077aa-f1.75X-Xf2a-f0.923Y-Yf1.077iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923im-Xf-1-Yf0.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf1-Yf-0.5-Zf0aa-f-1.498X-Xf-0.502a-f0.423Y-Yf0.577m-Xf1-Yf1.5-Zf0m+*f0.898794X*f0.438371Y+*f-0.438371X*f0.898794Y_m-Xf-1-Yf-1.5-Zf0aa-f0.502X-Xf1.498a-f1.423Y-Yf1.577iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.9375-Yf1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yniaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('0.498851'),float('0.493701'),float('-inf'),float('4.501149'),float('4.600000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ -51.473496505903711, 221.83330031412123 ], "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))", "", "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": 12 }, { "datums": [ { "expr": "var.th", "name": "th", "subdatum": [ -402, -288 ], "type": "float", "uid": 0 }, { "expr": "var.w", "name": "w", "subdatum": [ -404, -249 ], "type": "float", "uid": 1 }, { "expr": "var.dx", "name": "dx", "subdatum": [ -403, -209 ], "type": "float", "uid": 2 }, { "expr": "var.kerf", "name": "kerf", "subdatum": [ -403, -172 ], "type": "float", "uid": 3 }, { "expr": "var.dx / 4", "name": "slot", "subdatum": [ -403, -134 ], "type": "float", "uid": 4 }, { "expr": "\u0013[__34.__2]", "name": "railM1", "subdatum": [ 2016.0978590475634, 593.88929181246056 ], "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -367.92740229477471, 433.79640823787378 ], "name": "railM1", "subgraph": [ { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-1.5X-Xf1.5a-f-1.5Y-Yf0.6',float('-1.500000'),float('-1.500000'),float('-inf'),float('1.500000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 27.72178122489591, -276.27492747908775 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = dx*3/4", "height = w + dx*3/8", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - dx*3/8, y0 + w", "", "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": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__0.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa*f-1-f1.5X*f1-f0.6Y*f-1-X/+*f1.5-Yf0.6*+f1.5f-3-+f0.6f3Yf3',float('1.500000'),float('0.600000'),float('-inf'),float('-1.500000'),float('3.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 326.26563416737304, -280.36456930021745 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Right triangle')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx*3/8", "y0 = w", "", "width = -dx*3/4", "height = dx*3/4", "", "output('shape', fab.shapes.right_triangle(x0, y0, width, height))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x0 + width, y0, 0), (x0, y0 + height, 0)],", " close=True)", "sb.ui.point(x0, y0)", "sb.ui.point(x0 + width, y0, drag=(None, None, None))", "sb.ui.point(x0, y0 + height, drag=(None, None, None))", "", "" ], "uid": 1 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__1.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-1.5X-Xf1.5a-f-1.5Y-Yf0.6aa*f-1-f1.5X*f1-f0.6Y*f-1-X/+*f1.5-Yf0.6*+f1.5f-3-+f0.6f3Yf3',float('-1.500000'),float('-1.500000'),float('-inf'),float('1.500000'),float('3.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 215.62721699042089, -95.281135099095494 ], "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": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__parent.__4]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u0012-0.75", "name": "x", "type": "float", "uid": 0 }, { "expr": "\u00120.75", "name": "y", "type": "float", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aa-f-1.248X-Xf-0.252a-f0.673Y-Yf0.827',float('-1.248000'),float('0.673000'),float('-inf'),float('-0.252000'),float('0.827000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 97.421671283151483, 133.03790773184292 ], "name": "r2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 =-dx*3/16", "y0 = dx*3/16", "", "width = slot - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2", "", "output('x', x0)", "output('y', y0)", "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": 3 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__3.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__3.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__3.__9]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u00120.75", "name": "x", "type": "float", "uid": 0 }, { "expr": "\u00122.25", "name": "y", "type": "float", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aa-f0.252X-Xf1.248a-f2.173Y-Yf2.327',float('0.252000'),float('2.173000'),float('-inf'),float('1.248000'),float('2.327000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 414.72995964422012, 133.03790773184292 ], "name": "r3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 = dx*3/16", "y0 = dx*9/16", "", "width = slot - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2", "", "output('x', x0)", "output('y', y0)", "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": 4 }, { "datums": [ { "expr": "\u0011[__3.__0]", "name": "x", "type": "float", "uid": 0 }, { "expr": "\u0011[__3.__1]", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "45", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__3.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.75-Yf0.75-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0.75-Yf-0.75-Zf0aa-f-1.248X-Xf-0.252a-f0.673Y-Yf0.827',float('-1.156587'),float('0.343413'),float('-inf'),float('-0.343413'),float('1.156587'),float('inf'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 89.32707209026708, 409.87320012848954 ], "name": "r4", "script": [ "import fab", "import math", "", "title('Rotate (Z)')", "", "input('x', float)", "input('y', float)", "input('_z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_z(shape, a, x, y))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(x + math.cos(rad), y + math.sin(rad), _z),", " (x, y, _z),", " (x + 1, y, _z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (x + math.cos(math.radians(a_)) * 0.3,", " y + math.sin(math.radians(a_)) * 0.3, _z)", " 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(y - this.y, x - this.x))", "sb.ui.point(x + math.cos(rad), y + math.sin(rad), _z,", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 5 }, { "datums": [ { "expr": "\u0011[__4.__0]", "name": "x", "type": "float", "uid": 0 }, { "expr": "\u0011[__4.__1]", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "45", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__4.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0.75-Yf2.25-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0.75-Yf-2.25-Zf0aa-f0.252X-Xf1.248a-f2.173Y-Yf2.327',float('0.343414'),float('1.843414'),float('-inf'),float('1.156586'),float('2.656586'),float('inf'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 417.96779932137383, 409.87320012848954 ], "name": "r5", "script": [ "import fab", "import math", "", "title('Rotate (Z)')", "", "input('x', float)", "input('y', float)", "input('_z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_z(shape, a, x, y))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(x + math.cos(rad), y + math.sin(rad), _z),", " (x, y, _z),", " (x + 1, y, _z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (x + math.cos(math.radians(a_)) * 0.3,", " y + math.sin(math.radians(a_)) * 0.3, _z)", " 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(y - this.y, x - this.x))", "sb.ui.point(x + math.cos(rad), y + math.sin(rad), _z,", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 6 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5',float('0.302000'),float('-0.748000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 879.35995331578488, -695.84904961951997 ], "name": "r6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0", "", "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": 7 }, { "datums": [ { "expr": "\u0011[__7.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__7.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__7.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__7.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002',float('0.302000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1196.6747205940474, -695.98112149623694 ], "name": "r7", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx*5/16", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 8 }, { "datums": [ { "expr": "\u0011[__37.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__37.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__37.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__37.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f1X-Xf1.121a-f1.923Y-Yf2.077',float('1.000000'),float('1.923000'),float('-inf'),float('1.121000'),float('2.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2160.4866239912635, -699.40269340655379 ], "name": "r8", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx*3/8 - dx/8", "y0 = -dx/4 + dx*3/4", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0, x0 + width", "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": 9 }, { "datums": [ { "expr": "\u0011[__10.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__10.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__10.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__10.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923',float('-1.121000'),float('-1.077000'),float('-inf'),float('-1.000000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2795.1032007134022, -699.40917232374773 ], "name": "r10", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx*3/8 + dx/8", "y0 = -dx/4", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width, x0", "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": 11 }, { "datums": [ { "expr": "\u0011[__11.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__11.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__11.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__11.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923',float('-1.500000'),float('-1.077000'),float('-inf'),float('-1.250000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 3114.0304089130464, -699.41241178234463 ], "name": "r11", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx*3/8 + dx*1/16", "y0 = -dx/4", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width - kerf, x0", "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": 12 }, { "datums": [ { "expr": "\u0011[__7.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__8.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002',float('0.302000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1062.9675623259736, -521.03136633524946 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 13 }, { "datums": [ { "expr": "\u0011[__38.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__37.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('-0.302000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1702.1768335711495, -518.61807278815559 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 14 }, { "datums": [ { "expr": "\u0011[__9.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__10.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f1X-Xf1.121a-f1.923Y-Yf2.077aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077',float('1.000000'),float('1.923000'),float('-inf'),float('1.500000'),float('2.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2329.630013452841, -515.62306954289693 ], "name": "u3", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 15 }, { "datums": [ { "expr": "\u0011[__13.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__14.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('0.456000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1381.7114863284717, -444.25953297286333 ], "name": "u4", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 16 }, { "datums": [ { "expr": "\u0011[__16.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__40.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1X-Xf1.121a-f1.923Y-Yf2.077aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077iaa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923',float('-1.500000'),float('-1.502000'),float('-inf'),float('1.500000'),float('2.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2027.1346856817154, -446.73799490194745 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__5.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.75-Yf0.75-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0.75-Yf-0.75-Zf0aa-f-1.248X-Xf-0.252a-f0.673Y-Yf0.827m-Xf0.75-Yf2.25-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0.75-Yf-2.25-Zf0aa-f0.252X-Xf1.248a-f2.173Y-Yf2.327',float('-1.156587'),float('0.343413'),float('-inf'),float('1.156586'),float('2.656586'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 274.17960062005608, 589.06033671264822 ], "name": "u6", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 18 }, { "datums": [ { "expr": "\u0011[__42.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__42.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__42.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__42.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf1.4375-Yf2.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.373850'),float('2.037711'),float('-inf'),float('1.501150'),float('2.165009'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2166.4510012540445, -307.8874447955771 ], "name": "p2", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = dx*3/8 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 + (th-kerf)/2 + r*math.sin(math.pi/8) + dx*3/4", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 21 }, { "datums": [ { "expr": "\u0011[__21.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__21.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__21.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__21.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf1.4375-Yf1.89864-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.373850'),float('1.834991'),float('-inf'),float('1.501150'),float('1.962290'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2483.9915246946757, -309.00751666538366 ], "name": "p3", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = dx*3/8 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 - (th-kerf)/2 - r*math.sin(math.pi/8) + dx*3/4", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 22 }, { "datums": [ { "expr": "\u0011[__22.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__22.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__22.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__22.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.4375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-1.501150'),float('-0.962292'),float('-inf'),float('-1.373850'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2797.421751092174, -308.89637308629727 ], "name": "p4", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx*3/8 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 + (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 23 }, { "datums": [ { "expr": "\u0011[__23.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__23.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__23.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__23.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.4375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-1.501150'),float('-1.165009'),float('-inf'),float('-1.373850'),float('-1.037710'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 3110.1827272640971, -309.67676689095964 ], "name": "p5", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx*3/8 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 - (th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 24 }, { "datums": [ { "expr": "\u0011[__19.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__20.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1057.2827757009982, -133.09163955396443 ], "name": "u7", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 25 }, { "datums": [ { "expr": "\u0011[__41.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__42.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('-0.120455'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1739.4351608160182, -134.32518817080896 ], "name": "u8", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 26 }, { "datums": [ { "expr": "\u0011[__21.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__22.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf1.4375-Yf2.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.4375-Yf1.89864-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.373850'),float('1.834991'),float('-inf'),float('1.501150'),float('2.165009'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2345.1075316866782, -139.25938263818702 ], "name": "u9", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 27 }, { "datums": [ { "expr": "\u0011[__25.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__26.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1377.4466815336179, -59.962388357533939 ], "name": "u10", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 28 }, { "datums": [ { "expr": "\u0011[__28.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__44.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.4375-Yf2.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.4375-Yf1.89864-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.4375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.4375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-1.501150'),float('-1.506299'),float('-inf'),float('1.501150'),float('2.165009'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2048.4495880536024, -61.552442638386992 ], "name": "u11", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 29 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002',float('0.340500'),float('-1.498000'),float('-inf'),float('0.417500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 875.6034131615811, 102.33103073723532 ], "name": "r12", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = (w+th)/2", "y0 = -dx*5/16", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "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": 30 }, { "datums": [ { "expr": "\u0011[__36.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__31.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaiaa-f-1.5X-Xf1.5a-f-1.5Y-Yf0.6aa*f-1-f1.5X*f1-f0.6Y*f-1-X/+*f1.5-Yf0.6*+f1.5f-3-+f0.6f3Yf3naa-f1.423X-Xf1.577a-f3.502Y-Yf4.498niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1X-Xf1.121a-f1.923Y-Yf2.077aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077iaa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923im-Xf-0.75-Yf0.75-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0.75-Yf-0.75-Zf0aa-f-1.248X-Xf-0.252a-f0.673Y-Yf0.827m-Xf0.75-Yf2.25-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0.75-Yf-2.25-Zf0aa-f0.252X-Xf1.248a-f2.173Y-Yf2.327',float('-1.500000'),float('-1.500000'),float('-inf'),float('1.500000'),float('3.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1697.4404592275016, 234.17092232073381 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 32 }, { "datums": [ { "expr": "\u0011[__17.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__18.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1X-Xf1.121a-f1.923Y-Yf2.077aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077iaa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923im-Xf-0.75-Yf0.75-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0.75-Yf-0.75-Zf0aa-f-1.248X-Xf-0.252a-f0.673Y-Yf0.827m-Xf0.75-Yf2.25-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0.75-Yf-2.25-Zf0aa-f0.252X-Xf1.248a-f2.173Y-Yf2.327',float('-1.500000'),float('-1.502000'),float('-inf'),float('1.500000'),float('2.656586'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1688.9479891428618, 100.2846902124393 ], "name": "u12", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 31 }, { "datums": [ { "expr": "\u0011[__32.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__29.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaaiaa-f-1.5X-Xf1.5a-f-1.5Y-Yf0.6aa*f-1-f1.5X*f1-f0.6Y*f-1-X/+*f1.5-Yf0.6*+f1.5f-3-+f0.6f3Yf3naa-f1.423X-Xf1.577a-f3.502Y-Yf4.498niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1X-Xf1.121a-f1.923Y-Yf2.077aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077iaa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923im-Xf-0.75-Yf0.75-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0.75-Yf-0.75-Zf0aa-f-1.248X-Xf-0.252a-f0.673Y-Yf0.827m-Xf0.75-Yf2.25-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0.75-Yf-2.25-Zf0aa-f0.252X-Xf1.248a-f2.173Y-Yf2.327iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.4375-Yf2.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.4375-Yf1.89864-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.4375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.4375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-1.501150'),float('-1.506299'),float('-inf'),float('1.501150'),float('3.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1695.8055099143892, 369.05468003371402 ], "name": "u13", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 33 }, { "datums": [ { "expr": "\u0011[__33.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__46.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaaiaa-f-1.5X-Xf1.5a-f-1.5Y-Yf0.6aa*f-1-f1.5X*f1-f0.6Y*f-1-X/+*f1.5-Yf0.6*+f1.5f-3-+f0.6f3Yf3naa-f1.423X-Xf1.577a-f3.502Y-Yf4.498niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1X-Xf1.121a-f1.923Y-Yf2.077aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077iaa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923im-Xf-0.75-Yf0.75-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0.75-Yf-0.75-Zf0aa-f-1.248X-Xf-0.252a-f0.673Y-Yf0.827m-Xf0.75-Yf2.25-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0.75-Yf-2.25-Zf0aa-f0.252X-Xf1.248a-f2.173Y-Yf2.327iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.4375-Yf2.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.4375-Yf1.89864-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.4375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.4375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yniaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-1.501150'),float('-1.506299'),float('-inf'),float('1.501150'),float('3.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1692.6056673458822, 504.79486394889864 ], "name": "d1", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 34 }, { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__parent.__4]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u0012fab.types.Shape('aa-f1.423X-Xf1.577a-f3.502Y-Yf4.498',float('1.423000'),float('3.502000'),float('-inf'),float('1.577000'),float('4.498000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 23.081156437468337, -489.19084305936974 ], "name": "r13", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 = dx*3/8", "y0 = dx*3/4 + dx/4", "", "height = slot - kerf", "width = th - kerf", "", "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": 35 }, { "datums": [ { "expr": "\u0011[__2.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__35.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaa-f-1.5X-Xf1.5a-f-1.5Y-Yf0.6aa*f-1-f1.5X*f1-f0.6Y*f-1-X/+*f1.5-Yf0.6*+f1.5f-3-+f0.6f3Yf3naa-f1.423X-Xf1.577a-f3.502Y-Yf4.498',float('-1.500000'),float('-1.500000'),float('-inf'),float('1.500000'),float('3.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 562.97165150656872, -87.839548462017817 ], "name": "d2", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 36 }, { "datums": [ { "expr": "\u0011[__38.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__38.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__38.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__38.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002',float('-0.456000'),float('-1.502000'),float('-inf'),float('-0.302000'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1833.1261682647068, -698.64306521466881 ], "name": "r14", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx*5/16", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 37 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__8.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__8.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5',float('-0.456000'),float('-0.748000'),float('-inf'),float('-0.302000'),float('-0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1517.8124133437739, -696.50998098062155 ], "name": "r15", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0", "", "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": 38 }, { "datums": [ { "expr": "\u0011[__9.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__9.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__9.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__9.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077',float('1.250000'),float('1.923000'),float('-inf'),float('1.500000'),float('2.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 2474.9391651939309, -699.02707980499429 ], "name": "r9", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx*3/8 - dx*1/16", "y0 = -dx/4 + dx*3/4", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0, x0 + width + kerf", "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": 10 }, { "datums": [ { "expr": "\u0011[__11.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__12.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923',float('-1.500000'),float('-1.077000'),float('-inf'),float('-1.000000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2987.5114494941613, -520.26321290588214 ], "name": "u14", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 39 }, { "datums": [ { "expr": "\u0011[__15.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__39.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f1X-Xf1.121a-f1.923Y-Yf2.077aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077iaa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923',float('-1.500000'),float('-1.077000'),float('-inf'),float('1.500000'),float('2.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2661.3464352493202, -444.22474332733009 ], "name": "u15", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 40 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.374947'),float('-1.506299'),float('-inf'),float('0.637545'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 886.84042842031988, -307.1973446714419 ], "name": "p0", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 19 }, { "datums": [ { "expr": "\u0011[__19.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__19.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__19.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__19.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('0.120455'),float('-1.506299'),float('-inf'),float('0.383053'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1204.3764107471325, -306.09712673827778 ], "name": "p1", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) + (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 20 }, { "datums": [ { "expr": "\u0011[__20.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__20.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__20.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__20.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.383053'),float('-1.506299'),float('-inf'),float('-0.120455'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1530.5385212018482, -308.21818106764243 ], "name": "p6", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 41 }, { "datums": [ { "expr": "\u0011[__41.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__41.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__41.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__41.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.637545'),float('-1.506299'),float('-inf'),float('-0.374947'),float('-1.243701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1848.0745035286609, -307.11796313447826 ], "name": "p7", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/2)*11/16", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8) - (w+th)/2", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 42 }, { "datums": [ { "expr": "\u0011[__23.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__24.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-1.4375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.4375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-1.501150'),float('-1.165009'),float('-inf'),float('-1.373850'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2969.8792387035805, -139.29081856566208 ], "name": "u16", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 43 }, { "datums": [ { "expr": "\u0011[__27.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__43.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf1.4375-Yf2.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.4375-Yf1.89864-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.4375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.4375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-1.501150'),float('-1.165009'),float('-inf'),float('1.501150'),float('2.165009'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2666.4242411141022, -66.328961221743839 ], "name": "u17", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 44 }, { "datums": [ { "expr": "\u0011[__30.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__30.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__30.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__30.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-0.417500'),float('-1.498000'),float('-inf'),float('-0.340500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1179.109066567798, 102.38168655397376 ], "name": "r16", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -(w+th)/2", "y0 = -dx*5/16", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "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": 45 }, { "datums": [ { "expr": "\u0011[__30.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__45.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-0.417500'),float('-1.498000'),float('-inf'),float('0.417500'),float('-1.002000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1059.6051555173578, 271.94874100914973 ], "name": "u18", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 46 } ], "uid": 13 }, { "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": "-3", "name": "dx", "type": "float", "uid": 3 }, { "expr": "-2.5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__13.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf-3-Yf-2.5-Zf0aiaaiaa-f-1.5X-Xf1.5a-f-1.5Y-Yf0.6aa*f-1-f1.5X*f1-f0.6Y*f-1-X/+*f1.5-Yf0.6*+f1.5f-3-+f0.6f3Yf3naa-f1.423X-Xf1.577a-f3.502Y-Yf4.498niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1X-Xf1.121a-f1.923Y-Yf2.077aa-f1.25X-Xf1.5a-f1.923Y-Yf2.077iaa-f-1.121X-Xf-1a-f-1.077Y-Yf-0.923aa-f-1.5X-Xf-1.25a-f-1.077Y-Yf-0.923im-Xf-0.75-Yf0.75-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0.75-Yf-0.75-Zf0aa-f-1.248X-Xf-0.252a-f0.673Y-Yf0.827m-Xf0.75-Yf2.25-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0.75-Yf-2.25-Zf0aa-f0.252X-Xf1.248a-f2.173Y-Yf2.327iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.4375-Yf2.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.4375-Yf1.89864-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.4375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.4375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yniaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-4.501150'),float('-4.006299'),float('-inf'),float('-1.498850'),float('1.100000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ -51.473496505903654, 435.33038837131659 ], "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))", "", "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": 14 }, { "datums": [ { "expr": "var.th", "name": "th", "subdatum": [ -401, -285 ], "type": "float", "uid": 0 }, { "expr": "var.w", "name": "w", "subdatum": [ -403, -249 ], "type": "float", "uid": 1 }, { "expr": "var.dx", "name": "dx", "subdatum": [ -402, -213 ], "type": "float", "uid": 2 }, { "expr": "var.kerf", "name": "kerf", "subdatum": [ -402, -177 ], "type": "float", "uid": 3 }, { "expr": "var.dx / 4", "name": "slot", "subdatum": [ -402, -141 ], "type": "float", "uid": 4 }, { "expr": "\u0013[__35.__5]", "name": "railMInf", "subdatum": [ 1660.6092523915411, 461.33775601755008 ], "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -366.05496891540946, 648.54536560065048 ], "name": "railMInf", "subgraph": [ { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-2X-Xf2a-f-1.5Y-Yf0.6',float('-2.000000'),float('-1.500000'),float('-inf'),float('2.000000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -35, -283 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = dx", "height = w + dx*3/8", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - dx*3/8, y0 + w", "", "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": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__parent.__4]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u0012fab.types.Shape('aa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077',float('-1.498000'),float('-0.077000'),float('-inf'),float('-0.502000'),float('0.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -42, -64 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 =-dx/4", "y0 = 0", "", "width = slot - kerf", "height = th - kerf", "", "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": 1 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__7]", "name": "w", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__6]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__1.__9]", "name": "slot", "type": "float", "uid": 9 }, { "expr": "\u0012fab.types.Shape('aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077',float('0.502000'),float('-0.077000'),float('-inf'),float('1.498000'),float('0.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 252, -66 ], "name": "r2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 = dx/4", "y0 = 0", "", "width = slot - kerf", "height = th - kerf", "", "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": 2 }, { "datums": [ { "expr": "\u0011[__1.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__2.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077',float('-1.498000'),float('-0.077000'),float('-inf'),float('1.498000'),float('0.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 156, 147 ], "name": "u0", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 3 }, { "datums": [ { "expr": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__0]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__6]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__0.__7]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923',float('1.500000'),float('-1.077000'),float('-inf'),float('1.621000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 564.29186608514624, -755.84859105474209 ], "name": "r6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx/2 - dx/8", "y0 = -dx/4", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0, x0 + width", "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": 13 }, { "datums": [ { "expr": "\u0011[__13.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__13.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__13.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__13.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923',float('1.750000'),float('-1.077000'),float('-inf'),float('2.000000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 887.4998695159793, -755.68258015774438 ], "name": "r7", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx/2 - dx*1/16", "y0 = -dx/4", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0, x0 + width + kerf", "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": 14 }, { "datums": [ { "expr": "\u0011[__14.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__14.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__14.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__14.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923',float('-1.621000'),float('-1.077000'),float('-inf'),float('-1.500000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1204.5542645565642, -754.99705766256022 ], "name": "r8", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx/2 + dx/8", "y0 = -dx/4", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width, x0", "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": 15 }, { "datums": [ { "expr": "\u0011[__15.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__15.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__15.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__15.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('-1.750000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1529.2419158526286, -755.83104676556206 ], "name": "r9", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx/2 + dx*1/16", "y0 = -dx/4", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width - kerf, x0", "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": 16 }, { "datums": [ { "expr": "\u0011[__13.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__14.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923',float('1.500000'),float('-1.077000'),float('-inf'),float('2.000000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 748.27705945828779, -578.29581306428406 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 18 }, { "datums": [ { "expr": "\u0011[__15.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__16.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('-1.500000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1396.2026585120379, -580.50716323170298 ], "name": "u3", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 19 }, { "datums": [ { "expr": "\u0011[__18.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__19.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923',float('-2.000000'),float('-1.077000'),float('-inf'),float('2.000000'),float('-0.923000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1079.9795845711292, -487.63045620010746 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 21 }, { "datums": [ { "expr": "\u0011[__34.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__30.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaaa-f-2X-Xf2a-f-1.5Y-Yf0.6niaa*f1-f-2X*f1-f0Y*f1-X/+*f-2-Yf0*+f-2f0.6-+f0f0.6Yf0.6aa*f-1-f2X*f1-f0Y*f-1-X/+*f2-Yf0*+f2f-0.6-+f0f0.6Yf0.6niiiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077',float('-2.000000'),float('-1.500000'),float('-inf'),float('2.000000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1037.1521408952244, 183.688210003074 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 22 }, { "datums": [ { "expr": "\u0011[__7.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__7.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__7.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__7.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('-1.165009'),float('-inf'),float('2.001149'),float('-1.037710'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1124.4135589032658, -359.28961519033089 ], "name": "p0", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = dx/2 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 - (th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 6 }, { "datums": [ { "expr": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__0]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__0.__6]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__0.__7]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('-0.962292'),float('-inf'),float('2.001149'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 804.38998736157805, -359.45562608732928 ], "name": "p1", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = dx/2 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 + (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 7 }, { "datums": [ { "expr": "\u0011[__6.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__6.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__6.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__6.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-0.962292'),float('-inf'),float('-1.873850'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1440.8974515342884, -358.79155838841427 ], "name": "p4", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx/2 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 + (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 8 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__8.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__8.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('-1.873850'),float('-1.037710'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1752.9190738501616, -358.62554749141611 ], "name": "p5", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx/2 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/4 - (th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 9 }, { "datums": [ { "expr": "\u0011[__7.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('1.873850'),float('-1.165009'),float('-inf'),float('2.001149'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 965.21875067622841, -187.1162679425305 ], "name": "u7", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 24 }, { "datums": [ { "expr": "\u0011[__8.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__9.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('-1.873850'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1614.0660456016517, -184.78228486725914 ], "name": "u8", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 25 }, { "datums": [ { "expr": "\u0011[__24.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__25.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.165009'),float('-inf'),float('2.001149'),float('-0.834992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1308.3142627411107, -107.760843383306 ], "name": "u10", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 27 }, { "datums": [ { "expr": "\u0011[__22.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__27.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaaaa-f-2X-Xf2a-f-1.5Y-Yf0.6niaa*f1-f-2X*f1-f0Y*f1-X/+*f-2-Yf0*+f-2f0.6-+f0f0.6Yf0.6aa*f-1-f2X*f1-f0Y*f-1-X/+*f2-Yf0*+f2f-0.6-+f0f0.6Yf0.6niiiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077iim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-2.001149'),float('-1.500000'),float('-inf'),float('2.001149'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1039.1459661717322, 350.32540605712347 ], "name": "u11", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 28 }, { "datums": [ { "expr": "\u0011[__21.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__3.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077',float('-2.000000'),float('-1.077000'),float('-inf'),float('2.000000'),float('0.077000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1039.1459661717322, 28.066683389894365 ], "name": "u12", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 30 }, { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa*f1-f-2X*f1-f0Y*f1-X/+*f-2-Yf0*+f-2f0.6-+f0f0.6Yf0.6',float('-2.000000'),float('0.000000'),float('-inf'),float('-1.400000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -341.84158701301692, -636.92182485915873 ], "name": "r10", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Right triangle')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx/2", "y0 = 0", "", "width = w", "height = w", "", "output('shape', fab.shapes.right_triangle(x0, y0, width, height))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x0 + width, y0, 0), (x0, y0 + height, 0)],", " close=True)", "sb.ui.point(x0, y0)", "sb.ui.point(x0 + width, y0, drag=(None, None, None))", "sb.ui.point(x0, y0 + height, drag=(None, None, None))", "", "" ], "uid": 31 }, { "datums": [ { "expr": "\u0011[__31.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__31.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__31.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__31.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa*f-1-f2X*f1-f0Y*f-1-X/+*f2-Yf0*+f2f-0.6-+f0f0.6Yf0.6',float('2.000000'),float('0.000000'),float('-inf'),float('1.400000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -64.173174540560296, -634.98412643965446 ], "name": "r11", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Right triangle')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = dx/2", "y0 = 0", "", "width = -w", "height = w", "", "output('shape', fab.shapes.right_triangle(x0, y0, width, height))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x0 + width, y0, 0), (x0, y0 + height, 0)],", " close=True)", "sb.ui.point(x0, y0)", "sb.ui.point(x0 + width, y0, drag=(None, None, None))", "sb.ui.point(x0, y0 + height, drag=(None, None, None))", "", "" ], "uid": 32 }, { "datums": [ { "expr": "\u0011[__31.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__32.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa*f1-f-2X*f1-f0Y*f1-X/+*f-2-Yf0*+f-2f0.6-+f0f0.6Yf0.6aa*f-1-f2X*f1-f0Y*f-1-X/+*f2-Yf0*+f2f-0.6-+f0f0.6Yf0.6',float('-2.000000'),float('0.000000'),float('-inf'),float('1.400000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -185.43293635140068, -464.3885710365513 ], "name": "u13", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 33 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__33.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaa-f-2X-Xf2a-f-1.5Y-Yf0.6niaa*f1-f-2X*f1-f0Y*f1-X/+*f-2-Yf0*+f-2f0.6-+f0f0.6Yf0.6aa*f-1-f2X*f1-f0Y*f-1-X/+*f2-Yf0*+f2f-0.6-+f0f0.6Yf0.6',float('-2.000000'),float('-1.500000'),float('-inf'),float('2.000000'),float('0.600000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 181.71930720167336, -444.53019909324337 ], "name": "d2", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 34 }, { "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[__28.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0iaaaa-f-2X-Xf2a-f-1.5Y-Yf0.6niaa*f1-f-2X*f1-f0Y*f1-X/+*f-2-Yf0*+f-2f0.6-+f0f0.6Yf0.6aa*f-1-f2X*f1-f0Y*f-1-X/+*f2-Yf0*+f2f-0.6-+f0f0.6Yf0.6niiiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077iim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.600000'),float('-2.001149'),float('-inf'),float('1.500000'),float('2.001149'),float('inf'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1335.2100969042347, 319.58893226748711 ], "name": "r12", "script": [ "import fab", "import math", "", "title('Rotate (Z)')", "", "input('x', float)", "input('y', float)", "input('_z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_z(shape, a, x, y))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(x + math.cos(rad), y + math.sin(rad), _z),", " (x, y, _z),", " (x + 1, y, _z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (x + math.cos(math.radians(a_)) * 0.3,", " y + math.sin(math.radians(a_)) * 0.3, _z)", " 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(y - this.y, x - this.x))", "sb.ui.point(x + math.cos(rad), y + math.sin(rad), _z,", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 35 } ], "uid": 15 }, { "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": "-2", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__15.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf-2-Zf0m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0iaaaa-f-2X-Xf2a-f-1.5Y-Yf0.6niaa*f1-f-2X*f1-f0Y*f1-X/+*f-2-Yf0*+f-2f0.6-+f0f0.6Yf0.6aa*f-1-f2X*f1-f0Y*f-1-X/+*f2-Yf0*+f2f-0.6-+f0f0.6Yf0.6niiiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077iim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.600000'),float('-4.001149'),float('-inf'),float('1.500000'),float('0.001149'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ -51.473496505903711, 653.33797828887532 ], "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))", "", "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": 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": "1", "name": "dx", "type": "float", "uid": 3 }, { "expr": "4.5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__10.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf1-Yf4.5-Zf0iaaa-f-1X-Xf1a-f-0.5Y-Yf0.5niiiaa-f0.302X-Xf0.456a-f-0.123Y-Yf0.123aa-f0.302X-Xf0.456a-f0.252Y-Yf0.502iaa-f0.302X-Xf0.456a-f-0.502Y-Yf-0.252aa-f-0.456X-Xf-0.302a-f-0.123Y-Yf0.123iaa-f-0.456X-Xf-0.302a-f0.252Y-Yf0.502aa-f-0.456X-Xf-0.302a-f-0.502Y-Yf-0.252iiim-Xf0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yiim-Xf-0.480358-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf-0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-0.480358-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.277642-Yf0.4375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.000000'),float('3.998850'),float('-inf'),float('2.000000'),float('5.001150'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 579.99676394495532, 51.937730240437929 ], "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))", "", "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": "var.th", "name": "th", "subdatum": [ -397, -466 ], "type": "float", "uid": 0 }, { "expr": "var.dx", "name": "dx", "subdatum": [ -396, -424 ], "type": "float", "uid": 1 }, { "expr": "var.kerf", "name": "kerf", "subdatum": [ -397, -382 ], "type": "float", "uid": 2 }, { "expr": "\u0013[__26.__2]", "name": "mInfCnxtr", "subdatum": [ 1486.6242982427539, 452.56079827457984 ], "type": "_fabtypes.Shape", "uid": 3 } ], "inspector": [ 271.95729715110519, 246.70453160263406 ], "name": "mInfConnector", "subgraph": [ { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.75X-Xf0.75a-f-0.75Y-Yf0.75',float('-0.750000'),float('-0.750000'),float('-inf'),float('0.750000'),float('0.750000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -37, -473 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = dx*3/8", "height = width", "", "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": 8 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__6]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__8.__7]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.077X-Xf0.077a-f0.002Y-Yf0.25',float('-0.077000'),float('0.002000'),float('-inf'),float('0.077000'),float('0.250000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 404.48118057218483, -666.84735175414266 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = -dx*3/16 + dx/4", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0", "", "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": "\u0011[__0.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__0.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__0.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.077X-Xf0.077a-f-0.752Y-Yf-0.252',float('-0.077000'),float('-0.752000'),float('-inf'),float('0.077000'),float('-0.252000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 704.32823335156525, -666.84735175414244 ], "name": "r2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = -dx/8", "", "width = th - kerf", "height = dx/8 - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2 - kerf, 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": 1 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.371X-Xf-0.25a-f-0.327Y-Yf-0.173',float('-0.371000'),float('-0.327000'),float('-inf'),float('-0.250000'),float('-0.173000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1015.7369895308377, -666.21757215349828 ], "name": "r3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx*3/16 + dx/8", "y0 = dx*3/16 - dx/4", "", "width = dx/32 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width, x0", "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": 2 }, { "datums": [ { "expr": "\u0011[__2.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__2.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__2.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.75X-Xf-0.5a-f-0.327Y-Yf-0.173',float('-0.750000'),float('-0.327000'),float('-inf'),float('-0.500000'),float('-0.173000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1314.0223389103255, -664.65586875360566 ], "name": "r4", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = -dx*3/16 + dx*1/16", "y0 = dx*3/16 - dx/4", "", "width = dx/16 - kerf", "height = th - kerf", "", "xmin, xmax = x0 - width - kerf, x0", "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": 3 }, { "datums": [ { "expr": "\u0011[__5.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__5.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__5.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.173X-Xf0.327a-f0.5Y-Yf0.75',float('0.173000'),float('0.500000'),float('-inf'),float('0.327000'),float('0.750000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1914.3462240697304, -665.5877925528539 ], "name": "r5", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "y0 = dx*3/16 - dx*1/16", "x0 = -dx*3/16 + dx/4", "", "height = dx/16 - kerf", "width = th - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0, y0 + height + kerf", "", "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": 4 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__3.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f0.173X-Xf0.327a-f0.25Y-Yf0.371',float('0.173000'),float('0.250000'),float('-inf'),float('0.327000'),float('0.371000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1616.0608746902426, -664.02608915296128 ], "name": "r6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "y0 = dx*3/16 - dx/8", "x0 = -dx*3/16 + dx/4", "", "height = dx/32 - kerf", "width = th - kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0, y0 + height", "", "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": 5 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__1.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.077X-Xf0.077a-f0.002Y-Yf0.25aa-f-0.077X-Xf0.077a-f-0.752Y-Yf-0.252',float('-0.077000'),float('-0.752000'),float('-inf'),float('0.077000'),float('0.250000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 555.30356545667087, -522.63864984157249 ], "name": "u0", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 6 }, { "datums": [ { "expr": "\u0011[__2.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__3.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.371X-Xf-0.25a-f-0.327Y-Yf-0.173aa-f-0.75X-Xf-0.5a-f-0.327Y-Yf-0.173',float('-0.750000'),float('-0.327000'),float('-inf'),float('-0.250000'),float('-0.173000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1179.0479064878332, -522.63864984157249 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 7 }, { "datums": [ { "expr": "\u0011[__5.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__4.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0.173X-Xf0.327a-f0.25Y-Yf0.371aa-f0.173X-Xf0.327a-f0.5Y-Yf0.75',float('0.173000'),float('0.250000'),float('-inf'),float('0.327000'),float('0.750000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1784.1265814532253, -522.63864984157249 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 9 }, { "datums": [ { "expr": "\u0011[__6.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__7.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f-0.077X-Xf0.077a-f0.002Y-Yf0.25aa-f-0.077X-Xf0.077a-f-0.752Y-Yf-0.252iaa-f-0.371X-Xf-0.25a-f-0.327Y-Yf-0.173aa-f-0.75X-Xf-0.5a-f-0.327Y-Yf-0.173',float('-0.750000'),float('-0.752000'),float('-inf'),float('0.077000'),float('0.250000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 861.36658679932737, -439.60516953412002 ], "name": "u3", "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": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__9.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaa-f-0.077X-Xf0.077a-f0.002Y-Yf0.25aa-f-0.077X-Xf0.077a-f-0.752Y-Yf-0.252iaa-f-0.371X-Xf-0.25a-f-0.327Y-Yf-0.173aa-f-0.75X-Xf-0.5a-f-0.327Y-Yf-0.173iaa-f0.173X-Xf0.327a-f0.25Y-Yf0.371aa-f0.173X-Xf0.327a-f0.5Y-Yf0.75',float('-0.750000'),float('-0.752000'),float('-inf'),float('0.327000'),float('0.750000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1477.7871197253996, -439.60516953412002 ], "name": "u4", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 11 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__6]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__8.__7]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.004053'),float('-0.756299'),float('-inf'),float('0.258545'),float('-0.493701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 397.42902780759925, -313.07674435455777 ], "name": "p0", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/4)*5/8", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 12 }, { "datums": [ { "expr": "\u0011[__12.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__12.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__12.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.258545'),float('-0.756299'),float('-inf'),float('0.004053'),float('-0.493701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 705.59481691300527, -313.3963231712724 ], "name": "p1", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "y = -(dx/4)*5/8", "", "N = 8", "r = (dx/2)/(16*math.cos(math.pi/8)) - kerf", "", "x = -(th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 13 }, { "datums": [ { "expr": "\u0011[__13.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__13.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__13.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.6875-Yf-0.148642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.751150'),float('-0.212292'),float('-inf'),float('-0.623850'),float('-0.084992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1013.9520621473291, -312.22304352707397 ], "name": "p2", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx*3/16 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/16 + (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 14 }, { "datums": [ { "expr": "\u0011[__14.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__14.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__14.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.6875-Yf-0.351358-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.751150'),float('-0.415008'),float('-inf'),float('-0.623850'),float('-0.287708'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1319.6880802736332, -312.52743440255495 ], "name": "p3", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x = -dx*3/16 + dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "y = -dx/16 - (th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 15 }, { "datums": [ { "expr": "\u0011[__16.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__16.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__16.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.148642-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.084992'),float('0.623850'),float('-inf'),float('0.212292'),float('0.751150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1929.4036292266269, -312.83182527803592 ], "name": "p5", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "y = dx*3/16 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = dx/16 - (th-kerf)/2 - r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__15.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__15.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__15.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('m-Xf0.351358-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.287708'),float('0.623850'),float('-inf'),float('0.415008'),float('0.751150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1623.667611100323, -312.52743440255495 ], "name": "p4", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "y = dx*3/16 - dx/64", "", "N = 8", "r = (dx/4)/(16*math.cos(math.pi/8)) - kerf", "", "x = dx/16 + (th-kerf)/2 + r*math.sin(math.pi/8)", "", "", "output('shape', fab.shapes.move(fab.shapes.polygon_radius(x, y, r, N), x, y))", "", "# UI", "# (we need to do a bit of work to make the UI work for both even and", "# odd vertex counts; otherwise it will be off for one or the other)", "a_ = 0 if (N % 2) else (math.pi / N)", "sb.ui.wireframe([", " (x + r * math.sin(a_ + a * math.pi * 2/N),", " y + r * math.cos(a_ + a * math.pi * 2/N), 0)", " for a in range(N)], close=True)", "sb.ui.point(x, y)", "sb.ui.point(x + r * math.sin(a_), y + r * math.cos(a_),", " drag=(None, None, None))", "" ], "uid": 16 }, { "datums": [ { "expr": "\u0011[__22.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__21.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.6875-Yf-0.148642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.6875-Yf-0.351358-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf0.351358-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.148642-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.751150'),float('-0.756299'),float('-inf'),float('0.415008'),float('0.751150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1485.679356613763, -77.608729890903632 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 18 }, { "datums": [ { "expr": "\u0011[__12.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__13.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Y',float('-0.258545'),float('-0.756299'),float('-inf'),float('0.258545'),float('-0.493701'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 563.19580234503474, -160.64221019835614 ], "name": "u6", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 19 }, { "datums": [ { "expr": "\u0011[__14.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__15.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf-0.6875-Yf-0.148642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.6875-Yf-0.351358-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.751150'),float('-0.415008'),float('-inf'),float('-0.623850'),float('-0.084992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1186.9401433761968, -160.64221019835614 ], "name": "u7", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 20 }, { "datums": [ { "expr": "\u0011[__16.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__17.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0.351358-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.148642-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('0.084992'),float('0.623850'),float('-inf'),float('0.415008'),float('0.751150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1792.0188183415894, -160.64221019835614 ], "name": "u8", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 21 }, { "datums": [ { "expr": "\u0011[__19.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__20.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.6875-Yf-0.148642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.6875-Yf-0.351358-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.751150'),float('-0.756299'),float('-inf'),float('0.258545'),float('-0.084992'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 869.25882368769135, -77.608729890903632 ], "name": "u9", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 22 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__6]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__8.__7]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0012fab.types.Shape('aa-f-0.0385X-Xf0.0385a-f-0.748Y-Yf-0.252',float('-0.038500'),float('-0.748000'),float('-inf'),float('0.038500'),float('-0.252000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 396.61204662414889, 40.280910985265123 ], "name": "r7", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = -dx/8", "", "width = (th - kerf)/2", "height = dx/8 - kerf", "", "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": 23 }, { "datums": [ { "expr": "\u0011[__8.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__11.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaa-f-0.75X-Xf0.75a-f-0.75Y-Yf0.75niiiaa-f-0.077X-Xf0.077a-f0.002Y-Yf0.25aa-f-0.077X-Xf0.077a-f-0.752Y-Yf-0.252iaa-f-0.371X-Xf-0.25a-f-0.327Y-Yf-0.173aa-f-0.75X-Xf-0.5a-f-0.327Y-Yf-0.173iaa-f0.173X-Xf0.327a-f0.25Y-Yf0.371aa-f0.173X-Xf0.327a-f0.5Y-Yf0.75',float('-0.750000'),float('-0.750000'),float('-inf'),float('0.750000'),float('0.750000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1114.9682236820654, 106.18744987448243 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 24 }, { "datums": [ { "expr": "\u0011[__24.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__18.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaaa-f-0.75X-Xf0.75a-f-0.75Y-Yf0.75niiiaa-f-0.077X-Xf0.077a-f0.002Y-Yf0.25aa-f-0.077X-Xf0.077a-f-0.752Y-Yf-0.252iaa-f-0.371X-Xf-0.25a-f-0.327Y-Yf-0.173aa-f-0.75X-Xf-0.5a-f-0.327Y-Yf-0.173iaa-f0.173X-Xf0.327a-f0.25Y-Yf0.371aa-f0.173X-Xf0.327a-f0.5Y-Yf0.75iiim-Xf0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.6875-Yf-0.148642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.6875-Yf-0.351358-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf0.351358-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.148642-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Y',float('-0.751150'),float('-0.756299'),float('-inf'),float('0.750000'),float('0.751150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1120.0247689141836, 242.71417114167411 ], "name": "u10", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 25 }, { "datums": [ { "expr": "\u0011[__25.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__23.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaaa-f-0.75X-Xf0.75a-f-0.75Y-Yf0.75niiiaa-f-0.077X-Xf0.077a-f0.002Y-Yf0.25aa-f-0.077X-Xf0.077a-f-0.752Y-Yf-0.252iaa-f-0.371X-Xf-0.25a-f-0.327Y-Yf-0.173aa-f-0.75X-Xf-0.5a-f-0.327Y-Yf-0.173iaa-f0.173X-Xf0.327a-f0.25Y-Yf0.371aa-f0.173X-Xf0.327a-f0.5Y-Yf0.75iiim-Xf0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.6875-Yf-0.148642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.6875-Yf-0.351358-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf0.351358-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.148642-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ynaa-f-0.0385X-Xf0.0385a-f-0.748Y-Yf-0.252',float('-0.751150'),float('-0.756299'),float('-inf'),float('0.750000'),float('0.751150'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1122.5530415302428, 366.59952932857027 ], "name": "d1", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 26 } ], "uid": 18 }, { "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": "3", "name": "dx", "type": "float", "uid": 3 }, { "expr": "-1", "name": "dy", "type": "float", "uid": 4 }, { "expr": "1", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__18.__3]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf3-Yf-1-Zf1aiaaa-f-0.75X-Xf0.75a-f-0.75Y-Yf0.75niiiaa-f-0.077X-Xf0.077a-f0.002Y-Yf0.25aa-f-0.077X-Xf0.077a-f-0.752Y-Yf-0.252iaa-f-0.371X-Xf-0.25a-f-0.327Y-Yf-0.173aa-f-0.75X-Xf-0.5a-f-0.327Y-Yf-0.173iaa-f0.173X-Xf0.327a-f0.25Y-Yf0.371aa-f0.173X-Xf0.327a-f0.5Y-Yf0.75iiim-Xf0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.127246-Yf-0.625-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.6875-Yf-0.148642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-0.6875-Yf-0.351358-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf0.351358-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0.148642-Yf0.6875-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ynaa-f-0.0385X-Xf0.0385a-f-0.748Y-Yf-0.252',float('2.248850'),float('-1.756299'),float('-inf'),float('3.750000'),float('-0.248850'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 578.23554539344298, 246.56029562123632 ], "name": "t10", "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))", "", "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": 19 }, { "datums": [ { "expr": "var.th", "name": "th", "subdatum": [ -393, -454 ], "type": "float", "uid": 0 }, { "expr": "var.w", "name": "w", "subdatum": [ -391, -413 ], "type": "float", "uid": 1 }, { "expr": "var.dx", "name": "dx", "subdatum": [ -393, -371 ], "type": "float", "uid": 2 }, { "expr": "var.kerf", "name": "kerf", "subdatum": [ -395, -331 ], "type": "float", "uid": 3 }, { "expr": "var.dx / 4", "name": "slot", "subdatum": [ -394, -290 ], "type": "float", "uid": 4 }, { "expr": "0.01", "name": "slit", "subdatum": [ -394, -250 ], "type": "float", "uid": 5 }, { "expr": "16", "name": "nSlit", "subdatum": [ -395, -209 ], "type": "float", "uid": 6 }, { "expr": "\u0013[__11.__2]", "name": "track", "subdatum": [ 1738.1538452932884, 175.61658022393328 ], "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 274.90773302102031, 450.7517010231598 ], "name": "track", "subgraph": [ { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 0 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 7 }, { "expr": "\u0012fab.types.Shape('aa-f-0.3X-Xf0.3a-f-1Y-Yf1',float('-0.300000'),float('-1.000000'),float('-inf'),float('0.300000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 60.506617036554076, -719.11910665797336 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "", "x0 = 0", "y0 = 0", "", "width = w", "height = dx/2", "", "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": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__3]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__parent.__4]", "name": "slot", "type": "float", "uid": 0 }, { "expr": "\u0012fab.types.Shape('aa-f-0.46X-Xf0.46a-f0.496Y-Yf1',float('-0.460000'),float('0.496000'),float('-inf'),float('0.460000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 24.506617036554076, -448.1191066579733 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 = 0", "y0 = dx/4", "", "width = w + 2*th + kerf", "height = slot/2 + kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height, y0", "", "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": 1 }, { "datums": [ { "expr": "\u0011[__1.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__1.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__1.__8]", "name": "kerf", "type": "float", "uid": 8 }, { "expr": "\u0011[__1.__0]", "name": "slot", "type": "float", "uid": 0 }, { "expr": "\u0012fab.types.Shape('aa-f-0.46X-Xf0.46a-f-1Y-Yf-0.496',float('-0.460000'),float('-1.000000'),float('-inf'),float('0.460000'),float('-0.496000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 318.50661703655408, -446.1191066579733 ], "name": "r2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('kerf', float)", "input('slot', float)", "", "x0 = 0", "y0 = -dx/4", "", "width = w + 2*th + kerf", "height = slot/2 + kerf", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0, y0 + height", "", "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": 2 }, { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__5]", "name": "slit", "type": "float", "uid": 1 }, { "expr": "\u0011[__12.__2]", "name": "wSlit", "type": "float", "uid": 2 }, { "expr": "\u0012fab.types.Shape('aa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425',float('-0.050000'),float('0.432500'),float('-inf'),float('0.250000'),float('0.442500'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 26.068724388355463, -206.56545847654684 ], "name": "r3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('slit', float)", "input('wSlit', float)", "", "x0 = w/6", "y0 = dx/8 - wSlit", "", "width = w/2", "height = slit", "", "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": 3 }, { "datums": [ { "expr": "\u0011[__3.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__3.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__3.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__3.__1]", "name": "slit", "type": "float", "uid": 1 }, { "expr": "\u0011[__3.__2]", "name": "wSlit", "type": "float", "uid": 2 }, { "expr": "\u0012fab.types.Shape('aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425',float('-0.450000'),float('0.432500'),float('-inf'),float('-0.150000'),float('0.442500'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 337.06679561557132, -205.47072685605025 ], "name": "r4", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('slit', float)", "input('wSlit', float)", "", "x0 = -w/2", "y0 = dx/8 - wSlit", "", "width = w/2", "height = slit", "", "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": 4 }, { "datums": [ { "expr": "\u0011[__4.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__4.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__4.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__4.__1]", "name": "slit", "type": "float", "uid": 1 }, { "expr": "\u0011[__4.__2]", "name": "wSlit", "type": "float", "uid": 2 }, { "expr": "\u0012fab.types.Shape('aa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38',float('-0.250000'),float('0.370000'),float('-inf'),float('0.050000'),float('0.380000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 636.28381316688638, -204.50799563562489 ], "name": "r5", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('slit', float)", "input('wSlit', float)", "", "x0 = -w/6", "y0 = dx/8 - 2*wSlit", "", "width = w/2", "height = slit", "", "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": 5 }, { "datums": [ { "expr": "\u0011[__5.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__5.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__5.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__5.__1]", "name": "slit", "type": "float", "uid": 1 }, { "expr": "\u0011[__5.__2]", "name": "wSlit", "type": "float", "uid": 2 }, { "expr": "\u0012fab.types.Shape('aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38',float('0.150000'),float('0.370000'),float('-inf'),float('0.450000'),float('0.380000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 947.28188439410212, -204.37599523555375 ], "name": "r6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('slit', float)", "input('wSlit', float)", "", "x0 = w/2", "y0 = dx/8 - 2*wSlit", "", "width = w/2", "height = slit", "", "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))", "output", "", "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": 6 }, { "datums": [ { "expr": "\u0011[__3.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__4.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425',float('-0.450000'),float('0.432500'),float('-inf'),float('0.250000'),float('0.442500'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 191.14184085000329, 12.604821977922029 ], "name": "u0", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 7 }, { "datums": [ { "expr": "\u0011[__5.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38',float('-0.250000'),float('0.370000'),float('-inf'),float('0.450000'),float('0.380000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 771.54485008334177, 12.761830157714485 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 8 }, { "datums": [ { "expr": "\u0011[__7.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__8.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38',float('-0.450000'),float('0.370000'),float('-inf'),float('0.450000'),float('0.442500'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 495.29221464527518, 96.441142959952117 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 9 }, { "datums": [ { "expr": "\u0011[__9.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "0.0", "name": "_x", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 2 }, { "expr": "1", "name": "i", "type": "int", "uid": 3 }, { "expr": "var.nArray-1", "name": "j", "type": "int", "uid": 4 }, { "expr": "0", "name": "dx", "type": "float", "uid": 5 }, { "expr": "-2*var.wSlit", "name": "dy", "type": "float", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0iiiiiim-Xf0-Yf-0-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.125-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.25-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.375-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.5-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.625-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.75-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38',float('-0.450000'),float('-0.380000'),float('-inf'),float('0.450000'),float('0.442500'),float('inf'))", "name": "array", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 780.49720176199708, 174.55688333215028 ], "name": "a0", "script": [ "import fab", "", "title('Array (2D)')", "", "input('shape', fab.types.Shape)", "input('_x', float)", "input('_y', float)", "input('i', int)", "input('j', int)", "input('dx', float)", "input('dy', float)", "", "output('array', fab.shapes.iterate3d(shape, i, j, 1, dx, dy, 0))", "", "# UI", "sb.ui.wireframe([", " (_x + dx, _y, 0), (_x, _y, 0), (_x, _y + dy, 0)], color=sb.color.teal)", "sb.ui.wireframe([", " (_x + dx, _y - 0.3, 0), (_x + dx, _y + 0.3, 0)], color=sb.color.teal)", "sb.ui.wireframe([", " (_x + 0.3, _y + dy, 0), (_x - 0.3, _y + dy, 0)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, 0, color=sb.color.teal)", "sb.ui.point(_x + dx, _y, 0, color=sb.color.teal, drag=(dx, None, None))", "sb.ui.point(_x, _y + dy, 0, color=sb.color.teal, drag=(None, dy, None))", "" ], "uid": 10 }, { "datums": [ { "expr": "\u0011[__14.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__18.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiaa-f-0.3X-Xf0.3a-f-1Y-Yf1iaa-f-0.46X-Xf0.46a-f0.496Y-Yf1aa-f-0.46X-Xf0.46a-f-1Y-Yf-0.496nim-Xf0-Yf0-Zf0iiiiiim-Xf0-Yf-0-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.125-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.25-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.375-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.5-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.625-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.75-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38iaa-f-0.05X-Xf0.25a-f-0.4425Y-Yf-0.4325aa-f-0.45X-Xf-0.15a-f-0.4425Y-Yf-0.4325',float('-0.460000'),float('-1.000000'),float('-inf'),float('0.460000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1406.4722101837895, 92.264576988056589 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 11 }, { "datums": [ { "expr": "\u0011[__1.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__2.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.46X-Xf0.46a-f0.496Y-Yf1aa-f-0.46X-Xf0.46a-f-1Y-Yf-0.496',float('-0.460000'),float('-1.000000'),float('-inf'),float('0.460000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 692.86285705803687, -367.36959179176125 ], "name": "u4", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 13 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__13.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.3X-Xf0.3a-f-1Y-Yf1iaa-f-0.46X-Xf0.46a-f0.496Y-Yf1aa-f-0.46X-Xf0.46a-f-1Y-Yf-0.496',float('-0.460000'),float('-1.000000'),float('-inf'),float('0.460000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 987.90061212395904, -492.99857136821851 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 14 }, { "datums": [ { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 1 }, { "expr": "\u0011[__parent.__6]", "name": "nSlit", "type": "float", "uid": 0 }, { "expr": "\u00120.0625", "name": "wSlit", "type": "float", "uid": 2 }, { "expr": "\u00128.0", "name": "nArray", "type": "float", "uid": 3 } ], "inspector": [ -380.04682514423013, -71.706948140420778 ], "name": "var", "script": [ "import fab", "", "title('slitMath')", "input('dx', float)", "input('nSlit', float)", "", "output('wSlit', (dx/4) / nSlit)", "output('nArray', nSlit/2)" ], "uid": 12 }, { "datums": [ { "expr": "\u0011[__parent.__0]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__parent.__1]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__parent.__2]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__parent.__5]", "name": "slit", "type": "float", "uid": 1 }, { "expr": "\u0011[__12.__2]", "name": "wSlit", "type": "float", "uid": 2 }, { "expr": "\u0012fab.types.Shape('aa-f-0.05X-Xf0.25a-f-0.4425Y-Yf-0.4325',float('-0.050000'),float('-0.442500'),float('-inf'),float('0.250000'),float('-0.432500'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 114.87103602729991, 240.22449746503077 ], "name": "r7", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('slit', float)", "input('wSlit', float)", "", "x0 = w/6", "y0 = -dx/8 + wSlit", "", "width = w/2", "height = slit", "", "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": 15 }, { "datums": [ { "expr": "\u0011[__15.__5]", "name": "th", "type": "float", "uid": 5 }, { "expr": "\u0011[__15.__6]", "name": "w", "type": "float", "uid": 6 }, { "expr": "\u0011[__15.__7]", "name": "dx", "type": "float", "uid": 7 }, { "expr": "\u0011[__15.__1]", "name": "slit", "type": "float", "uid": 1 }, { "expr": "\u0011[__15.__2]", "name": "wSlit", "type": "float", "uid": 2 }, { "expr": "\u0012fab.types.Shape('aa-f-0.45X-Xf-0.15a-f-0.4425Y-Yf-0.4325',float('-0.450000'),float('-0.442500'),float('-inf'),float('-0.150000'),float('-0.432500'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 425.86910725451577, 241.31922908552741 ], "name": "r8", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('th', float)", "input('w', float)", "input('dx', float)", "input('slit', float)", "input('wSlit', float)", "", "x0 = -w/2", "y0 = -dx/8 + wSlit", "", "width = w/2", "height = slit", "", "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": 16 }, { "datums": [ { "expr": "\u0011[__15.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__16.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f-0.05X-Xf0.25a-f-0.4425Y-Yf-0.4325aa-f-0.45X-Xf-0.15a-f-0.4425Y-Yf-0.4325',float('-0.450000'),float('-0.442500'),float('-inf'),float('0.250000'),float('-0.432500'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 297.19728960973322, 445.79593441459986 ], "name": "u3", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__10.__7]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__17.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0-Yf0-Zf0iiiiiim-Xf0-Yf-0-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.125-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.25-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.375-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.5-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.625-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.75-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38iaa-f-0.05X-Xf0.25a-f-0.4425Y-Yf-0.4325aa-f-0.45X-Xf-0.15a-f-0.4425Y-Yf-0.4325',float('-0.450000'),float('-0.442500'),float('-inf'),float('0.450000'),float('0.442500'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1098.7293737087107, 312.95775193752212 ], "name": "u6", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 18 } ], "uid": 20 }, { "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": "3", "name": "dx", "type": "float", "uid": 3 }, { "expr": "-3", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__20.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf3-Yf-3-Zf0aiaa-f-0.3X-Xf0.3a-f-1Y-Yf1iaa-f-0.46X-Xf0.46a-f0.496Y-Yf1aa-f-0.46X-Xf0.46a-f-1Y-Yf-0.496nim-Xf0-Yf0-Zf0iiiiiim-Xf0-Yf-0-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.125-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.25-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.375-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.5-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.625-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38m-Xf0-Yf-0.75-Zf0m-Xf0-Yf0-Zf0iiaa-f-0.05X-Xf0.25a-f0.4325Y-Yf0.4425aa-f-0.45X-Xf-0.15a-f0.4325Y-Yf0.4425iaa-f-0.25X-Xf0.05a-f0.37Y-Yf0.38aa-f0.15X-Xf0.45a-f0.37Y-Yf0.38iaa-f-0.05X-Xf0.25a-f-0.4425Y-Yf-0.4325aa-f-0.45X-Xf-0.15a-f-0.4425Y-Yf-0.4325',float('2.540000'),float('-4.000000'),float('-inf'),float('3.460000'),float('-2.000000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 577.78103632398268, 457.03816402328761 ], "name": "t11", "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))", "", "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": 21 }, { "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": "-2.5", "name": "dx", "type": "float", "uid": 3 }, { "expr": "4.5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__8.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf-2.5-Yf4.5-Zf0aiaaa-f-2X-Xf2a-f-1.5Y-Yf0.6niiiiaa-f0.302X-Xf0.456a-f-0.748Y-Yf-0.5aa-f0.302X-Xf0.456a-f-1.502Y-Yf-1.002iaa-f-0.456X-Xf-0.302a-f-0.748Y-Yf-0.5aa-f-0.456X-Xf-0.302a-f-1.502Y-Yf-1.002iiaa-f1.5X-Xf1.621a-f-1.077Y-Yf-0.923aa-f1.75X-Xf2a-f-1.077Y-Yf-0.923iaa-f-1.621X-Xf-1.5a-f-1.077Y-Yf-0.923aa-f-2X-Xf-1.75a-f-1.077Y-Yf-0.923iaa-f-1.498X-Xf-0.502a-f-0.077Y-Yf0.077aa-f0.502X-Xf1.498a-f-0.077Y-Yf0.077iiim-Xf0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yim-Xf-0.251754-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf-0.506246-Yf-1.375-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.121304Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.121304Yiim-Xf1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yim-Xf-1.9375-Yf-0.898642-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf-1.9375-Yf-1.10136-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-0.0588045Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-0.0588045Yniaa-f0.3405X-Xf0.4175a-f-1.498Y-Yf-1.002aa-f-0.4175X-Xf-0.3405a-f-1.498Y-Yf-1.002',float('-4.501149'),float('2.993701'),float('-inf'),float('-0.498851'),float('5.100000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ -49.969995885782566, 14.350214737410568 ], "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))", "", "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 } ], "protocol": 6, "type": "sb" }