FooCAD Source Codeclass 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 )
}
}