mirror of
https://github.com/Theaninova/Brick-Monorail.git
synced 2025-12-11 04:06:14 +00:00
feat: endcap improvements
This commit is contained in:
14
README.md
14
README.md
@@ -1,4 +1,4 @@
|
|||||||
# Parametric Monorail
|
# Brick Monorail
|
||||||
|
|
||||||
## Design differences
|
## Design differences
|
||||||
|
|
||||||
@@ -14,11 +14,17 @@ _These are 3d printing optimized, compatible rails, not replicas. Replicas print
|
|||||||
|
|
||||||
## Printing
|
## Printing
|
||||||
|
|
||||||
To be compatible with standard bricks, the following print settings are recommended
|
To be compatible with standard bricks, the following print settings are strongly advised
|
||||||
|
|
||||||
- Nozzle: 0.4, this is equivalent to 1 LDU.
|
- Nozzle: 0.4, this is equivalent to 1 LDU.
|
||||||
- Layer height: 0.1, though 0.2 will also do. Refrain from using 0.15, since that does not cleanly divides the LDU.
|
- Layer height: Ideally 0.1, though 0.2 will also do. Refrain from using 0.15, since that does not cleanly divides the LDU.
|
||||||
- Supports: Tree (normal supports may print faster, but lead to way worse results. But ymmv).
|
- Make sure your initial layer height is either 0.2 or 0.4!
|
||||||
|
- Enable Bridge Settings in Cura
|
||||||
|
- Supports: **none**. These parts are designed to be printed without any supports, though some of the bridging is not exactly
|
||||||
|
what you would call easy for the printer, so be on the lookout.
|
||||||
|
- Make sure you set your "Initial Layer Horizontal Expansion" to a value that works for you, for example -0.2mm to
|
||||||
|
compensate for elephant's foot. Better overcompensate here, if you don't do this you might not be able to fit
|
||||||
|
bricks in the slot!
|
||||||
|
|
||||||
My prints were done on a modified SecKit SK-Go2 running Klipper, with 10k acceleration and 150mm/s print speed for a good
|
My prints were done on a modified SecKit SK-Go2 running Klipper, with 10k acceleration and 150mm/s print speed for a good
|
||||||
balance of speed and quality. A short rail will take about an hour to print.
|
balance of speed and quality. A short rail will take about an hour to print.
|
||||||
|
|||||||
56
track.scad
56
track.scad
@@ -1,6 +1,7 @@
|
|||||||
include <lib/BOSL/shapes.scad>;
|
include <lib/BOSL/shapes.scad>;
|
||||||
include <lib/BOSL/transforms.scad>;
|
include <lib/BOSL/transforms.scad>;
|
||||||
include <lib/BOSL/constants.scad>;
|
include <lib/BOSL/constants.scad>;
|
||||||
|
include <lib/BOSL/beziers.scad>;
|
||||||
|
|
||||||
$LDU=0.4;
|
$LDU=0.4;
|
||||||
|
|
||||||
@@ -55,50 +56,51 @@ module brickSlot(w=1, l=1, h=3) {
|
|||||||
mirror_copy([0, 1, 0])
|
mirror_copy([0, 1, 0])
|
||||||
translate([$tile / 2, $tile / 2, 0])
|
translate([$tile / 2, $tile / 2, 0])
|
||||||
cyl(d=$fillet, h=$plate * h, align=V_DOWN, $fn=12);
|
cyl(d=$fillet, h=$plate * h, align=V_DOWN, $fn=12);
|
||||||
difference () {
|
cuboid([$stud, $stud, $studHeight * 2], align=V_TOP);
|
||||||
cuboid([$stud+2*$LDU, $stud+2*$LDU, $studHeight], align=V_TOP);
|
|
||||||
mirror_copy([1, -1, 0])
|
|
||||||
mirror_copy([1, 0, 0])
|
|
||||||
translate([$stud / 2, 0, 0])
|
|
||||||
cyl(d=2*$LDU, h=$studHeight, align=V_TOP+V_RIGHT, $fn=12);
|
|
||||||
}
|
|
||||||
mirror_copy([1, 0, 0])
|
|
||||||
mirror_copy([0, 1, 0])
|
|
||||||
translate([$stud/2+$LDU, $stud/2+$LDU, 0])
|
|
||||||
cyl(d=$fillet, h=$studHeight, align=V_TOP, $fn=12);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module endCap() {
|
module endCapStraight() {
|
||||||
$width = $baseWidth - $plate * 2;
|
$width = $baseWidth - $plate * 2;
|
||||||
union() {
|
union() {
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
cuboid([$width, $tile * 2, $tile], edges=EDGE_BOT_FR+EDGE_BOT_RT+EDGE_BOT_LF);
|
cuboid([$width, $tile * 2, $tile], edges=EDGE_BOT_FR+EDGE_BOT_RT+EDGE_BOT_LF);
|
||||||
mirror_copy([0, 1, 0])
|
difference() {
|
||||||
translate([0, $tile / 2, 0])
|
mirror_copy([0, 1, 0])
|
||||||
cyl(l=$width + $studHeight * 2, d=$stud, orient=ORIENT_X, $fn=24);
|
translate([0, $tile / 2, 0])
|
||||||
|
cyl(l=$width + $studHeight * 2, d=$stud, orient=ORIENT_X, $fn=24);
|
||||||
|
mirror_copy([1, 0, 0])
|
||||||
|
translate([$tile * 2, 0, -$stud / 2])
|
||||||
|
rotate([0, -14, 0])
|
||||||
|
cuboid([$studHeight * 10, $tile * 4, $LDU * 2], align=V_TOP+V_LEFT);
|
||||||
|
}
|
||||||
|
|
||||||
translate([$tile, -$tile, 0]) cuboid([8 * $LDU, $LDU, $tile], align=V_RIGHT+V_FRONT);
|
translate([$tile, -$tile, 0]) cuboid([8 * $LDU, $LDU, $tile], align=V_RIGHT+V_FRONT);
|
||||||
}
|
}
|
||||||
|
// Fingernail slot
|
||||||
mirror_copy([1, 0, 0])
|
mirror_copy([1, 0, 0])
|
||||||
mirror_copy([0, 1, 0])
|
translate([$width / 2, 0, $tile / 2])
|
||||||
translate([$width / 2, $tile / 2, 0])
|
cuboid([$LDU, $tile, $LDU])
|
||||||
torus(d2=$edgeTolerance, d=$stud, orient=ORIENT_X, $fn=24);
|
|
||||||
|
|
||||||
translate([$plate, $tile / 2, $tile - $LDU]) cube([$LDU, $tile, $LDU]);
|
translate([$plate, $tile / 2, $tile - $LDU]) cube([$LDU, $tile, $LDU]);
|
||||||
translate([$width + $plate - $LDU, $tile / 2, $tile - $LDU]) cube([$LDU, $tile, $LDU]);
|
translate([$width + $plate - $LDU, $tile / 2, $tile - $LDU]) cube([$LDU, $tile, $LDU]);
|
||||||
|
|
||||||
|
// Brick slots
|
||||||
mirror_copy([1, 0, 0])
|
mirror_copy([1, 0, 0])
|
||||||
translate([$tile / 2, -$tile / 2, $tile / 2 - $plate])
|
translate([$tile / 2, -$tile / 2, $tile / 2 - $plate * 2])
|
||||||
brickSlot();
|
brickSlot();
|
||||||
|
// Bridging improvements
|
||||||
|
translate([0, 0, $tile / 2 - $plate * 2]) cuboid([$tile * 2, $tile - 4 * $LDU, $LDU], align=V_FRONT);
|
||||||
|
translate([0, -4 * $LDU, $tile / 2 - $plate * 2]) cuboid([$tile * 2, $stud, $LDU * 2], align=V_FRONT);
|
||||||
|
|
||||||
|
// End Slots
|
||||||
translate([-$tile, -$tile, 0]) cuboid([8 * $LDU, $LDU, $tile], align=V_LEFT+V_BACK);
|
translate([-$tile, -$tile, 0]) cuboid([8 * $LDU, $LDU, $tile], align=V_LEFT+V_BACK);
|
||||||
place_copies([[-$tile, -$tile + $LDU], [$tile + 8 * $LDU, -$tile, 0]])
|
place_copies([[-$tile, -$tile + $LDU], [$tile + 8 * $LDU, -$tile, 0]])
|
||||||
mirror_copy([1, 0, 0], cp=[-4 * $LDU, 0, 0])
|
mirror_copy([1, 0, 0], cp=[-4 * $LDU, 0, 0])
|
||||||
cyl(d=$fillet, h=$tile, $fn=12);
|
cyl(d=$fillet, h=$tile, $fn=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rail
|
||||||
translate([0, $teethTolerance / 2, $tile / 2]) cuboid([$teethRailWidth, $tile * 2 - $teethTolerance, $plate], align=V_TOP);
|
translate([0, $teethTolerance / 2, $tile / 2]) cuboid([$teethRailWidth, $tile * 2 - $teethTolerance, $plate], align=V_TOP);
|
||||||
translate([0, -$tile, $tile / 2]) group() {
|
translate([0, -$tile, $tile / 2]) group() {
|
||||||
for (i = [0:(2 * $teeth - 1)]) {
|
for (i = [0:(2 * $teeth - 1)]) {
|
||||||
@@ -108,5 +110,15 @@ module endCap() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module curve90(r=12) {
|
||||||
|
translate([r * $tile, $tile, 0]) endCapStraight();
|
||||||
|
translate([$tile, r * $tile, 0]) rotate(-90) endCapStraight();
|
||||||
|
//ir = ($r
|
||||||
|
path = [[2 * $tile, r * $tile, 0], [r * $tile / 2, r * $tile, 0], [r * $tile, r * $tile / 2, 0], [r * $tile, 2 * $tile, 0]];
|
||||||
|
extrude_2d_shapes_along_bezier(path) {
|
||||||
|
circle(r=10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
endCap();
|
//curve90();
|
||||||
|
endCapStraight();
|
||||||
|
|||||||
Reference in New Issue
Block a user