3 board_screw_w = 101.85;
8 board_sep = 5; // realne je 4 mm na kazdou stranu
9 board_sep2 = 14; // na strane kabelu vic mista
12 box_w = board_screw_w + board_sep + board_sep2 + 2*thin_wall;
13 box_h = board_screw_h + 2*board_sep + 2*thin_wall;
31 y_cable_xoff = box_w + 3;
33 cable_back = 20; // keep space for rotating it
35 module extrusion_clip(width, thick) {
38 cube([20, width, thick]);
40 translate([6, 0, 0]) cube([8, width, thick]);
41 translate([7, 0, 0]) cube([6, width, thick+1.5]);
44 translate([10, width/2, -eps])
45 cylinder(r = screw_d/2, h = thick+1.5+2*eps, $fn = 6);
49 module cable_inlet() {
51 translate([-cable_d/2, -cable_back, 0])
52 cube([cable_d/2, cable_back*0.8, box_z]);
53 translate([-cable_d/2-cable_top, -cable_back,
54 box_z - cable_wall - cable_d])
55 cube([cable_d + 2*cable_top, cable_back+cable_ext,
60 module cable_inlet_hole() {
61 translate([-cable_d/2, -cable_back-eps, box_z-cable_d])
62 cube([cable_d, cable_back + cable_ext + 2*eps, cable_d+eps]);
63 translate([0, -cable_back-eps, box_z-cable_d-cable_wall - nylon_d/2])
65 cylinder(r = nylon_d/2, h = cable_ext + cable_back + 2*eps,
67 for (x = [-1, 1]) scale([x, 1, 1])
68 translate([cable_d/2 + cable_top/2, cable_ext/2, box_z - cable_d])
70 cylinder(r = board_screw_d/2, h = cable_d + eps, $fn = 6);
75 cube([box_w, box_h, box_z]);
76 translate([-20, 0, 0]) extrusion_clip(clip_w, clip_h);
77 translate([clip_h, box_h, clip_h])
78 rotate([0, -90, 0]) extrusion_clip(clip_w, clip_h);
81 translate([eps, 0, 6+clip_h]) cube([eps, box_h, 8]);
82 translate([-1.5, 0, 7+clip_h]) cube([1.5, box_h, 6]);
87 translate([0, box_h, 0]) cube([clip_h, clip_w, clip_h]);
88 translate([box_w-eps, box_h, 0]) cube([eps, eps, clip_h]);
91 translate([x_cable_xoff, box_h, 0])
94 translate([y_cable_xoff, y_cable_yoff, 0])
95 rotate([0, 0, -y_cable_rot])
100 translate([thin_wall, thin_wall, board_zoff])
101 cube([box_w - 2*thin_wall, box_h - 2*thin_wall, box_z]);
102 // board screw supports
103 translate([thin_wall, thin_wall+board_sep+screw_support_in,
104 board_zoff - board_screw_supp])
105 cube([box_w - 2*thin_wall,
106 board_screw_h - 2*screw_support_in, box_z]);
107 translate([thin_wall+board_sep+screw_support_in, thin_wall,
108 board_zoff - board_screw_supp])
109 cube([board_screw_w - 2*screw_support_in,
110 box_h - 2*thin_wall, box_z]);
112 translate([thin_wall+board_sep+screw_support_in,
113 thin_wall+board_sep+screw_support_in, thin_wall])
114 cube([board_screw_w - 2*screw_support_in,
115 board_screw_h - 2*screw_support_in, box_z]);
117 // ribs in the back side
121 holes = floor((board_screw_w - 2*screw_support_in + rib_w)/(hole_min_w+rib_w)),
122 hole_w = (board_screw_w - 2*screw_support_in + rib_w)/holes - rib_w
124 for (i = [0:1:holes-1]) {
125 translate([thin_wall+board_sep+screw_support_in
126 + i*(hole_w+rib_w), thin_wall+board_sep+screw_support_in, -eps])
127 cube([hole_w, box_h-2*board_sep-2*thin_wall-2*screw_support_in, thin_wall+2*eps]);
129 // holes in the bottom side
135 holes = floor((box_w - 6*thin_wall)/(hole_min_w+rib_w)),
136 hole_w = (box_w - 6*thin_wall + rib_w)/holes - rib_w
138 for (i = [0:1:holes-1]) {
139 translate([3*thin_wall + i*(hole_w+rib_w), -eps, hole_zoff])
140 cube([hole_w, thin_wall + 2*eps, hole_h]);
144 for (x = [0, 1]) for (y = [0, 1])
145 translate([thin_wall+board_sep + x*board_screw_w,
146 thin_wall+board_sep + y*board_screw_h,
148 cylinder(r = board_screw_d/2, h = box_z, $fn = 6);
151 translate([thin_wall + board_sep + 69.5, box_h - thin_wall - eps,
153 cube([14, thin_wall+2*eps, 11]);
155 translate([thin_wall + board_sep + 48, box_h - thin_wall - eps,
157 cube([16, thin_wall+2*eps, 4]);
159 translate([x_cable_xoff, box_h, 0])
163 translate([y_cable_xoff, y_cable_yoff, 0])
164 rotate([0, 0, -y_cable_rot])