{ "nodes": [ { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "1.61", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "1.61", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+qXqYf1.61a-f0Z-Zf1.61',float('-1.610000'),float('-1.610000'),float('0.000000'),float('1.610000'),float('1.610000'),float('1.610000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 209.0271531839012, -17.887953933577442 ], "name": "c0", "script": [ "import fab", "import math", "", "title('Cylinder (Z)')", "", "input('x', float)", "input('y', float)", "input('zmin', float)", "input('zmax', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))", "", "# UI", "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])", "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmin)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, zmax)", " for i in range(36)], close=True)", "", "sb.ui.point(x, y, zmin)", "sb.ui.point(x, y, zmax)", "sb.ui.point(x + r, y, zmin, drag=(r, None, None))", "" ], "uid": 0 }, { "datums": [ { "expr": "0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0", "name": "y", "type": "float", "uid": 1 }, { "expr": ".5", "name": "z", "type": "float", "uid": 2 }, { "expr": "2", "name": "width", "type": "float", "uid": 3 }, { "expr": "2", "name": "height", "type": "float", "uid": 4 }, { "expr": "1", "name": "depth", "type": "float", "uid": 5 }, { "expr": ".125", "name": "r", "type": "float", "uid": 6 }, { "expr": "\u0012fab.types.Shape('iiiiiiiiiiiiiiiiiiiiiam__f1aa-f-0.9375X-Xf0.9375a-f-0.9375Y-Yf0.9375a-f0Z-Zf1am__f1iaa-f-1X-Xf1a-f-0.9375Y-Yf0.9375aa-f-0.9375X-Xf0.9375a-f-1Y-Yf1a-f0.0625Z-Zf0.9375-r++q-Xf0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.0625f0.0625am__f1-r+q-Xf0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375',float('-1.000000'),float('-1.000000'),float('0.000000'),float('1.000000'),float('1.000000'),float('1.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 210.7512818168093, 210.37446928631138 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "", "import fab", "", "title('Rounded cube (center)')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('width', float)", "input('height', float)", "input('depth', float)", "input('r', float)", "", "xmin, xmax = x - width/2, x + width/2", "ymin, ymax = y - height/2, y + height/2", "zmin, zmax = z - depth/2, z + depth/2", "", "# This is the circle's radius in actual units (not a 0-1 fraction)", "r_ = r * min([width, height, depth])/2", "", "output('shape', fab.shapes.rounded_cube(xmin, xmax, ymin, ymax, zmin, zmax, r))", "", "def drag_hwd(this, dx, dy, dz):", " this.width += 2*dx", " this.height += 2*dy", " this.depth += 2*dz", "", "# UI", "def drag_r(this, x, y, z):", " if abs(this.width) < abs(this.height):", " d = abs(this.width)", " mid = this.ymax + this.height/2 - d / 2", " else:", " d = abs(this.height)", " mid = this.y", " r = 1 - (y - mid) / (d/2)", " this.r = float(min(1, max(0, r)))", "", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(x, y, z)", "sb.ui.point(x + width/2, y + height/2, z + depth/2, drag=drag_hwd)", "sb.ui.point(xmax, ymax - r_, zmax, drag=drag_r, relative=False)", "" ], "uid": 1 }, { "datums": [ { "expr": "\u0011[__0.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__1.__7]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": ".2", "name": "weight", "type": "float", "uid": 2 }, { "expr": "\u0012fab.types.Shape('+*f0.2am__f1-r+qXqYf1.61a-f0Z-Zf1.61*f0.8iiiiiiiiiiiiiiiiiiiiiam__f1aa-f-0.9375X-Xf0.9375a-f-0.9375Y-Yf0.9375a-f0Z-Zf1am__f1iaa-f-1X-Xf1a-f-0.9375Y-Yf0.9375aa-f-0.9375X-Xf0.9375a-f-1Y-Yf1a-f0.0625Z-Zf0.9375-r++q-Xf0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.0625f0.0625am__f1-r+q-Xf0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375',float('-1.610000'),float('-1.610000'),float('0.000000'),float('1.610000'),float('1.610000'),float('1.610000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 3 } ], "inspector": [ 553.2000500088553, -11.149230369217008 ], "name": "m0", "script": [ "# Neil Gershenfeld 2/1/15", "# Matt Keeter 6/13/15", "", "import fab", "", "title('Morph')", "", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "input('weight', float)", "", "output('out', fab.shapes.morph(a, b, weight))", "", "" ], "uid": 2 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "0", "name": "z0", "type": "float", "uid": 2 }, { "expr": "2", "name": "z1", "type": "float", "uid": 3 }, { "expr": "2", "name": "s0", "type": "float", "uid": 4 }, { "expr": "2.4", "name": "s1", "type": "float", "uid": 5 }, { "expr": "\u0011[__2.__3]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m+f0/*-Xf0f2+*f2.4-Zf0*f2-f2Z+f0/*-Yf0f2+*f2.4-Zf0*f2-f2Z_+*f0.2am__f1-r+qXqYf1.61a-f0Z-Zf1.61*f0.8iiiiiiiiiiiiiiiiiiiiiam__f1aa-f-0.9375X-Xf0.9375a-f-0.9375Y-Yf0.9375a-f0Z-Zf1am__f1iaa-f-1X-Xf1a-f-0.9375Y-Yf0.9375aa-f-0.9375X-Xf0.9375a-f-1Y-Yf1a-f0.0625Z-Zf0.9375-r++q-Xf0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.0625f0.0625am__f1-r+q-Xf0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375',float('-6.330520'),float('-6.330520'),float('0.000000'),float('6.330520'),float('6.330520'),float('1.610000'))", "name": "transform", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 551.49806776985, 197.72769807996085 ], "name": "t0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 5/31/15", "", "import fab", "", "title('Taper (XY,Z)')", "", "input('x0', float)", "input('y0', float)", "input('z0', float)", "input('z1', float)", "input('s0', float)", "input('s1', float)", "", "input('shape', fab.types.Shape)", "output('transform', fab.shapes.taper_xy_z(shape, x0, y0, z0, z1, s0, s1))", "", "# UI", "def drag_base(this, dx, dy, dz):", " this.x0 += dx", " this.y0 += dy", " this.z0 += dz", " this.z1 += dz", "", "sb.ui.wireframe([(x0 + s0, y0, z0), (x0, y0, z0),", " (x0, y0, z1), (x0 + s1, y0, z1)], color=sb.color.teal)", "sb.ui.point(x0, y0, z0, color=sb.color.teal, drag=drag_base)", "sb.ui.point(x0 + s0, y0, z0, color=sb.color.teal, drag=(s0, None, None))", "sb.ui.point(x0 + s1, y0, z1, color=sb.color.teal, drag=(s1, None, z1))", "" ], "uid": 3 }, { "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": "1.61", "name": "s", "type": "float", "uid": 3 }, { "expr": "\u0011[__3.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m/Xf1.61Y_m+f0/*-Xf0f2+*f2.4-Zf0*f2-f2Z+f0/*-Yf0f2+*f2.4-Zf0*f2-f2Z_+*f0.2am__f1-r+qXqYf1.61a-f0Z-Zf1.61*f0.8iiiiiiiiiiiiiiiiiiiiiam__f1aa-f-0.9375X-Xf0.9375a-f-0.9375Y-Yf0.9375a-f0Z-Zf1am__f1iaa-f-1X-Xf1a-f-0.9375Y-Yf0.9375aa-f-0.9375X-Xf0.9375a-f-1Y-Yf1a-f0.0625Z-Zf0.9375-r++q-Xf0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.0625f0.0625am__f1-r+q-Xf0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375',float('-10.192138'),float('-6.330520'),float('0.000000'),float('10.192138'),float('6.330520'),float('1.610000'))", "name": "scaled", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 872.4204749313603, 338.20822240843626 ], "name": "s0", "script": [ "import fab", "", "title('Scale (X)')", "", "input('x0', float)", "input('_y', float)", "input('_z', float)", "input('s', float)", "input('shape', fab.types.Shape)", "output('scaled', fab.shapes.scale_x(shape, x0, s))", "", "# UI", "kwargs = {'color':sb.color.teal}", "sb.ui.wireframe([(x0, _y + 0.2*s, _z), (x0, _y - 0.2*s, _z)], **kwargs)", "sb.ui.wireframe([(x0, _y, _z), (x0 + s, _y, _z)], **kwargs)", "sb.ui.wireframe([(x0 + 0.9*s, _y - 0.1*s, _z), (x0 + s, _y, _z),", " (x0 + 0.9*s, _y + 0.1*s, _z)], **kwargs)", "", "sb.ui.point(x0, _y, _z, **kwargs)", "sb.ui.point(x0 + s, _y, _z, color=sb.color.teal, drag=(s,None,None))", "" ], "uid": 4 }, { "datums": [ { "expr": "0", "name": "x", "type": "float", "uid": 0 }, { "expr": "-2", "name": "y", "type": "float", "uid": 1 }, { "expr": "1.1", "name": "z", "type": "float", "uid": 2 }, { "expr": ".6", "name": "width", "type": "float", "uid": 3 }, { "expr": "3", "name": "height", "type": "float", "uid": 4 }, { "expr": "1", "name": "depth", "type": "float", "uid": 5 }, { "expr": "0.25", "name": "r", "type": "float", "uid": 6 }, { "expr": "\u0012fab.types.Shape('iiiiiiiiiiiiiiiiiiiiiam__f1aa-f-0.225X-Xf0.225a-f-3.425Y-Yf-0.575a-f0.6Z-Zf1.6am__f1iaa-f-0.3X-Xf0.3a-f-3.425Y-Yf-0.575aa-f-0.225X-Xf0.225a-f-3.5Y-Yf-0.5a-f0.675Z-Zf1.525-r++q-Xf0.225q-Yf-0.575q-Zf1.525f0.075-r++q-Xf-0.225q-Yf-0.575q-Zf1.525f0.075-r++q-Xf0.225q-Yf-3.425q-Zf1.525f0.075-r++q-Xf-0.225q-Yf-3.425q-Zf1.525f0.075-r++q-Xf0.225q-Yf-0.575q-Zf0.675f0.075-r++q-Xf-0.225q-Yf-0.575q-Zf0.675f0.075-r++q-Xf0.225q-Yf-3.425q-Zf0.675f0.075-r++q-Xf-0.225q-Yf-3.425q-Zf0.675f0.075am__f1-r+q-Xf0.225q-Yf-0.575f0.075a-f0.675Z-Zf1.525a-r+q-Yf-0.575q-Zf1.525f0.075a-f-0.225X-Xf0.225a-r+q-Xf0.225q-Zf1.525f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf-0.225q-Yf-0.575f0.075a-f0.675Z-Zf1.525a-r+q-Yf-3.425q-Zf1.525f0.075a-f-0.225X-Xf0.225a-r+q-Xf-0.225q-Zf1.525f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf0.225q-Yf-3.425f0.075a-f0.675Z-Zf1.525a-r+q-Yf-0.575q-Zf0.675f0.075a-f-0.225X-Xf0.225a-r+q-Xf0.225q-Zf0.675f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf-0.225q-Yf-3.425f0.075a-f0.675Z-Zf1.525a-r+q-Yf-3.425q-Zf0.675f0.075a-f-0.225X-Xf0.225a-r+q-Xf-0.225q-Zf0.675f0.075a-f-3.425Y-Yf-0.575',float('-0.300000'),float('-3.500000'),float('0.600000'),float('0.300000'),float('-0.500000'),float('1.600000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 282.7451986085384, 507.32567064617774 ], "name": "r1", "script": [ "# Neil Gershenfeld 1/24/15", "", "import fab", "", "title('Rounded cube (center)')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('width', float)", "input('height', float)", "input('depth', float)", "input('r', float)", "", "xmin, xmax = x - width/2, x + width/2", "ymin, ymax = y - height/2, y + height/2", "zmin, zmax = z - depth/2, z + depth/2", "", "# This is the circle's radius in actual units (not a 0-1 fraction)", "r_ = r * min([width, height, depth])/2", "", "output('shape', fab.shapes.rounded_cube(xmin, xmax, ymin, ymax, zmin, zmax, r))", "", "def drag_hwd(this, dx, dy, dz):", " this.width += 2*dx", " this.height += 2*dy", " this.depth += 2*dz", "", "# UI", "def drag_r(this, x, y, z):", " if abs(this.width) < abs(this.height):", " d = abs(this.width)", " mid = this.ymax + this.height/2 - d / 2", " else:", " d = abs(this.height)", " mid = this.y", " r = 1 - (y - mid) / (d/2)", " this.r = float(min(1, max(0, r)))", "", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(x, y, z)", "sb.ui.point(x + width/2, y + height/2, z + depth/2, drag=drag_hwd)", "sb.ui.point(xmax, ymax - r_, zmax, drag=drag_r, relative=False)", "" ], "uid": 5 }, { "datums": [ { "expr": "\u0011[__4.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__6]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('am/Xf1.61Y_m+f0/*-Xf0f2+*f2.4-Zf0*f2-f2Z+f0/*-Yf0f2+*f2.4-Zf0*f2-f2Z_+*f0.2am__f1-r+qXqYf1.61a-f0Z-Zf1.61*f0.8iiiiiiiiiiiiiiiiiiiiiam__f1aa-f-0.9375X-Xf0.9375a-f-0.9375Y-Yf0.9375a-f0Z-Zf1am__f1iaa-f-1X-Xf1a-f-0.9375Y-Yf0.9375aa-f-0.9375X-Xf0.9375a-f-1Y-Yf1a-f0.0625Z-Zf0.9375-r++q-Xf0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.9375f0.0625-r++q-Xf0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf0.9375q-Zf0.0625f0.0625-r++q-Xf0.9375q-Yf-0.9375q-Zf0.0625f0.0625-r++q-Xf-0.9375q-Yf-0.9375q-Zf0.0625f0.0625am__f1-r+q-Xf0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.9375f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.9375f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375am__f1-r+q-Xf-0.9375q-Yf-0.9375f0.0625a-f0.0625Z-Zf0.9375a-r+q-Yf-0.9375q-Zf0.0625f0.0625a-f-0.9375X-Xf0.9375a-r+q-Xf-0.9375q-Zf0.0625f0.0625a-f-0.9375Y-Yf0.9375nm+f0/*-Xf0f1.2-+*Yf-0.8f2.88f0Y_iiiiiiiiiiiiiiiiiiiiiam__f1aa-f-0.225X-Xf0.225a-f-3.425Y-Yf-0.575a-f0.6Z-Zf1.6am__f1iaa-f-0.3X-Xf0.3a-f-3.425Y-Yf-0.575aa-f-0.225X-Xf0.225a-f-3.5Y-Yf-0.5a-f0.675Z-Zf1.525-r++q-Xf0.225q-Yf-0.575q-Zf1.525f0.075-r++q-Xf-0.225q-Yf-0.575q-Zf1.525f0.075-r++q-Xf0.225q-Yf-3.425q-Zf1.525f0.075-r++q-Xf-0.225q-Yf-3.425q-Zf1.525f0.075-r++q-Xf0.225q-Yf-0.575q-Zf0.675f0.075-r++q-Xf-0.225q-Yf-0.575q-Zf0.675f0.075-r++q-Xf0.225q-Yf-3.425q-Zf0.675f0.075-r++q-Xf-0.225q-Yf-3.425q-Zf0.675f0.075am__f1-r+q-Xf0.225q-Yf-0.575f0.075a-f0.675Z-Zf1.525a-r+q-Yf-0.575q-Zf1.525f0.075a-f-0.225X-Xf0.225a-r+q-Xf0.225q-Zf1.525f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf-0.225q-Yf-0.575f0.075a-f0.675Z-Zf1.525a-r+q-Yf-3.425q-Zf1.525f0.075a-f-0.225X-Xf0.225a-r+q-Xf-0.225q-Zf1.525f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf0.225q-Yf-3.425f0.075a-f0.675Z-Zf1.525a-r+q-Yf-0.575q-Zf0.675f0.075a-f-0.225X-Xf0.225a-r+q-Xf0.225q-Zf0.675f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf-0.225q-Yf-3.425f0.075a-f0.675Z-Zf1.525a-r+q-Yf-3.425q-Zf0.675f0.075a-f-0.225X-Xf0.225a-r+q-Xf-0.225q-Zf0.675f0.075a-f-3.425Y-Yf-0.575',float('-10.192138'),float('-6.330520'),float('0.000000'),float('10.192138'),float('6.330520'),float('1.610000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1195.6082684018195, 463.702125718003 ], "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", "name": "x0", "type": "float", "uid": 0 }, { "expr": "0", "name": "y0", "type": "float", "uid": 1 }, { "expr": "1.2", "name": "y1", "type": "float", "uid": 2 }, { "expr": "2.4", "name": "s0", "type": "float", "uid": 3 }, { "expr": "1.6", "name": "s1", "type": "float", "uid": 4 }, { "expr": "\u0011[__5.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 }, { "expr": "\u0012fab.types.Shape('m+f0/*-Xf0f1.2-+*Yf-0.8f2.88f0Y_iiiiiiiiiiiiiiiiiiiiiam__f1aa-f-0.225X-Xf0.225a-f-3.425Y-Yf-0.575a-f0.6Z-Zf1.6am__f1iaa-f-0.3X-Xf0.3a-f-3.425Y-Yf-0.575aa-f-0.225X-Xf0.225a-f-3.5Y-Yf-0.5a-f0.675Z-Zf1.525-r++q-Xf0.225q-Yf-0.575q-Zf1.525f0.075-r++q-Xf-0.225q-Yf-0.575q-Zf1.525f0.075-r++q-Xf0.225q-Yf-3.425q-Zf1.525f0.075-r++q-Xf-0.225q-Yf-3.425q-Zf1.525f0.075-r++q-Xf0.225q-Yf-0.575q-Zf0.675f0.075-r++q-Xf-0.225q-Yf-0.575q-Zf0.675f0.075-r++q-Xf0.225q-Yf-3.425q-Zf0.675f0.075-r++q-Xf-0.225q-Yf-3.425q-Zf0.675f0.075am__f1-r+q-Xf0.225q-Yf-0.575f0.075a-f0.675Z-Zf1.525a-r+q-Yf-0.575q-Zf1.525f0.075a-f-0.225X-Xf0.225a-r+q-Xf0.225q-Zf1.525f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf-0.225q-Yf-0.575f0.075a-f0.675Z-Zf1.525a-r+q-Yf-3.425q-Zf1.525f0.075a-f-0.225X-Xf0.225a-r+q-Xf-0.225q-Zf1.525f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf0.225q-Yf-3.425f0.075a-f0.675Z-Zf1.525a-r+q-Yf-0.575q-Zf0.675f0.075a-f-0.225X-Xf0.225a-r+q-Xf0.225q-Zf0.675f0.075a-f-3.425Y-Yf-0.575am__f1-r+q-Xf-0.225q-Yf-3.425f0.075a-f0.675Z-Zf1.525a-r+q-Yf-3.425q-Zf0.675f0.075a-f-0.225X-Xf0.225a-r+q-Xf-0.225q-Zf0.675f0.075a-f-3.425Y-Yf-0.575',float('-1.420000'),float('-3.500000'),float('0.600000'),float('1.420000'),float('-0.500000'),float('1.600000'))", "name": "transform", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ 783.6081218579492, 529.9452865348603 ], "name": "t1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 5/31/15", "", "import fab", "", "title('Taper (XY)')", "", "input('x0', float)", "input('y0', float)", "input('y1', float)", "input('s0', float)", "input('s1', float)", "", "input('shape', fab.types.Shape)", "output('transform', fab.shapes.taper_x_y(shape, x0, y0, y1, s0, s1))", "", "# UI", "def drag_base(this, dx, dy, dz):", " this.x0 += dx", " this.y0 += dy", " this.y1 += dy", "", "sb.ui.wireframe([(x0 + s0, y0, 0), (x0, y0, 0),", " (x0, y1, 0), (x0 + s1, y1, 0)], color=sb.color.teal)", "sb.ui.point(x0, y0, color=sb.color.teal, drag=drag_base)", "sb.ui.point(x0 + s0, y0, color=sb.color.teal, drag=(s0, None, None))", "sb.ui.point(x0 + s1, y1, color=sb.color.teal, drag=(s1, y1, None))", "" ], "uid": 6 } ], "protocol": 6, "type": "sb" }