$fa=1; $fs=0.4; module shape() { rotate([0,180,90]) projection() import("adapter plate.stl"); } module centered_shape() { translate([-32,28,0]) shape(); } module pin() { import("SBJ-Pin+Base12.stl", convexity=4); } module base() { linear_extrude(100) translate([-33,28,0]) shape(); } module complex_base() { vres = 0.2; height = 21; for (hi=[0:round(height/vres)-1]) { h = hi*vres; offby = -26*(1-sqrt(1-(h/height)^2)); echo(hi, h, offby); linear_extrude(height=h+vres) offset(offby) centered_shape(); } } module top() { difference() { union() { complex_base(); translate([0,0,32.5]) pin(); cylinder(r=18.1, h=19.32); } union() { cylinder(h=10, d=15); cylinder(h=100, d=5.6); for (p=[[14,16], [23,-14], [-26,3], [-18,21], [5,-25]]) { translate([each p, 0]) cylinder(h=100, d=3); translate([each p, 6]) cylinder(h=100, d=6); } } } } top();