function main() { var cylinder1 = CSG.cylinder({ start: [0,0,3], end: [20,0,3], radius: 24, resolution: 128 }) ; var subparta = CSG.cylinder({ start: [30,0,3], end: [34,0,3], radiusStart: 25, radiusEnd:28, resolution: 128 }); var subpartb = CSG.cylinder({ start: [34,0,3], end: [36,0,3], radius: 28, resolution: 128 }); var subpartc = CSG.cylinder({ start: [36,0,3], end: [40,0,3], radiusStart: 28, radiusEnd: 25, resolution: 128 }); var subpartd = CSG.cylinder({ start: [20,0,3], end: [23,0,3], radiusStart: 24.5, radiusEnd: 19, resolution: 128 }); var subparte = CSG.cylinder({ start: [23,0,3], end: [26,0,3], radius: 19, resolution: 128 }); var subpartf = CSG.cylinder({ start: [26,0,3], end: [29,0,3], radiusStart: 19, radiusEnd: 24, resolution: 128 }); var subpartg = CSG.cylinder({ start: [29,0,3], end: [30,0,3], radius: 24, resolution: 128 }); var subpart1 = subparta.union([subpartb, subpartc, subpartd, subparte, subpartf, subpartg]); var subpart2 = CSG.cylinder({ start: [40,0,3], end: [41,0,3], radius: 23, resolution: 128 }); var subpart3 = CSG.cylinder({ start: [41,0,3], end: [45,0,3], radiusStart:21, radiusEnd:0, resolution: 128 }); var part1 = cylinder1.union([subpart1, subpart2, subpart3]); var mirror = part1.mirroredX(); var cylinder2 = CSG.cylinder({ start: [0,0,3], end: [0,24,3], radius: 5, resolution: 64 }); var subpartA = CSG.cylinder({ start: [0,24,3], end: [0,30,3], radiusStart: 5, radiusEnd: 10, resolution: 64 }); var subpartB = CSG.cylinder({ start: [0,30,3], end: [0,35,3], radius: 10, resolution: 64 }); var subpartC = CSG.cylinder({ start: [0,35,3], end: [0,40,3], radiusStart: 10, radiusEnd: 5, resolution: 64 }); var subpartD = CSG.cylinder({ start: [0,40,3], end: [0,45,3], radiusStart: 5, radiusEnd: 10, resolution: 64 }); var subpartE = CSG.cylinder({ start: [0,45,3], end: [0,50,3], radius: 10, resolution: 64 }); var subpartF = CSG.cylinder({ start: [0,50,3], end: [0,70,3], radiusStart: 10, radiusEnd: 5, resolution: 64 }); var subpartG = CSG.cylinder({ start: [0,70,3], end: [0,90,3], radius: 5, resolution: 64 }); var subpartH = CSG.cylinder({ start: [0,90,3], end: [0,95,3], radiusStart: 5, radiusEnd: 10, resolution: 64 }); var subpartI = CSG.cylinder({ start: [0,95,3], end: [0,100,3], radius: 10, resolution: 64 }); var subpartJ = CSG.cylinder({ start: [0,100,3], end: [0,105,3], radiusStart: 10, radiusEnd: 5, resolution: 64 }); var subpartK = CSG.cylinder({ start: [0,105,3], end: [0,150,3], radiusStart: 5, radiusEnd: 10, resolution: 64 }); var subpartL = CSG.cylinder({ start: [0,150,3], end: [0,210,3], radius: 10, resolution: 64 }); var subpartM = CSG.cylinder({ start: [0,210,3], end: [0,250,3], radiusStart: 10, radiusEnd: 7, resolution: 64 }); var subpartN = CSG.cylinder({ start: [0,250,3], end: [0,252,3], radiusStart: 7, radiusEnd: 5, resolution: 64 }); var subpartO = CSG.cylinder({ start: [0,252,3], end: [0,255,3], radius: 5, resolution: 64 }); var subpartP = CSG.cylinder({ start: [0,255,3], end: [0,260,3], radiusStart: 5, radiusEnd: 10, resolution: 64 }); var subpartQ = CSG.cylinder({ start: [0,260,3], end: [0,265,3], radiusStart: 10, radiusEnd: 7, resolution: 64 }); var subpartR = CSG.cylinder({ start: [0,265,3], end: [0,270,3], radiusStart: 7, radiusEnd: 5, resolution: 64 }); var subpartS = CSG.cylinder({ start: [0,270,3], end: [0,275,3], radius: 5, resolution: 64 }); var part2 = cylinder2.union([subpartA, subpartB, subpartC, subpartD, subpartE, subpartF, subpartG, subpartH, subpartI, subpartJ, subpartK, subpartL, subpartM,subpartN, subpartO, subpartP, subpartQ, subpartR, subpartS]); var gavel = part1.union([mirror, part2]); return gavel.scale(0.5); }