Exit Full View
Up

/Mum/BedHook.foocad

BedHook
FooCAD Source Code
class BedHook() : Model {

    val hookSize = Vector2( 30, 5 )
    val hookThickness = 3
    val indent = 4

    @Slice( brimWidth=5 )
    override fun build() : Shape3d {
        val radius = hookSize.x/2 + hookThickness/2
        val foo = radius*0.4
        val profile = PolygonBuilder().apply {
            circularArcBy( foo, foo, foo, false, true )
            bezierBy( Vector2( 0, foo ), Vector2( 0, foo ), Vector2(-indent, radius ) )
            lineBy( 0, radius*0.1 )
            circularArcBy( radius *2, 0, radius, true, false )

            lineBy( 0, -10 )
            lineBy( 10, 10 )
            
        }.buildPath().thickness( hookThickness ).rightTo(0).frontTo(0)
        val handle = Square( 2, 20 )
            .frontTo(profile.back -1)
            .centerXTo(profile.middle.x-6)
        val bulge = Circle( 4 ).centerXTo( handle.middle.x ).translateY( handle.back )
        val withHandle = profile + handle + bulge

        val hook = ExtrusionBuilder().apply {
            crossSection( withHandle )
            direction( Vector3( 1, 0, 2 ) )
            forward( hookSize.y )
            crossSection()
        }.build()

        return hook
    }

}