1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-09-29 06:09:08 +02:00
Files
Mendel90/scad/fixing-block.scad
2012-03-13 10:02:35 -05:00

104 lines
3.1 KiB
OpenSCAD

//
// Mendel90
//
// GNU GPL v2
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// Brackets to fasten the frame together
//
include <conf/config.scad>
slot = 2;
thickness = 5;
thin_wall = filament_width * 2 + eta;
wall = 3;
counter_bore_rad = washer_diameter(screw_washer(base_screw)) / 2 + 0.2;
width = 2 * wall + 2 * thin_wall + 6 * counter_bore_rad;
shear = min(counter_bore_rad - screw_clearance_radius(frame_screw), 2.5);
hole_pitch = 2 * (2 * counter_bore_rad + thin_wall);
depth = 2 * (thickness + counter_bore_rad) + slot - 2 * shear;
height = depth;
hole_offset = depth / 2;
corner_rad = 3;
counter_bore_depth = depth - thickness;
function fixing_block_width() = width;
function fixing_block_height() = height;
module fixing_block_v_hole(h)
translate([0, hole_offset, h])
child();
module fixing_block_h_holes(h)
for(end = [-1, 1])
translate([end * hole_pitch / 2, h, hole_offset])
rotate([90, 0, 180])
child();
module fixing_block_stl() {
stl("fixing_block");
difference() {
translate([-(width - 2 * corner_rad) / 2, 0, 0])
minkowski() {
cube([width - 2 * corner_rad, depth- corner_rad, height -corner_rad]);
intersection() {
sphere(r = corner_rad);
translate([0, 5, 5])
cube([10, 10, 10], center = true);
}
}
translate([-width / 2 - 1, thickness, height + eta]) // diagonal slice of the front
rotate([-45, 0, 0])
cube([width + 2, depth * 2, height]);
fixing_block_v_hole(height - counter_bore_depth)
rotate([0,0,90])
union() {
slot(h = 100, r = screw_clearance_radius(frame_screw), l = slot, center = true);
multmatrix(m = [ [1, 0, shear / counter_bore_depth, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1] ])
slot(h = 100, r = counter_bore_rad, l = slot, center = false);
}
fixing_block_h_holes(depth - counter_bore_depth)
rotate([0,0,0])
union() {
vertical_tearslot(h = 100, r = screw_clearance_radius(frame_screw), l = slot, center = true);
multmatrix(m = [ [1, 0, 0, 0],
[0, 1, shear / counter_bore_depth, 0],
[0, 0, 1, 0],
[0, 0, 0, 1] ])
vertical_tearslot(h = 100, r = counter_bore_rad, l = slot, center = false);
}
}
}
module fixing_block_assembly(front = false) {
color(fixing_block_color) render() fixing_block_stl();
fixing_block_v_hole(height - counter_bore_depth)
if(front)
frame_screw(thickness);
else
base_screw();
fixing_block_h_holes(depth - counter_bore_depth)
frame_screw(thickness);
}
if(0) {
fixing_block_stl();
}
else
fixing_block_assembly();