FooCAD Source Codeimport 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)
}
}