Exit Full View
Up

/Tools/AllenKeyHolder.foocad

AllenKeyHolder
FooCAD Source Code
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<String> = if ( set == "bluer" || set == "X1" ) {
            listOf<String>( "4.5", "3", "2.5", "2", "1.5" )
        } else {
            listOf<String>( "3", "2.5", "2", "1.5", "1.3", "1" )
        }

        val holeList = listOf<Shape3d>()
        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)

    }
}