/** This extrudes a 3-D version of an airfoil using the airfoil.frink program for use in 3-D printing. */ use airfoil.frink r = 254/in id = "naca4424" a = Airfoil.loadSelig["file:/home/eliasen/builds/airfoils/$id.dat"] b = a.rotate[35 deg] p = b.toFilledPolygon[] p.show[] pl = p.toPoint2DFloatList[300, 300] [cx, cy] = pl.getCentroid[].toExpression[] println["Centroid is $cx, $cy"] v = callJava["frink.graphics.VoxelArray", "extrudeTapered", [pl, 0,0,0, 0,0,3 in r,cx,cy, 0.5, 1, 180 deg]] v1 = callJava["frink.graphics.VoxelArray", "extrudeTapered", [pl, 0,0,0, 0,0,-3 in r,cx,cy, 0.5, 1, 180 deg]] v1.translate[280,0,0] v = v.union[v1] hubHeight = .3 cm hubRadius = .8 cm hub = callJava["frink.graphics.VoxelArray", "makeCylinder", [280/2, (hubHeight + 1.4 mm) r, 0, 280/2, (-hubHeight/2 - 3 mm) r, 0, hubRadius r]] v = v.union[hub] shaftRadius = 4.1 mm/2 shaft = callJava["frink.graphics.VoxelArray", "makeCylinder", [280/2, 2 hubHeight r, 0, 280/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."]