Replaced platform locking with screws
This commit is contained in:
		
							parent
							
								
									5a274cdb03
								
							
						
					
					
						commit
						129f1890df
					
				| @ -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> | ||||
| @ -36,73 +36,6 @@ module model_prop_arm() { | ||||
| // <<< | ||||
| 
 | ||||
| // Blocks: | ||||
| module lock_pin(groove) { | ||||
|     slack=groove | ||||
|         ?[1, 0.5, 0.3] | ||||
|         :[0, 0, 0]; | ||||
|     pin_size=get_platform_lock_pin_size(); | ||||
|     size=vec_sum(pin_size, slack); | ||||
|     down(size.z/2) | ||||
|     translate([slack.x/2, slack.y/2, slack.z/2]) | ||||
|     xrot(-4) zrot(-90) right_triangle([size.y, size.x, size.z]); | ||||
| } | ||||
| module lock_arm() { | ||||
|     size=get_platform_lock_arm_size(); | ||||
|     down(get_platform_top_size().z) back(size.y/2) right(size.x/2) cube(size, center=true); | ||||
|     joiner_size=[get_platform_lock_pin_size().x, size.y, get_platform_top_size().z]; | ||||
|     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=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) { | ||||
|         translate(get_platform_lock_pin_pos()) lock_mechanism_button(groove=true); | ||||
|     } | ||||
|     cutout_side(); | ||||
|     scale([1, -1, 1]) cutout_side(); | ||||
| } | ||||
| module lock_mechanism() { | ||||
|     lock_pin(groove=false); | ||||
|     lock_arm(); | ||||
|     lock_mechanism_button(); | ||||
| } | ||||
| module lock_socket() { | ||||
|     pin_size=get_platform_lock_pin_size(); | ||||
|     size=[pin_size.x, pin_size.y, pin_size.z]; | ||||
|     module socket_connector() { | ||||
|         conn_size=[pin_size.x+4, get_platform_wall()*3, get_platform_top_size().z]; | ||||
|         up(pin_size.z/2) fwd(pin_size.y+conn_size.y/2) right(pin_size.x/2) { | ||||
|             prismoid(size1=[conn_size.x, conn_size.y], size2=[conn_size.x, conn_size.y-2], shift=[0, -1], h=conn_size.z/2); | ||||
|             down(conn_size.z/4) cube([conn_size.x, conn_size.y, conn_size.z/2], center=true); | ||||
|         } | ||||
|     } | ||||
|     down(pin_size.z) | ||||
|     translate(get_platform_lock_pin_pos()) { | ||||
|         fwd(pin_size.y) scale([1, -1, -1]) lock_pin(); | ||||
|         socket_connector(); | ||||
|     } | ||||
| } | ||||
| module platform_locks_pins() { | ||||
|     platform_size=get_platform_size(); | ||||
|     lock_pin_size=get_platform_lock_pin_size(); | ||||
|     module lock_side(groove) { | ||||
|         translate(get_platform_lock_pin_pos()) lock_mechanism(); | ||||
|     } | ||||
|     lock_side(); | ||||
|     scale([1, -1, 1]) lock_side(); | ||||
| } | ||||
| module platform_locks_sockets() { | ||||
|     lock_socket(); | ||||
|     scale([1, -1, 1]) lock_socket(); | ||||
| } | ||||
| module platform(base) { | ||||
|     size=get_platform_size(); | ||||
|     base_size=size; | ||||
| @ -110,11 +43,29 @@ module platform(base) { | ||||
|     top_size=get_platform_top_size(); | ||||
|     top=!base; | ||||
|      | ||||
|     module platform_screwholes() { | ||||
|         module screwhole_one() { | ||||
|             fwd(base_size.y/2) xrot(90) down(get_platform_screwhole_h()) screwhole(d=get_platform_screwhole_d(), h=get_platform_screwhole_h()); | ||||
|         } | ||||
|         module screwhole_sided() { | ||||
|             offset=16; | ||||
|             left(offset) screwhole_one(); | ||||
|             right(offset) screwhole_one(); | ||||
|         } | ||||
|         up(top_size.z/5) { | ||||
|             screwhole_sided(); | ||||
|             scale([1,-1,1]) screwhole_sided(); | ||||
|         } | ||||
|     } | ||||
|     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(); | ||||
|         guiding=1; | ||||
|         top_slack=[0.2, 0.2, 0]; | ||||
|         translate(get_platform_top_pos()) { | ||||
|             cube(vec_sum(top_size, top_slack), center=true); | ||||
|             down(top_size.z/2 - 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); | ||||
|         } | ||||
|     } | ||||
|     module base_platform() { | ||||
|         module base_platform_core() { | ||||
| @ -124,11 +75,18 @@ module platform(base) { | ||||
|         difference() { | ||||
|             base_platform_core(); | ||||
|             base_platform_cutout_for_top(); | ||||
|             platform_screwholes(); | ||||
|         } | ||||
|     } | ||||
|     module top_platform() { | ||||
|         up((base_size.z-top_size.z)/2) | ||||
|         braced_thinning_wall(h=top_size.y, l=top_size.x, thick=top_size.z, wall=0, strut=wall/4, orient=ORIENT_X_90); | ||||
|         difference() { | ||||
|             up((base_size.z-top_size.z)/2)        | ||||
|             up(top_size.z/2) intersection() { | ||||
|                 scale([1,1,4]) braced_thinning_wall(h=top_size.y, l=top_size.x, thick=top_size.z, wall=0, strut=wall/4, orient=ORIENT_X_90); | ||||
|                 down(top_size.z/2) scale([2,2,1]) cube(top_size, center=true); | ||||
|             } | ||||
|             platform_screwholes(); | ||||
|         } | ||||
|     } | ||||
|          | ||||
|     module strap_connectors() { | ||||
| @ -144,11 +102,9 @@ module platform(base) { | ||||
|     color(top?"Olive":"YellowGreen") | ||||
|     if (base) { | ||||
|         base_platform(); | ||||
|         platform_locks_pins(); | ||||
|         strap_connectors(); | ||||
|     } else { | ||||
|         top_platform(); | ||||
|         platform_locks_sockets(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -17,19 +17,6 @@ function get_platform_strap_connector_offset() = [ | ||||
|     get_platform_size().y/2 + 4, | ||||
|     -get_link_segment_size().z/2 + 0.5 | ||||
|     ]; | ||||
| 
 | ||||
| function get_platform_lock_pin_size() = [20, 4, 3]; | ||||
| function get_platform_lock_arm_size() = [46, 2, 3]; | ||||
| function get_platform_lock_pin_pos() = [-get_platform_lock_pin_size().x/2, -get_platform_top_size().y/2 + get_platform_wall()*4 + 1, get_platform_top_size().z/2]; | ||||
| function get_platform_lock_button_profile(groove) = groove ? [10, 5] : [7, 4.5]; | ||||
| function get_platform_lock_button_size(groove) = [ | ||||
|     get_platform_lock_button_profile(groove).x, | ||||
|     get_platform_size().y * 0.25 + get_platform_lock_pin_size().y + 2, | ||||
|     get_platform_lock_button_profile(groove).y | ||||
|     ]; | ||||
| function get_platform_lock_button_pos() = [ | ||||
|     get_platform_lock_pin_size().x/2 + 5, | ||||
|     -get_platform_lock_button_size(false).y/2, | ||||
|     -get_platform_size().z/2 | ||||
|     ]; | ||||
| function get_platform_screwhole_d() = 3.2; | ||||
| function get_platform_screwhole_h() = 10; | ||||
| 
 | ||||
|  | ||||
| @ -1,12 +1,15 @@ | ||||
| links_count=3; // [1..20] | ||||
| links_count=2; // [1..20] | ||||
| include_terminal=true; // [true,false] | ||||
| include_screwhole=true; // [true,false] | ||||
| clip_screwhole=2; | ||||
| 
 | ||||
| //export=302;//MODEL_CLIP_A; | ||||
| //export=303;//MODEL_CLIP_B; | ||||
| 
 | ||||
| include <export.scad> | ||||
| //export=MODEL_LINKS; | ||||
| //export=MODEL_CLIP_A; | ||||
| //export=MODEL_CLIP_B; | ||||
| //export=MODEL_CLIP_RATCHETING_A; | ||||
| //export=MODEL_CLIP_RATCHETING_B; | ||||
| 
 | ||||
| use <BOSL/transforms.scad> | ||||
| use <BOSL/shapes.scad> | ||||
| include <BOSL/constants.scad> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user