FooCAD Source Codeimport uk.co.nickthecoder.foocad.cup.v1.*
import static uk.co.nickthecoder.foocad.cup.v1.Cup.*
import uk.co.nickthecoder.foocad.smartextrusion.v1.*
import static uk.co.nickthecoder.foocad.smartextrusion.v1.SmartExtrusion.*
class Edging : Model {
@Custom( about="Add extra for clearance" )
var sheetThickness = 9
@Custom( about="Thickness of the plastic edging" )
var edgeThickness = 2
@Custom
var depth = 7
@Custom
var length = 200
@Custom
var chamfer = 0.6
meth plain( length : double ) : Shape3d {
val outside = Square( sheetThickness + edgeThickness*2, depth + edgeThickness )
.centerX()
.roundAllCorners( chamfer )
val inside = Square( sheetThickness, depth )
.centerX().frontTo( edgeThickness )
return (outside - inside).extrude( length )
.rotateX(90)
.centerY()
}
@Piece
@Slice( brimEars=1, brimWidth=10 )
meth normal() = plain( length )
@Piece
@Slice( brimEars=1, brimWidth=10 )
meth mitre1() : Shape3d {
val realLength = length + edgeThickness + depth
val mitre = Cube( (depth + sheetThickness + edgeThickness) * 2 )
.centerX()
.rotateX(45)
.translateY( realLength / 2 )
return plain( realLength ) - mitre
}
@Piece
@Slice( brimEars=1, brimWidth=10 )
meth mitre2() : Shape3d {
val realLength = length + (edgeThickness + depth) * 2
val mitre = Cube( (depth + sheetThickness + edgeThickness) * 2 )
.centerX()
.rotateX(45)
.translateY( realLength / 2 )
return plain(realLength) - mitre.mirrorY().also()
}
override fun build() : Shape3d {
return normal()
}
}