You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
737 lines
30 KiB
737 lines
30 KiB
/*
|
|
Creator : Kerem Yollu
|
|
date : 30.06.2021
|
|
Description : library for din rail and accessories.
|
|
*/
|
|
|
|
|
|
include <box.scad>
|
|
include <swisspb.scad>
|
|
|
|
$fn = 100;
|
|
va = 0.02; // Visual addition for difference
|
|
vap = va/2; // Half of visual addition
|
|
van = -(va/2); // Negative half of visual addition
|
|
|
|
|
|
din_rail_mount();
|
|
|
|
module din_rail_mount()
|
|
{
|
|
lenght = 40;
|
|
heigth = 10;
|
|
thikness = 10.9;
|
|
|
|
difference()
|
|
{
|
|
cube(size=([lenght,heigth,thikness]),center=true);
|
|
din_rail_75(lenght = 20, hole_offset = 0 , extra_thickness= 0.3, extra_bending_d = 0.5 ,extra_wing_lenght =0.2, center = true);
|
|
|
|
translate([-lenght/2,0,0])
|
|
rotate([0,90,0])
|
|
cylinder(d=2.4, h=7);
|
|
|
|
translate([0,(heigth-pbswiss_mounting_size)/2,0])
|
|
{
|
|
cube(size=([pbswiss_mounting_size+0.3,pbswiss_mounting_size+0.2,pbswiss_mounting_size+0.3]),center=true);
|
|
|
|
rotate([0,90,0])
|
|
cylinder(d=3.2, h=lenght/2+1);
|
|
|
|
translate([-pbswiss_mounting_size/2 -5,0,0])
|
|
rotate([0,90,0])
|
|
cylinder(d=3.2, h=10);
|
|
|
|
translate([pbswiss_mounting_size/2+3,0,0])
|
|
rotate([0,90,0])
|
|
cylinder(d=6, h=lenght/2+1);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* DIN RAIL 35 x 7.5 mm
|
|
lenght : Total lenght of the rail
|
|
> Positive Values
|
|
|
|
hole_offset : First Mounting hole offset to border
|
|
> 0 will remove holes
|
|
> ccepted values between 1 and 9
|
|
> Otherwise error will ocure
|
|
|
|
extra_thickness : To allow the addition of Thickness
|
|
> Positive values
|
|
|
|
extra_bending_d : Will change the bending radious
|
|
> Positive values
|
|
|
|
extra_wing_lenght : Add length to each wing
|
|
> Positive values
|
|
|
|
center : Centers the rail
|
|
> true or false
|
|
*/
|
|
//din_rail_75();
|
|
module din_rail_75(lenght = 100, hole_offset = 5 , extra_thickness=0, extra_bending_d=0, extra_wing_lenght = 0, center = true)
|
|
{
|
|
thickness = 1 + extra_thickness;
|
|
base_inside_width = 25-extra_thickness;
|
|
base_outise_width = base_inside_width + 2*thickness;
|
|
total_width = 35;
|
|
total_height = 7.5 + 0.4;
|
|
|
|
|
|
hole_lenght = 15;
|
|
hole_spacing = 10;
|
|
hole_dia = 6.2;
|
|
hole_ray = hole_dia/2;
|
|
hole_count = lenght/(hole_lenght+hole_spacing);
|
|
|
|
inner_rounding_dia = 3 + extra_bending_d;
|
|
inner_rounding_ray = inner_rounding_dia/2;
|
|
|
|
outer_rounding_dia = inner_rounding_dia + 2 * thickness;
|
|
outer_rounding_ray = outer_rounding_dia/2;
|
|
|
|
base_inside_width_with_rounding = base_outise_width - outer_rounding_dia;
|
|
base_wall_height = total_height - outer_rounding_dia;
|
|
wing_rounding_height =total_height-thickness;
|
|
wing_width_to_rounding = (total_width - base_outise_width)/2 - inner_rounding_ray + extra_wing_lenght;
|
|
|
|
center_x = wing_width_to_rounding+inner_rounding_ray-((total_width+extra_wing_lenght*2)/2);
|
|
center_y = -total_height/2;
|
|
center_z = 0;
|
|
|
|
offset_x = wing_width_to_rounding+inner_rounding_ray;
|
|
offset_y = 0;
|
|
offset_z = lenght/2;
|
|
|
|
|
|
assert(hole_offset >= 0);
|
|
assert(hole_offset < 10);
|
|
|
|
if(center == true)
|
|
{
|
|
translate([center_x,center_y,center_z])
|
|
{
|
|
difference()
|
|
{
|
|
// Din Rail
|
|
union()
|
|
{
|
|
// Rail Base
|
|
translate([base_inside_width_with_rounding/2+outer_rounding_ray,thickness/2,0])
|
|
cube(size=([base_inside_width_with_rounding,thickness,lenght]),center=true);
|
|
|
|
// Base rounding to wall near origin
|
|
translate([thickness,thickness,0])
|
|
rotate([0,0,180])
|
|
bend(inner_rounding_ray,thickness,lenght,90,center = true);
|
|
|
|
// Base rounding to wall with base width offset
|
|
translate([base_outise_width-thickness,thickness,0])
|
|
rotate([0,0,270])
|
|
bend(inner_rounding_ray,thickness,lenght,90);
|
|
|
|
// Base Wall near origin
|
|
translate([thickness/2,base_wall_height/2+outer_rounding_ray,0])
|
|
cube(size=([thickness,base_wall_height,lenght]),center=true);
|
|
|
|
// Base Wall with base width offset
|
|
translate([thickness/2+base_inside_width + thickness,base_wall_height/2+outer_rounding_ray,0])
|
|
cube(size=([thickness,base_wall_height,lenght]),center=true);
|
|
|
|
// Wall rounding to wing near origin
|
|
translate([0,wing_rounding_height,0])
|
|
rotate([0,0,0])
|
|
bend(inner_rounding_ray,thickness,lenght,90);
|
|
|
|
// Wall rounding to wing near origin
|
|
translate([base_outise_width,wing_rounding_height,0])
|
|
rotate([0,0,90])
|
|
bend(inner_rounding_ray,thickness,lenght,90);
|
|
|
|
translate([-wing_width_to_rounding/2-inner_rounding_ray,total_height-thickness/2,0])
|
|
cube(size=([wing_width_to_rounding,thickness,lenght]),center=true);
|
|
|
|
translate([base_outise_width+wing_width_to_rounding/2+inner_rounding_ray,total_height-thickness/2,0])
|
|
cube(size=([wing_width_to_rounding,thickness,lenght]),center=true);
|
|
}
|
|
|
|
if(hole_offset > 0)
|
|
{
|
|
translate([0, 0, hole_offset])
|
|
{
|
|
for (i = [0:hole_count])
|
|
{
|
|
translate([base_outise_width/2,0, i*(hole_lenght+hole_spacing) - lenght/2])
|
|
hull()
|
|
{
|
|
translate([0,thickness/2,hole_ray])
|
|
rotate([90,0,0])
|
|
cylinder(d=hole_dia, h=thickness+va, center = true);
|
|
|
|
translate([0,thickness/2,hole_lenght-hole_ray])
|
|
rotate([90,0,0])
|
|
cylinder(d=hole_dia, h=thickness+va, center = true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(center == false)
|
|
{
|
|
translate([offset_x,offset_y,offset_z])
|
|
{
|
|
difference()
|
|
{
|
|
// Din Rail
|
|
union()
|
|
{
|
|
// Rail Base
|
|
translate([base_inside_width_with_rounding/2+outer_rounding_ray,thickness/2,0])
|
|
cube(size=([base_inside_width_with_rounding,thickness,lenght]),center=true);
|
|
|
|
// Base rounding to wall near origin
|
|
translate([thickness,thickness,0])
|
|
rotate([0,0,180])
|
|
bend(inner_rounding_ray,thickness,lenght,90,center = true);
|
|
|
|
// Base rounding to wall with base width offset
|
|
translate([base_outise_width-thickness,thickness,0])
|
|
rotate([0,0,270])
|
|
bend(inner_rounding_ray,thickness,lenght,90);
|
|
|
|
// Base Wall near origin
|
|
translate([thickness/2,base_wall_height/2+outer_rounding_ray,0])
|
|
cube(size=([thickness,base_wall_height,lenght]),center=true);
|
|
|
|
// Base Wall with base width offset
|
|
translate([thickness/2+base_inside_width + thickness,base_wall_height/2+outer_rounding_ray,0])
|
|
cube(size=([thickness,base_wall_height,lenght]),center=true);
|
|
|
|
// Wall rounding to wing near origin
|
|
translate([0,wing_rounding_height,0])
|
|
rotate([0,0,0])
|
|
bend(inner_rounding_ray,thickness,lenght,90);
|
|
|
|
// Wall rounding to wing near origin
|
|
translate([base_outise_width,wing_rounding_height,0])
|
|
rotate([0,0,90])
|
|
bend(inner_rounding_ray,thickness,lenght,90);
|
|
|
|
translate([-wing_width_to_rounding/2-inner_rounding_ray,total_height-thickness/2,0])
|
|
cube(size=([wing_width_to_rounding,thickness,lenght]),center=true);
|
|
|
|
translate([base_outise_width+wing_width_to_rounding/2+inner_rounding_ray,total_height-thickness/2,0])
|
|
cube(size=([wing_width_to_rounding,thickness,lenght]),center=true);
|
|
}
|
|
|
|
if(hole_offset > 0)
|
|
{
|
|
translate([0, 0, hole_offset])
|
|
{
|
|
for (i = [0:hole_count])
|
|
{
|
|
translate([base_outise_width/2,0, i*(hole_lenght+hole_spacing) - lenght/2])
|
|
hull()
|
|
{
|
|
translate([0,thickness/2,hole_ray])
|
|
rotate([90,0,0])
|
|
cylinder(d=hole_dia, h=thickness+va, center = true);
|
|
|
|
translate([0,thickness/2,hole_lenght-hole_ray])
|
|
rotate([90,0,0])
|
|
cylinder(d=hole_dia, h=thickness+va, center = true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//din_mount_wago_style(thickness = 6);
|
|
|
|
module din_mount_wago_style(thickness = 6)
|
|
{
|
|
small_dia = 1.2;
|
|
small_ray = small_dia/2;
|
|
|
|
base_lenght = 24;
|
|
base_width = 9;
|
|
base_heigth = 8;
|
|
base_resses_start = 4;
|
|
base_resses_ramp_lenght = 5;
|
|
base_resses_height = 4;
|
|
base_resses_lenght = 10;
|
|
|
|
anchor_triangle_offset_y = 0.5;
|
|
anchor_triangle_offset_x = 10;
|
|
anchor_triangle_lenght = 6;
|
|
anchor_triangle_angle = 1;
|
|
anchor_triangle_width = 4;
|
|
anchor_triangle_top_start = anchor_triangle_lenght -2.5;
|
|
|
|
ancor_back_offset_y = 1;
|
|
ancor_back_lenght = 3;
|
|
ancor_back_opening = 1.6;
|
|
ancor_back_clip_ressess = 0.4;
|
|
ancor_back_thickness = 2.6;
|
|
ancor_back_incline_spport_len = 4;
|
|
ancor_back_incline_spport_to_base_y = 5;
|
|
ancor_back_incline_spport_to_base_x = 4;
|
|
|
|
|
|
spring_1_start = 2.5;
|
|
locking_point_offset_y = 1.5;
|
|
locking_point_incl_y = 6;
|
|
locking_point_incl_x = 3;
|
|
locking_point_lenght = 8;
|
|
locking_point_inside_lenght = 5;
|
|
locking_point_width = 5;
|
|
locking_point_offset_x = 2;
|
|
flex_zone_start_height = 3;
|
|
unmount_opening = 4;
|
|
unmount_height = 3;
|
|
|
|
//base + anchor tirangle and achor openeing.
|
|
union()
|
|
{
|
|
hull()
|
|
{
|
|
// triangle base poin near reference
|
|
translate([small_ray,small_ray-anchor_triangle_offset_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// triangle base point x offset
|
|
translate([small_ray+anchor_triangle_lenght,small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// triangle base point x offset
|
|
translate([small_ray+anchor_triangle_lenght,small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// Triangle top
|
|
translate([small_ray+anchor_triangle_top_start,anchor_triangle_width-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// triangle base poin near reference
|
|
translate([small_ray,small_ray-anchor_triangle_offset_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// Triangle top
|
|
translate([small_ray+anchor_triangle_top_start,anchor_triangle_width-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// Triangle top
|
|
translate([small_ray+anchor_triangle_top_start,anchor_triangle_width-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//solid base starting
|
|
translate([small_ray+anchor_triangle_top_start,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
|
|
hull()
|
|
{
|
|
// Triangle top
|
|
translate([small_ray+anchor_triangle_top_start,anchor_triangle_width-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//base resess starting
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
//solid base starting
|
|
translate([small_ray+anchor_triangle_top_start,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//base resess starting
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
//base resess starting
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//base resess ramp downgoing
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght,base_resses_height-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
|
|
hull()
|
|
{
|
|
//base resess ramp downgoing
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght,base_resses_height-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//base resess ramp downgoing to base bottom
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght,small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
//base resess ramp downgoing
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght,base_resses_height-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//base resess lenght
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght + base_resses_lenght ,base_resses_height-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
//base resess lenght
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght + base_resses_lenght ,base_resses_height-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//base resess lenght + resse ramp going to b ase again
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght + base_resses_lenght+ base_resses_ramp_lenght,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// triangle base point x offset
|
|
translate([small_ray+anchor_triangle_lenght,small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//base bottom starting
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght,small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
|
|
hull()
|
|
{
|
|
//base bottom starting
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght,small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// base lenght after anchor triangle.
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght,small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// base lenght after anchor triangle.
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght,small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor hihg point
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght+ancor_back_lenght,small_ray+ancor_back_offset_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// back anchor hihg point
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght+ancor_back_lenght,small_ray+ancor_back_offset_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//base resess lenght + resse ramp going to b ase again
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght + base_resses_lenght+ base_resses_ramp_lenght,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// back anchor opening high point
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght+ancor_back_lenght,small_ray+ancor_back_offset_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor opening low point
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght+ancor_back_lenght,-small_ray+ancor_back_offset_y-ancor_back_opening,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// back anchor opening low point
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght+ancor_back_lenght,-small_ray+ancor_back_offset_y-ancor_back_opening,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor opening return point
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght,-small_ray-ancor_back_opening,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// back anchor opening return point
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght,-small_ray-ancor_back_opening,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor clip ressesed
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess,small_ray-ancor_back_opening-ancor_back_thickness ,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// back anchor clip ressesed
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess,small_ray-ancor_back_opening-ancor_back_thickness ,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor clip ressesed flat surface
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght,small_ray-ancor_back_opening-ancor_back_thickness ,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// back anchor clip ressesed flat surface
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght,small_ray-ancor_back_opening-ancor_back_thickness ,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor clip inclined clearance
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght+ancor_back_lenght,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght ,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
|
|
hull()
|
|
{
|
|
// back anchor clip inclined clearance
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght+ancor_back_lenght,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght ,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor clip inclined support point to the oppening wall
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght+ancor_back_lenght,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// back anchor clip inclined clearance
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght+ancor_back_lenght,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght ,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor clip inclined clearance
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght+ancor_back_lenght + ancor_back_incline_spport_to_base_x ,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght + ancor_back_incline_spport_to_base_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
hull()
|
|
{
|
|
//base resess lenght + resse ramp going to b ase again
|
|
*translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght + base_resses_lenght+ base_resses_ramp_lenght,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
|
|
|
|
// back anchor clip inclined clearance support back to base
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght+ancor_back_lenght + ancor_back_incline_spport_to_base_x - ancor_back_incline_spport_to_base_x /2 ,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght + ancor_back_incline_spport_to_base_y + ancor_back_incline_spport_to_base_x /2,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
|
|
// back anchor clip inclined clearance
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght+ancor_back_lenght + ancor_back_incline_spport_to_base_x ,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght + ancor_back_incline_spport_to_base_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
hull()
|
|
{
|
|
//base resess lenght + resse ramp going to b ase again
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start+base_resses_ramp_lenght + base_resses_lenght+ base_resses_ramp_lenght,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor clip inclined clearance support back to base
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght+ancor_back_lenght + ancor_back_incline_spport_to_base_x - ancor_back_incline_spport_to_base_x /2 ,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght + ancor_back_incline_spport_to_base_y + ancor_back_incline_spport_to_base_x /2,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
hull()
|
|
{
|
|
|
|
// back anchor opening high point
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght+ancor_back_lenght,small_ray+ancor_back_offset_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// back anchor clip inclined clearance support back to base
|
|
translate([small_ray+anchor_triangle_lenght+base_lenght + ancor_back_clip_ressess+ancor_back_lenght+ancor_back_lenght + ancor_back_incline_spport_to_base_x - ancor_back_incline_spport_to_base_x /2 ,small_ray-ancor_back_opening-ancor_back_thickness + ancor_back_lenght + ancor_back_incline_spport_to_base_y + ancor_back_incline_spport_to_base_x /2,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
|
|
hull()
|
|
{
|
|
|
|
//solid base starting
|
|
translate([small_ray+anchor_triangle_top_start,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
//starof of spring 1
|
|
translate([small_ray+anchor_triangle_top_start- spring_1_start,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
|
|
|
|
hull()
|
|
{
|
|
// locking point start
|
|
translate([-small_ray,-small_ray-anchor_triangle_offset_y-locking_point_offset_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// locking point start
|
|
translate([-small_ray-locking_point_incl_x,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// Locking point -x-y
|
|
translate([-small_ray-locking_point_incl_x-locking_point_lenght,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// Locking point -x y
|
|
translate([-locking_point_incl_x-locking_point_lenght,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+locking_point_width-small_ray,0])
|
|
cylinder(d=small_dia*2, h=thickness);
|
|
|
|
// Locking point x y inside
|
|
translate([-small_ray-locking_point_offset_x,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+locking_point_width-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// Locking point -x-y
|
|
translate([-small_ray-locking_point_incl_x-locking_point_lenght,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// unmoun -x -y
|
|
translate([-small_ray-locking_point_incl_x-locking_point_lenght-unmount_opening,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
|
|
// unmoun -x -y
|
|
translate([-small_ray-locking_point_incl_x-locking_point_lenght-unmount_opening,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// unmoun -x y
|
|
translate([-small_ray-locking_point_incl_x-locking_point_lenght-unmount_opening,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+unmount_height,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
|
|
// unmount wall
|
|
translate([-small_ray-locking_point_incl_x-locking_point_lenght-unmount_opening,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y,0])
|
|
cube(size=([unmount_opening,unmount_height,0.8]));
|
|
|
|
|
|
hull()
|
|
{
|
|
// Locking point -x y
|
|
translate([-locking_point_incl_x-locking_point_lenght,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+locking_point_width-small_ray,0])
|
|
cylinder(d=small_dia*2, h=thickness);
|
|
|
|
// Locking flex zone 1 start
|
|
translate([-locking_point_incl_x-locking_point_lenght,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+locking_point_width-small_ray+flex_zone_start_height,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
}
|
|
|
|
hull()
|
|
{
|
|
// Locking point x y inside
|
|
translate([-small_ray-locking_point_offset_x,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+locking_point_width-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// Locking flex zone 2 start
|
|
translate([-small_ray-locking_point_offset_x,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+locking_point_width-small_ray+flex_zone_start_height-1,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
|
|
|
|
hull()
|
|
{
|
|
|
|
// Locking flex zone 1 start
|
|
translate([-locking_point_incl_x-locking_point_lenght,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+locking_point_width-small_ray+flex_zone_start_height,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// Locking flex zone 1 back to base
|
|
translate([-10,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
hull()
|
|
{
|
|
|
|
// Locking flex zone 2 start
|
|
translate([-small_ray-locking_point_offset_x,-small_ray-anchor_triangle_offset_y-locking_point_offset_y-locking_point_incl_y+locking_point_width-small_ray+flex_zone_start_height-1,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
// Locking flex zone 2 back to base
|
|
translate([-small_ray-locking_point_offset_x+1.8,base_heigth-small_ray,0])
|
|
cylinder(d=small_dia, h=thickness);
|
|
}
|
|
|
|
translate([-10-small_ray,base_heigth-small_dia,0])
|
|
cube(size=([50,8,thickness]));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
module bend(inner_bend_r = 1,thikness = 1, lenght = 10, angle = 90, center = true)
|
|
{
|
|
inner_rad = inner_bend_r;
|
|
inner_dia = inner_bend_r * 2;
|
|
|
|
outer_rad = inner_rad + thikness;
|
|
outer_dia = outer_rad * 2;
|
|
|
|
if(center == true)
|
|
{
|
|
translate([-inner_rad,-inner_rad,-lenght/2])
|
|
rotate_extrude(angle=angle)
|
|
polygon( points= [[inner_rad,0],[outer_rad,0], [outer_rad,lenght], [inner_rad,lenght], [inner_rad,lenght]]);
|
|
}
|
|
if(center == false)
|
|
{
|
|
rotate_extrude(angle=angle)
|
|
polygon( points= [[inner_rad,0],[outer_rad,0], [outer_rad,lenght], [inner_rad,lenght], [inner_rad,lenght]]);
|
|
}
|
|
} |