// nBTC v0.2 concept shell. No electronic security or monetary value is created. // Export base and lid separately. Measure the insert and test fit before assembly. part = "base"; // "base", "lid", or "layout" diameter = 45; base_height = 4.4; lid_height = 0.8; tag_diameter = 28; tag_thickness = 0.8; clearance = 0.4; $fn = 120; assert(tag_diameter + 2*clearance < diameter - 4, "Keep at least a 2 mm side wall"); assert(tag_thickness + clearance < base_height - 1, "Keep a solid base floor"); module base() { difference() { cylinder(d=diameter, h=base_height); translate([0,0,base_height-tag_thickness-clearance]) cylinder(d=tag_diameter+2*clearance, h=tag_thickness+clearance+0.01); } } module lid() { cylinder(d=diameter, h=lid_height); translate([0,3,lid_height]) linear_extrude(0.5) text("nBTC", size=8, halign="center", valign="center"); translate([0,-9,lid_height]) linear_extrude(0.3) text("DEMO", size=3, halign="center", valign="center"); } if (part == "base") base(); else if (part == "lid") lid(); else if (part == "layout") { translate([-diameter/2-3,0,0]) base(); translate([diameter/2+3,0,0]) lid(); } else assert(false, "part must be base, lid or layout");