diff --git a/README b/README index c2398ab..a039a06 100644 --- a/README +++ b/README @@ -28,3 +28,20 @@ Finally, all elements on the main PCB that are unusually tall are taped over, to further reduce the risk of them working their way into the counterweight. Right now, the only component where problems are considered likely is the buzzer. + + +Workflow +-------- + +- analyze geometry, e.g., by viewing ben-bottom-inside-500um +- define CAD model in cw.py +- generate in HeeksCAD with "import cw" +- define Zig-Zag operation +- generate Python script and run it (takes a while) +- save NC file +- convert G-code to gnuplot, with cncmap/g2gp +- mount piece and determine geometry with millp + (from http://svn.openmoko.org/developers/werner/cncmap) +- define conversion in "doit" script (to do: put in repository) +- ./doit >job +- send job with cncmap/spool diff --git a/cw.py b/cw.py index 19972e3..c81fa1d 100755 --- a/cw.py +++ b/cw.py @@ -25,6 +25,14 @@ z_ceiling = 5.0 # mm # y_axis = 16.0 +off_x = -15+18 +off_y = -46+5 + +channel_radius = 1 # mm +inlet_radius = 7 +shaft = 3 +ymax_piece = 50 + total_mass = 0 total_torque = 0 @@ -87,6 +95,35 @@ def rect_gnuplot(x0, y0, z0, x1, y1, z1): print +# +# add inlets and air escapes for gravitation casting +# + +def channel(sk, x, y, r0, r1): + if r0 == r1: + cad.cylinder(x, y, 0, r0, ymax_piece-y) + obj = cad.getlastobj() + else: + cad.cylinder(x, y, 0, r0, shaft) + cyl = cad.getlastobj() + cad.cone(x, y, shaft, r0, r1, ymax_piece-y-shaft) + cone = cad.getlastobj() + cad.fuse(cyl, cone) + obj = cad.getlastobj() + cad.rotate(obj, x, y, 0, 1, 0, 0, -math.pi/2) + cad.cut(sk, obj) + return cad.getlastobj() + + +def inlet(sk, x, y): + return channel(sk, x+off_x, y+off_y, channel_radius, inlet_radius) + pass + + +def escape(sk, x, y): + return channel(sk, x+off_x, y+off_y, channel_radius, channel_radius) + + # # add a rectangle to the CAD model # @@ -185,6 +222,9 @@ else: make_base() +# +# for wax model +# #if __name__ != "__main__": # sk = do_rect_cad(10, 40, z_ceiling, 110, 70, z_ceiling) # cad.extrude(sk, 3) @@ -205,6 +245,14 @@ if __name__ != "__main__": cad.extrude(sk, -10) sk = cad.getlastobj() cad.cut(sk, group) + sk = cad.getlastobj() + sk = escape(sk, 15+channel_radius, 69.5) + sk = inlet(sk, 34-channel_radius, 69.5) + sk = inlet(sk, 89.5+channel_radius, 69) + sk = escape(sk, 100-channel_radius, 69) + sk = escape(sk, 60.5-channel_radius, 65) + sk = escape(sk, 62.5+channel_radius, 65) + sk = inlet(sk, 50, 65) print >>sys.stderr, "total mass =", total_mass, "g" print >>sys.stderr, "total torque =", total_torque*1000.0, "mNm"