Lip Balm Holder

A bit of tinkering with the OpenSCAD code that produced the DeoxIT bottle holder delivered a place for the cylindrical objects we use just before cycling:

Lip Balm Holder
Lip Balm Holder

The tubes are 1.5 diameters tall, minus a skosh, so the cylinders stand neatly inside and don’t want to fall over. I added about 1 mm clearance and you could taper the cylinder openings for E-Z insertion, although we can eke out a miserable existence with this thing as-is.

It works exactly as you’d expect:

Lip Balm Holder - in action
Lip Balm Holder – in action

That big stick in the middle is actually skin sunscreen, not lip balm; let’s not get all pedantic. The intent is to keep those cylinders from rolling off the shelf and falling into awkward locations, which this will do.

The OpenSCAD source code is strictly from empirical:

// Lip Balm Tube Holder
// Ed Nisley KE4ZNU - July 2015

//- Extrusion parameters - must match reality!

ThreadThick = 0.25;
ThreadWidth = 0.40;

function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);

Protrusion = 0.1;

HoleWindage = 0.2;

// Dimensions

Tubes = [18,26];			// tube diameters plus clearance

WallThick = 2.0;

Plate = [1.5*(Tubes[1] + 2*Tubes[0]),2.5*Tubes[1],IntegerMultiple(2.0,ThreadThick)];
PlateRound = 5.0;

NumSides = 8*4;

//- Build it

	hull() {
		for (i=[-1,1], j=[-1,1]) {
			translate([i*(Plate[0]/2 - PlateRound),j*(Plate[1]/2 - PlateRound),0])

			difference() {
				cylinder(d=(Tubes[1] + 2*WallThick),h=1.5*Tubes[1],$fn=NumSides);
				cylinder(d=Tubes[1],h=1.5*Tubes[1] + Protrusion,$fn=NumSides);

	for (i=[-1,1])
		translate([i*((Tubes[1] + Tubes[0])/2 + 1.0*WallThick),0,Plate[2]/2])
				difference() {
					cylinder(d=(Tubes[0] + 2*WallThick),h=1.5*Tubes[0],$fn=NumSides);
					cylinder(d=Tubes[0],h=1.5*Tubes[0] + Protrusion,$fn=NumSides);