| $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();
|