include size = [94.3, 101.2, 27.10]; plug_size = 10; plug_nb = 5; plug_offset = 5; module _switch_rj45(nb_plugs) { rj45_size = [16, 21.9, 13.4]; for(p = [0:nb_plugs - 1]) translate([rj45_size[0]*p, 0, 0]) { color("DarkSlateGray") difference() { cube(rj45_size); translate([1.1, -0.1, rj45_size[2] - 1.85 - 1.1]) cube([3.3, 0.3, 1.85]); translate([rj45_size[0] - 1.1 - 3.3, -0.1, rj45_size[2] - 1.85 - 1.1]) cube([3.3, 0.3, 1.85]); translate([rj45_size[0]/2 - 11.44/2, -0.1, 2.5])cube([11.44, 9.4, 6.88]); translate([rj45_size[0]/2 - 6.12/2, -0.1, 2.5+6.88-0.1])cube([6.2, 10.5, 2]); translate([rj45_size[0]/2 - 4/2, -0.1, rj45_size[2]-1.3-1])cube([4, 10.5, 1.2]); translate([rj45_size[0]/2 - 13.7/2, -0.1, 4])cube([13.7, 9.4, 3]); } color("green") translate([1.1, 0, rj45_size[2] - 1.85 - 1.1]) cube([3.3, 0.3, 1.85]); color("orange") translate([rj45_size[0] - 1.1 - 3.3, 0, rj45_size[2] - 1.85 - 1.1]) cube([3.3, 0.3, 1.85]); } } module switch() { if(fast) { plug_offset2 = (size[0] - plug_nb * plug_size - (plug_nb - 1) * plug_offset) / 2; color("DarkOliveGreen", .8) { difference() { cube(size); for(i = [1:plug_nb]){ translate([(i-1)*(plug_size+plug_offset)+plug_offset2, -2, size[2]/2-plug_size/2]) cube(plug_size); } } } } else { color("DarkOliveGreen") { difference() { cube(size); translate([10.8, -1, 6.2]) cube([79.6, 13, 13.4]); translate([20.4, size[1]-10, 7.3]) cube([9.6, 13, 11.5]); } } translate([10.8,0,6.2]) _switch_rj45(5); translate([20.4, size[1]-12, 7.3]) { color("DarkSlateGray") difference() { cube([9.6, 12, 11.5]); translate([9.6/2, 2, 6.5]) rotate([-90, 0, 0]) cylinder(d=6.3, h=11, $fn=15); } color("silver") { union() { translate([9.6/2, 0, 6.5]) rotate([-90, 0, 0]) cylinder(d=2, h=10, $fn=15); translate([9.6/2, 10, 6.5]) sphere(d=2, $fn=15); } } } } } switch();