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