{ "nodes": [ { "datums": [ { "expr": "-1", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "1", "name": "x1", "type": "float", "uid": 2 }, { "expr": "0.5", "name": "y1", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f-1X-Xf1a-f0Y-Yf0.5',float('-1.000000'),float('0.000000'),float('-inf'),float('1.000000'),float('0.500000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -223.73847818175199, -1.0043448301225482 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (corner)')", "", "input('x0', float)", "input('y0', float)", "input('x1', float)", "input('y1', float)", "", "output('shape', fab.shapes.rectangle(x0, x1, y0, y1))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x1, y0, 0),", " (x1, y1, 0), (x0, y1, 0)], close=True)", "sb.ui.point(x0, y0)", "sb.ui.point(x1, y1)", "", "" ], "uid": 1 }, { "datums": [ { "expr": "\u0011[__1.__2]", "name": "x0", "type": "float", "uid": 0 }, { "expr": "\u0011[__1.__3]", "name": "y0", "type": "float", "uid": 1 }, { "expr": "\u0011[__1.__2]", "name": "x1", "type": "float", "uid": 2 }, { "expr": "r0.y1+0.5", "name": "y1", "type": "float", "uid": 3 }, { "expr": "\u0011[__1.__0]", "name": "x2", "type": "float", "uid": 4 }, { "expr": "\u0011[__1.__3]", "name": "y2", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5',float('-1.000000'),float('0.500000'),float('-inf'),float('1.000000'),float('1.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ 193.44604570419239, -128.13948891615644 ], "name": "t0", "script": [ "import fab", "", "title('Triangle')", "", "input('x0', float)", "input('y0', float)", "input('x1', float)", "input('y1', float)", "input('x2', float)", "input('y2', float)", "", "output('shape', fab.shapes.triangle(x0, y0, x1, y1, x2, y2))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x1, y1, 0), (x2, y2, 0)], close=True)", "sb.ui.point(x0, y0, 0)", "sb.ui.point(x1, y1, 0)", "sb.ui.point(x2, y2, 0)", "" ], "uid": 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": "\u0011[__0.__2]", "name": "dx", "type": "float", "uid": 3 }, { "expr": "0", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__2.__6,__4.__4,__1.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5',float('5.000000'),float('-1.000000'),float('-inf'),float('7.000000'),float('1.000000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 1158.5458483561151, -63.712299042445778 ], "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": 5 }, { "datums": [ { "expr": "\u0011[__1.__4,__2.__6]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5',float('-1.000000'),float('0.000000'),float('-inf'),float('1.000000'),float('1.000000'),float('inf'))", "name": "copy", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 500.03354609165069, 208.96924314277936 ], "name": "c1", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "", "title('Copy')", "", "input('shape', fab.types.Shape)", "output('copy', shape)", "", "" ], "uid": 3 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "\u0011[__3.__1]", "name": "shape", "type": "_fabtypes.Shape", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5',float('-1.000000'),float('-1.000000'),float('-inf'),float('1.000000'),float('0.000000'),float('inf'))", "name": "reflected", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 821.48746358728158, 117.73031412212657 ], "name": "r1", "script": [ "import fab", "", "title('Reflect (Y)')", "", "input('_x', float)", "input('y0', float)", "input('_z', float)", "", "input('shape', fab.types.Shape)", "output('reflected', fab.shapes.reflect_y(shape, y0))", "", "# UI", "sb.ui.wireframe([", " (_x - 1, y0, _z + 1),", " (_x + 1, y0, _z + 1),", " (_x + 1, y0, _z - 1),", " (_x - 1, y0, _z - 1)], color=sb.color.teal, close=True)", "", "sb.ui.point(_x, y0, _z, color=sb.color.teal)", "", "" ], "uid": 4 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "6", "name": "r", "type": "float", "uid": 2 }, { "expr": "0", "name": "_a", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r+qXqYf6',float('-6.000000'),float('-6.000000'),float('-inf'),float('6.000000'),float('6.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 828.87138370385378, -201.34305628031228 ], "name": "c0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/18", "", "import fab", "import math", "", "title('Circle (center)')", "", "input('x0',float)", "input('y0',float)", "input('r',float)", "input('_a',float)", "", "output('shape', fab.shapes.circle(x0, y0, r))", "", "def drag_r(this,x,y,z):", " dx = x - this.x0", " dy = y - this.y0", " this.r = math.sqrt(dx**2 + dy**2)", " this._a = math.atan2(dy, dx)", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x0,", " math.sin(i/36. * 2*math.pi) * r + y0, 0)", " for i in range(36)], close=True)", "sb.ui.point(x0,y0)", "sb.ui.point(x0 + r*math.cos(_a),", " y0 + r*math.sin(_a),", " drag=drag_r, relative=False)", "", "" ], "uid": 0 }, { "datums": [ { "expr": "\u0011[__5.__7]", "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": "10", "name": "n", "type": "int", "uid": 3 }, { "expr": "\u0012fab.types.Shape('iiiiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.809017X*f0.587785Y+*f-0.587785X*f0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.309017X*f0.951057Y+*f-0.951057X*f0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.309017X*f0.951057Y+*f-0.951057X*f-0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.809017X*f0.587785Y+*f-0.587785X*f-0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.809017X*f-0.587785Y+*f0.587785X*f-0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.309017X*f-0.951057Y+*f0.951057X*f-0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.309017X*f-0.951057Y+*f0.951057X*f0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.809017X*f-0.587785Y+*f0.587785X*f0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5',float('-7.000000'),float('-6.966416'),float('-inf'),float('7.000000'),float('6.966416'),float('inf'))", "name": "array", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1506.0773708340282, -62.309410923211836 ], "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": 6 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('a-r+qXqYf6niiiiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.809017X*f0.587785Y+*f-0.587785X*f0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.309017X*f0.951057Y+*f-0.951057X*f0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.309017X*f0.951057Y+*f-0.951057X*f-0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.809017X*f0.587785Y+*f-0.587785X*f-0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.809017X*f-0.587785Y+*f0.587785X*f-0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.309017X*f-0.951057Y+*f0.951057X*f-0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.309017X*f-0.951057Y+*f0.951057X*f0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.809017X*f-0.587785Y+*f0.587785X*f0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5',float('-6.000000'),float('-6.000000'),float('-inf'),float('6.000000'),float('6.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1888.1863755401134, -188.44547819125637 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 7 }, { "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": "2", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "\u0011[__7.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1a-r+qXqYf6niiiiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.809017X*f0.587785Y+*f-0.587785X*f0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.309017X*f0.951057Y+*f-0.951057X*f0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.309017X*f0.951057Y+*f-0.951057X*f-0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.809017X*f0.587785Y+*f-0.587785X*f-0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.809017X*f-0.587785Y+*f0.587785X*f-0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.309017X*f-0.951057Y+*f0.951057X*f-0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.309017X*f-0.951057Y+*f0.951057X*f0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.809017X*f-0.587785Y+*f0.587785X*f0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5a-f0Z-Zf2',float('-6.000000'),float('-6.000000'),float('0.000000'),float('6.000000'),float('6.000000'),float('2.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 2206.3293419786601, -189.62477899898599 ], "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": 8 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "c0.r*0.7", "name": "r", "type": "float", "uid": 2 }, { "expr": "0", "name": "_a", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r+qXqYf4.2',float('-4.200000'),float('-4.200000'),float('-inf'),float('4.200000'),float('4.200000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1177.3543897122652, -370.99048309358739 ], "name": "c2", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/18", "", "import fab", "import math", "", "title('Circle (center)')", "", "input('x0',float)", "input('y0',float)", "input('r',float)", "input('_a',float)", "", "output('shape', fab.shapes.circle(x0, y0, r))", "", "def drag_r(this,x,y,z):", " dx = x - this.x0", " dy = y - this.y0", " this.r = math.sqrt(dx**2 + dy**2)", " this._a = math.atan2(dy, dx)", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x0,", " math.sin(i/36. * 2*math.pi) * r + y0, 0)", " for i in range(36)], close=True)", "sb.ui.point(x0,y0)", "sb.ui.point(x0 + r*math.cos(_a),", " y0 + r*math.sin(_a),", " drag=drag_r, relative=False)", "", "" ], "uid": 9 }, { "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": "e0.zmax*0.1", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "\u0011[__9.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+qXqYf4.2a-f0Z-Zf0.2',float('-4.200000'),float('-4.200000'),float('0.000000'),float('4.200000'),float('4.200000'),float('0.200000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1501.1858820188579, -525.07306155274512 ], "name": "e1", "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": 10 }, { "datums": [ { "expr": "\u0011[__8.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__13.__5,__10.__5,__15.__7]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aam__f1a-r+qXqYf6niiiiiiiiim-Xf0-Yf0-Zf0m+*f1X*f0Y+*f-0X*f1Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.809017X*f0.587785Y+*f-0.587785X*f0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.309017X*f0.951057Y+*f-0.951057X*f0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.309017X*f0.951057Y+*f-0.951057X*f-0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.809017X*f0.587785Y+*f-0.587785X*f-0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.809017X*f-0.587785Y+*f0.587785X*f-0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f-0.309017X*f-0.951057Y+*f0.951057X*f-0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.309017X*f-0.951057Y+*f0.951057X*f0.309017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5m-Xf0-Yf0-Zf0m+*f0.809017X*f-0.587785Y+*f0.587785X*f0.809017Y_m-Xf-0-Yf-0-Zf0m-Xf6-Yf0-Zf0iini-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5m_-*f2f0Y_iaa-f-1X-Xf1a-f0Y-Yf0.5ni-*f-0.5-Xf1*f0-Yf1i-*f0-Xf1*f-2-Yf0.5-*f0.5-Xf-1*f2-Yf0.5aa-f-1X-Xf1a-f0Y-Yf0.5a-f0Z-Zf2niiam__f1-r+qXqYf1.2a-f0Z-Zf2am__f1-r+qXqYf4.2a-f0Z-Zf0.2m-Xf0-Yf0-Zf1.8am__f1-r+qXqYf4.2a-f0Z-Zf0.2',float('-6.000000'),float('-6.000000'),float('0.000000'),float('6.000000'),float('6.000000'),float('2.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2609.780243962035, -449.26038927187295 ], "name": "d1", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 11 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "c0.r*0.2", "name": "r", "type": "float", "uid": 2 }, { "expr": "0", "name": "_a", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r+qXqYf1.2',float('-1.200000'),float('-1.200000'),float('-inf'),float('1.200000'),float('1.200000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1222.5943298755371, -742.93097789365697 ], "name": "c3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/18", "", "import fab", "import math", "", "title('Circle (center)')", "", "input('x0',float)", "input('y0',float)", "input('r',float)", "input('_a',float)", "", "output('shape', fab.shapes.circle(x0, y0, r))", "", "def drag_r(this,x,y,z):", " dx = x - this.x0", " dy = y - this.y0", " this.r = math.sqrt(dx**2 + dy**2)", " this._a = math.atan2(dy, dx)", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x0,", " math.sin(i/36. * 2*math.pi) * r + y0, 0)", " for i in range(36)], close=True)", "sb.ui.point(x0,y0)", "sb.ui.point(x0 + r*math.cos(_a),", " y0 + r*math.sin(_a),", " drag=drag_r, relative=False)", "", "" ], "uid": 12 }, { "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": "e0.zmax", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "\u0011[__12.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+qXqYf1.2a-f0Z-Zf2',float('-1.200000'),float('-1.200000'),float('0.000000'),float('1.200000'),float('1.200000'),float('2.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1566.8320879994974, -724.57028731607386 ], "name": "e2", "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": 13 }, { "datums": [ { "expr": "\u0011[__10.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('am__f1-r+qXqYf4.2a-f0Z-Zf0.2',float('-4.200000'),float('-4.200000'),float('0.000000'),float('4.200000'),float('4.200000'),float('0.200000'))", "name": "copy", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 1817.0939804819093, -347.53163561129406 ], "name": "c4", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "", "title('Copy')", "", "input('shape', fab.types.Shape)", "output('copy', shape)", "", "" ], "uid": 14 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "0", "name": "dx", "type": "float", "uid": 3 }, { "expr": "0", "name": "dy", "type": "float", "uid": 4 }, { "expr": "e0.zmax-e1.zmax", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__14.__1]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf1.8am__f1-r+qXqYf4.2a-f0Z-Zf0.2',float('-4.200000'),float('-4.200000'),float('1.800000'),float('4.200000'),float('4.200000'),float('2.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 2156.3510533405533, -403.79866232931312 ], "name": "t2", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 15 } ], "protocol": 6, "type": "sb" }