sb( i,@r D  _namevarw0.13l0.3c0.03s0.1dxy&2*var.l+var.w+var.sx00.0y00.0_script&from fab import shapes input('w',float) input('l',float) input('c',float) input('s',float) input('dxy',float) input('x0',float) input('y0',float) {L;@tɳ-c _namea0x00y0var.w/2 width var.c height var.c shape_script# Neil Gershenfeld 1/24/15 import fab title('right triangle') def right_triangle(x0,y0,w,h): from fab.types import Shape, Transform # max(max(x0-X,y0-Y),X-(x0*(Y-y0)+(x0+w)*(y0+h-Y))/h) return Shape( 'aa-f%(x0)gX-f%(y0)gY-X/+*f%(x0)g-Yf%(y0)g*+f%(x0)gf%(w)g-+f%(y0)gf%(h)gYf%(h)g' % locals(), x0,y0,x0+w,y0+h) input('x0',float) input('y0',float) input('width',float) input('height',float) output('shape',right_triangle(x0,y0,width,height)) Y@R-2& _namea1x00y0-var.w/2.0x1var.l/2.0y1var.w/2.0 shape_script"# Neil Gershenfeld 1/24/15 import fab title('rectangle corner') def rectangle_corner(x0,y0,x1,y1): from fab.types import Shape, Transform # max(max(x0-X,X-x1),max(y0-Y,Y-y1)) return Shape( 'aa-f%(x0)gX-Xf%(x1)ga-f%(y0)gY-Yf%(y1)g' % locals(), x0,y0,x1,y1) input('x0',float) input('y0',float) input('x1',float) input('y1',float) output('shape',rectangle_corner(x0,y0,x1,y1)) _ Y@: _namer0_x0y0_z0 input shapereflect_y inputy ^U*s@q1_\ _namea2x00y00x10y10 shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @iVp@{?lť _namea3ab shape_scriptimport fab.types title('Union') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a | b) @i˘@qIS;4 _nameslotab shape_scriptimport fab.types title('Union') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a | b) @) Q1bq _namea4x0 -var.l-var.w/2.0y0 -var.l-var.w/2.0x1var.l+var.w/2.0y1var.l+var.w/2.0 shape_script"# Neil Gershenfeld 1/24/15 import fab title('rectangle corner') def rectangle_corner(x0,y0,x1,y1): from fab.types import Shape, Transform # max(max(x0-X,X-x1),max(y0-Y,Y-y1)) return Shape( 'aa-f%(x0)gX-Xf%(x1)ga-f%(y0)gY-Yf%(y1)g' % locals(), x0,y0,x1,y1) input('x0',float) input('y0',float) input('x1',float) input('y1',float) output('shape',rectangle_corner(x0,y0,x1,y1)) @N[C@g#+1f _nameslot_leftx00y00x1 -var.l-var.w/2.0y10 shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @(@YM{A _namea6ab shape_scriptimport fab.types title('Difference') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a & ~b) @.qW@{ ke _namer1x0_y0_z0 input shapereflect_x inputx @C@pܥw _namea7ab shape_scriptimport fab.types title('Difference') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a & ~b) @~ @3  _namea8x00y00 shapetransform_script# Neil Gershenfeld 1/24/15 import fab title('reflect xy') def reflect_xy(part,x0,y0): from fab.types import Shape, Transform # X' = x0 + (Y-y0) # Y' = y0 + (X-x0) # X = x0 + (Y'-y0) # Y = y0 + (X'-x0) return part.map(Transform( '+f%(x0)g-Yf%(y0)g' % locals(), '+f%(y0)g-Xf%(x0)g' % locals(), '+f%(x0)g-Yf%(y0)g' % locals(), '+f%(y0)g-Xf%(x0)g' % locals())) input('x0',float) input('y0',float) input('shape',fab.types.Shape) output('transform',reflect_xy(shape,x0,y0)) @C@yM{D _namea9ab shape_scriptimport fab.types title('Difference') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a & ~b) @Eao@[~J _namea10x00y00 shapetransform_script# Neil Gershenfeld 1/24/15 import fab title('reflect xy') def reflect_xy(part,x0,y0): from fab.types import Shape, Transform # X' = x0 + (Y-y0) # Y' = y0 + (X-x0) # X = x0 + (Y'-y0) # Y = y0 + (X'-x0) return part.map(Transform( '+f%(x0)g-Yf%(y0)g' % locals(), '+f%(y0)g-Xf%(x0)g' % locals(), '+f%(x0)g-Yf%(y0)g' % locals(), '+f%(y0)g-Xf%(x0)g' % locals())) input('x0',float) input('y0',float) input('shape',fab.types.Shape) output('transform',reflect_xy(shape,x0,y0)) @1JP@m$r _namesquare_gikab shape_scriptimport fab.types title('Difference') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a & ~b) @삚Zr9 _namea11x00y00x1$var.x0+0.5*var.dxyy1$var.y0-0.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @ɣDLa, _namea12x00y00x1$var.x0+1.5*var.dxyy1$var.y0-0.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @] @g͉ _namea13x00y00x1$var.x0+0.5*var.dxyy1$var.y0-1.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @&%L{@z@J _namea14x00y00x1$var.x0+1.5*var.dxyy1$var.y0-1.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @th7'@U k _namea15x00y00x1$var.x0+0.5*var.dxyy1$var.y0-2.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @ :H@R _namea16x00y00x1$var.x0+1.5*var.dxyy1$var.y0-2.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @6 @GjX _namea17x00y00x1$var.x0+0.5*var.dxyy1$var.y0-3.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @YBz@cҫ' _namea18x00y00x1$var.x0+1.5*var.dxyy1$var.y0-3.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) b-)@񋿚 _namea19x00y0-var.w/2.0x1var.l+var.w/2.0y1var.w/2.0 shape_script"# Neil Gershenfeld 1/24/15 import fab title('rectangle corner') def rectangle_corner(x0,y0,x1,y1): from fab.types import Shape, Transform # max(max(x0-X,X-x1),max(y0-Y,Y-y1)) return Shape( 'aa-f%(x0)gX-Xf%(x1)ga-f%(y0)gY-Yf%(y1)g' % locals(), x0,y0,x1,y1) input('x0',float) input('y0',float) input('x1',float) input('y1',float) output('shape',rectangle_corner(x0,y0,x1,y1)) ;R@*+QP _namea20x00y0var.w/2.0 width var.c height var.c shape_script# Neil Gershenfeld 1/24/15 import fab title('right triangle') def right_triangle(x0,y0,w,h): from fab.types import Shape, Transform # max(max(x0-X,y0-Y),X-(x0*(Y-y0)+(x0+w)*(y0+h-Y))/h) return Shape( 'aa-f%(x0)gX-f%(y0)gY-X/+*f%(x0)g-Yf%(y0)g*+f%(x0)gf%(w)g-+f%(y0)gf%(h)gYf%(h)g' % locals(), x0,y0,x0+w,y0+h) input('x0',float) input('y0',float) input('width',float) input('height',float) output('shape',right_triangle(x0,y0,width,height)) d7;<~@ d _namer2_x0y0_z0 input shapereflect_y inputy e+3M@p _namea21x00y00x10y10 shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @d2@z# _namea22ab shape_scriptimport fab.types title('Union') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a | b) @ftj3@IG _namedouble_slotab shape_scriptimport fab.types title('Union') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a | b) ?wLd-@MKU  _namea23x0 -var.l-var.w/2.0y0 -var.l-var.w/2.0x1var.l+var.w/2.0y1var.l+var.w/2.0 shape_script"# Neil Gershenfeld 1/24/15 import fab title('rectangle corner') def rectangle_corner(x0,y0,x1,y1): from fab.types import Shape, Transform # max(max(x0-X,X-x1),max(y0-Y,Y-y1)) return Shape( 'aa-f%(x0)gX-Xf%(x1)ga-f%(y0)gY-Yf%(y1)g' % locals(), x0,y0,x1,y1) input('x0',float) input('y0',float) input('x1',float) input('y1',float) output('shape',rectangle_corner(x0,y0,x1,y1)) @jԯ)1@ e _namea24x00y00x10y1 -var.l-var.w/2.0 shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @s&.j@qcf _namea25ab shape_scriptimport fab.types title('Difference') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a & ~b) @}=a}@C  _namea26ab shape_scriptimport fab.types title('Difference') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a & ~b) @~1r%>@* _namea27x00y00 shapetransform_script# Neil Gershenfeld 1/24/15 import fab title('reflect xy') def reflect_xy(part,x0,y0): from fab.types import Shape, Transform # X' = x0 + (Y-y0) # Y' = y0 + (X-x0) # X = x0 + (Y'-y0) # Y = y0 + (X'-x0) return part.map(Transform( '+f%(x0)g-Yf%(y0)g' % locals(), '+f%(y0)g-Xf%(x0)g' % locals(), '+f%(x0)g-Yf%(y0)g' % locals(), '+f%(y0)g-Xf%(x0)g' % locals())) input('x0',float) input('y0',float) input('shape',fab.types.Shape) output('transform',reflect_xy(shape,x0,y0)) @i"B@׸. a _name pi_gikab shape_scriptimport fab.types title('Difference') input('a', fab.types.Shape) input('b', fab.types.Shape) output('shape', a & ~b) @X@Jb, _namea28x00y00x1$var.x0+2.5*var.dxyy1"var.y0-.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @k!@w&8 _namea29x00y00x1$var.x0+2.5*var.dxyy1$var.y0-1.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @N99@a _namea30x00y00x1$var.x0+2.5*var.dxyy1$var.y0-2.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) @(gV@X _namea31x00y00x1$var.x0+2.5*var.dxyy1$var.y0-3.5*var.dxy shapetransform_scriptB# Neil Gershenfeld 1/25/15 import fab title('origin xy') def origin_xy(part,x0,y0,x1,y1): from fab.types import Shape, Transform # X' = X+x0-x1 # Y' = Y+y0-y1 # X = X'+x1-x0 # Y = Y'+y1-y0 return part.map(Transform( '-+Xf%(x0)gf%(x1)g' % locals(), '-+Yf%(y0)gf%(y1)g' % locals(), '-+Xf%(x1)gf%(x0)g' % locals(), '-+Yf%(y1)gf%(y0)g' % locals())) input('x0',float) input('y0',float) input('x1',float) input('y1',float) input('shape',fab.types.Shape) output('transform',origin_xy(shape,x0,y0,x1,y1)) ,"#&'+(,-;4?<@<GAJHK<QLURVH\W`]abibqbybbbbb<H