Download or view kittyHockeyPuck.frink in plain text format
/** Make a kitty-sized hockey puck with embossed text.
A standard hockey puck is 3 inches in diameter and 1 inch thick.
*/
diam = 1.25 in
height = diam / 3
textHeight = .25 in
textDepth = 2 mm
chamferHeight = 1 mm
// The resolution of the object in voxels/length.
r = 254*2/in
// Puck body
c1 = chamferedCylinder[diam/2 r, height r, chamferHeight r]
t1 = text["Mischa", textHeight r, textDepth r]
t1.translate[0, 0, round[(height-textDepth/2) r]]
c1.remove[t1]
t2 = text["Smokey", textHeight r, textDepth r]
t2 = t2.rotateXYZ[0,0,0,0 deg, 180 deg, 0 deg]
t2.translate[0, 0, round[textDepth/2 r]]
c1.remove[t2]
c1.projectX[undef].show["X"]
c1.projectY[undef].show["Y"]
c1.projectZ[undef].show["Z"]
filename = "kittyHockeyPuck.obj"
print["Writing $filename..."]
w = new Writer[filename]
w.println[c1.toObjFormat["test", 1/(r mm)]]
w.close[]
println["done."]
/** Extrude text and create a VoxelArray of it. */
text[str, textHeight, depth] :=
{
g = new graphics
g.font["SansSerif", "bold", textHeight]
g.text[str, 0, 0]
img = g.toImage[undef, round[textHeight]].autocrop[]
return callJava["frink.graphics.VoxelArray", "extrudeZ", [img, depth]]
}
/** Make a chamfered cylinder */
chamferedCylinder[radius, height, chamferHeight] :=
{
// Bottom layer
c1 = callJava["frink.graphics.VoxelArray", "makeTaperedCylinder", [0, 0, 0, 0, 0, chamferHeight, radius-chamferHeight, radius]]
// Central cylinder
c2 = callJava["frink.graphics.VoxelArray", "makeCylinder", [0, 0, chamferHeight, 0, 0, height-chamferHeight, radius]]
// Top cylinder
c3 = callJava["frink.graphics.VoxelArray", "makeTaperedCylinder", [0, 0, height-chamferHeight, 0, 0, height, radius, radius-chamferHeight]]
return c1.union[c2].union[c3]
}
Download or view kittyHockeyPuck.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 was born 20217 days, 23 hours, 57 minutes ago.