Download or view squeezy.frink in plain text format
/** This program makes a squeezer to squeeze the last drops out of a liquid
packet. It renders a file for 3-D printing.
*/
r = 254/in
height = 7 mm
armLength = 5.5 in
armDepth = 7 mm
ringThickness = 4 mm
ring1Diam = 23 mm
ring2Diam = 26 mm
gap = 0.3 mm
// The hinge
v = callJava["frink.graphics.VoxelArray", "construct" , [0 mm r, 10 mm r, -armDepth r, armDepth r, 0 mm r, height r, true]]
// Arms
a1 = callJava["frink.graphics.VoxelArray", "makeRoundedCube", [9 mm r, (9 mm + armLength) r, gap/2 r, armDepth r, 0 mm r, height r, 1 mm r]]
a2 = callJava["frink.graphics.VoxelArray", "makeRoundedCube", [9 mm r, (9 mm + armLength) r, -armDepth r, -gap/2 r, 0 mm r, height r, 1 mm r]]
// Ring1 (finger)
rcx = (9 mm + armLength - (1/2 ring1Diam))
rcy = armDepth + (1/2 ring1Diam)
r1out = callJava["frink.graphics.VoxelArray", "makeCylinder", [rcx r, rcy r, 0 mm r, rcx r, rcy r, height r, ((1/2 ring1Diam) + ringThickness) r]]
r1in = callJava["frink.graphics.VoxelArray", "makeCylinder", [rcx r, rcy r, 0 mm r, rcx r, rcy r, height r, (1/2 ring1Diam) r]]
r1out.remove[r1in]
a1 = a1.union[r1out]
// Ring2 (thumb)
rcx = (9 mm + armLength - 1cm - (1/2 ring2Diam))
rcy = -armDepth - (1/2 ring2Diam)
r2out = callJava["frink.graphics.VoxelArray", "makeCylinder", [rcx r, rcy r, 0 mm r, rcx r, rcy r, height r, ((1/2 ring2Diam) + ringThickness) r]]
r2in = callJava["frink.graphics.VoxelArray", "makeCylinder", [rcx r, rcy r, 0 mm r, rcx r, rcy r, height r, (1/2 ring2Diam) r]]
r2out.remove[r2in]
a2 = a2.union[r2out]
v = v.union[a1]
v = v.union[a2]
// Add text
t1 = text["Over hill, over dale...", .8 armDepth r, 1.4 mm r]
t1.translate[round[(9 mm + armLength/2) r], round[armDepth/2 r] , round[height r]]
v=v.union[t1]
t2 = text["Korean clamp will never fail!", .8 armDepth r, 1.4 mm r]
t2.translate[round[(9 mm + armLength/2) r], round[-armDepth/2 r] , round[height r]]
v=v.union[t2]
v.projectX[undef].show["X"]
v.projectY[undef].show["Y"]
v.projectZ[undef].show["Z"]
filename = "squeezy.obj"
print["Writing $filename..."]
w = new Writer[filename]
w.println[v.toObjFormat["squeezy", 1/(r mm)]]
w.close[]
println["done."]
/** Extrude text along a plane and create a VoxelArray of it. */
text[str, textHeight, depth] :=
{
g = new graphics
g.font["SansSerif", "bold", 10]
g.text[str, 0, 0]
img = g.toImage[undef, round[textHeight]].autocrop[]
return callJava["frink.graphics.VoxelArray", "extrudeZ", [img, round[depth]]]
}
Download or view squeezy.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen, eliasen@mindspring.com