Exit Full View
ZipUp

/Tools/PalletWrapper.foocad

PalletWrapper
FooCAD Source Code
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
    }

}