1.1 --- a/cartridge.scad Fri Oct 10 16:24:44 2014 +0200
1.2 +++ b/cartridge.scad Mon Nov 24 23:28:19 2014 +0100
1.3 @@ -71,6 +71,8 @@
1.4 }
1.5 }
1.6
1.7 + /* A fillet justified using the axes. */
1.8 +
1.9 module fillet_justified(r, h) {
1.10 if (FILLET)
1.11 difference() {
1.12 @@ -79,6 +81,17 @@
1.13 }
1.14 }
1.15
1.16 + /* A justified fillet with the extra material below the y-axis. */
1.17 +
1.18 + module fillet_partitioned(r, h) {
1.19 + if (FILLET)
1.20 + difference() {
1.21 + translate([0, 0, -extra])
1.22 + cube([r + extra, r + extra, h + extra]);
1.23 + cylinder(r = r, h = h);
1.24 + }
1.25 + }
1.26 +
1.27 module fillet_torus(radius, rounding) {
1.28 if (FILLET)
1.29 difference() {
1.30 @@ -127,7 +140,8 @@
1.31
1.32 /* Internal dimensions. */
1.33
1.34 - int_width = 86.0;
1.35 + int_payload_width = 86.0; /* internal width in the payload section */
1.36 + int_connector_width = 86.0; /* limited to the Plus 1 socket dimensions */
1.37 int_payload_depth = 12.5; /* maximum depth in the payload section */
1.38 int_connector_depth = 11.0; /* maximum depth in the connector section */
1.39 int_payload_height = 50.8; /* space between the top and the floor */
1.40 @@ -158,7 +172,8 @@
1.41
1.42 /* Cartridge dimensions. */
1.43
1.44 - width = int_width + side + side;
1.45 + payload_width = int_payload_width + side + side;
1.46 + connector_width = int_connector_width + side + side;
1.47 payload_height = top + int_payload_height;
1.48 connector_height = bottom + int_connector_height;
1.49 height = payload_height + bottom + int_connector_height;
1.50 @@ -177,7 +192,7 @@
1.51
1.52 /* Label details. */
1.53
1.54 - front_label_width = 83.0;
1.55 + front_label_width = payload_width - side - side - 3.0;
1.56 front_label_height = 46.0;
1.57 front_label_depth = 1.0;
1.58 front_label_offset_from_bottom = 19.5;
1.59 @@ -207,13 +222,17 @@
1.60 Offsets are measured from the outside surfaces.
1.61 */
1.62
1.63 - inner_top_front_cutout_width = int_width;
1.64 + inner_top_front_cutout_width = int_payload_width;
1.65 inner_top_front_cutout_depth = top_groove_width;
1.66 inner_top_front_cutout_height = top - top_groove_depth;
1.67
1.68 - inner_side_front_cutout_height = height - top_groove_depth;
1.69 - inner_side_front_cutout_width = front_side - groove_depth;
1.70 - inner_side_front_cutout_depth = groove_width_overlap;
1.71 + inner_payload_front_cutout_height = payload_height - top_groove_depth;
1.72 + inner_payload_front_cutout_width = front_side - groove_depth;
1.73 + inner_payload_front_cutout_depth = groove_width_overlap;
1.74 +
1.75 + inner_connector_front_cutout_height = connector_height;
1.76 + inner_connector_front_cutout_width = front_side - groove_depth;
1.77 + inner_connector_front_cutout_depth = groove_width_overlap;
1.78
1.79 /*
1.80 The back cavity is the indented part at the bottom of the back of the
1.81 @@ -249,7 +268,7 @@
1.82
1.83 /* The tapering off of the inner front edge. */
1.84
1.85 - inner_front_edge_width = width - front_side * 2;
1.86 + inner_front_edge_width = connector_width - front_side * 2;
1.87 inner_front_edge_height = 3.0;
1.88 inner_front_edge_depth = 1.5;
1.89
1.90 @@ -267,7 +286,7 @@
1.91 */
1.92
1.93 edge_connector_cutout_front_depth = front_back_overlap;
1.94 - edge_connector_cutout_front_width = (int_width - edge_connector_cutout_back_width) / 2;
1.95 + edge_connector_cutout_front_width = (int_connector_width - edge_connector_cutout_back_width) / 2;
1.96
1.97 /*
1.98 Edge connectors are themselves 0.05" or approximately 1.27mm in
1.99 @@ -375,7 +394,7 @@
1.100
1.101 module pcb_lug(xdir) {
1.102 translate([xdir *
1.103 - (int_width / 2 - pcb_lug_offset_from_inside),
1.104 + (int_connector_width / 2 - pcb_lug_offset_from_inside),
1.105 back_depth,
1.106 int_payload_lower_extent + pcb_lug_offset_from_bottom
1.107 ])
1.108 @@ -400,7 +419,7 @@
1.109
1.110 module pcb_front_lug(xdir) {
1.111 translate([xdir *
1.112 - (int_width / 2 - pcb_lug_offset_from_inside),
1.113 + (int_connector_width / 2 - pcb_lug_offset_from_inside),
1.114 -int_front_depth + pcb_front_lug_depth,
1.115 int_payload_lower_extent + pcb_lug_offset_from_bottom
1.116 ])
1.117 @@ -415,7 +434,7 @@
1.118
1.119 /* The actual shapes. */
1.120
1.121 - front_displacement = APART ? -width * 0.6 : 0;
1.122 + front_displacement = APART ? -payload_width * 0.6 : 0;
1.123
1.124 if (FRONT)
1.125 translate([front_displacement, 0, 0])
1.126 @@ -428,16 +447,38 @@
1.127 /* Front portion. */
1.128
1.129 if (FRONT_SURFACE) {
1.130 - cube_at(width, front, height,
1.131 - 0, -1, 0,
1.132 - 0, -int_front_depth, 0);
1.133 - cube_at(front_left, front_depth, height,
1.134 - -1, -1, 0,
1.135 - -int_width / 2, 0, 0);
1.136 - cube_at(front_right, front_depth, height,
1.137 - 1, -1, 0,
1.138 - int_width / 2, 0, 0);
1.139 - cube_at(width, front_depth, top,
1.140 +
1.141 + /* Surfaces surrounding the payload. */
1.142 +
1.143 + cube_at(payload_width, front, payload_height,
1.144 + 0, -1, 1,
1.145 + 0, -int_front_depth, int_payload_lower_extent);
1.146 +
1.147 + cube_at(front_left, front_depth, payload_height,
1.148 + -1, -1, 1,
1.149 + -int_payload_width / 2, 0, int_payload_lower_extent);
1.150 +
1.151 + cube_at(front_right, front_depth, payload_height,
1.152 + 1, -1, 1,
1.153 + int_payload_width / 2, 0, int_payload_lower_extent);
1.154 +
1.155 + /* Surfaces surrounding the connector. */
1.156 +
1.157 + cube_at(connector_width, front, connector_height,
1.158 + 0, -1, -1,
1.159 + 0, -int_front_depth, int_payload_lower_extent);
1.160 +
1.161 + cube_at(front_left, front_depth, connector_height,
1.162 + -1, -1, -1,
1.163 + -int_connector_width / 2, 0, int_payload_lower_extent);
1.164 +
1.165 + cube_at(front_right, front_depth, connector_height,
1.166 + 1, -1, -1,
1.167 + int_connector_width / 2, 0, int_payload_lower_extent);
1.168 +
1.169 + /* Top surface for the front piece. */
1.170 +
1.171 + cube_at(payload_width, front_depth, top,
1.172 0, -1, 1,
1.173 0, 0, int_payload_upper_extent);
1.174 }
1.175 @@ -446,7 +487,7 @@
1.176
1.177 /* Floor of cartridge. */
1.178
1.179 - cube_at(int_width, int_front_depth, bottom,
1.180 + cube_at(int_connector_width, int_front_depth, bottom,
1.181 0, -1, 1,
1.182 0, 0, -height / 2 + int_connector_height);
1.183
1.184 @@ -456,7 +497,7 @@
1.185 edge_connector_cutout_front_depth,
1.186 bottom,
1.187 1, -1, 1,
1.188 - -int_width / 2,
1.189 + -int_connector_width / 2,
1.190 0,
1.191 -height / 2 + int_connector_height);
1.192
1.193 @@ -466,7 +507,7 @@
1.194 edge_connector_cutout_front_depth,
1.195 bottom,
1.196 -1, -1, 1,
1.197 - int_width / 2,
1.198 + int_connector_width / 2,
1.199 0,
1.200 -height / 2 + int_connector_height);
1.201 }
1.202 @@ -537,17 +578,29 @@
1.203 0, -1, 1,
1.204 0, 0, int_payload_upper_extent);
1.205
1.206 - cube_at(inner_side_front_cutout_width,
1.207 - inner_side_front_cutout_depth,
1.208 - inner_side_front_cutout_height,
1.209 - 1, -1, 0,
1.210 - int_width / 2, 0, -inner_top_front_cutout_height);
1.211 + cube_at(inner_payload_front_cutout_width,
1.212 + inner_payload_front_cutout_depth,
1.213 + inner_payload_front_cutout_height,
1.214 + 1, -1, 1,
1.215 + int_payload_width / 2, 0, int_payload_lower_extent);
1.216 +
1.217 + cube_at(inner_payload_front_cutout_width,
1.218 + inner_payload_front_cutout_depth,
1.219 + inner_payload_front_cutout_height,
1.220 + -1, -1, 1,
1.221 + -int_payload_width / 2, 0, int_payload_lower_extent);
1.222
1.223 - cube_at(inner_side_front_cutout_width,
1.224 - inner_side_front_cutout_depth,
1.225 - inner_side_front_cutout_height,
1.226 - -1, -1, 0,
1.227 - -int_width / 2, 0, -inner_top_front_cutout_height);
1.228 + cube_at(inner_connector_front_cutout_width,
1.229 + inner_connector_front_cutout_depth,
1.230 + inner_connector_front_cutout_height,
1.231 + 1, -1, -1,
1.232 + int_connector_width / 2, 0, int_payload_lower_extent);
1.233 +
1.234 + cube_at(inner_connector_front_cutout_width,
1.235 + inner_connector_front_cutout_depth,
1.236 + inner_connector_front_cutout_height,
1.237 + -1, -1, -1,
1.238 + -int_connector_width / 2, 0, int_payload_lower_extent);
1.239
1.240 /* Fillets to round off the edges. */
1.241
1.242 @@ -555,11 +608,11 @@
1.243
1.244 /* Top left and right rounding. */
1.245
1.246 - translate([-width / 2 + ro, -front_depth / 2, height / 2 - ro])
1.247 + translate([-payload_width / 2 + ro, -front_depth / 2, height / 2 - ro])
1.248 rotate([0, 0, 180])
1.249 rotate([90, 0, 0])
1.250 fillet(rr, front_depth);
1.251 - translate([width / 2 - ro, -front_depth / 2, height / 2 - ro])
1.252 + translate([payload_width / 2 - ro, -front_depth / 2, height / 2 - ro])
1.253 rotate([90, 0, 0])
1.254 fillet(rr, front_depth);
1.255
1.256 @@ -568,14 +621,14 @@
1.257 translate([0, -front_depth + ro, height / 2 - ro])
1.258 rotate([0, 0, 180])
1.259 rotate([0, -90, 0])
1.260 - fillet(rr, width);
1.261 + fillet(rr, payload_width);
1.262
1.263 /* Edge rounding. */
1.264
1.265 - translate([-width / 2 + ro, -front_depth + ro, 0])
1.266 + translate([-payload_width / 2 + ro, -front_depth + ro, 0])
1.267 rotate([0, 0, 180])
1.268 fillet(rr, height);
1.269 - translate([width / 2 - ro, -front_depth + ro, 0])
1.270 + translate([payload_width / 2 - ro, -front_depth + ro, 0])
1.271 rotate([0, 0, 270])
1.272 fillet(rr, height);
1.273 }
1.274 @@ -586,7 +639,7 @@
1.275 the same way, if APART is defined.
1.276 */
1.277
1.278 - back_displacement = APART ? width * 0.6 : 0;
1.279 + back_displacement = APART ? payload_width * 0.6 : 0;
1.280 back_rotation = APART ? 180 : 0;
1.281
1.282 if (BACK)
1.283 @@ -602,65 +655,112 @@
1.284
1.285 if (BACK_SURFACE) {
1.286
1.287 + /* Surfaces surrounding the payload. */
1.288 +
1.289 /* Payload section of back surface. */
1.290
1.291 - cube_at(width, payload_back, payload_height,
1.292 + cube_at(payload_width, payload_back, payload_height,
1.293 0, 1, 1,
1.294 0, int_payload_back_depth, int_payload_lower_extent);
1.295
1.296 + cube_at(back_left, back_depth, payload_height,
1.297 + -1, 1, 1,
1.298 + -int_payload_width / 2, 0, int_payload_lower_extent);
1.299 +
1.300 + cube_at(back_right, back_depth, payload_height,
1.301 + 1, 1, 1,
1.302 + int_payload_width / 2, 0, int_payload_lower_extent);
1.303 +
1.304 + /* Surfaces surrounding the connector. */
1.305 +
1.306 /* Connector section of back surface overlapping the floor. */
1.307
1.308 - cube_at(width, connector_back, connector_height,
1.309 - 0, 1, 1,
1.310 - 0, int_connector_back_depth, -height / 2);
1.311 -
1.312 - /* Sides of back piece. */
1.313 + cube_at(connector_width, connector_back, connector_height,
1.314 + 0, 1, -1,
1.315 + 0, int_connector_back_depth, int_payload_lower_extent);
1.316
1.317 - cube_at(back_left, back_depth, height,
1.318 - -1, 1, 0,
1.319 - -int_width / 2, 0, 0);
1.320 + cube_at(back_left, back_depth, connector_height,
1.321 + -1, 1, -1,
1.322 + -int_connector_width / 2, 0, int_payload_lower_extent);
1.323
1.324 - cube_at(back_right, back_depth, height,
1.325 - 1, 1, 0,
1.326 - int_width / 2, 0, 0);
1.327 + cube_at(back_right, back_depth, connector_height,
1.328 + 1, 1, -1,
1.329 + int_connector_width / 2, 0, int_payload_lower_extent);
1.330
1.331 /* Top of back piece. */
1.332
1.333 - cube_at(width, back_depth, top,
1.334 + cube_at(payload_width, back_depth, top,
1.335 0, 1, 1,
1.336 0, 0, int_payload_upper_extent);
1.337
1.338 - /* The extension of the back to connect with the front. */
1.339 + /*
1.340 + The extension of the back to connect with the front. Here, the inside
1.341 + edges are rounded. The outside edges are rounded later.
1.342 +
1.343 + An extra overlapping measure is employed so that the filleting is
1.344 + continuous between the payload and connector portions. On the inside
1.345 + edges, the connector filleting is extended upwards.
1.346 + */
1.347 +
1.348 + /* Left side of payload. */
1.349
1.350 difference() {
1.351 - cube_at(back_left - groove_depth, groove_width_extra, inner_side_front_cutout_height,
1.352 + cube_at(back_left - groove_depth, groove_width_extra, inner_payload_front_cutout_height,
1.353 -1, 1, 1,
1.354 - -int_width / 2, -groove_width_extra, -height / 2);
1.355 - translate([-int_width / 2 - groove_ro, -groove_width_extra + groove_ro,
1.356 - -height / 2])
1.357 + -int_payload_width / 2, -groove_width_extra, int_payload_lower_extent);
1.358 + translate([-int_payload_width / 2 - groove_ro, -groove_width_extra + groove_ro,
1.359 + int_payload_lower_extent])
1.360 rotate([0, 0, -90])
1.361 - fillet_justified(groove_rr, inner_side_front_cutout_height);
1.362 + fillet_justified(groove_rr, inner_payload_front_cutout_height);
1.363 }
1.364
1.365 + /* Right side of payload. */
1.366 +
1.367 difference() {
1.368 - cube_at(back_right - groove_depth, groove_width_extra, inner_side_front_cutout_height,
1.369 + cube_at(back_right - groove_depth, groove_width_extra, inner_payload_front_cutout_height,
1.370 1, 1, 1,
1.371 - int_width / 2, -groove_width_extra, -height / 2);
1.372 - translate([int_width / 2 + groove_ro, -groove_width_extra + groove_ro,
1.373 + int_payload_width / 2, -groove_width_extra, int_payload_lower_extent);
1.374 + translate([int_payload_width / 2 + groove_ro, -groove_width_extra + groove_ro,
1.375 + int_payload_lower_extent])
1.376 + rotate([0, 0, 180])
1.377 + fillet_justified(groove_rr, inner_payload_front_cutout_height);
1.378 + }
1.379 +
1.380 + /* Left side of connector. */
1.381 +
1.382 + difference() {
1.383 + cube_at(back_left - groove_depth, groove_width_extra, inner_connector_front_cutout_height,
1.384 + -1, 1, -1,
1.385 + -int_connector_width / 2, -groove_width_extra, int_payload_lower_extent);
1.386 + translate([-int_connector_width / 2 - groove_ro, -groove_width_extra + groove_ro,
1.387 + -height / 2])
1.388 + rotate([0, 0, -90])
1.389 + fillet_partitioned(groove_rr, inner_connector_front_cutout_height + extra);
1.390 + }
1.391 +
1.392 + /* Right side of connector. */
1.393 +
1.394 + difference() {
1.395 + cube_at(back_right - groove_depth, groove_width_extra, inner_connector_front_cutout_height,
1.396 + 1, 1, -1,
1.397 + int_connector_width / 2, -groove_width_extra, int_payload_lower_extent);
1.398 + translate([int_connector_width / 2 + groove_ro, -groove_width_extra + groove_ro,
1.399 -height / 2])
1.400 rotate([0, 0, 180])
1.401 - fillet_justified(groove_rr, inner_side_front_cutout_height);
1.402 + fillet_partitioned(groove_rr, inner_connector_front_cutout_height + extra);
1.403 }
1.404
1.405 + /* Top side. */
1.406 +
1.407 difference() {
1.408 - cube_at(width - groove_depth * 2, groove_width_extra, top - top_groove_depth,
1.409 + cube_at(payload_width - groove_depth * 2, groove_width_extra, top - top_groove_depth,
1.410 0, 1, 1,
1.411 0, -groove_width_extra, int_payload_upper_extent);
1.412 translate([0, -groove_width_extra + groove_ro,
1.413 int_payload_upper_extent + groove_ro])
1.414 rotate([0, 0, 180])
1.415 rotate([0, 90, 0])
1.416 - fillet(groove_rr, width - groove_depth * 2);
1.417 + fillet(groove_rr, payload_width - groove_depth * 2);
1.418 }
1.419 }
1.420
1.421 @@ -668,7 +768,7 @@
1.422
1.423 /* Floor of cartridge. */
1.424
1.425 - cube_at(int_width, int_connector_back_depth, bottom,
1.426 + cube_at(int_connector_width, int_connector_back_depth, bottom,
1.427 0, 1, 1,
1.428 0, 0, -height / 2 + int_connector_height);
1.429
1.430 @@ -716,21 +816,21 @@
1.431
1.432 cube_at(groove_depth, groove_width_normal, height,
1.433 1, 1, 0,
1.434 - -width / 2, 0, 0);
1.435 + -payload_width / 2, 0, 0);
1.436
1.437 /* Right groove. */
1.438
1.439 cube_at(groove_depth, groove_width_normal, height,
1.440 -1, 1, 0,
1.441 - width / 2, 0, 0);
1.442 + payload_width / 2, 0, 0);
1.443
1.444 /* Top grooves. */
1.445
1.446 - cube_at(width, groove_width_normal, groove_depth,
1.447 + cube_at(payload_width, groove_width_normal, groove_depth,
1.448 0, 1, -1,
1.449 0, 0, height / 2);
1.450
1.451 - cube_at(width, top_groove_width, top_groove_depth,
1.452 + cube_at(payload_width, top_groove_width, top_groove_depth,
1.453 0, 1, -1,
1.454 0, -groove_width_extra, height / 2);
1.455 }
1.456 @@ -744,7 +844,7 @@
1.457
1.458 translate([0, back_depth, -height / 2])
1.459 linear_extrude(height = back_cavity_height)
1.460 - translate([-int_width / 2, 0, 0])
1.461 + translate([-int_connector_width / 2, 0, 0])
1.462 polygon([
1.463 [back_cavity_offset_from_inner_left, 0],
1.464 [back_cavity_inner_offset_from_inner_left,
1.465 @@ -774,7 +874,7 @@
1.466
1.467 translate([0, int_connector_back_depth, -height / 2])
1.468 linear_extrude(height = int_connector_height)
1.469 - translate([-int_width / 2, 0, 0])
1.470 + translate([-int_connector_width / 2, 0, 0])
1.471 polygon([
1.472 [0, 0],
1.473 [inner_back_slope_max_offset, 0],
1.474 @@ -785,7 +885,7 @@
1.475
1.476 translate([0, int_connector_back_depth, -height / 2])
1.477 linear_extrude(height = int_connector_height)
1.478 - translate([int_width / 2, 0, 0])
1.479 + translate([int_connector_width / 2, 0, 0])
1.480 polygon([
1.481 [0, 0],
1.482 [-inner_back_slope_max_offset, 0],
1.483 @@ -813,11 +913,11 @@
1.484
1.485 /* Top left and right rounding. */
1.486
1.487 - translate([-width / 2 + ro, back_depth / 2, height / 2 - ro])
1.488 + translate([-payload_width / 2 + ro, back_depth / 2, height / 2 - ro])
1.489 rotate([0, 0, 180])
1.490 rotate([90, 0, 0])
1.491 fillet(rr, back_depth);
1.492 - translate([width / 2 - ro, back_depth / 2, height / 2 - ro])
1.493 + translate([payload_width / 2 - ro, back_depth / 2, height / 2 - ro])
1.494 rotate([90, 0, 0])
1.495 fillet(rr, back_depth);
1.496
1.497 @@ -825,33 +925,63 @@
1.498
1.499 translate([0, back_depth - ro, height / 2 - ro])
1.500 rotate([0, -90, 0])
1.501 - fillet(rr, width);
1.502 + fillet(rr, payload_width);
1.503
1.504 - /* Edge rounding. */
1.505 + /* Outer edge rounding. */
1.506
1.507 - translate([width / 2 - ro, back_depth - ro, 0])
1.508 - fillet(rr, height);
1.509 - translate([-width / 2 + ro, back_depth - ro, 0])
1.510 + translate([payload_width / 2 - ro, back_depth - ro, int_payload_lower_extent - extra])
1.511 + fillet_justified(rr, payload_height + extra);
1.512 +
1.513 + translate([-payload_width / 2 + ro, back_depth - ro, int_payload_lower_extent - extra])
1.514 + rotate([0, 0, 90])
1.515 + fillet_justified(rr, payload_height + extra);
1.516 +
1.517 + translate([connector_width / 2 - ro, back_depth - ro, -height / 2])
1.518 + fillet_partitioned(rr, connector_height);
1.519 +
1.520 + translate([-connector_width / 2 + ro, back_depth - ro, -height / 2])
1.521 rotate([0, 0, 90])
1.522 - fillet(rr, height);
1.523 + fillet_partitioned(rr, connector_height);
1.524 +
1.525 + /*
1.526 + Outer edge rounding of the back extension. This is done as a
1.527 + separate removal operation rather than occurring when creating the
1.528 + extension in order to ensure that the edges are actually rounded.
1.529 +
1.530 + An extra overlapping measure is employed so that the filleting is
1.531 + continuous between the payload and connector portions. On the outside
1.532 + edges, the payload filleting is extended downwards.
1.533 + */
1.534
1.535 - /* Outer edge rounding of the back extension. */
1.536 + translate([-payload_width / 2 + groove_depth + groove_ro, -groove_width_extra + groove_ro,
1.537 + int_payload_lower_extent - extra])
1.538 + rotate([0, 0, 180])
1.539 + fillet_justified(groove_rr, inner_payload_front_cutout_height + extra);
1.540
1.541 - translate([-width / 2 + groove_depth + groove_ro, -groove_width_extra + groove_ro,
1.542 + translate([payload_width / 2 - groove_depth - groove_ro, -groove_width_extra + groove_ro,
1.543 + int_payload_lower_extent - extra])
1.544 + rotate([0, 0, -90])
1.545 + fillet_justified(groove_rr, inner_payload_front_cutout_height + extra);
1.546 +
1.547 + /* Sides of connector. */
1.548 +
1.549 + translate([-connector_width / 2 + groove_depth + groove_ro, -groove_width_extra + groove_ro,
1.550 -height / 2])
1.551 rotate([0, 0, 180])
1.552 - fillet_justified(groove_rr, inner_side_front_cutout_height);
1.553 + fillet_partitioned(groove_rr, inner_connector_front_cutout_height);
1.554
1.555 - translate([width / 2 - groove_depth - groove_ro, -groove_width_extra + groove_ro,
1.556 + translate([connector_width / 2 - groove_depth - groove_ro, -groove_width_extra + groove_ro,
1.557 -height / 2])
1.558 rotate([0, 0, -90])
1.559 - fillet_justified(groove_rr, inner_side_front_cutout_height);
1.560 + fillet_partitioned(groove_rr, inner_connector_front_cutout_height);
1.561 +
1.562 + /* Top of payload. */
1.563
1.564 translate([0, -groove_width_extra + groove_ro,
1.565 int_payload_upper_extent + inner_top_front_cutout_height - groove_ro])
1.566 rotate([0, 0, 180])
1.567 rotate([0, -90, 0])
1.568 - fillet(groove_rr, width - groove_depth * 2);
1.569 + fillet(groove_rr, payload_width - groove_depth * 2);
1.570 }
1.571 }
1.572
1.573 @@ -931,13 +1061,13 @@
1.574 /* Holes for lugs. */
1.575
1.576 translate([
1.577 - -int_width / 2 + pcb_lug_offset_from_inside,
1.578 + -int_connector_width / 2 + pcb_lug_offset_from_inside,
1.579 pcb_hole_start_depth, pcb_lug_offset_from_bottom])
1.580 rotate([-90, 0, 0])
1.581 cylinder(h=pcb_hole_depth, r=pcb_lug_hole_radius);
1.582
1.583 translate([
1.584 - int_width / 2 - pcb_lug_offset_from_inside,
1.585 + int_connector_width / 2 - pcb_lug_offset_from_inside,
1.586 pcb_hole_start_depth, pcb_lug_offset_from_bottom])
1.587 rotate([-90, 0, 0])
1.588 cylinder(h=pcb_hole_depth, r=pcb_lug_hole_radius);