import static uk.co.nickthecoder.foocad.layout.v1.Layout2d.* import static uk.co.nickthecoder.foocad.layout.v1.Layout3d.* import uk.co.nickthecoder.foocad.smartextrusion.v1.* import static uk.co.nickthecoder.foocad.smartextrusion.v1.SmartExtrusion.* import uk.co.nickthecoder.foocad.extras.v1.* import static uk.co.nickthecoder.foocad.extras.v1.Extras.* import uk.co.nickthecoder.foocad.threaded.v2.* class PalettWrapper : Model { var broomDiameter = 27 var wrapDiameter = 100 var thickness = 10 var thread = Thread( 8 ) var flangeSize = Vector2( 60, 2 ) @Piece meth main() : Shape3d { val ring = RingD( broomDiameter + thickness, broomDiameter ) .smartExtrude( thread.diameter* 3 ) .cavities( true ) val threadedHole = thread.threadedHole( thickness*4 ) .rotateX(90) .topTo( ring.size.z - thread.diameter/2 ) .centerXTo( 0 ) .repeatAroundZ(3) val flange = RingD( flangeSize.x, broomDiameter ) .extrude( flangeSize.y ) return flange + ring - threadedHole } @Piece meth bolt() = thread.bolt( thickness * 1.5 ) override fun build() : Shape3d { val broom = Cylinder( 600, broomDiameter/2 ) .center() .color("Yellow") val wrap = Cylinder( 430, wrapDiameter/2 ) .center() .previewOnly() val main = main() .bottomTo( wrap.top + 2 ) .mirrorZ().also() .color("Green") return main + broom + wrap } }