{ "nodes": [ { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "z", "type": "float", "uid": 2 }, { "expr": "2", "name": "r", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r++qXqYqZf2',float('-2.000000'),float('-2.000000'),float('-2.000000'),float('2.000000'),float('2.000000'),float('2.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -337, -249 ], "name": "s0", "script": [ "import fab", "import math", "", "title('Sphere (center)')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('r', float)", "", "output('shape', fab.shapes.sphere(x, y, z, r))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, z)", " for i in range(36)], close=True)", "sb.ui.wireframe([(x,y,z-r), (x,y,z+r)])", "", "sb.ui.point(x, y, z)", "sb.ui.point(x, y, z + r, drag=(None, None, r))", "sb.ui.point(x, y, z - r, drag=(None, None, r))", "" ], "uid": 0 }, { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "-3.0", "name": "z", "type": "float", "uid": 2 }, { "expr": "3", "name": "r", "type": "float", "uid": 3 }, { "expr": "\u0011[__0.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2',float('-3.103638'),float('-3.103638'),float('-3.103638'),float('3.103638'),float('3.103638'),float('3.103638'))", "name": "repelled", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -332, -53 ], "name": "r0", "script": [ "import fab", "import math", "", "title('Repel')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('r', float)", "input('shape', fab.types.Shape)", "", "output('repelled', fab.shapes.repel(shape, x, y, z, r))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, z)", " for i in range(36)], close=True, color=sb.color.teal)", "", "sb.ui.wireframe([(x,y,z-r), (x,y,z - 0.2*r)])", "sb.ui.wireframe([(x,y,z+r), (x,y,z + 0.2*r)], color=sb.color.teal)", "sb.ui.wireframe([(x, y + 0.2*r, z - 0.8*r), (x, y, z-r),", " (x, y - 0.2*r, z - 0.8*r)], color=sb.color.teal)", "sb.ui.wireframe([(x, y + 0.2*r, z + 0.8*r), (x, y, z+r),", " (x, y - 0.2*r, z + 0.8*r)], color=sb.color.teal)", "", "sb.ui.point(x, y, z, color=sb.color.teal)", "sb.ui.point(x, y, z + r, drag=(None, None, r), color=sb.color.teal)", "sb.ui.point(x, y, z - r, drag=(None, None, r), color=sb.color.teal)", "" ], "uid": 1 }, { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "2.5", "name": "z", "type": "float", "uid": 2 }, { "expr": "2", "name": "r", "type": "float", "uid": 3 }, { "expr": "\u0011[__1.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2',float('-3.839397'),float('-3.839397'),float('-3.839396'),float('3.839397'),float('3.839397'),float('3.839397'))", "name": "attracted", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -335.56953175349662, 169.05586258793579 ], "name": "a0", "script": [ "import fab", "import math", "", "title('Attract')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('r', float)", "input('shape', fab.types.Shape)", "", "output('attracted', fab.shapes.attract(shape, x, y, z, r))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, z)", " for i in range(36)], close=True, color=sb.color.teal)", "", "# Draw little arrows pointing inwards", "sb.ui.wireframe([(x,y,z-r), (x,y,z - 0.2*r)])", "sb.ui.wireframe([(x,y,z+r), (x,y,z + 0.2*r)], color=sb.color.teal)", "sb.ui.wireframe([(x, y + 0.2*r, z - 0.4*r), (x, y, z - 0.2*r),", " (x, y - 0.2*r, z - 0.4*r)], color=sb.color.teal)", "sb.ui.wireframe([(x, y + 0.2*r, z + 0.4*r), (x, y, z + 0.2*r),", " (x, y - 0.2*r, z + 0.4*r)], color=sb.color.teal)", "", "sb.ui.point(x, y, z, color=sb.color.teal)", "sb.ui.point(x, y, z + r, drag=(None, None, r), color=sb.color.teal)", "sb.ui.point(x, y, z - r, drag=(None, None, r), color=sb.color.teal)", "" ], "uid": 5 }, { "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", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "1", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+qXqYf1a-f0Z-Zf1',float('-1.000000'),float('-1.000000'),float('0.000000'),float('1.000000'),float('1.000000'),float('1.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 8.5984296619434808, -242.18910214474136 ], "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": 2 }, { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.05", "name": "y", "type": "float", "uid": 1 }, { "expr": "-0.69", "name": "z", "type": "float", "uid": 2 }, { "expr": "\u0011[__2.__5,__4.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1',float('-1.000000'),float('-0.950000'),float('-1.690000'),float('1.000000'),float('1.050000'),float('0.310000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 262.25210468927617, 14.330716103239133 ], "name": "r1", "script": [ "import fab", "", "title('Recenter')", "", "input('x', float)", "input('y', float)", "input('z', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.recenter(shape, x, y, z))", "", "# UI", "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)", "" ], "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": "1", "name": "r", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r++qXqYqZf1',float('-1.000000'),float('-1.000000'),float('-1.000000'),float('1.000000'),float('1.000000'),float('1.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 292.34660850607833, -242.18910214474136 ], "name": "s1", "script": [ "import fab", "import math", "", "title('Sphere (center)')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('r', float)", "", "output('shape', fab.shapes.sphere(x, y, z, r))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, z)", " for i in range(36)], close=True)", "sb.ui.wireframe([(x,y,z-r), (x,y,z+r)])", "", "sb.ui.point(x, y, z)", "sb.ui.point(x, y, z + r, drag=(None, None, r))", "sb.ui.point(x, y, z - r, drag=(None, None, r))", "" ], "uid": 4 }, { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.05", "name": "y", "type": "float", "uid": 1 }, { "expr": "-2.", "name": "z", "type": "float", "uid": 2 }, { "expr": "1", "name": "r", "type": "float", "uid": 3 }, { "expr": "\u0011[__3.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1',float('-1.367879'),float('-1.317879'),float('-2.057879'),float('1.367879'),float('1.417879'),float('0.677879'))", "name": "repelled", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 241.66423368754693, 210.50275703812912 ], "name": "r2", "script": [ "import fab", "import math", "", "title('Repel')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('r', float)", "input('shape', fab.types.Shape)", "", "output('repelled', fab.shapes.repel(shape, x, y, z, r))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, z)", " for i in range(36)], close=True, color=sb.color.teal)", "", "sb.ui.wireframe([(x,y,z-r), (x,y,z - 0.2*r)])", "sb.ui.wireframe([(x,y,z+r), (x,y,z + 0.2*r)], color=sb.color.teal)", "sb.ui.wireframe([(x, y + 0.2*r, z - 0.8*r), (x, y, z-r),", " (x, y - 0.2*r, z - 0.8*r)], color=sb.color.teal)", "sb.ui.wireframe([(x, y + 0.2*r, z + 0.8*r), (x, y, z+r),", " (x, y - 0.2*r, z + 0.8*r)], color=sb.color.teal)", "", "sb.ui.point(x, y, z, color=sb.color.teal)", "sb.ui.point(x, y, z + r, drag=(None, None, r), color=sb.color.teal)", "sb.ui.point(x, y, z - r, drag=(None, None, r), color=sb.color.teal)", "" ], "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": "20", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__5.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2',float('-3.839397'),float('-4.921005'),float('-4.921004'),float('3.839397'),float('4.921005'),float('4.921005'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ -333.9056852054718, 404.12619411134358 ], "name": "r3", "script": [ "import fab", "import math", "", "title('Rotate (X)')", "", "input('_x', float)", "input('y', float)", "input('z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_x(shape, a, y, z))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(_x, y + math.cos(rad), z + math.sin(rad)),", " (_x, y, z),", " (_x, y + 1, z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (_x, y + math.cos(math.radians(a_)) * 0.3,", " z + math.sin(math.radians(a_)) * 0.3)", " 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(z - this.z, y - this.y))", "sb.ui.point(_x, y + math.cos(rad), z + math.sin(rad),", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 7 }, { "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.1", "name": "r", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r++qXqYqZf0.1',float('-0.100000'),float('-0.100000'),float('-0.100000'),float('0.100000'),float('0.100000'),float('0.100000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 617.65386404960668, -233.59067248279788 ], "name": "s2", "script": [ "import fab", "import math", "", "title('Sphere (center)')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('r', float)", "", "output('shape', fab.shapes.sphere(x, y, z, r))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, z)", " for i in range(36)], close=True)", "sb.ui.wireframe([(x,y,z-r), (x,y,z+r)])", "", "sb.ui.point(x, y, z)", "sb.ui.point(x, y, z + r, drag=(None, None, r))", "sb.ui.point(x, y, z - r, drag=(None, None, r))", "" ], "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": "zmin", "type": "float", "uid": 2 }, { "expr": "0.5", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "0.1", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+qXqYf0.1a-f0Z-Zf0.5',float('-0.100000'),float('-0.100000'),float('0.000000'),float('0.100000'),float('0.100000'),float('0.500000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 616.1082720949139, -32.859107845062077 ], "name": "c1", "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": 9 }, { "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.1", "name": "r", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r++qXqYqZf0.1',float('-0.100000'),float('-0.100000'),float('-0.100000'),float('0.100000'),float('0.100000'),float('0.100000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 616.22079243928317, 190.59852417308059 ], "name": "s3", "script": [ "import fab", "import math", "", "title('Sphere (center)')", "", "input('x', float)", "input('y', float)", "input('z', float)", "input('r', float)", "", "output('shape', fab.shapes.sphere(x, y, z, r))", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x,", " math.sin(i/36. * 2*math.pi) * r + y, z)", " for i in range(36)], close=True)", "sb.ui.wireframe([(x,y,z-r), (x,y,z+r)])", "", "sb.ui.point(x, y, z)", "sb.ui.point(x, y, z + r, drag=(None, None, r))", "sb.ui.point(x, y, z - r, drag=(None, None, r))", "" ], "uid": 10 }, { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.5", "name": "z", "type": "float", "uid": 2 }, { "expr": "\u0011[__10.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-0.100000'),float('-0.100000'),float('0.400000'),float('0.100000'),float('0.100000'),float('0.600000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 616.22079243928317, 378.33090512551337 ], "name": "r4", "script": [ "import fab", "", "title('Recenter')", "", "input('x', float)", "input('y', float)", "input('z', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.recenter(shape, x, y, z))", "", "# UI", "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)", "" ], "uid": 11 }, { "datums": [ { "expr": "-0.36", "name": "x", "type": "float", "uid": 0 }, { "expr": "1.16", "name": "y", "type": "float", "uid": 1 }, { "expr": "-0.66", "name": "z", "type": "float", "uid": 2 }, { "expr": "\u0011[__8.__4,__9.__5,__11.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-0.460000'),float('1.060000'),float('-1.010000'),float('-0.260000'),float('1.260000'),float('-0.310000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 917.16583060730511, -229.29145765182628 ], "name": "r5", "script": [ "import fab", "", "title('Recenter')", "", "input('x', float)", "input('y', float)", "input('z', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.recenter(shape, x, y, z))", "", "# UI", "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)", "" ], "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": "5", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__12.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-0.460000'),float('1.082985'),float('-0.913772'),float('-0.260000'),float('1.343233'),float('-0.199004'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 915.73275899698126, -25.795288985830457 ], "name": "r6", "script": [ "import fab", "import math", "", "title('Rotate (X)')", "", "input('_x', float)", "input('y', float)", "input('z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_x(shape, a, y, z))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(_x, y + math.cos(rad), z + math.sin(rad)),", " (_x, y, z),", " (_x, y + 1, z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (_x, y + math.cos(math.radians(a_)) * 0.3,", " z + math.sin(math.radians(a_)) * 0.3)", " 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(z - this.z, y - this.y))", "sb.ui.point(_x, y + math.cos(rad), z + math.sin(rad),", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 13 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "r5.y", "name": "y0", "type": "float", "uid": 1 }, { "expr": "r5.z", "name": "z0", "type": "float", "uid": 2 }, { "expr": "1", "name": "sx", "type": "float", "uid": 3 }, { "expr": "0.5", "name": "sy", "type": "float", "uid": 4 }, { "expr": "0.9", "name": "sz", "type": "float", "uid": 5 }, { "expr": "\u0011[__13.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-0.460000'),float('1.121493'),float('-0.888395'),float('-0.260000'),float('1.251616'),float('-0.245104'))", "name": "scaled", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 922.89811704860085, 174.83473645951753 ], "name": "s4", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 5/13/15", "", "import fab", "", "title('Scale (3D)')", "", "input('x0', float)", "input('y0', float)", "input('z0', float)", "input('sx', float)", "input('sy', float)", "input('sz', float)", "", "input('shape', fab.types.Shape)", "output('scaled', fab.shapes.scale_xyz(", " shape, x0, y0, z0, sx, sy, sz))", "", "# UI", "sb.ui.wireframe([(x0 + sx, y0, z0), (x0, y0, z0), (x0, y0 + sy, z0)],", " color=sb.color.teal)", "sb.ui.wireframe([(x0, y0, z0), (x0, y0, z0 + sz)],", " color=sb.color.teal)", "sb.ui.wireframe([(x0 + sx, y0 + sx/10, z0), (x0 + sx, y0 - sx/10, z0)],", " color=sb.color.teal)", "sb.ui.wireframe([(x0 + sy/10, y0 + sy, z0), (x0 - sy/10, y0 + sy, z0)],", " color=sb.color.teal)", "sb.ui.wireframe([(x0 + sz/10, y0, z0 + sz), (x0 - sz/10, y0, z0 + sz)],", " color=sb.color.teal)", "", "sb.ui.point(x0, y0, z0, color=sb.color.teal)", "sb.ui.point(x0 + sx, y0, z0, color=sb.color.teal, drag=(sx, None, None))", "sb.ui.point(x0, y0 + sy, z0, color=sb.color.teal, drag=(None, sy, None))", "sb.ui.point(x0, y0, z0 + sz, color=sb.color.teal, drag=(None, None, sz))", "" ], "uid": 14 }, { "datums": [ { "expr": "\u0011[__14.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-0.460000'),float('1.121493'),float('-0.888395'),float('-0.260000'),float('1.251616'),float('-0.245104'))", "name": "copy", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 1218.7740189323849, 100.96127109487847 ], "name": "c2", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "", "title('Copy')", "", "input('shape', fab.types.Shape)", "output('copy', shape)", "", "" ], "uid": 15 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "0.72", "name": "dx", "type": "float", "uid": 3 }, { "expr": "0", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__15.__0]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('0.260000'),float('1.121493'),float('-0.888395'),float('0.460000'),float('1.251616'),float('-0.245104'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 1209.5124391133836, 298.07889494737418 ], "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": 16 }, { "datums": [ { "expr": "\u0011[__7.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__6.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1',float('-3.839397'),float('-4.921005'),float('-4.921004'),float('3.839397'),float('4.921005'),float('4.921005'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ -34.73092432125371, 676.09532678707217 ], "name": "u0", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 17 }, { "datums": [ { "expr": "\u0011[__17.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__15.__1]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-3.839397'),float('-4.921005'),float('-4.921004'),float('3.839397'),float('4.921005'),float('4.921005'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 291.73976429853116, 676.09532678707217 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 18 }, { "datums": [ { "expr": "\u0011[__18.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__16.__7]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-3.839397'),float('-4.921005'),float('-4.921004'),float('3.839397'),float('4.921005'),float('4.921005'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 597.37189832556385, 676.09532678707217 ], "name": "u2", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 19 }, { "datums": [ { "expr": "\u0011[__19.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-3.839397'),float('-4.921005'),float('-4.921004'),float('3.839397'),float('4.921005'),float('4.921005'))", "name": "copy", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 591.54846988423947, 822.98277464326839 ], "name": "c3", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "", "title('Copy')", "", "input('shape', fab.types.Shape)", "output('copy', shape)", "", "" ], "uid": 20 }, { "datums": [ { "expr": "c5.xmin+0.5", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "-r7.y", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "c4.xmin+0.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "-c4.xmin", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "3", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "-c4.xmin+0.5", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5',float('-3.000000'),float('-0.480000'),float('-2.500000'),float('3.000000'),float('3.000000'),float('3.500000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ 972.38898405842838, 671.13906350699369 ], "name": "c4", "script": [ "import fab", "", "title('Cube (corner)')", "", "input('xmin', float)", "input('ymin', float)", "input('zmin', float)", "input('xmax', float)", "input('ymax', float)", "input('zmax', float)", "", "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(xmin, ymin, zmin)", "sb.ui.point(xmax, ymax, zmax)", "" ], "uid": 23 }, { "datums": [ { "expr": "r7.x", "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": "180", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__21.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('3.660603'),float('-5.401005'),float('-4.921004'),float('11.339397'),float('4.441005'),float('4.921004'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 593.60216412455691, 1143.9870400687391 ], "name": "r8", "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": "7.50", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.48", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "z", "type": "float", "uid": 2 }, { "expr": "\u0011[__20.__0]", "name": "shape", "type": "_fabtypes.Shape", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('3.660603'),float('-4.441005'),float('-4.921004'),float('11.339397'),float('5.401005'),float('4.921004'))", "name": "out", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 593.602164124556, 952.05143667942707 ], "name": "r7", "script": [ "import fab", "", "title('Recenter')", "", "input('x', float)", "input('y', float)", "input('z', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.recenter(shape, x, y, z))", "", "# UI", "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)", "" ], "uid": 21 }, { "datums": [ { "expr": "-3.5", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "-2.5", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "c5.xmin+0.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "-c5.xmin", "name": "xmax", "type": "float", "uid": 3 }, { "expr": "3", "name": "ymax", "type": "float", "uid": 4 }, { "expr": "-c5.xmin+0.5", "name": "zmax", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('am__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ 968.57569392486585, 936.79827614517865 ], "name": "c5", "script": [ "import fab", "", "title('Cube (corner)')", "", "input('xmin', float)", "input('ymin', float)", "input('zmin', float)", "input('xmax', float)", "input('ymax', float)", "input('zmax', float)", "", "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))", "", "# UI", "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),", " (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),", " (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)", "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),", " (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)", "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),", " (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)", "sb.ui.point(xmin, ymin, zmin)", "sb.ui.point(xmax, ymax, zmax)", "" ], "uid": 24 }, { "datums": [ { "expr": "\u0011[__24.__6]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__23.__6]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1255.8435506532383, 871.97234387461674 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 25 }, { "datums": [ { "expr": "\u0011[__39.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "copy", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 1782.7161513735623, 1599.7240153176508 ], "name": "c6", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "", "title('Copy')", "", "input('shape', fab.types.Shape)", "output('copy', shape)", "", "" ], "uid": 26 }, { "datums": [ { "expr": "r7.x", "name": "x", "type": "float", "uid": 0 }, { "expr": "r7.y/2", "name": "y", "type": "float", "uid": 1 }, { "expr": "r7.z+0.5", "name": "z", "type": "float", "uid": 2 }, { "expr": "\u0011[__26.__0]", "name": "shape", "type": "_fabtypes.Shape", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('4.000000'),float('-2.510000'),float('-3.000000'),float('11.000000'),float('2.990000'),float('4.000000'))", "name": "out", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 1787.5861448578316, 1884.8326749895225 ], "name": "r9", "script": [ "import fab", "", "title('Recenter')", "", "input('x', float)", "input('y', float)", "input('z', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.recenter(shape, x, y, z))", "", "# UI", "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)", "" ], "uid": 27 }, { "datums": [ { "expr": "c5.xmin+1.25", "name": "x", "type": "float", "uid": 0 }, { "expr": "-r7.y", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "1.5", "name": "ymax", "type": "float", "uid": 2 }, { "expr": "-c4.xmin-0.25", "name": "z", "type": "float", "uid": 3 }, { "expr": "4.5/20", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5',float('-2.475000'),float('-0.480000'),float('2.525000'),float('-2.025000'),float('1.500000'),float('2.975000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1874.1967450623081, 807.8434245958224 ], "name": "c7", "script": [ "import fab", "import math", "", "title('Cylinder (Y)')", "", "input('x', float)", "input('ymin', float)", "input('ymax', float)", "input('z', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder_y(x, ymin, ymax, z, r))", "", "# UI", "sb.ui.wireframe([(x, ymin, z), (x, ymax, z)])", "sb.ui.wireframe([(x, ymin, z), (x+r, ymin, z)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x, ymin,", " math.sin(i/36. * 2*math.pi) * r + z)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x, ymax,", " math.sin(i/36. * 2*math.pi) * r + z)", " for i in range(36)], close=True)", "", "sb.ui.point(x, ymin, z)", "sb.ui.point(x, ymax, z)", "sb.ui.point(x+r, ymin, z, drag=(r, None, None))", "" ], "uid": 28 }, { "datums": [ { "expr": "-c4.xmin-0.75", "name": "x", "type": "float", "uid": 0 }, { "expr": "-r7.y", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "c7.ymax", "name": "ymax", "type": "float", "uid": 2 }, { "expr": "-c4.xmin-0.25", "name": "z", "type": "float", "uid": 3 }, { "expr": "4.5/20", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5',float('2.025000'),float('-0.480000'),float('2.525000'),float('2.475000'),float('1.500000'),float('2.975000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1596.6044859061951, 803.30224295309779 ], "name": "c8", "script": [ "import fab", "import math", "", "title('Cylinder (Y)')", "", "input('x', float)", "input('ymin', float)", "input('ymax', float)", "input('z', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder_y(x, ymin, ymax, z, r))", "", "# UI", "sb.ui.wireframe([(x, ymin, z), (x, ymax, z)])", "sb.ui.wireframe([(x, ymin, z), (x+r, ymin, z)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x, ymin,", " math.sin(i/36. * 2*math.pi) * r + z)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x, ymax,", " math.sin(i/36. * 2*math.pi) * r + z)", " for i in range(36)], close=True)", "", "sb.ui.point(x, ymin, z)", "sb.ui.point(x, ymax, z)", "sb.ui.point(x+r, ymin, z, drag=(r, None, None))", "" ], "uid": 29 }, { "datums": [ { "expr": "-c4.xmin-0.75", "name": "x", "type": "float", "uid": 0 }, { "expr": "-r7.y", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "c7.ymax", "name": "ymax", "type": "float", "uid": 2 }, { "expr": "c4.xmin+1.25", "name": "z", "type": "float", "uid": 3 }, { "expr": "4.5/20", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5',float('2.025000'),float('-0.480000'),float('-1.975000'),float('2.475000'),float('1.500000'),float('-1.525000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1598.5260516602366, 1034.6513412923532 ], "name": "c9", "script": [ "import fab", "import math", "", "title('Cylinder (Y)')", "", "input('x', float)", "input('ymin', float)", "input('ymax', float)", "input('z', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder_y(x, ymin, ymax, z, r))", "", "# UI", "sb.ui.wireframe([(x, ymin, z), (x, ymax, z)])", "sb.ui.wireframe([(x, ymin, z), (x+r, ymin, z)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x, ymin,", " math.sin(i/36. * 2*math.pi) * r + z)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x, ymax,", " math.sin(i/36. * 2*math.pi) * r + z)", " for i in range(36)], close=True)", "", "sb.ui.point(x, ymin, z)", "sb.ui.point(x, ymax, z)", "sb.ui.point(x+r, ymin, z, drag=(r, None, None))", "" ], "uid": 30 }, { "datums": [ { "expr": "c5.xmin+1.25", "name": "x", "type": "float", "uid": 0 }, { "expr": "-r7.y", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "c7.ymax", "name": "ymax", "type": "float", "uid": 2 }, { "expr": "c4.xmin+1.25", "name": "z", "type": "float", "uid": 3 }, { "expr": "4.5/20", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5',float('-2.475000'),float('-0.480000'),float('-1.975000'),float('-2.025000'),float('1.500000'),float('-1.525000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1886.4241897211994, 1038.1885938955866 ], "name": "c10", "script": [ "import fab", "import math", "", "title('Cylinder (Y)')", "", "input('x', float)", "input('ymin', float)", "input('ymax', float)", "input('z', float)", "input('r', float)", "", "output('shape', fab.shapes.cylinder_y(x, ymin, ymax, z, r))", "", "# UI", "sb.ui.wireframe([(x, ymin, z), (x, ymax, z)])", "sb.ui.wireframe([(x, ymin, z), (x+r, ymin, z)])", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x, ymin,", " math.sin(i/36. * 2*math.pi) * r + z)", " for i in range(36)], close=True)", "", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x, ymax,", " math.sin(i/36. * 2*math.pi) * r + z)", " for i in range(36)], close=True)", "", "sb.ui.point(x, ymin, z)", "sb.ui.point(x, ymax, z)", "sb.ui.point(x+r, ymin, z, drag=(r, None, None))", "" ], "uid": 31 }, { "datums": [ { "expr": "0.35", "name": "x", "type": "float", "uid": 0 }, { "expr": "-r7.y", "name": "y", "type": "float", "uid": 1 }, { "expr": "c4.xmin+0.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "1", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "0.225", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('0.125000'),float('-0.705000'),float('-2.500000'),float('0.575000'),float('-0.255000'),float('1.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1599.5299806997289, 1286.0867319565498 ], "name": "c11", "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": 32 }, { "datums": [ { "expr": "-0.35", "name": "x", "type": "float", "uid": 0 }, { "expr": "-r7.y", "name": "y", "type": "float", "uid": 1 }, { "expr": "c4.xmin+0.5", "name": "zmin", "type": "float", "uid": 2 }, { "expr": "1", "name": "zmax", "type": "float", "uid": 3 }, { "expr": "0.225", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-0.575000'),float('-0.705000'),float('-2.500000'),float('-0.125000'),float('-0.255000'),float('1.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1884.1967450623081, 1291.2396714089748 ], "name": "c12", "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": 33 }, { "datums": [ { "expr": "\u0011[__25.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__29.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2173.0988121627629, 804.6120508974393 ], "name": "u3", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 34 }, { "datums": [ { "expr": "\u0011[__34.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__28.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2173.0988121627629, 941.94543307872914 ], "name": "u4", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 35 }, { "datums": [ { "expr": "\u0011[__35.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__30.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2189.2556806546791, 1072.8160678632523 ], "name": "u5", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 36 }, { "datums": [ { "expr": "\u0011[__36.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__31.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2182.7929332579129, 1205.3023894969674 ], "name": "u6", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 37 }, { "datums": [ { "expr": "\u0011[__37.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__32.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2184.4086201071045, 1344.2514585274491 ], "name": "u7", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 38 }, { "datums": [ { "expr": "\u0011[__38.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__33.__5]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-3.500000'),float('-2.500000'),float('-3.000000'),float('3.500000'),float('3.000000'),float('4.000000'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 2181.1772464087212, 1483.2005275579302 ], "name": "u8", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 39 }, { "datums": [ { "expr": "\u0011[__22.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__27.__4]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('3.660603'),float('-5.401005'),float('-4.921004'),float('11.339397'),float('4.441005'),float('4.921004'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1044.7972737895107, 1589.2690925248894 ], "name": "u9", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 40 }, { "datums": [ { "expr": "\u0011[__40.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__20.__1]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iim-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1',float('-3.839397'),float('-5.401005'),float('-4.921004'),float('11.339397'),float('4.921005'),float('4.921005'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1048.5280613233724, 1745.3346843547274 ], "name": "u10", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 41 }, { "datums": [ { "expr": "\u0011[__41.__2]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__26.__1]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iiim-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-3.839397'),float('-5.401005'),float('-4.921004'),float('11.339397'),float('4.921005'),float('4.921005'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 1049.4377568016621, 1891.4523953313715 ], "name": "u11", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 42 }, { "datums": [ { "expr": "0.0", "name": "x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "z", "type": "float", "uid": 2 }, { "expr": "90", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__42.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1ZY+*f-1X*f6.12323e-17Zm-Xf-0-Yf0-Zf-0iiim-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-4.921005'),float('-5.401005'),float('-3.839397'),float('4.921004'),float('4.921005'),float('11.339397'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1039.2297941502159, 2030.3304481999894 ], "name": "r10", "script": [ "import fab", "import math", "", "title('Rotate (Y)')", "", "input('x', float)", "input('_y', float)", "input('z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_y(shape, a, x, z))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(x + math.cos(rad), _y, z + math.sin(rad)),", " (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,", " z + math.sin(math.radians(a_)) * 0.3)", " 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(z - this.z, x - this.x))", "sb.ui.point(x + math.cos(rad), _y, z + math.sin(rad),", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 43 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "z", "type": "float", "uid": 2 }, { "expr": "90", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__43.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1ZY+*f-1X*f6.12323e-17Zm-Xf-0-Yf0-Zf-0iiim-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-4.921005'),float('-11.339397'),float('-5.401005'),float('4.921004'),float('3.839397'),float('4.921005'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1053.6688444537569, 2220.2307793847021 ], "name": "r11", "script": [ "import fab", "import math", "", "title('Rotate (X)')", "", "input('_x', float)", "input('y', float)", "input('z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_x(shape, a, y, z))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(_x, y + math.cos(rad), z + math.sin(rad)),", " (_x, y, z),", " (_x, y + 1, z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (_x, y + math.cos(math.radians(a_)) * 0.3,", " z + math.sin(math.radians(a_)) * 0.3)", " 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(z - this.z, y - this.y))", "sb.ui.point(_x, y + math.cos(rad), z + math.sin(rad),", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 44 }, { "datums": [ { "expr": "\u0011[__47.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "0", "name": "x0", "type": "float", "uid": 1 }, { "expr": "0", "name": "y0", "type": "float", "uid": 2 }, { "expr": "0", "name": "z0", "type": "float", "uid": 3 }, { "expr": "3", "name": "x1", "type": "float", "uid": 4 }, { "expr": "3.5", "name": "y1", "type": "float", "uid": 5 }, { "expr": "-3", "name": "z1", "type": "float", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf3-Yf3.5-Zf-3m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1ZY+*f-1X*f6.12323e-17Zm-Xf-0-Yf0-Zf-0iiim-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-1.921004'),float('-0.339397'),float('-8.401005'),float('7.921005'),float('14.839397'),float('1.921005'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 1061.5086424035617, 2623.0191732052276 ], "name": "s5", "script": [ "# Neil Gershenfeld 1/25/15", "# Matt Keeter 6/13/15", "", "import fab", "", "title('Set origin (XYZ)')", "", "input('a',fab.types.Shape)", "", "input('x0', float)", "input('y0', float)", "input('z0', float)", "input('x1', float)", "input('y1', float)", "input('z1', float)", "", "output('out', fab.shapes.origin_xyz(a, x0, y0, z0, x1, y1, z1))", "", "# UI", "sb.ui.wireframe([(x0, y0, z0), (x1, y1, z1)], color=sb.color.green)", "sb.ui.point(x0, y0, z0, color=sb.color.green)", "sb.ui.point(x1, y1, z1, color=sb.color.green)", "", "" ], "uid": 45 }, { "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": "180", "name": "a", "type": "float", "uid": 3 }, { "expr": "\u0011[__44.__5]", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1ZY+*f-1X*f6.12323e-17Zm-Xf-0-Yf0-Zf-0iiim-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-4.921004'),float('-3.839397'),float('-5.401005'),float('4.921005'),float('11.339397'),float('4.921005'))", "name": "rotated", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 1048.9649656838744, 2425.4550233692767 ], "name": "r12", "script": [ "import fab", "import math", "", "title('Rotate (Z)')", "", "input('x', float)", "input('y', float)", "input('_z', float)", "input('a', float)", "", "input('shape', fab.types.Shape)", "output('rotated', fab.shapes.rotate_z(shape, a, x, y))", "", "# UI", "rad = math.radians(a)", "sb.ui.wireframe([(x + math.cos(rad), y + math.sin(rad), _z),", " (x, y, _z),", " (x + 1, y, _z)], color=sb.color.teal)", "", "# Draw a semi-circular arc showing the rotation", "if int(a) % 360 != 0:", " sb.ui.wireframe([", " (x + math.cos(math.radians(a_)) * 0.3,", " y + math.sin(math.radians(a_)) * 0.3, _z)", " for a_ in range(int(a) % 360)], color=sb.color.teal)", "", "sb.ui.point(x, y, _z, color=sb.color.teal)", "", "def drag_pt(this, x, y, z):", " this.a = math.degrees(math.atan2(y - this.y, x - this.x))", "sb.ui.point(x + math.cos(rad), y + math.sin(rad), _z,", " color=sb.color.teal, drag=drag_pt, relative=False)", "", "" ], "uid": 47 }, { "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": "1/2.54", "name": "sx", "type": "float", "uid": 3 }, { "expr": "1/2.54", "name": "sy", "type": "float", "uid": 4 }, { "expr": "1/2.54", "name": "sz", "type": "float", "uid": 5 }, { "expr": "\u0011[__45.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m+f0/-Xf0f0.393701+f0/-Yf0f0.393701+f0/-Zf0f0.393701m-Xf3-Yf3.5-Zf-3m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1ZY+*f-1X*f6.12323e-17Zm-Xf-0-Yf0-Zf-0iiim-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-0.756301'),float('-0.133621'),float('-3.307484'),float('3.118507'),float('5.842286'),float('0.756302'))", "name": "scaled", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 1319.9443956725243, 2621.8426765604631 ], "name": "s6", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 5/13/15", "", "import fab", "", "title('Scale (3D)')", "", "input('x0', float)", "input('y0', float)", "input('z0', float)", "input('sx', float)", "input('sy', float)", "input('sz', float)", "", "input('shape', fab.types.Shape)", "output('scaled', fab.shapes.scale_xyz(", " shape, x0, y0, z0, sx, sy, sz))", "", "# UI", "sb.ui.wireframe([(x0 + sx, y0, z0), (x0, y0, z0), (x0, y0 + sy, z0)],", " color=sb.color.teal)", "sb.ui.wireframe([(x0, y0, z0), (x0, y0, z0 + sz)],", " color=sb.color.teal)", "sb.ui.wireframe([(x0 + sx, y0 + sx/10, z0), (x0 + sx, y0 - sx/10, z0)],", " color=sb.color.teal)", "sb.ui.wireframe([(x0 + sy/10, y0 + sy, z0), (x0 - sy/10, y0 + sy, z0)],", " color=sb.color.teal)", "sb.ui.wireframe([(x0 + sz/10, y0, z0 + sz), (x0 - sz/10, y0, z0 + sz)],", " color=sb.color.teal)", "", "sb.ui.point(x0, y0, z0, color=sb.color.teal)", "sb.ui.point(x0 + sx, y0, z0, color=sb.color.teal, drag=(sx, None, None))", "sb.ui.point(x0, y0 + sy, z0, color=sb.color.teal, drag=(None, sy, None))", "sb.ui.point(x0, y0, z0 + sz, color=sb.color.teal, drag=(None, None, sz))", "" ], "uid": 46 }, { "datums": [ { "expr": "\u0011[__46.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('m+f0/-Xf0f0.393701+f0/-Yf0f0.393701+f0/-Zf0f0.393701m-Xf3-Yf3.5-Zf-3m-Xf0-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-0-Yf-0-Zf0m-Xf0-Yf0-Zf0m_+*f6.12323e-17Y*f1Z+*f-1Y*f6.12323e-17Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf0m+*f6.12323e-17X*f1ZY+*f-1X*f6.12323e-17Zm-Xf-0-Yf0-Zf-0iiim-Xf7.5-Yf0-Zf0m+*f-1X*f1.22465e-16Y+*f-1.22465e-16X*f-1Y_m-Xf-7.5-Yf-0-Zf0m-Xf7.5-Yf0.48-Zf-4.76837e-07iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf7.5-Yf-0.01-Zf0iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1iiim-Xf0-Yf0-Zf0m_+*f0.939693Y*f0.34202Z+*f-0.34202Y*f0.939693Zm-Xf0-Yf-0-Zf-0m-Xf0-Yf0-Zf2.5m*X+f1xn/r++qXqYqZf2*Y+f1xn/r++qXqYqZf2*Z+f1xn/r++qXqYqZf2m-Xf-0-Yf-0-Zf-2.5m-Xf0-Yf0-Zf-3m*X-f1xn/r++qXqYqZf3*Y-f1xn/r++qXqYqZf3*Z-f1xn/r++qXqYqZf3m-Xf-0-Yf-0-Zf3-r++qXqYqZf2m-Xf0-Yf0.05-Zf-2m*X-f1xn/r++qXqYqZf1*Y-f1xn/r++qXqYqZf1*Z-f1xn/r++qXqYqZf1m-Xf-0-Yf-0.05-Zf2m-Xf0-Yf0.05-Zf-0.69iam__f1-r+qXqYf1a-f0Z-Zf1-r++qXqYqZf1m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1m-Xf0.72-Yf0-Zf0m+f0/-Xf0f1+f1.16/-Yf1.16f0.5+f-0.66/-Zf-0.66f0.9m-Xf0-Yf0-Zf0m_+*f0.996195Y*f0.0871557Z+*f-0.0871557Y*f0.996195Zm-Xf0-Yf-0-Zf-0m-Xf-0.36-Yf1.16-Zf-0.91ii-r++qXqYqZf0.1am__f1-r+qXqYf0.1a-f0Z-Zf0.5m-Xf0-Yf0-Zf0.5-r++qXqYqZf0.1iiiiiiaam__f1aa-f-3.5X-Xf3.5a-f-2.5Y-Yf3a-f-3Z-Zf4nam__f1aa-f-3X-Xf3a-f-0.48Y-Yf3a-f-2.5Z-Zf3.5a-r+q-Xf2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf2.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5a-r+q-Xf-2.25q-Zf-1.75f0.225a-f-0.48Y-Yf1.5am__f1-r+q-Xf0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1am__f1-r+q-Xf-0.35q-Yf-0.48f0.225a-f-2.5Z-Zf1',float('-0.756301'),float('-0.133621'),float('-3.307484'),float('3.118507'),float('5.842286'),float('0.756302'))", "name": "out", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 1597.0811584357987, 2620.5536683615642 ], "name": "m0", "script": [ "import fab", "", "title('Mesh (.stl)')", "", "input('shape', fab.types.Shape)", "output('out', shape)", "", "sb.export.stl(shape)", "" ], "uid": 48 } ], "protocol": 6, "type": "sb" }