g_fn = 64; g_base_thickness = 1.8; //g_base_thickness = 0.8; conn_space_y = 13; ref_x_top = 14.5; g_mode=1; module base(h) { hull() { translate([-118.4, 22.5, 0]) cylinder(h=h, d=0.5, center=false, $fn=g_fn); translate([-119.4, 0, 0]) cylinder(h=h, d=0.5, center=false, $fn=g_fn); translate([-118.4, -22.5, 0]) cylinder(h=h, d=0.5, center=false, $fn=g_fn); translate([118.4, 22.5, 0]) cylinder(h=h, d=0.5, center=false, $fn=g_fn); translate([119.4, 0, 0]) cylinder(h=h, d=0.5, center=false, $fn=g_fn); translate([118.4, -22.5, 0]) cylinder(h=h, d=0.5, center=false, $fn=g_fn); } } module conn2_top(title="", open=0, mode=0) { h = (open != 0) ? 23 : 7.5; w = 9.0; translate([(w/2)-119.4+ref_x_top, (h/2)+22.5-conn_space_y, 0]) { if (mode == 0) cube([w, h, 4], center=true); else translate([0, -19, 0]) linear_extrude(height=0.6) text(title, size=5, font="Liberation Sans:style=bold", halign="center"); } } module conn3_top(title="", open=0, mode=0) { h = (open != 0) ? 23 : 7.5; w = 13; translate([(w/2)-119.4+ref_x_top, (h/2)+22.5-conn_space_y, 0]) { if (mode == 0) cube([w, h, 4], center=true); else translate([0, -19, 0]) linear_extrude(height=0.6) text(title, size=5, font="Liberation Sans:style=bold", halign="center"); } } module conn2_button(title="", open=0, mode=0) { h = (open != 0) ? 23 : 7.5; w = 9.0; translate([(w/2)-119.4+ref_x_top, -(h/2)-22.5+conn_space_y, 0]) { if (mode == 0) cube([w, h, 4], center=true); else translate([0, 6, 0]) linear_extrude(height=0.6) text(title, size=5, font="Liberation Sans:style=bold", halign="center"); } } module conn5_button(title="", open=0, mode=0) { h = (open != 0) ? 23 : 7.5; w = 20.0; translate([(w/2)-119.4+ref_x_top, -(h/2)-22.5+conn_space_y, 0]) { if (mode == 0) cube([w, h, 4], center=true); else translate([0, 6, 0]) linear_extrude(height=0.6) text(title, size=5, font="Liberation Sans:style=bold", halign="center"); } } module switch(open=0, mode=0) { d = 23; translate([-119.4+ref_x_top+2.595, -22.5+9.9, 0]) { if (mode == 0) { cylinder(h=4, d=5, $fn=g_fn, center=true); if (open != 0) translate([0, -d/2, 0]) cube([5, d, 4], center=true); } } } mirror([1,0,0]) union() { // difference() { // base(h=g_base_thickness); // top translate([0, 0, 0]) conn2_top(title="C1", open=1, mode=g_mode); translate([11.43, 0, 0]) conn2_top(title="C2", open=1, mode=g_mode); translate([30.48, 0, 0]) conn3_top(title="T1", open=1, mode=g_mode); translate([45.72, 0, 0]) conn3_top(title="T2", open=1, mode=g_mode); translate([68.58, 0, 0]) conn3_top(title="P1", open=1, mode=g_mode); translate([83.82, 0, 0]) conn3_top(title="P2", open=1, mode=g_mode); // buttom translate([0, 0, 0]) conn5_button(title="V1", open=0, mode=g_mode); translate([22.915, 0, 0]) conn5_button(title="V2", open=0, mode=g_mode); translate([45.72, 0, 0]) conn5_button(title="V3", open=0, mode=g_mode); translate([68.58, 0, 0]) conn5_button(title="V4",open=0, mode=g_mode); translate([91.44, 0, 0]) conn5_button(title="V5", open=0, mode=g_mode); translate([114.30, 0, 0]) conn5_button(title="V6", open=0, mode=g_mode); translate([142.19, 0, 0]) conn2_button(title="L1", open=0, mode=g_mode); translate([153.67, 0, 0]) conn2_button(title="L2", open=0, mode=g_mode); translate([165.10, 0, 0]) conn2_button(title="L3", open=0, mode=g_mode); translate([176.48, 0, 0]) conn2_button(title="L4", open=0, mode=g_mode); translate([190.45, 0, 0]) switch(open=0, mode=g_mode); translate([200.66, 0, 0]) conn2_button(title="12V", open=0, mode=g_mode); // translate([-55, 0, 0]) cube([250, 50, 4], center=true); // translate([0, 25, 0]) cube([250, 50, 4], center=true); // } }