Exit Full View
Up

/Hardware/BoltKnob.foocad

BoltKnob
FooCAD Source Code
import uk.co.nickthecoder.foocad.smartextrusion.v1.SmartExtrusion
import static uk.co.nickthecoder.foocad.smartextrusion.v1.SmartExtrusion.*
import static uk.co.nickthecoder.foocad.debug.v1.Debug.*
import static uk.co.nickthecoder.foocad.layout.v1.Layout2d.*
import static uk.co.nickthecoder.foocad.layout.v1.Layout3d.*
import static uk.co.nickthecoder.foocad.arrange.v1.Arrange.*
import uk.co.nckthecoder.foocad.threaded.v2.*
import static uk.co.nickthecoder.foocad.threaded.v2.Thread.*

class BoltKnob : Model {

    @Custom
    var metricSize : double = 6

    @Custom
    var knob = metricThread( 6 ).boltKnob()
        .knobSize( 18, 10 )
        .recess( 4 )
        .filletRadius( 2 )
        .flangeSize( 25, 2 )


    @Piece
    fun knob() = if (metricSize > 0) {
        knob.thread( Thread( metricSize ) )
    } else {
        knob
    }

    @Piece
    fun cap() = knob().cap()

    @Piece
    fun knobAndCap() = arrangeX(2, knob(), cap() )

    override fun build() : Shape3d {

        val knob = knob()
        println( "Knob= $knob" )
        val cap = cap()
            .topTo(knob.top)
            .color("Green")

        val bolt = knob.thread.bolt(20).preview().previewOnly().mirrorZ().topTo( knob.top - knob.recess )

        return knob + cap + bolt
            
    }

}