|
|
@@ -1,6 +1,6 @@ |
|
|
|
include <export.scad> |
|
|
|
//export=MODEL_PLATFORM_HARNESS; |
|
|
|
//export=MODEL_PLATFORM_STRAP; |
|
|
|
export=MODEL_PLATFORM_STRAP; |
|
|
|
|
|
|
|
// dependency: https://github.com/revarbat/BOSL |
|
|
|
include <BOSL/constants.scad> |
|
|
@@ -53,12 +53,14 @@ module lock_arm() { |
|
|
|
translate([joiner_size.x/2, joiner_size.y/2, -joiner_size.z/2 + size.z/2]) cube(joiner_size, center=true); |
|
|
|
} |
|
|
|
module lock_mechanism_button(groove=false) { |
|
|
|
button_size=groove |
|
|
|
?[10,5] |
|
|
|
:[7,4.5]; |
|
|
|
size=[button_size.x, get_platform_wall()*7, button_size.y]; |
|
|
|
translate([get_platform_lock_pin_size().x*1.5, -get_platform_size().y/2+size.y*1.3, -get_platform_size().z/2]) |
|
|
|
cube(size, center=true); |
|
|
|
button_size=get_platform_lock_button_profile(groove); |
|
|
|
size=get_platform_lock_button_size(groove); |
|
|
|
translate(get_platform_lock_button_pos()) |
|
|
|
left(groove?1:0) |
|
|
|
difference() { |
|
|
|
cube(size, center=true); |
|
|
|
up(size.z/2 + (groove?0.5:0)) back(3) cube(size, center=true); |
|
|
|
} |
|
|
|
} |
|
|
|
module lock_buttons_cutout() { |
|
|
|
module cutout_side(groove) { |
|
|
@@ -108,6 +110,12 @@ module platform(base) { |
|
|
|
top_size=get_platform_top_size(); |
|
|
|
top=!base; |
|
|
|
|
|
|
|
module base_platform_cutout_for_top() { |
|
|
|
base_top_diff=[base_size.x-top_size.x, base_size.y-top_size.y]; |
|
|
|
guiding=0.4; |
|
|
|
translate(get_platform_top_pos()) down(top_size.z/2) prismoid(size1=[top_size.x,top_size.y], size2=[top_size.x+base_top_diff.x*guiding,top_size.y+base_top_diff.y*guiding], h=top_size.z); |
|
|
|
lock_buttons_cutout(); |
|
|
|
} |
|
|
|
module base_platform() { |
|
|
|
module base_platform_core() { |
|
|
|
braced_thinning_wall(h=size.y, l=size.x, thick=size.z, wall=0, strut=wall, orient=ORIENT_X_90); |
|
|
@@ -115,8 +123,7 @@ module platform(base) { |
|
|
|
|
|
|
|
difference() { |
|
|
|
base_platform_core(); |
|
|
|
translate(get_platform_top_pos()) down(top_size.z/2) prismoid(size1=[top_size.x,top_size.y], size2=[base_size.x-2,base_size.y-2], h=top_size.z); |
|
|
|
lock_buttons_cutout(); |
|
|
|
base_platform_cutout_for_top(); |
|
|
|
} |
|
|
|
} |
|
|
|
module top_platform() { |
|
|
@@ -126,8 +133,11 @@ module platform(base) { |
|
|
|
|
|
|
|
module strap_connectors() { |
|
|
|
//down(size.z/2) |
|
|
|
foreach_platform_strap_connector() { |
|
|
|
link_connector_pin(); |
|
|
|
difference() { |
|
|
|
foreach_platform_strap_connector() { |
|
|
|
link_connector_pin(); |
|
|
|
} |
|
|
|
base_platform_cutout_for_top(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -151,6 +161,11 @@ module model_platform_strap() { |
|
|
|
platform(base=true); |
|
|
|
} |
|
|
|
|
|
|
|
// Validation: |
|
|
|
/*intersection() { |
|
|
|
model_platform_harness(); |
|
|
|
model_platform_strap(); |
|
|
|
}*/ |
|
|
|
// Export: |
|
|
|
difference() { |
|
|
|
union() { |
|
|
|