import static uk.co.nickthecoder.foocad.chamferedextrude.v1.ChamferedExtrude.* /** Drill out the holes with a larger diameter bit than the allen key. */ import java.lang.Double class AllenKeyHolder : Model { @Custom var set = "3" // 40mm for the set included with Bluer printer. @Custom var height = 35 override fun build() : Shape3d { val sizes : List = if ( set == "bluer" || set == "X1" ) { listOf( "4.5", "3", "2.5", "2", "1.5" ) } else { listOf( "3", "2.5", "2", "1.5", "1.3", "1" ) } val holeList = listOf() var dx = 0.0 var dz = -1.0 var odd = false for (size in sizes) { val r : double = Double.valueOf(size)/2 holeList.add( Cylinder.hole( height +1, r+0.5 ).translate(dx,0,1.5) ) val text = Text( "${size}", 8 ).centerY().rotate(90).extrude(2).rotateX(90) .translate(dx, -4.5, 0) if (odd) { holeList.add(text.translateZ( 3 ) ) } else { holeList.add(text.translateZ( height - text.size.z -3 )) } dx += 4 + r*2 odd = ! odd } val holes = Union3d( holeList ).centerX() val box = Square( holes.size.x+4, 10 ) .roundAllCorners(1) .center() .chamferedExtrude(height+1.5, 1) val magHoles = Cylinder( 0.75, 11/2 ).rotateX(90) .translate(box.size.x * 0.3, box.size.y/2, box.size.z / 2) .mirrorX().also() return (box - holes - magHoles).rotateX(-90) } }