Download or view airfoilExtrudeTestNew.frink in plain text format
/** This extrudes a 3-D version of an airfoil using the airfoil.frink program
for use in 3-D printing. This version creates an extruded *and* tapered
*and) rotated airfoil.
*/
use airfoil.frink
r = 254/in
id = "naca4424"
a = Airfoil.loadSelig["file:/home/eliasen/builds/airfoils/$id.dat"]
rootAngle = 20 deg
tipAngle = 40 deg
//b = a.rotate[35 deg]
//p = b.toFilledPolygon[]
p = a.toFilledPolygon[]
p.show[]
pl = p.toPoint2DFloatList[-300, 300] // Airfoil normally faces left; let's face it right
[cx, cy] = pl.getCentroid[].toExpression[]
println["Centroid is $cx, $cy"]
v = callJava["frink.graphics.VoxelArray", "extrudeTaperedRotated", [pl, 0,0,0, 0,0, 4.5 in r,cx,cy, 0.5, 1, rootAngle, tipAngle]]
v1 = callJava["frink.graphics.VoxelArray", "extrudeTaperedRotated", [pl, 0,0,0, 0,0,-4.5 in r,cx,cy, 0.5, 1, rootAngle, tipAngle]]
v1.translate[278,0,0]
v = v.union[v1]
hubHeight = .3 cm
hubRadius = .8 cm
hub = callJava["frink.graphics.VoxelArray", "makeCylinder", [278/2, (hubHeight + 0 mm) r, 0, 278/2, (-hubHeight/2 - 3 mm) r, 0, hubRadius r]]
v = v.union[hub]
shaftRadius = 4.1 mm/2
shaft = callJava["frink.graphics.VoxelArray", "makeCylinder", [278/2, 2 hubHeight r, 0, 278/2, -2 hubHeight r, 0, shaftRadius r]]
v.remove[shaft]
v.projectX[undef].show["X"]
v.projectY[undef].show["Y"]
v.projectZ[undef].show["Z"]
filename = "airfoil$id.obj"
print["Writing $filename..."]
w = new Writer[filename]
w.println[v.toObjFormat["airfoil$id", 1/(r mm)]]
w.close[]
println["done."]
Download or view airfoilExtrudeTestNew.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 20143 days, 9 hours, 44 minutes ago.