|
|
|
@ -6,204 +6,699 @@ Description : library for din rail and accessories.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
include <box.scad>
|
|
|
|
|
$fn = 50;
|
|
|
|
|
$fn = 100;
|
|
|
|
|
va = 0.02; // Visual addition for difference
|
|
|
|
|
vap = va/2; // Half of visual addition
|
|
|
|
|
van = -(va/2); // Negative half of visual addition
|
|
|
|
|
|
|
|
|
|
difference()
|
|
|
|
|
{
|
|
|
|
|
cube(size=([40,10,3]),center=true);
|
|
|
|
|
din_rail_75(lenght = 20, hole_offset = 0 , extra_thickness= 0.2, extra_bending_d = 0.2 ,extra_wing_lenght = 0.1, center = true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 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
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Description : Standart din rail height of 7.5 mm (7p5)
|
|
|
|
|
- lenght : Is the totla lenght of the rail no negative is allowed
|
|
|
|
|
> Value greater than 0 [mm]
|
|
|
|
|
extra_thickness : To allow the addition of Thickness
|
|
|
|
|
> Positive values
|
|
|
|
|
|
|
|
|
|
- mounting_hole_starting_offset : is the staring offset of the forst mounting hole
|
|
|
|
|
> Value between 0 and 10 [mm]
|
|
|
|
|
extra_bending_d : Will change the bending radious
|
|
|
|
|
> Positive values
|
|
|
|
|
|
|
|
|
|
- tollerance : Will oversize the thickness, with and height of the bar proportionaly and has no effect on the mounting holes
|
|
|
|
|
> Value greater than 0 [mm]
|
|
|
|
|
*/
|
|
|
|
|
extra_wing_lenght : Add length to each wing
|
|
|
|
|
> Positive values
|
|
|
|
|
|
|
|
|
|
//din_rail_7p5();
|
|
|
|
|
//din_rail_7p5(230, 2, 0.1);
|
|
|
|
|
module din_rail_7p5(lenght = 100, mounting_hole_starting_offset = 5 , tollerance=0)
|
|
|
|
|
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 + tollerance/2;
|
|
|
|
|
base_width = 27 + tollerance/2;
|
|
|
|
|
mount_width = 35 + tollerance/2;
|
|
|
|
|
wing_width = (mount_width - base_width)/2;
|
|
|
|
|
total_height = 7.5 + tollerance/2;
|
|
|
|
|
thickness = 1 + extra_thickness;
|
|
|
|
|
base_inside_width = 25;
|
|
|
|
|
base_outise_width = base_inside_width + 2*thickness;
|
|
|
|
|
total_width = 35;
|
|
|
|
|
total_height = 7.5;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hole_lenght = 15;
|
|
|
|
|
hole_spacing = 10;
|
|
|
|
|
hole_dia = 6.2;
|
|
|
|
|
hole_ray = hole_dia/2;
|
|
|
|
|
rounding_dia = 1.6 - tollerance/2;
|
|
|
|
|
rounding_ray = rounding_dia/2;
|
|
|
|
|
hole_count = lenght/(hole_lenght+hole_spacing);
|
|
|
|
|
|
|
|
|
|
inner_rounding_dia = 3 + extra_bending_d;
|
|
|
|
|
inner_rounding_ray = inner_rounding_dia/2;
|
|
|
|
|
|
|
|
|
|
assert(mounting_hole_starting_offset > 0);
|
|
|
|
|
assert(mounting_hole_starting_offset <= 10);
|
|
|
|
|
outer_rounding_dia = inner_rounding_dia + 2 * thickness;
|
|
|
|
|
outer_rounding_ray = outer_rounding_dia/2;
|
|
|
|
|
|
|
|
|
|
// Difference of outer roundings with the main body
|
|
|
|
|
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()
|
|
|
|
|
{
|
|
|
|
|
// Union of the main body with the wings to be able to substract outer roundings
|
|
|
|
|
// Din Rail
|
|
|
|
|
union()
|
|
|
|
|
{
|
|
|
|
|
translate([0,wing_width,0])
|
|
|
|
|
// 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])
|
|
|
|
|
{
|
|
|
|
|
// Inner roundings for base
|
|
|
|
|
difference()
|
|
|
|
|
{
|
|
|
|
|
//Main cube for the base dimention without the wings
|
|
|
|
|
cube(size=([lenght,base_width,total_height]));
|
|
|
|
|
// 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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Union for the inside substraction with the roundin diameters.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//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()
|
|
|
|
|
{
|
|
|
|
|
//Fisrts cube with total width with 2 thinkness and roundin rayon thinner
|
|
|
|
|
translate([van,thickness+rounding_ray,thickness])
|
|
|
|
|
cube(size=([lenght+va,base_width-2*thickness-rounding_dia,total_height-thickness-rounding_ray]));
|
|
|
|
|
hull()
|
|
|
|
|
{
|
|
|
|
|
// triangle base poin near reference
|
|
|
|
|
translate([small_ray,small_ray-anchor_triangle_offset_y,0])
|
|
|
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
|
|
|
|
|
|
//Fisrts cube with total width with 2 thinkness thinner and Z offset or rounding rayon
|
|
|
|
|
translate([van,thickness,thickness+rounding_ray])
|
|
|
|
|
cube(size=([lenght+va,base_width-2*thickness,total_height-thickness-rounding_ray+va]));
|
|
|
|
|
// triangle base point x offset
|
|
|
|
|
translate([small_ray+anchor_triangle_lenght,small_ray,0])
|
|
|
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Inside rounding 1 near origin
|
|
|
|
|
translate([van,rounding_ray+thickness,rounding_ray+thickness])
|
|
|
|
|
rotate([0,90,0])
|
|
|
|
|
cylinder(d=rounding_dia, h=lenght+va);
|
|
|
|
|
hull()
|
|
|
|
|
{
|
|
|
|
|
// triangle base point x offset
|
|
|
|
|
translate([small_ray+anchor_triangle_lenght,small_ray,0])
|
|
|
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
|
|
|
|
|
|
//Inside rounding 2 with y offset
|
|
|
|
|
translate([van,base_width-rounding_ray-thickness,rounding_ray+thickness])
|
|
|
|
|
rotate([0,90,0])
|
|
|
|
|
cylinder(d=rounding_dia, h=lenght+va);
|
|
|
|
|
// 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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Inner roundings for wings
|
|
|
|
|
difference()
|
|
|
|
|
|
|
|
|
|
hull()
|
|
|
|
|
{
|
|
|
|
|
// wings
|
|
|
|
|
union()
|
|
|
|
|
// 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()
|
|
|
|
|
{
|
|
|
|
|
// Wing 1 near ereference
|
|
|
|
|
translate([0,0,total_height-thickness])
|
|
|
|
|
cube(size=([lenght,wing_width,thickness]));
|
|
|
|
|
//solid base starting
|
|
|
|
|
translate([small_ray+anchor_triangle_top_start,base_heigth-small_ray,0])
|
|
|
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
|
|
|
|
|
|
// Wing filling 1 for rounting extrusion near ereference
|
|
|
|
|
translate([0,wing_width-rounding_ray,total_height-thickness-rounding_ray])
|
|
|
|
|
cube(size=([lenght,rounding_ray,rounding_ray]));
|
|
|
|
|
//base resess starting
|
|
|
|
|
translate([small_ray+anchor_triangle_top_start+base_resses_start,base_heigth-small_ray,0])
|
|
|
|
|
cylinder(d=small_dia, h=thickness);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Wing 2 Y offset
|
|
|
|
|
translate([0,mount_width-wing_width,total_height-thickness])
|
|
|
|
|
cube(size=([lenght,wing_width,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);
|
|
|
|
|
|
|
|
|
|
// Wing filling 2 for rounting extrusion near ereference
|
|
|
|
|
translate([0,mount_width-wing_width,total_height-thickness-rounding_ray])
|
|
|
|
|
cube(size=([lenght,rounding_ray,rounding_ray]));
|
|
|
|
|
//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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Rounding 1 for the underside of wing 1
|
|
|
|
|
translate([van,wing_width-rounding_ray,total_height-rounding_ray-thickness])
|
|
|
|
|
rotate([0,90,0])
|
|
|
|
|
cylinder(d=rounding_dia, h=lenght+va);
|
|
|
|
|
|
|
|
|
|
// Rounding 2 for the underside of wing 2 (Y offset)
|
|
|
|
|
translate([van,mount_width-wing_width+rounding_ray,total_height-rounding_ray-thickness])
|
|
|
|
|
rotate([0,90,0])
|
|
|
|
|
cylinder(d=rounding_dia, h=lenght+va);
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Union of all outer roundings.
|
|
|
|
|
union()
|
|
|
|
|
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()
|
|
|
|
|
{
|
|
|
|
|
// Rounding 3 for the upperderside of wing 1
|
|
|
|
|
translate([van,wing_width-rounding_ray,total_height - (rounding_ray+thickness)])
|
|
|
|
|
// 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()
|
|
|
|
|
{
|
|
|
|
|
difference()
|
|
|
|
|
//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()
|
|
|
|
|
{
|
|
|
|
|
cube(size=([lenght+va,rounding_ray+thickness+va,rounding_ray+thickness+va]));
|
|
|
|
|
// 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);
|
|
|
|
|
|
|
|
|
|
translate([-va,0,0])
|
|
|
|
|
rotate([0,90,0])
|
|
|
|
|
cylinder(d=rounding_dia+2*thickness, h=lenght+2*va);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Rounding 4 for the outer side of base near reference
|
|
|
|
|
translate([van,rounding_ray+thickness+wing_width,rounding_ray+thickness])
|
|
|
|
|
rotate([180,0,0])
|
|
|
|
|
hull()
|
|
|
|
|
{
|
|
|
|
|
difference()
|
|
|
|
|
// 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()
|
|
|
|
|
{
|
|
|
|
|
cube(size=([lenght+va,rounding_ray+thickness+va,rounding_ray+thickness+va]));
|
|
|
|
|
// 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);
|
|
|
|
|
|
|
|
|
|
translate([-va,0,0])
|
|
|
|
|
rotate([0,90,0])
|
|
|
|
|
cylinder(d=rounding_dia+2*thickness, h=lenght+2*va);
|
|
|
|
|
// 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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Rounding 5 for the upperderside of wing 2
|
|
|
|
|
translate([van,base_width+wing_width+rounding_ray ,total_height - (rounding_ray+thickness)])
|
|
|
|
|
rotate([90,0,0])
|
|
|
|
|
hull()
|
|
|
|
|
{
|
|
|
|
|
difference()
|
|
|
|
|
// 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()
|
|
|
|
|
{
|
|
|
|
|
cube(size=([lenght+va,rounding_ray+thickness+va,rounding_ray+thickness+va]));
|
|
|
|
|
// 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);
|
|
|
|
|
|
|
|
|
|
translate([-va,0,0])
|
|
|
|
|
rotate([0,90,0])
|
|
|
|
|
cylinder(d=rounding_dia+2*thickness, h=lenght+2*va);
|
|
|
|
|
// 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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Rounding 6 for the outer side of base with Y offset
|
|
|
|
|
translate([van,base_width+wing_width-(rounding_ray+thickness),rounding_ray+thickness])
|
|
|
|
|
rotate([270,0,0])
|
|
|
|
|
hull()
|
|
|
|
|
{
|
|
|
|
|
difference()
|
|
|
|
|
// 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()
|
|
|
|
|
{
|
|
|
|
|
cube(size=([lenght+va,rounding_ray+thickness+va,rounding_ray+thickness+va]));
|
|
|
|
|
//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);
|
|
|
|
|
|
|
|
|
|
translate([-va,0,0])
|
|
|
|
|
rotate([0,90,0])
|
|
|
|
|
cylinder(d=rounding_dia+2*thickness, h=lenght+2*va);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Mounting holes
|
|
|
|
|
translate([mounting_hole_starting_offset, wing_width + base_width/2, 0])
|
|
|
|
|
|
|
|
|
|
hull()
|
|
|
|
|
{
|
|
|
|
|
// repeating the mouting hole count depending of the lenght of the rail
|
|
|
|
|
for (i = [0:(lenght/(hole_lenght+hole_spacing))])
|
|
|
|
|
|
|
|
|
|
//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()
|
|
|
|
|
{
|
|
|
|
|
translate([i*(hole_lenght+hole_spacing), 0, 0])
|
|
|
|
|
// 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()
|
|
|
|
|
{
|
|
|
|
|
translate([hole_ray,0,van])
|
|
|
|
|
cylinder(d=hole_dia, h=thickness+va);
|
|
|
|
|
// 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);
|
|
|
|
|
|
|
|
|
|
translate([hole_lenght-hole_ray,0,van])
|
|
|
|
|
cylinder(d=hole_dia, h=thickness+va);
|
|
|
|
|
// 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 din_mount_wago_style(thickness = 1)
|
|
|
|
|
|
|
|
|
|
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]]);
|
|
|
|
|
}
|
|
|
|
|
}
|