mirror of
git://projects.qi-hardware.com/ben-counterweight.git
synced 2025-01-30 17:11:06 +02:00
Update for gravity casting.
- cw.py: added inlets and air escapes for gravity casting - README: documented the tool making workflow
This commit is contained in:
parent
fcd83689fa
commit
891ad69331
17
README
17
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
|
over, to further reduce the risk of them working their way into the
|
||||||
counterweight. Right now, the only component where problems are
|
counterweight. Right now, the only component where problems are
|
||||||
considered likely is the buzzer.
|
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
|
||||||
|
48
cw.py
48
cw.py
@ -25,6 +25,14 @@ z_ceiling = 5.0 # mm
|
|||||||
#
|
#
|
||||||
y_axis = 16.0
|
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_mass = 0
|
||||||
total_torque = 0
|
total_torque = 0
|
||||||
|
|
||||||
@ -87,6 +95,35 @@ def rect_gnuplot(x0, y0, z0, x1, y1, z1):
|
|||||||
print
|
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
|
# add a rectangle to the CAD model
|
||||||
#
|
#
|
||||||
@ -185,6 +222,9 @@ else:
|
|||||||
|
|
||||||
make_base()
|
make_base()
|
||||||
|
|
||||||
|
#
|
||||||
|
# for wax model
|
||||||
|
#
|
||||||
#if __name__ != "__main__":
|
#if __name__ != "__main__":
|
||||||
# sk = do_rect_cad(10, 40, z_ceiling, 110, 70, z_ceiling)
|
# sk = do_rect_cad(10, 40, z_ceiling, 110, 70, z_ceiling)
|
||||||
# cad.extrude(sk, 3)
|
# cad.extrude(sk, 3)
|
||||||
@ -205,6 +245,14 @@ if __name__ != "__main__":
|
|||||||
cad.extrude(sk, -10)
|
cad.extrude(sk, -10)
|
||||||
sk = cad.getlastobj()
|
sk = cad.getlastobj()
|
||||||
cad.cut(sk, group)
|
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 mass =", total_mass, "g"
|
||||||
print >>sys.stderr, "total torque =", total_torque*1000.0, "mNm"
|
print >>sys.stderr, "total torque =", total_torque*1000.0, "mNm"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user