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.
209 lines
7.8 KiB
209 lines
7.8 KiB
/*
|
|
Creator : Kerem Yollu
|
|
date : 30.06.2021
|
|
Description : library for din rail and accessories.
|
|
*/
|
|
|
|
|
|
include <box.scad>
|
|
$fn = 50;
|
|
va = 0.02; // Visual addition for difference
|
|
vap = va/2; // Half of visual addition
|
|
van = -(va/2); // Negative half of visual addition
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
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]
|
|
|
|
- mounting_hole_starting_offset : is the staring offset of the forst mounting hole
|
|
> Value between 0 and 10 [mm]
|
|
|
|
- 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]
|
|
*/
|
|
|
|
//din_rail_7p5();
|
|
//din_rail_7p5(230, 2, 0.1);
|
|
module din_rail_7p5(lenght = 100, mounting_hole_starting_offset = 5 , tollerance=0)
|
|
{
|
|
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;
|
|
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;
|
|
|
|
|
|
assert(mounting_hole_starting_offset > 0);
|
|
assert(mounting_hole_starting_offset <= 10);
|
|
|
|
// Difference of outer roundings with the main body
|
|
difference()
|
|
{
|
|
// Union of the main body with the wings to be able to substract outer roundings
|
|
union()
|
|
{
|
|
translate([0,wing_width,0])
|
|
{
|
|
// Inner roundings for base
|
|
difference()
|
|
{
|
|
//Main cube for the base dimention without the wings
|
|
cube(size=([lenght,base_width,total_height]));
|
|
|
|
//Union for the inside substraction with the roundin diameters.
|
|
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]));
|
|
|
|
//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]));
|
|
|
|
//Inside rounding 1 near origin
|
|
translate([van,rounding_ray+thickness,rounding_ray+thickness])
|
|
rotate([0,90,0])
|
|
cylinder(d=rounding_dia, h=lenght+va);
|
|
|
|
//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);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Inner roundings for wings
|
|
difference()
|
|
{
|
|
// wings
|
|
union()
|
|
{
|
|
// Wing 1 near ereference
|
|
translate([0,0,total_height-thickness])
|
|
cube(size=([lenght,wing_width,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]));
|
|
|
|
// Wing 2 Y offset
|
|
translate([0,mount_width-wing_width,total_height-thickness])
|
|
cube(size=([lenght,wing_width,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]));
|
|
}
|
|
|
|
// 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);
|
|
}
|
|
}
|
|
|
|
// Union of all outer roundings.
|
|
union()
|
|
{
|
|
// Rounding 3 for the upperderside of wing 1
|
|
translate([van,wing_width-rounding_ray,total_height - (rounding_ray+thickness)])
|
|
{
|
|
difference()
|
|
{
|
|
cube(size=([lenght+va,rounding_ray+thickness+va,rounding_ray+thickness+va]));
|
|
|
|
translate([-va,0,0])
|
|
rotate([0,90,0])
|
|
cylinder(d=rounding_dia+2*thickness, h=lenght+2*va);
|
|
}
|
|
}
|
|
|
|
// Rounding 4 for the outer side of base near reference
|
|
translate([van,rounding_ray+thickness+wing_width,rounding_ray+thickness])
|
|
rotate([180,0,0])
|
|
{
|
|
difference()
|
|
{
|
|
cube(size=([lenght+va,rounding_ray+thickness+va,rounding_ray+thickness+va]));
|
|
|
|
translate([-va,0,0])
|
|
rotate([0,90,0])
|
|
cylinder(d=rounding_dia+2*thickness, h=lenght+2*va);
|
|
}
|
|
}
|
|
|
|
// 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])
|
|
{
|
|
difference()
|
|
{
|
|
cube(size=([lenght+va,rounding_ray+thickness+va,rounding_ray+thickness+va]));
|
|
|
|
translate([-va,0,0])
|
|
rotate([0,90,0])
|
|
cylinder(d=rounding_dia+2*thickness, h=lenght+2*va);
|
|
}
|
|
}
|
|
|
|
// 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])
|
|
{
|
|
difference()
|
|
{
|
|
cube(size=([lenght+va,rounding_ray+thickness+va,rounding_ray+thickness+va]));
|
|
|
|
translate([-va,0,0])
|
|
rotate([0,90,0])
|
|
cylinder(d=rounding_dia+2*thickness, h=lenght+2*va);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Mounting holes
|
|
translate([mounting_hole_starting_offset, wing_width + base_width/2, 0])
|
|
{
|
|
// repeating the mouting hole count depending of the lenght of the rail
|
|
for (i = [0:(lenght/(hole_lenght+hole_spacing))])
|
|
{
|
|
translate([i*(hole_lenght+hole_spacing), 0, 0])
|
|
hull()
|
|
{
|
|
translate([hole_ray,0,van])
|
|
cylinder(d=hole_dia, h=thickness+va);
|
|
|
|
translate([hole_lenght-hole_ray,0,van])
|
|
cylinder(d=hole_dia, h=thickness+va);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
module din_mount_wago_style(thickness = 1)
|
|
{
|
|
|
|
} |