modelled mortices in the top ends; added documentation of parameters.
This commit is contained in:
parent
8b2185d73b
commit
c43cd06025
2 changed files with 55 additions and 20 deletions
22
README.md
22
README.md
|
|
@ -42,14 +42,34 @@ This model is parameterised and is resizeable within limits, but if you vary any
|
||||||
|
|
||||||
Colours are for clarity only.
|
Colours are for clarity only.
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
height=950, width=1500, nplanks=4, ndowels=4, plank_width=150, plank_gap=20, top_thickness=75, leg_section=100
|
||||||
|
|
||||||
|
The following parameters may be passed to the `bench` module:
|
||||||
|
|
||||||
|
| Parameter | Default | Documentation | Sensible range |
|
||||||
|
| ------------- | ------- | --------------------------------------------------------- | -------------- |
|
||||||
|
| height | 950 | height of bench top | 800-1100 |
|
||||||
|
| width | 1500 | overall width of the bench, excluding the end vice winder | 1200-2000 |
|
||||||
|
| nplanks | 4 | number of planks comprising the top | 2-5 |
|
||||||
|
| ndowels | 4 | number of dowels joining each adjacent plank pair | 2-8 |
|
||||||
|
| plank_width | 150 | width of each plank | 150-300 |
|
||||||
|
| plank_gap | 20 | gap between each pair of planks | 0-20 |
|
||||||
|
| top_thickness | 75 | thickness of the planks comprising the top | 60-100 |
|
||||||
|
| leg_section | 100 | thickness of the (square section) legs | 75-150 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Errata/todo:
|
## Errata/todo:
|
||||||
1. locking wedges and treenails are generally not present in this
|
1. locking wedges and treenails are generally not present in this
|
||||||
drawing;
|
drawing;
|
||||||
2. mortices and holes for wedges and treenails are not all present;
|
2. mortices and holes for wedges and treenails are not all present;
|
||||||
3. two of the tapered mortices for the longitudinal braces are the
|
3. two of the tapered mortices for the longitudinal braces are the
|
||||||
wrong way round;
|
wrong way round;
|
||||||
5. while all tenons are modelled, not all mortices are; where a tenon
|
4. while all tenons are modelled, not all mortices are; where a tenon
|
||||||
intersects an apparently solid piece, assume there is a mortice!
|
intersects an apparently solid piece, assume there is a mortice!
|
||||||
|
5. screw threads are not yet modelled.
|
||||||
|
|
||||||
## Licence
|
## Licence
|
||||||
|
|
||||||
|
|
|
||||||
53
roubo.scad
53
roubo.scad
|
|
@ -171,15 +171,19 @@ module top_plank(bench_width = 1500, plank_width= 150, top_thickness=75) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//top_plank();
|
module top_end(nplanks=4, plank_gap=20, plank_width=150, section=75) {
|
||||||
|
depth = (nplanks*plank_width) + (plank_gap * (nplanks - 1));
|
||||||
module top_end(depth=600, section=75) {
|
|
||||||
color("green")
|
color("green")
|
||||||
cube([ depth, section, section]);
|
difference() {
|
||||||
// todo: add mortices
|
cube([ depth, section, section]);
|
||||||
|
for ( plank = [1:nplanks]) {
|
||||||
|
translate([(plank -1) * (plank_width + plank_gap), 0, 0])
|
||||||
|
top_plank_end_tenon( plank_width, section);
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module end_vice_cut( plank_width=150, width=300, top_thickness=75) {
|
module end_vice_cut( plank_width=150, width=300, top_thickness=75) {
|
||||||
translate([plank_width * 0.375, 0, -1])
|
translate([plank_width * 0.375, 0, -1])
|
||||||
cube([plank_width/4, width, top_thickness + 2]);
|
cube([plank_width/4, width, top_thickness + 2]);
|
||||||
|
|
@ -211,6 +215,10 @@ module vice_screw(depth=400) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* todo: the block doesn't get correctly centred in the slot if the
|
||||||
|
* plank_width isn't 150mm, so I've got geometry wrong.
|
||||||
|
*/
|
||||||
module end_vice( plank_width=150, width=300, top_thickness=75){
|
module end_vice( plank_width=150, width=300, top_thickness=75){
|
||||||
// the end vice block: this has exactly the section of the end
|
// the end vice block: this has exactly the section of the end
|
||||||
// vice cut, so we'll use the same model (but much smaller width)
|
// vice cut, so we'll use the same model (but much smaller width)
|
||||||
|
|
@ -218,8 +226,8 @@ module end_vice( plank_width=150, width=300, top_thickness=75){
|
||||||
translate([50 - (width/5), 0, 0])
|
translate([50 - (width/5), 0, 0])
|
||||||
end_vice_cut( plank_width, 50, top_thickness);
|
end_vice_cut( plank_width, 50, top_thickness);
|
||||||
rotate([0, 0, 90])
|
rotate([0, 0, 90])
|
||||||
translate([width *1.1, 0 - plank_width/2, top_thickness/2])
|
translate([width *1.1, 0 - plank_width/2, top_thickness/2])
|
||||||
vice_screw(width);
|
vice_screw(width);
|
||||||
}
|
}
|
||||||
|
|
||||||
module bench_top( nplanks=4, ndowels = 4, plank_gap=20, bench_width=1500, plank_width=150, top_thickness=75) {
|
module bench_top( nplanks=4, ndowels = 4, plank_gap=20, bench_width=1500, plank_width=150, top_thickness=75) {
|
||||||
|
|
@ -244,10 +252,13 @@ module bench_top( nplanks=4, ndowels = 4, plank_gap=20, bench_width=1500, plank_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//module top_end(nplanks=4, plank_gap=20, plank_width=150, section=75) {
|
||||||
|
|
||||||
translate([0, 1, 0])
|
translate([0, 1, 0])
|
||||||
top_end((plank_width * nplanks)+(plank_gap * (nplanks - 1)), top_thickness);
|
top_end( nplanks, plank_gap, plank_width, top_thickness);
|
||||||
translate([ 0, bench_width - (top_thickness +1), 0])
|
translate([ 0, bench_width - 1, top_thickness])
|
||||||
top_end((plank_width * nplanks)+(plank_gap * (nplanks - 1)), top_thickness);
|
rotate([ 180, 0, 0])
|
||||||
|
top_end( nplanks, plank_gap, plank_width, top_thickness);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -305,14 +316,14 @@ module front_vice( width=150, height=800, depth=400) {
|
||||||
color("fuchsia")
|
color("fuchsia")
|
||||||
translate([0-(depth*0.8), (width/2)-(width/12), width/2])
|
translate([0-(depth*0.8), (width/2)-(width/12), width/2])
|
||||||
difference() {
|
difference() {
|
||||||
cube([depth, width/6, width/2]);
|
cube([depth, width/6, 75]);
|
||||||
for( hole_pair=[1:5]) {
|
for( hole_pair=[1:5]) {
|
||||||
translate([25+(depth/10 * hole_pair), width/3, width/6])
|
translate([25+(depth/10 * hole_pair), 50, 25])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
cylinder(width/2, r=12.5);
|
cylinder(width/2, r=12.5);
|
||||||
translate([(depth/10 * hole_pair), width/3, width/3])
|
translate([(depth/10 * hole_pair), 50, 50])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
cylinder(width/2, r=12.5);
|
cylinder(width/2, r=12.5);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
translate([(depth*0.22), width/2, height * 0.75])
|
translate([(depth*0.22), width/2, height * 0.75])
|
||||||
|
|
@ -334,4 +345,8 @@ module bench( height=950, width=1500, nplanks=4, ndowels=4, plank_width=150, pla
|
||||||
//translate([0, 0, 875])
|
//translate([0, 0, 875])
|
||||||
// bench_top();
|
// bench_top();
|
||||||
|
|
||||||
bench(width=1700);
|
bench();
|
||||||
|
translate([1000, 0, 0])
|
||||||
|
bench(width=1700, nplanks=3, plank_width = 200);
|
||||||
|
|
||||||
|
//legs();
|
||||||
Loading…
Add table
Add a link
Reference in a new issue