mirror of
https://github.com/kennetek/gridfinity-rebuilt-openscad.git
synced 2025-01-06 14:19:44 +00:00
added indent() and indent_cut() modules
This commit is contained in:
parent
36345f3efb
commit
22350f5818
2 changed files with 64 additions and 0 deletions
|
@ -153,6 +153,30 @@ gridfinityInit(3, 3, height(6), 0, 42) {
|
|||
gridfinityBase(3, 3, 42, 0, 0, 1);
|
||||
*/
|
||||
|
||||
// Shapes can also be cut in an indentation by using cut_indent() instead of cut_move(). To cut multiple shapes into one indented compartment use indent() in combination with cut_move().
|
||||
/*
|
||||
gridfinityInit(2, 2, height(6), 0, 42) {
|
||||
|
||||
cut_indent(14, 0, 0, 1, 1, enable_fillet=false)
|
||||
sphere(12);
|
||||
|
||||
indent(height(4), 1, 0, 1, 2) {
|
||||
cut_move($indent_x, $indent_y, $indent_w, $indent_h/2) {
|
||||
cube([20,20,20], true);
|
||||
rotate([0,0,45]) cube([20,20,20], true);
|
||||
}
|
||||
|
||||
cut_move($indent_x, $indent_y+1, $indent_w, $indent_h/2)
|
||||
translate([0, 0, -10])
|
||||
cylinder(20, r=12, true);
|
||||
}
|
||||
|
||||
cut(0, 1, 1, 1);
|
||||
}
|
||||
gridfinityBase(2, 2, 42, 0, 0, 1);
|
||||
//*/
|
||||
|
||||
|
||||
// You can use loops as well as the bin dimensions to make different parametric functions, such as this one, which divides the box into columns, with a small 1x1 top compartment and a long vertical compartment below
|
||||
/*
|
||||
gx = 3;
|
||||
|
|
|
@ -196,6 +196,46 @@ module cut_move(x, y, w, h) {
|
|||
children();
|
||||
}
|
||||
|
||||
|
||||
// Cuts an indentation at the requested compartment block and moves objects down to the new top surface height
|
||||
// Use in conjunction with cut_move()
|
||||
// d: indent depth
|
||||
// x: start coord. x=0 is the left side of the bin.
|
||||
// y: start coord. y=0 is the bottom side of the bin.
|
||||
// w: width of compartment, in # of bases covered
|
||||
// h: height of compartment, in # of bases covered
|
||||
// enable_fillet: add a fillet between the surface of the indentation and the wall
|
||||
module indent(d, x = 0, y = 0, w = $gxx, h = $gyy, enable_fillet = true) {
|
||||
|
||||
$indent_d = d;
|
||||
$indent_x = x;
|
||||
$indent_y = y;
|
||||
$indent_w = w;
|
||||
$indent_h = h;
|
||||
|
||||
grid_to_mm = l_grid - d_wall*2;
|
||||
|
||||
translate([0, 0, -d]) {
|
||||
if (enable_fillet)
|
||||
translate([0, 0, $dh - h_bot])
|
||||
cut(x, y, w, h, t=5, s=0);
|
||||
else
|
||||
cut_move(x, y, w, h)
|
||||
rounded_rectangle(w*grid_to_mm, h*grid_to_mm, d*2, r_f2);
|
||||
|
||||
children();
|
||||
}
|
||||
}
|
||||
|
||||
// Cuts an indentation at the requested compartment and translates objects from the origin point to the center of the indentation. Combines indent() and cut_move().
|
||||
// See indent() module for parameter descriptions
|
||||
module cut_indent(d, x = 0, y = 0, w = $gxx, h = $gyy, enable_fillet = true) {
|
||||
indent(d, x, y, w, h, enable_fillet)
|
||||
cut_move(x, y, w, h)
|
||||
children();
|
||||
}
|
||||
|
||||
|
||||
// ===== Modules ===== //
|
||||
|
||||
module profile_base() {
|
||||
|
|
Loading…
Reference in a new issue