Exit Full View
Up

/Printer/FirstLayerTest.foocad

FirstLayerTest
FooCAD Source Code
class FirstLayerTest : Model {

    @Custom
    var layerHeight = 0.2

    @Custom
    var size = 220

    @Custom
    var squareSize = 20

    @Custom
    var lineWidth = 5

    @Piece
    fun full() : Shape3d {
        return Square( size ).extrude( layerHeight )
    }

    @Piece
    fun circles() : Shape3d {
        val flat = Circle( size*0.5 ) - Circle( size*0.4) +
            Circle( size*0.3 ) - Circle( size*0.2 ) +
            Circle( size*0.1 )
        return flat.extrude( layerHeight )
    }

    @Piece
    fun chess() : Shape3d {
        val row = Square( size / 8 )
            .translateX( size / 4 ).also()
            .translateX( size / 2 ).also()
        val rows = row.translate( size/8, size/8 ).also()
            .translateY( size/4 ).also()
            .translateY( size/2 ).also()

        return rows.extrude( layerHeight )
    }

    @Piece
    fun dots() : Shape3d {
        val row = Circle( size / 16 )
            .translateX( size / 4 ).also()
            .translateX( size / 2 ).also()
        val rows = row.translate( size/8, size/8 ).also()
            .translateY( size/4 ).also()
            .translateY( size/2 ).also()

        return rows.extrude( layerHeight )
    }

    override fun build() : Shape3d {
        
        val squares = Square( squareSize )
            .leftTo( -size /2 )
            .mirrorX().also()
            .frontTo( - size / 2 )
            .mirrorY().also() +
            Square( squareSize ).center()

        val lines = (
            Square( size, lineWidth ).center() +
            Square( size, lineWidth ).centerX().frontTo( squares.front )
            .mirrorY().also()
            ).rotate(90).also()


        return (squares + lines).extrude( layerHeight )
    }

}