Improved link strap interoperability
This commit is contained in:
		
							parent
							
								
									b85aee5fe1
								
							
						
					
					
						commit
						f17455be4f
					
				| @ -1,6 +1,6 @@ | ||||
| links_count=6; // [1..20] | ||||
| links_count=3; // [1..20] | ||||
| include_terminal=true; // [true,false] | ||||
| export=3; // [0:6] | ||||
| export=0; // [0:6] | ||||
| 
 | ||||
| MODEL_DEMO=0; | ||||
| MODEL_LINKS=1; | ||||
| @ -33,6 +33,7 @@ function get_link_socket_size() = [get_link_segment_size().z, | ||||
|         get_link_segment_size().z]; | ||||
| 
 | ||||
| function get_link_clip_size() = [get_link_pin_diameter()*5, get_link_segment_size().y - 5, get_link_segment_size().z]; | ||||
| function get_link_socket_roundgap() = 2; | ||||
| 
 | ||||
| echo("==============================="); | ||||
| echo(str("Strap length: ", (links_count * get_link_segment_size().x), " mm")); | ||||
| @ -41,14 +42,14 @@ echo("==============================="); | ||||
| assert(get_link_segment_size().x >= 10, "Link segment is too short."); | ||||
| assert(get_link_segment_size().z >= (get_link_pin_diameter() + get_link_socket_slack().z + 1), "Link segment is too thin."); | ||||
| 
 | ||||
