{ "nodes": [ { "datums": [ { "expr": "0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0", "name": "y", "type": "float", "uid": 1 }, { "expr": "s0.edges", "name": "N", "type": "int", "uid": 2 }, { "expr": "s0.thickness*4+s0.kerf", "name": "r", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Y',float('-28.080000'),float('-28.080000'),float('-inf'),float('28.080000'),float('28.080000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -81.29199032029112, -277.89043678289414 ], "name": "p0", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "import math", "", "title('Polygon')", "", "input('x', float)", "input('y', float)", "input('N', int)", "input('r', float)", "", "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, r, None))", "" ], "uid": 0 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "s0.thickness+s0.kerf", "name": "width", "type": "float", "uid": 2 }, { "expr": "(s0.thickness+s0.kerf)*2", "name": "height", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08',float('-3.540000'),float('-7.080000'),float('-inf'),float('3.540000'),float('7.080000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -81, 30 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (center)')", "", "input('x0', float)", "input('y0', float)", "input('width', float)", "input('height', float)", "", "xmin, xmax = x0 - width/2, x0 + width/2", "ymin, ymax = y0 - height/2, y0 + height/2", "", "output('shape', fab.shapes.rectangle(xmin, xmax, ymin, ymax))", "", "def drag_hw(this, x, y, z):", " this.width = abs(2 * (x - this.x0))", " this.height = abs(2 * (y - this.y0))", "", "# UI", "sb.ui.wireframe(", " [(xmin, ymin, 0), (xmax, ymin, 0), (xmax, ymax, 0), (xmin, ymax, 0)],", " close=True)", "sb.ui.point(x0, y0)", "sb.ui.point(xmax, ymax, drag=drag_hw, relative=False)", "" ], "uid": 1 }, { "datums": [ { "expr": "7", "name": "thickness", "type": "float", "uid": 1 }, { "expr": "8", "name": "edges", "type": "int", "uid": 0 }, { "expr": "0.08", "name": "kerf", "type": "float", "uid": 3 }, { "expr": "16", "name": "radius", "type": "float", "uid": 4 } ], "inspector": [ 3208.1263603214429, 298.33078041427399 ], "name": "s0", "script": [ "import fab", "", "title('variables')", "input('thickness', float)", "input('edges', int)", "input('kerf', float)", "input('radius', float)" ], "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": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "p0.r*(math.cos(math.pi/s0.edges))", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__1.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08',float('-3.540000'),float('18.862499'),float('-inf'),float('3.540000'),float('33.022499'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 675.85626144030243, 44.070947655564296 ], "name": "t0", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 3 }, { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "s0.edges", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__3.__7,__7.__7,__19.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915',float('-7.000000'),float('14.527500'),float('-inf'),float('7.000000'),float('33.022499'),float('inf'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1009.6569097690931, 50.370282674572167 ], "name": "r1", "script": [ "import fab", "import math", "", "title('Rotate (Z)')", "", "input('x', float)", "input('y', float)", "input('_z', float)", "input('a', float)", "", "b = ((360/a)/2) if (a % 2) else 0", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_z(shape, b, 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": 4 }, { "datums": [ { "expr": "\u0011[__4.__5]", "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": "p0.N", "name": "n", "type": "int", "uid": 3 }, { "expr": "\u0012fab.types.Shape('iiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915',float('-33.022499'),float('-33.022499'),float('-inf'),float('33.022499'),float('33.022499'),float('inf'))", "name": "array", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1380.2603147752241, 55.127932555564449 ], "name": "a0", "script": [ "import fab", "import math", "", "title('Array (polar)')", "", "input('shape', fab.types.Shape)", "input('x', float)", "input('y', float)", "input('n', int)", "", "output('array', fab.shapes.iterate_polar(shape, x, y, n))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * 0.3 + x,", " math.sin(i/36. * 2*math.pi) * 0.3 + y, 0)", " for i in range(36)], close=True, color=sb.color.teal)", "", "sb.ui.point(x, y, 0, color=sb.color.teal)", "" ], "uid": 5 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__5.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('am-Xf0-Yf0-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Yniiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915',float('-28.080000'),float('-28.080000'),float('-inf'),float('28.080000'),float('28.080000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1717.6237542080808, -151.80112157962958 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 6 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "p0.r*(math.cos(math.pi/s0.edges))-s0.thickness", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__10.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5',float('-7.000000'),float('18.942499'),float('-inf'),float('7.000000'),float('29.442499'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 666.40554194972356, 541.27908088233414 ], "name": "t1", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 7 }, { "datums": [ { "expr": "0.0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "s0.thickness", "name": "x1", "type": "float", "uid": 2 }, { "expr": "s0.thickness*1.5", "name": "y1", "type": "float", "uid": 3 }, { "expr": "-s0.thickness", "name": "x2", "type": "float", "uid": 4 }, { "expr": "s0.thickness*1.5", "name": "y2", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5',float('-7.000000'),float('0.000000'),float('-inf'),float('7.000000'),float('10.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ 323.45917218727413, 537.89401110063602 ], "name": "t2", "script": [ "import fab", "", "title('Triangle')", "", "input('x0', float)", "input('y0', float)", "input('x1', float)", "input('y1', float)", "input('x2', float)", "input('y2', float)", "", "output('shape', fab.shapes.triangle(x0, y0, x1, y1, x2, y2))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x1, y1, 0), (x2, y2, 0)], close=True)", "sb.ui.point(x0, y0, 0)", "sb.ui.point(x1, y1, 0)", "sb.ui.point(x2, y2, 0)", "" ], "uid": 10 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "s0.thickness/4", "name": "width", "type": "float", "uid": 2 }, { "expr": "s0.thickness/4", "name": "height", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875',float('-0.875000'),float('-0.875000'),float('-inf'),float('0.875000'),float('0.875000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -717.81273970091115, 301.17351830246673 ], "name": "r2", "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": 8 }, { "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": "s0.thickness/2", "name": "dx", "type": "float", "uid": 3 }, { "expr": "-s0.thickness/2", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__24.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('2.625000'),float('-4.375000'),float('-inf'),float('4.375000'),float('-2.625000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ -100.61605483573102, 298.88886877673048 ], "name": "t3", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 9 }, { "datums": [ { "expr": "0.0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "\u0011[__9.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-4.375000'),float('-4.375000'),float('-inf'),float('-2.625000'),float('-2.625000'),float('inf'))", "name": "reflected", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 275.6667443216017, 268.42973479036152 ], "name": "r3", "script": [ "import fab", "", "title('Reflect (X)')", "", "input('x0', float)", "input('_y', float)", "input('_z', float)", "", "input('shape', fab.types.Shape)", "output('reflected', fab.shapes.reflect_x(shape, x0))", "", "# UI", "sb.ui.wireframe([", " (x0, _y - 1, _z + 1),", " (x0, _y + 1, _z + 1),", " (x0, _y + 1, _z - 1),", " (x0, _y - 1, _z - 1)], color=sb.color.teal, close=True)", "", "sb.ui.point(x0, _y, _z, color=sb.color.teal)", "" ], "uid": 11 }, { "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": "p0.r*(math.cos(math.pi/s0.edges))", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__14.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-4.375000'),float('21.567499'),float('-inf'),float('4.375000'),float('23.317499'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 1030.1933852580928, 295.04738553791788 ], "name": "t4", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 12 }, { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "s0.edges", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__12.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-4.375000'),float('21.567499'),float('-inf'),float('4.375000'),float('23.317499'),float('inf'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1364.8001967899215, 313.1787891184602 ], "name": "r4", "script": [ "import fab", "import math", "", "title('Rotate (Z)')", "", "input('x', float)", "input('y', float)", "input('_z', float)", "input('a', float)", "", "b = ((360/a)/2) if (a % 2) else 0", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_z(shape, b, 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": 13 }, { "datums": [ { "expr": "\u0011[__11.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__9.__7]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-4.375000'),float('-4.375000'),float('-inf'),float('4.375000'),float('-2.625000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 654.37883831594058, 379.11116577497813 ], "name": "u0", "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[__13.__5]", "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": "p0.N", "name": "n", "type": "int", "uid": 3 }, { "expr": "\u0012fab.types.Shape('iiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-23.317499'),float('-23.317499'),float('-inf'),float('23.317499'),float('23.317499'),float('inf'))", "name": "array", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1734.0215060664218, 318.1237173676991 ], "name": "a1", "script": [ "import fab", "import math", "", "title('Array (polar)')", "", "input('shape', fab.types.Shape)", "input('x', float)", "input('y', float)", "input('n', int)", "", "output('array', fab.shapes.iterate_polar(shape, x, y, n))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * 0.3 + x,", " math.sin(i/36. * 2*math.pi) * 0.3 + y, 0)", " for i in range(36)], close=True, color=sb.color.teal)", "", "sb.ui.point(x, y, 0, color=sb.color.teal)", "" ], "uid": 15 }, { "datums": [ { "expr": "\u0011[__6.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__15.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iam-Xf0-Yf0-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Yniiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915iiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-28.080000'),float('-28.080000'),float('-inf'),float('28.080000'),float('28.080000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2085.1114117623802, 89.008708486299227 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 16 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "s0.thickness", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "\u0011[__16.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1iam-Xf0-Yf0-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Yniiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915iiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4a-f0Z-Zf7',float('-28.080000'),float('-28.080000'),float('0.000000'),float('28.080000'),float('28.080000'),float('7.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 2432.9046986255121, 79.118851987821529 ], "name": "e0", "script": [ "import fab", "", "title('Extrude')", "", "input('_x', float)", "input('_y', float)", "input('zmin', float)", "input('zmax', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.extrude_z(shape, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(_x, _y, zmin), (_x, _y, zmax)], color=sb.color.green)", "sb.ui.point(_x, _y, zmin, color=sb.color.green)", "sb.ui.point(_x, _y, zmax, color=sb.color.green)", "", "" ], "uid": 17 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "s0.thickness+s0.kerf", "name": "width", "type": "float", "uid": 2 }, { "expr": "s0.thickness/4+s0.kerf", "name": "height", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915',float('-3.540000'),float('-0.915000'),float('-inf'),float('3.540000'),float('0.915000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 295.04738553791782, -359.33145277802282 ], "name": "r5", "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": 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": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "p0.r*(math.cos(math.pi/s0.edges))-s0.thickness*1.5", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__18.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915',float('-3.540000'),float('14.527500'),float('-inf'),float('3.540000'),float('16.357500'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 664.26869481441838, -362.62807161084862 ], "name": "t5", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 19 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "s0.thickness*0.2", "name": "width", "type": "float", "uid": 2 }, { "expr": "s0.thickness*0.2", "name": "height", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('0.000000'),float('0.000000'),float('-inf'),float('1.400000'),float('1.400000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -1455.4572146926341, 529.10732266855621 ], "name": "r6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Right triangle')", "", "input('x0', float)", "input('y0', float)", "input('width', float)", "input('height', float)", "", "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=(width, None, None))", "sb.ui.point(x0, y0 + height, drag=(None, height, None))", "", "" ], "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": "270", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__20.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-0.000000'),float('-1.400000'),float('-inf'),float('1.400000'),float('0.000000'),float('inf'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -1099.4223807474368, 540.64548858344699 ], "name": "r7", "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": 22 }, { "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": "-s0.thickness*0.18", "name": "dx", "type": "float", "uid": 3 }, { "expr": "s0.thickness*0.18", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__22.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-1.260000'),float('-0.140000'),float('-inf'),float('0.140000'),float('1.260000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ -735.14599972017515, 545.59041683268595 ], "name": "t7", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 23 }, { "datums": [ { "expr": "\u0011[__8.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__23.__7]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4',float('-0.875000'),float('-0.875000'),float('-inf'),float('0.875000'),float('0.875000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -384.05609402421697, 590.09477107583564 ], "name": "d1", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 24 }, { "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": "30", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__17.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf30-Zf0am__f1iam-Xf0-Yf0-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Yniiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915iiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4a-f0Z-Zf7',float('-28.080000'),float('1.920000'),float('0.000000'),float('28.080000'),float('58.080002'),float('7.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 2843.3478527400525, 67.580686072930874 ], "name": "t6", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 21 }, { "datums": [ { "expr": "\u0011[__21.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf30-Zf0am__f1iam-Xf0-Yf0-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Yniiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915iiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4a-f0Z-Zf7',float('-28.080000'),float('1.920000'),float('0.000000'),float('28.080000'),float('58.080002'),float('7.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 3194.3911807687327, 95.86265886140437 ], "name": "m0", "script": [ "import fab", "", "title('Mesh (.stl)')", "", "input('shape', fab.types.Shape)", "output('out', shape)", "", "sb.export.stl(shape)", "" ], "uid": 25 }, { "datums": [ { "expr": "\u0011[__17.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('am__f1iam-Xf0-Yf0-Zf0aaaaaaam-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf0-Yf0-Zf0-f-25.9425Ym-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf0-Yf0-Zf0-f-25.9425Yniiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0iim-Xf0-Yf25.9425-Zf0aa-f-3.54X-Xf3.54a-f-7.08Y-Yf7.08m-Xf0-Yf18.9425-Zf0ni-*f-10.5-Xf7*f-7-Yf10.5i-*f10.5-Xf0*f-7-Yf0-*f0-Xf-7*f14-Yf10.5m-Xf0-Yf15.4425-Zf0aa-f-3.54X-Xf3.54a-f-0.915Y-Yf0.915iiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f0.707107Y+*f-0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1Y+*f-1X*f6.12323e-17Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f0.707107Y+*f-0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-0.707107X*f-0.707107Y+*f0.707107X*f-0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf0-Yf0-Zf0m+*f0.707107X*f-0.707107Y+*f0.707107X*f0.707107Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf25.9425-Zf0im-*f2f0X__m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4m-Xf3.5-Yf-3.5-Zf0aaa-f-0.875X-Xf0.875a-f-0.875Y-Yf0.875nm-Xf-1.26-Yf1.26-Zf0m-Xf0-Yf0-Zf0m+*f-1.83697e-16X*f-1Y+*f1X*f-1.83697e-16Y_m-Xf-0-Yf-0-Zf0aa*f1-f0X*f1-f0Y*f1-X/+*f0-Yf0*+f0f1.4-+f0f1.4Yf1.4a-f0Z-Zf7',float('-28.080000'),float('-28.080000'),float('0.000000'),float('28.080000'),float('28.080000'),float('7.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 2860.4180466709363, 330.88079026355712 ], "name": "h0", "script": [ "import fab", "", "title('Heightmap (.png)')", "", "input('shape', fab.types.Shape)", "output('out', shape)", "", "sb.export.heightmap(shape)", "" ], "uid": 26 } ], "protocol": 6, "type": "sb" }