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 20145 days, 18 hours, 34 minutes ago.