include // dependency: https://github.com/revarbat/BOSL include use use use use use use use // DEBUG: //validation = 1; //xray = 1; // PROP >> module prop_arm() { $fn=$preview ? 10 : 30; arm_size=[200, 55, 40]; color("gray") 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); } } module model_prop_arm() { if (is_not_export()) down(3) prop_arm(); } // <<< // Blocks: module platform(base) { size=get_platform_size(); top=!base; up(top?size.z:0) color(top?"Olive":"YellowGreen") cube(size, center=true); module strap_connectors() { offset=get_platform_strap_connector_offset(); down(size.z/2) { for (i=[0:3]) { translate([((i%2*(-2)+1) * offset.x), -((round(i/2)%2*(-2)+1) * offset.y), offset.z]) zrot(90 + (round(i/2)%2*180)) link_connector_pin(); } } } if (base) { strap_connectors(); } } // Models: module model_platform_harness() { platform(base=false); } module model_platform_strap() { platform(base=true); } // 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();