|
|
@@ -7,15 +7,18 @@ use <BOSL/sliders.scad> |
|
|
|
|
|
|
|
// DEBUG: |
|
|
|
//validation = 1; |
|
|
|
//xray = 1; |
|
|
|
XRAY_POSITIVE=1; |
|
|
|
XRAY_BACKPLANE=2; |
|
|
|
//xray = 2; |
|
|
|
|
|
|
|
// EXPORT: |
|
|
|
MODEL_HARNESS_LEFT=1; |
|
|
|
MODEL_HARNESS_RIGHT=2; |
|
|
|
MODEL_HARNESS_TOP=3; |
|
|
|
MODEL_HARNESS_SLIDER_FRONT=4; |
|
|
|
MODEL_HARNESS_SLIDER_BACK=5; |
|
|
|
export=1; // [0:5] |
|
|
|
MODEL_HARNESS_BOTTOM_PIP=3; |
|
|
|
MODEL_HARNESS_TOP=4; |
|
|
|
MODEL_HARNESS_SLIDER_FRONT=5; |
|
|
|
MODEL_HARNESS_SLIDER_BACK=6; |
|
|
|
export=3; // [0:6] |
|
|
|
function is_not_export() = is_undef(export) || export == 0; |
|
|
|
function is_export() = !is_not_export(); |
|
|
|
function is_model_strict(m) = is_export() && export == m; |
|
|
@@ -23,6 +26,8 @@ function is_model(m) = is_not_export() || export == m; |
|
|
|
|
|
|
|
function get_phone_size() = [160, 76.7, 10]; |
|
|
|
|
|
|
|
backplane_pip_slideout=10; |
|
|
|
|
|
|
|
module cubi(s, fillet=0, edges=EDGES_ALL) { |
|
|
|
if ($preview) { |
|
|
|
cube(s, center=true); |
|
|
@@ -123,7 +128,21 @@ module phone_harness() { |
|
|
|
} |
|
|
|
} |
|
|
|
module shell_backplane(groove) { |
|
|
|
down(hs.z/2 - shell_wall/6) up(backplane_rim_size.z/2) right(harness_divider.x) scale(groove ? 1.01 : 1) cubi(backplane_rim_size, fillet=5, edges=EDGES_Z_LF); |
|
|
|
down(hs.z/2 - shell_wall/6) up(backplane_rim_size.z/2) right(harness_divider.x) { |
|
|
|
back(backplane_rim_size.y/2) { |
|
|
|
teeth=4; |
|
|
|
segment=backplane_rim_size.y/teeth; |
|
|
|
tooth_size=[backplane_rim_size.x, segment/2, backplane_rim_size.z]; |
|
|
|
for (i = [0:teeth-1]) { |
|
|
|
fwd(i*segment) fwd(tooth_size.y) scale(groove ? 1.02 : 1) cubi(tooth_size, fillet=2, edges=EDGES_Z_LF); |
|
|
|
} |
|
|
|
} |
|
|
|
left(backplane_pip_slideout + 11) if (is_model_strict(MODEL_HARNESS_BOTTOM_PIP)) { |
|
|
|
joiner_size=[7 + (groove?backplane_pip_slideout:0), backplane_rim_size.y, backplane_rim_size.z]; |
|
|
|
scale(groove ? 1.02 : 1) left(-joiner_size.x/2) cubi(joiner_size, fillet=2, edges=EDGES_Z_LF); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// ==== SHELL SLIDER AND RAIL ==== |
|
|
@@ -290,7 +309,11 @@ module phone_harness() { |
|
|
|
} |
|
|
|
|
|
|
|
if (is_model(MODEL_HARNESS_LEFT)) model_harness_left(); |
|
|
|
if (is_model(MODEL_HARNESS_RIGHT)) model_harness_right(); |
|
|
|
if (is_model(MODEL_HARNESS_RIGHT)) model_harness_right(); |
|
|
|
if (is_model_strict(MODEL_HARNESS_BOTTOM_PIP)) { |
|
|
|
model_harness_left(); |
|
|
|
right(backplane_pip_slideout) model_harness_right(); |
|
|
|
} |
|
|
|
if (is_model(MODEL_HARNESS_TOP)) model_harness_top(); |
|
|
|
if (is_model(MODEL_HARNESS_SLIDER_FRONT)) model_harness_slider_front(); |
|
|
|
if (is_model(MODEL_HARNESS_SLIDER_BACK)) model_harness_slider_back(); |
|
|
@@ -308,7 +331,11 @@ if (!is_undef(validation)) { |
|
|
|
} else { |
|
|
|
intersection() { |
|
|
|
if (!is_undef(xray)) { |
|
|
|
span_cube([0,1000*xray], [0,1000*xray], [-1000,1000]); |
|
|
|
if (xray == XRAY_POSITIVE) { |
|
|
|
span_cube([0,1000], [0,1000], [-1000,1000]); |
|
|
|
} else if (xray == XRAY_BACKPLANE) { |
|
|
|
span_cube([-1000,1000], [-1000,1000], [-1000,-7]); |
|
|
|
} |
|
|
|
} |
|
|
|
union() { |
|
|
|
if (is_not_export()) { |
|
|
|