2021-01-20 11:56:26 +00:00
|
|
|
include <export.scad>
|
|
|
|
|
2021-01-02 09:43:54 +00:00
|
|
|
// dependency: https://github.com/revarbat/BOSL
|
|
|
|
include <BOSL/constants.scad>
|
|
|
|
use <BOSL/transforms.scad>
|
|
|
|
use <BOSL/shapes.scad>
|
|
|
|
use <BOSL/masks.scad>
|
|
|
|
use <BOSL/sliders.scad>
|
|
|
|
|
2021-01-20 11:56:26 +00:00
|
|
|
use <specs_platform.scad>
|
|
|
|
use <specs_strap.scad>
|
|
|
|
|
|
|
|
use <strap_common.scad>
|
|
|
|
|
2021-01-02 09:43:54 +00:00
|
|
|
// DEBUG:
|
|
|
|
//validation = 1;
|
|
|
|
//xray = 1;
|
|
|
|
|
2021-01-20 11:56:26 +00:00
|
|
|
// PROP >>
|
|
|
|
module prop_arm() {
|
2021-01-02 09:43:54 +00:00
|
|
|
$fn=$preview ? 10 : 30;
|
|
|
|
arm_size=[200, 55, 40];
|
|
|
|
color("gray")
|
2021-01-11 12:54:11 +00:00
|
|
|
down(arm_size.z/2) {
|
|
|
|
cuboid(arm_size, fillet=16, edges=EDGES_X_ALL);
|
|
|
|
left(arm_size.x*0.6) scale([1, 1, 0.8]) yrot(90) cylinder(d1=arm_size.y*1.4, d2=arm_size.y*0.95, h=arm_size.x/2);
|
|
|
|
}
|
2021-01-02 09:43:54 +00:00
|
|
|
}
|
2021-01-20 11:56:26 +00:00
|
|
|
module model_prop_arm() {
|
|
|
|
if (is_not_export()) down(3) prop_arm();
|
|
|
|
}
|
|
|
|
// <<<
|
2021-01-02 09:43:54 +00:00
|
|
|
|
2021-01-20 11:56:26 +00:00
|
|
|
// Blocks:
|
|
|
|
module platform(base) {
|
|
|
|
size=get_platform_size();
|
|
|
|
top=!base;
|
|
|
|
up(top?size.z:0)
|
|
|
|
color(top?"Olive":"YellowGreen")
|
|
|
|
cube(size, center=true);
|
2021-01-02 09:43:54 +00:00
|
|
|
|
2021-01-20 11:56:26 +00:00
|
|
|
module strap_connectors() {
|
|
|
|
down(size.z/2) {
|
|
|
|
for (i=[0:3]) {
|
|
|
|
left((i%2*(-2)+1) * (size.x/2 - get_link_segment_size().y/2))
|
|
|
|
fwd((round(i/2)%2*(-2)+1) * size.y/2)
|
|
|
|
down(get_link_segment_size().z/2)
|
|
|
|
zrot(90 + (round(i/2)%2*180)) link_connector_pin();
|
2021-01-02 09:43:54 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-01-20 11:56:26 +00:00
|
|
|
if (base) {
|
|
|
|
strap_connectors();
|
2021-01-02 09:43:54 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-01-20 11:56:26 +00:00
|
|
|
// Models:
|
|
|
|
module model_platform_harness() {
|
|
|
|
platform(base=false);
|
2021-01-11 12:54:11 +00:00
|
|
|
}
|
|
|
|
|
2021-01-20 11:56:26 +00:00
|
|
|
module model_platform_strap() {
|
|
|
|
platform(base=true);
|
2021-01-02 09:43:54 +00:00
|
|
|
}
|
|
|
|
|
2021-01-20 11:56:26 +00:00
|
|
|
// Export:
|
|
|
|
if (is_model(MODEL_PLATFORM_HARNESS)) model_platform_harness();
|
|
|
|
if (is_model(MODEL_PLATFORM_STRAP)) model_platform_strap();
|
|
|
|
if (is_model(MODEL_DEMO)) model_prop_arm();
|