Created
June 4, 2025 01:31
-
-
Save joe-warren/daff670b8a18dc7e9a93d05767093da8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import qualified Waterfall | |
import Linear | |
import Data.Function ((&)) | |
len = 50 | |
innerR = 25/2 | |
wallT = 0.8 | |
overhang = 1 | |
holeRA = 8.5/2 | |
holeRB = 6/2 | |
cylWithChord :: Double -> Double -> Waterfall.Solid | |
cylWithChord r l = | |
let mask x = Waterfall.centeredCube | |
& Waterfall.translate (unit _x ^* 0.5) | |
& Waterfall.uScale 100 | |
& Waterfall.translate (unit _x ^* x) | |
in Waterfall.centeredCylinder | |
& Waterfall.scale (V3 r r l) | |
& (`Waterfall.difference` mask (r-2)) | |
partA :: Waterfall.Solid | |
partA = let | |
innerHole = cylWithChord innerR len | |
outerShell = cylWithChord (innerR + wallT) (len + wallT*2) | |
opening = Waterfall.centeredCube | |
& Waterfall.translate (negate $ unit _x ^* 0.5) | |
& Waterfall.uScale (len - overhang *2) | |
& Waterfall.translate (negate $ unit _x ^* 5) | |
holeA = Waterfall.unitCylinder | |
& Waterfall.scale (V3 holeRA holeRA len) | |
holeB = Waterfall.unitCylinder | |
& Waterfall.translate (negate $ unit _z) | |
& Waterfall.scale (V3 holeRB holeRB len) | |
in outerShell `Waterfall.difference` (innerHole <> opening <> holeA <> holeB) | |
partB :: Waterfall.Solid | |
partB = | |
let outer = cylWithChord (innerR + wallT*2) (len + wallT * 2) | |
inner = cylWithChord (innerR + wallT) (len *2) | |
split = Waterfall.centeredCube | |
& Waterfall.translate (unit _x * 0.5) | |
& Waterfall.scale (V3 (len*2) wallT (len*2)) | |
in outer `Waterfall.difference` (inner <> split) | |
main :: IO () | |
main = Waterfall.writeSTL 0.1 "audio-adaptor-part-a.stl" partA | |
<> Waterfall.writeSTL 0.1 "audio-adaptor-part-b.stl" partB | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment