/Tools/SuperGlueBase.foocad

My favourite brush-on super glue has a very narrow bottle which is easily knocked over.
It is designed to be a snug fit, so that lifting the bottle also lifts the base.
Print using TPU (or other flexible filament). You could use a rigid filament, but the fit would need to be perfect, or use a shim to jam the bottle into this base.
import static uk.co.nickthecoder.foocad.layout.v1.Layout2d.*
import static uk.co.nickthecoder.foocad.layout.v1.Layout3d.*
import uk.co.nickthecoder.foocad.compound.v1.*
import uk.co.nickthecoder.foocad.smartextrusion.v1.*
import static uk.co.nickthecoder.foocad.smartextrusion.v1.SmartExtrusion.*
import uk.co.nickthecoder.foocad.cup.v1.*
import static uk.co.nickthecoder.foocad.cup.v1.Cup.*
import static uk.co.nickthecoder.foocad.extras.v1.Extras.*
class SuperGlueBase : Model {
var size = Vector3( 36, 20, 20 )
var thickness = 1.8
var radius = 7.0
val lipSize = Vector2(2.5, 0.5)
fun shape() = Circle( size.x/2 ).scaleY( size.y/size.x )
// The bottom should fit easily in one side, and "tricky" in the other.
@Piece
fun testFit() = shape().outline(1,0)
.smartExtrude(lipSize.x * 2)
.insideTop( fatLip( lipSize.x, lipSize.y ) )
override fun build() : Shape3d {
val tube = shape().offset(thickness)
.cup( 20, thickness )
.baseThickness( thickness + 0.5 )
.cavity(true)
.insideBottom( Fillet(2) )
.insideTop( fatLip( lipSize.x, lipSize.y ) )
.outsideTop( Chamfer(0.5) )
val base1 = Cylinder(2, size.x/2+2 )
val base2 = Cylinder(10, size.x/2+2, size.y/2).bottomTo( base1.top )
val tread = Square( 50, 1 ).tileY( 25, 1 )
.center()
.rotate(45)
.intersection( Circle( size.x/2-2 ) )
.extrude(0.4)
.bottomTo(-0.01)
return Compound( true ).apply {
+ tube
+ base1
+ base2
- tread
}.build().rotateZ(45)
}
}