| module link(terminal=false) { | ||||
|     segment_size=get_link_segment_size(); | ||||
| module pin() { | ||||
|     segment_size=get_link_segment_size(); | ||||
|     h=segment_size.y; | ||||
|     d=get_link_pin_diameter(); | ||||
|     back(h/2) xrot(90) cylinder(h=h, d=d, $fn=$preview ? 10 : 30); | ||||
| } | ||||
| module pin_socket_area() { | ||||
|     segment_size=get_link_segment_size(); | ||||
|     h=segment_size.y-get_link_socket_slack().y; | ||||
|     d=segment_size.z; | ||||
|     back(h/2) xrot(90) cylinder(h=h, d=d, $fn=$preview ? 10 : 30); | ||||
| @ -64,10 +65,9 @@ module link(terminal=false) { | ||||
|         scale(scaleup) pin(); | ||||
|     } | ||||
| } | ||||
|     module joiner() { | ||||
|         gap=2; | ||||
|         arm_size=get_link_joiner_arm_size(); | ||||
| 
 | ||||
| module arm() { | ||||
|     arm_size=get_link_joiner_arm_size(); | ||||
|     fwd(segment_size.y/2 + arm_size.y/2 - 1) right(arm_size.x/2 - 1) cuboid(arm_size, fillet=1, edges=EDGES_FRONT + EDGES_Y_ALL); | ||||
| } | ||||
| module armFront() { | ||||
| @ -77,10 +77,33 @@ module link(terminal=false) { | ||||
|     scale([1, -1, 1]) arm(); | ||||
| } | ||||
| module armJoiner() { | ||||
|     gap=get_link_socket_roundgap(); | ||||
|     arm_size=get_link_joiner_arm_size(); | ||||
|     joiner_size=[arm_size.x-get_link_socket_size().x, segment_size.y, segment_size.z]; | ||||
|     right(joiner_size.x/2 + get_link_socket_size().x/2 + gap) cuboid(joiner_size, fillet=1, edges=EDGES_Z_ALL + EDGES_BOTTOM); | ||||
| } | ||||
|         module socketJoiner() { | ||||
| module link_arms() { | ||||
|     armFront(); | ||||
|     armBack(); | ||||
|     armJoiner(); | ||||
| } | ||||
| 
 | ||||
| module link_connector_pin() { | ||||
|     pin(); | ||||
|     link_arms(); | ||||
| } | ||||
| 
 | ||||
| module link_connector_socket() { | ||||
|     pin_socket(); | ||||
| } | ||||
| 
 | ||||
| module link(terminal=false) { | ||||
|      | ||||
|     module link_joiner() { | ||||
|         gap=get_link_socket_roundgap(); | ||||
|         arm_size=get_link_joiner_arm_size(); | ||||
|          | ||||
|         module pin_to_socket_joiner() { | ||||
|             joiner_size=[segment_size.x-get_link_socket_size().x+get_link_socket_size().x*0.2, | ||||
|                 segment_size.y-4, | ||||
|                 segment_size.z]; | ||||
| @ -89,31 +112,16 @@ module link(terminal=false) { | ||||
|                 right(segment_size.x) scale([1, 2, 1]) pin_socket_area(); | ||||
|             } | ||||
|         } | ||||
|         module terminalArm() { | ||||
|             left(5) { | ||||
|                 shift=arm_size.x - get_link_pin_diameter(); | ||||
|                 right(segment_size.x + shift + gap/2) pin(); | ||||
|                 right(segment_size.x + gap/2) { | ||||
|                    armFront(); | ||||
|                    armBack(); | ||||
|                 } | ||||
|                 right(arm_size.x - get_link_socket_size().x + gap) armJoiner(); | ||||
|             } | ||||
|         } | ||||
|         armFront(); | ||||
|         armBack(); | ||||
|         armJoiner(); | ||||
|         if (terminal) { | ||||
|             terminalArm(); | ||||
|         } else { | ||||
|             socketJoiner(); | ||||
|         } | ||||
|          | ||||
|         pin_to_socket_joiner(); | ||||
|     } | ||||
|      | ||||
|     pin(); | ||||
|     joiner(); | ||||
|     if (!terminal) { | ||||
|         right(segment_size.x) pin_socket(); | ||||
|     link_connector_pin(); | ||||
|     if (terminal) { | ||||
|         right(segment_size.x + 2) zrot(180) link_connector_pin(); | ||||
|     } else { | ||||
|         link_joiner(); | ||||
|         right(segment_size.x) link_connector_socket(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -141,7 +149,7 @@ module clip() { | ||||
|     module joiner(groove) { | ||||
|         slack=groove?0.5:0; | ||||
|         joiner_size=[entry_size.x-6+slack, entry_size.y-6+slack, entry_size.z-4+slack]; | ||||
|         joiner_pos=[entry_pos.x, entry_pos.y, entry_pos.z - entry_size.z/2]; | ||||
|         joiner_pos=[entry_pos.x, entry_pos.y, entry_pos.z - entry_size.z/2 + joiner_size.z/2]; | ||||
|         translate(joiner_pos) cube(joiner_size, center=true); | ||||
|     } | ||||
|      | ||||
| @ -175,7 +183,7 @@ module clip() { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| module clip_ratcheting(ratchet_length=30) { | ||||
| module clip_ratcheting(ratchet_length=28) { | ||||
|     socket_size=get_link_socket_size(); | ||||
|     clip_size=get_link_clip_size(); | ||||
|     pin_diam=get_link_pin_diameter(); | ||||
| @ -195,10 +203,10 @@ module clip_ratcheting(ratchet_length=30) { | ||||
|         } | ||||
|     } | ||||
|     module hookRight() { | ||||
|         hook(); | ||||
|         right(12.5) zrot(180) link_connector_pin(); | ||||
|     } | ||||
|     module hookLeft() { | ||||
|         scale([-1, 1, 1]) hook(); | ||||
|         left(12.5) link_connector_pin(); | ||||
|     } | ||||
|     wall=2; | ||||
|     tooth_size=[4, 3, 3]; | ||||
| @ -296,7 +304,7 @@ module clip_ratcheting(ratchet_length=30) { | ||||
|         railBack(); | ||||
|     } | ||||
|      | ||||
|     if (is_model(MODEL_CLIP_RATCHETING_A) || is_model(MODEL_CLIP_RATCHETING)) { | ||||
|     left(2) if (is_model(MODEL_CLIP_RATCHETING_A) || is_model(MODEL_CLIP_RATCHETING)) { | ||||
|         left(ratchet_length + wall + 1) { | ||||
|             hookLeft(); | ||||
|             left(0.1) { | ||||
| @ -335,7 +343,7 @@ if (!is_undef(validation)) { | ||||
|                 left(get_link_clip_size().x) clip(); | ||||
|             } | ||||
|             if (is_model(MODEL_CLIP_RATCHETING) || is_model(MODEL_CLIP_RATCHETING_A) || is_model(MODEL_CLIP_RATCHETING_B)) { | ||||
|                 left(get_link_clip_size().x) clip_ratcheting(); | ||||
|                 left(get_link_clip_size().x * 2 + 3) clip_ratcheting(); | ||||
|             } | ||||
|             if (is_model(MODEL_LINKS)) for (i = [0:links_count-1]) { | ||||
|                 terminal=(i==links_count-1) && include_terminal; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user