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.
288 lines
7.9 KiB
288 lines
7.9 KiB
include <BOSL/constants.scad>;
|
|
use <BOSL/metric_screws.scad>;
|
|
$fn=100;
|
|
|
|
pipe_diameter = 45.0;
|
|
width = 15;
|
|
thickness = 3.2;
|
|
length = 100;
|
|
pipenose_width = 10.0;
|
|
pipenose_len = 8.0;
|
|
device_position = 60;
|
|
device_width = 36;
|
|
device_screw_distance = 29;
|
|
display_screw_diameter = 4.3;
|
|
device_height = 9;
|
|
device_depth = 3*thickness+display_screw_diameter;
|
|
halterung_width = 47.1-4.3;
|
|
halterung_screw_diameter = 5;
|
|
halterung_screw_height_position = 14.5;
|
|
|
|
control_pipe_diameter = 18;
|
|
control_pipe_length = 24;
|
|
|
|
gap = 0.8;
|
|
mgap = 0.3;
|
|
|
|
screw_diameter = 6;
|
|
|
|
inner_diameter = pipe_diameter + 2*gap;
|
|
outer_diameter = inner_diameter + 2*thickness;
|
|
zwinge_unten_length = screw_diameter;
|
|
zwinge_oben_length = width;
|
|
|
|
module schelle() {
|
|
difference() {
|
|
union() {
|
|
// "Ring" (gefüllt)
|
|
cylinder( h=width, d=outer_diameter, center=true);
|
|
// Klemme unten
|
|
*translate( [0, -inner_diameter/2-zwinge_unten_length/2, 0])
|
|
//cube( [2*thickness+gap, zwinge_unten_length, width], center=true);
|
|
rotate([90,0,90])
|
|
linear_extrude( 2*thickness+gap, center=true)
|
|
offset(5)
|
|
square( [zwinge_unten_length, width-10], center=true);
|
|
// Klemme oben
|
|
translate( [0, inner_diameter/2+zwinge_oben_length/2-5, 0])
|
|
//cube( [4*thickness+gap, zwinge_oben_length, width], center=true);
|
|
rotate([90,0,90])
|
|
linear_extrude( 4*thickness+gap, center=true)
|
|
offset(5)
|
|
square( [zwinge_oben_length, width-10], center=true);
|
|
|
|
// Aussparung Nase
|
|
translate( [0, -thickness/2-inner_diameter/2, 0])
|
|
linear_extrude( width, center=true)
|
|
offset( thickness/2) {
|
|
x = pipenose_len+thickness;
|
|
polygon( [
|
|
[-8-thickness/2, 2],
|
|
[-5-thickness/2, 0],
|
|
[ -thickness/2, -x],
|
|
[ -thickness/2, -x-zwinge_unten_length],
|
|
[ thickness/2, -x-zwinge_unten_length],
|
|
[ thickness/2, -x],
|
|
[ 5+thickness/2, 0],
|
|
[ 8+thickness/2, 2],
|
|
]);
|
|
}
|
|
}
|
|
|
|
// Ring übrig lassen
|
|
cylinder( h=width+0.1, d=inner_diameter, center=true);
|
|
|
|
// gap zwischen der Klemmverschraubung
|
|
x = outer_diameter+2*zwinge_unten_length+0.8;
|
|
translate( [0, -x/2])
|
|
cube( [gap, x, width+.1], center=true);
|
|
// gap oben
|
|
y = outer_diameter+2*zwinge_oben_length+0.8;
|
|
translate( [0, y/2])
|
|
cube( [gap+2*thickness, y, width+.1], center=true);
|
|
|
|
// Aussparung Nase
|
|
translate( [0, -inner_diameter/2, 0])
|
|
linear_extrude( width+0.1, center=true)
|
|
polygon( [
|
|
[-8, 2],
|
|
[-5, -1],
|
|
[-2, -pipenose_len],
|
|
[ 0, -pipenose_len-mgap],
|
|
[ 2, -pipenose_len],
|
|
[ 5, -1],
|
|
[ 8, 2],
|
|
]);
|
|
|
|
// Schraubloch freihalten
|
|
for( i = [1,0])
|
|
mirror( [i,0,0])
|
|
translate( [thickness, -outer_diameter/2-pipenose_len-thickness - 0.75*screw_diameter, -width/2-0.1])
|
|
cube( [thickness, 1.5*screw_diameter, width+0.2]);
|
|
// Schraubloch unten
|
|
translate( [0, -outer_diameter/2-zwinge_unten_length/2-pipenose_len, 0])
|
|
rotate( [0, 90, 0])
|
|
cylinder( d=screw_diameter, h=10*thickness+gap+0.2, center=true);
|
|
// Schraubloch oben
|
|
translate( [0, inner_diameter/2+zwinge_oben_length-2*thickness, 0])
|
|
rotate( [0, 90, 0])
|
|
cylinder( d=screw_diameter, h=4*thickness+2*gap+0.2, center=true);
|
|
}
|
|
}
|
|
|
|
*intersection() {
|
|
schelle();
|
|
*translate( [outer_diameter/4+0.1, 0, -0.1])
|
|
cube( [outer_diameter/2 + 0.2, outer_diameter+2*zwinge_unten_length+2*zwinge_oben_length, width+0.2], center=true);
|
|
}
|
|
|
|
/*rotate([-5,0,0])*/ mirror([0,0,1])
|
|
translate( [device_width+outer_diameter/2, -0.75*length/*outer_diameter/2+2*zwinge_oben_length*/, -width/2])
|
|
difference() {
|
|
union() {
|
|
// Mittelholmen
|
|
rotate( [90,0,90])
|
|
linear_extrude( 2*thickness, center=true) {
|
|
os = 3;
|
|
w = width-os;
|
|
l = length-os;
|
|
n = os;
|
|
offset(os)
|
|
polygon( [
|
|
//[-n, w],
|
|
[-n+3, w],
|
|
[-n, w-3],
|
|
[-n, n],
|
|
[ l-3, (n+w)/2],
|
|
[ l-1, w],
|
|
]);
|
|
}
|
|
|
|
os = 10;
|
|
// Auflageplatte
|
|
*translate( [0, os, 0])
|
|
linear_extrude(thickness)
|
|
offset(-os) offset( 2*os)
|
|
polygon( [
|
|
[0, 0],
|
|
[device_width/2, length-device_position-os],
|
|
[0, length-device_position/2],
|
|
[halterung_width/4-os, length-2*os],
|
|
[-halterung_width/4+os, length-2*os],
|
|
[0, length-device_position/2],
|
|
[-device_width/2, length-device_position-os],
|
|
]);
|
|
|
|
// neue Stützen
|
|
translate( [0, length-device_position+thickness/2, -device_height-thickness]) {
|
|
rotate( [10, 0, 0]) {
|
|
difference() {
|
|
union() {
|
|
rotate( [90, 0, 0]) {
|
|
linear_extrude( device_depth+2*display_screw_diameter, center=true) {
|
|
t = thickness;
|
|
h = device_height + width*0.9;
|
|
w = device_width/2+os;
|
|
polygon( [
|
|
[ t, h],
|
|
[ w, t],
|
|
[ w, 0],
|
|
[-w, 0],
|
|
[-w, t],
|
|
[-t, h]
|
|
]);
|
|
}
|
|
}
|
|
|
|
translate( [-(device_width-os+control_pipe_length)/2, 0/*-2*display_screw_diameter*/, device_height+2])
|
|
rotate( [0, -90, 0])
|
|
cylinder( d=control_pipe_diameter, h=control_pipe_length+device_width/2+os, center=true);
|
|
}
|
|
|
|
for(i=[0,1])
|
|
mirror([i,0,0]) {
|
|
translate( [thickness, -display_screw_diameter, thickness])
|
|
cube([device_width/2+os-thickness, 2*display_screw_diameter, device_height+width], center=false);
|
|
|
|
// Schraublöcher für Display
|
|
translate( [device_width/2,0,0])
|
|
rotate( [0, 180, 0])
|
|
cylinder( d=display_screw_diameter, h=width, center=true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Stützen zwischen Mittelholmen und Auflageplatte
|
|
*for( i = [-display_screw_diameter, display_screw_diameter])
|
|
translate( [0, length - device_position + thickness/2+i, 0])
|
|
rotate( [90, 0, 0])
|
|
linear_extrude( thickness) {
|
|
t = thickness;
|
|
h = (device_position/115)*(width-thickness)+thickness;
|
|
w = device_width/2+0.68*os;
|
|
polygon( [
|
|
[ t, h],
|
|
[ w, t-0.1],
|
|
[-w, t-0.1],
|
|
[-t, h]
|
|
]);
|
|
}
|
|
|
|
// Schraubplatte
|
|
translate( [0, length, width]) {
|
|
os = 5;
|
|
w = halterung_width+thickness+screw_diameter/2;
|
|
v = halterung_width-thickness-screw_diameter/2;
|
|
h = halterung_screw_height_position-screw_diameter/2-os+thickness;
|
|
g = h - halterung_screw_diameter;
|
|
n = os;
|
|
translate( [0, -2*thickness, -2*thickness])
|
|
linear_extrude( 2*thickness)
|
|
offset(-thickness)
|
|
polygon( [
|
|
[ 2*thickness, -v/2],
|
|
[ 2*thickness, -v/2-thickness],
|
|
[-2*thickness, -v/2-thickness],
|
|
[-2*thickness, -v/2],
|
|
[-0.5*v, -thickness],
|
|
[-0.5*v-thickness, -thickness],
|
|
[-0.5*v-thickness, thickness],
|
|
[ 0.5*v+thickness, thickness],
|
|
[ 0.5*v+thickness, -thickness],
|
|
[ 0.5*v, -thickness]
|
|
]);
|
|
intersection() {
|
|
c = w+2*os+0.2;
|
|
translate( [-c/2+os, 0, -c+os])
|
|
rotate( [90, 0, 0])
|
|
linear_extrude( c)
|
|
offset( os)
|
|
square( [c-2*os, c-2*os]);
|
|
rotate( [180, 80, -90])
|
|
translate( [0,0,-2*thickness])
|
|
linear_extrude( 2*thickness) {
|
|
difference() {
|
|
offset( -os)
|
|
offset( 2*os)
|
|
polygon( [
|
|
[n , w/4], // unten rechts
|
|
[g , w/2],
|
|
[h , w/2], // oben rechts
|
|
[h , v/2],
|
|
[h/2, v/2],
|
|
[h/2, -v/2],
|
|
[h , -v/2],
|
|
[h , -w/2],
|
|
[g , -w/2],
|
|
[n , -w/4]
|
|
]);
|
|
translate( [h-thickness, halterung_width/2])
|
|
circle( d=halterung_screw_diameter);
|
|
translate( [h-thickness, -halterung_width/2])
|
|
circle( d=halterung_screw_diameter);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
translate( [0, length+0.25, pipe_diameter/2+width-4])
|
|
rotate( [90, 0, 0])
|
|
cylinder( r1=pipe_diameter/2, r2=pipe_diameter/2-4, h=4);
|
|
|
|
// Schraubloch vorne
|
|
translate( [-width/2, 0, width/2])
|
|
rotate( [0, 90, 0])
|
|
cylinder( d=screw_diameter, h=width);
|
|
|
|
// Schraublöcher für Display
|
|
*for( i=[1,-1])
|
|
translate( [i*device_screws/2, length-device_position, width/2])
|
|
rotate( [0, 180, 0])
|
|
cylinder( d=display_screw_diameter, h=width);
|
|
}
|
|
|
|
*translate([0, -2.5, 0])
|
|
linear_extrude(1)
|
|
square([5,5]); |