bolex_90_degree_prism/bolex_90_degree_prism.scad

56 lines
2.2 KiB
OpenSCAD

PrismSize = 12; //12.75 = original
X = 12.85;
Y = 43.6;
Z = 11.6;
PostD = 4.3;
EndD = 6.2;
PrismXOffset = -0.426;
PrismYOffset = 5.5; //for 12mm
PrismX = PrismXOffset + ((PrismSize - 12) / 2) + 0.65;
PrismY = (Y / 2) - (PrismSize / 2) - (PrismYOffset - ((PrismSize - 12) / 2) - 0.5);
OffsetZ = (Z / 2) + (PrismSize - 12) + 0.39 + 2.7;
module prism (pos = [0, 0, 0], rot = [0, 0, 0], scl = [1, 1, 1]) {
translate(pos) rotate(rot) scale(scl) {
rotate([0, 0, -45]) difference () {
rotate([0, 0, 45]) cube([PrismSize, PrismSize, PrismSize], center = true);
translate([PrismSize, 0, 0]) cube([PrismSize * 2, PrismSize * 2, PrismSize + 1], center = true);
}
}
}
module bolex_90_degree_prism () {
difference () {
translate([0, 0, ]) cube([X, Y, Z], center = true);
//prism void
prism([PrismX, PrismY, (PrismSize / 2) - OffsetZ], rot = [90, 0, 0], [1, 1.06, 1]);
translate([PrismX, PrismY, (PrismSize / 2) - OffsetZ + 12.25]) scale([2, 0.9, 1]) cube([12, 12, 12], center = true);
translate([PrismX - 11, PrismY, (PrismSize / 2) - OffsetZ]) scale([1, 1, 1.5]) cube([12, 12, 12], center = true);
//remove corner
translate([-X / 2, 0, Z / 2]) rotate([0, 45, 0]) cube([2, Y + 1, 2], center = true);
//post void
translate([(X / 2) - (PostD / 2) - 1, (-Y / 2) + (PostD / 2) + 1, 0]) cylinder(r = PostD / 2, h = Z + 1, center = true, $fn = 40);
//post void bevel
translate([(X / 2) - (PostD / 2) - 1, (-Y / 2) + (PostD / 2) + 1, (-Z / 2) + 0.4]) cylinder(r1 = (PostD / 2) + (1 / 2), r2 = (PostD / 2) - 0.1, h = 2, center = true, $fn = 40);
//angled cut
translate([-9.5, (-Y / 2) + (25 / 2), 0]) rotate([0, 0, 17.7]) color("red") cube([X, 50, Z + 1], center = true);
//rounded end
translate([(X / 2) - (PostD / 2) - 1, (-Y / 2) + (PostD / 2) + 1, 0]) difference () {
translate([0, -8 / 2, 0]) cube([8, 8, Z + 1], center = true);
translate([-8 / 2, (8 / 2) - 1, 0]) cube([8, 8, Z + 1], center = true);
cylinder(r = EndD / 2, h = Z + 2, center = true, $fn = 40);
}
}
}
//color("red") prism([PrismX, PrismY, (PrismSize / 2) - OffsetZ], rot = [90, 0, 0]);
bolex_90_degree_prism();