mirror of
https://github.com/kennetek/gridfinity-rebuilt-openscad.git
synced 2024-12-22 14:53:25 +00:00
Merge pull request #138 from jannessm/main
add cylindrical cutouts to *_bins.scad
This commit is contained in:
commit
37389809eb
2 changed files with 62 additions and 10 deletions
|
@ -29,17 +29,31 @@ $fs = 0.25;
|
||||||
|
|
||||||
/* [General Settings] */
|
/* [General Settings] */
|
||||||
// number of bases along x-axis
|
// number of bases along x-axis
|
||||||
gridx = 5;
|
gridx = 3;
|
||||||
// number of bases along y-axis
|
// number of bases along y-axis
|
||||||
gridy = 5;
|
gridy = 2;
|
||||||
// bin height. See bin height information and "gridz_define" below.
|
// bin height. See bin height information and "gridz_define" below.
|
||||||
gridz = 6;
|
gridz = 6;
|
||||||
|
|
||||||
/* [Compartments] */
|
/* [Linear Compartments] */
|
||||||
// number of X Divisions (set to zero to have solid bin)
|
// number of X Divisions (set to zero to have solid bin)
|
||||||
divx = 1;
|
divx = 0;
|
||||||
// number of y Divisions (set to zero to have solid bin)
|
// number of Y Divisions (set to zero to have solid bin)
|
||||||
divy = 1;
|
divy = 0;
|
||||||
|
|
||||||
|
/* [Cylindrical Compartments] */
|
||||||
|
// number of cylindrical X Divisions (mutually exclusive to Linear Compartments)
|
||||||
|
cdivx = 0;
|
||||||
|
// number of cylindrical Y Divisions (mutually exclusive to Linear Compartments)
|
||||||
|
cdivy = 0;
|
||||||
|
// orientation
|
||||||
|
c_orientation = 2; // [0: x direction, 1: y direction, 2: z direction]
|
||||||
|
// diameter of cylindrical cut outs
|
||||||
|
cd = 10;
|
||||||
|
// cylinder height
|
||||||
|
ch = 1;
|
||||||
|
// spacing to lid
|
||||||
|
c_depth = 1;
|
||||||
|
|
||||||
/* [Height] */
|
/* [Height] */
|
||||||
// determine what the variable "gridz" applies to based on your use case
|
// determine what the variable "gridz" applies to based on your use case
|
||||||
|
@ -73,11 +87,16 @@ div_base_y = 0;
|
||||||
color("tomato") {
|
color("tomato") {
|
||||||
gridfinityInit(gridx, gridy, height(gridz, gridz_define, style_lip, enable_zsnap), height_internal) {
|
gridfinityInit(gridx, gridy, height(gridz, gridz_define, style_lip, enable_zsnap), height_internal) {
|
||||||
|
|
||||||
if (divx > 0 && divy > 0)
|
if (divx > 0 && divy > 0) {
|
||||||
cutEqual(n_divx = divx, n_divy = divy, style_tab = style_tab, scoop_weight = scoop);
|
|
||||||
|
cutEqual(n_divx = divx, n_divy = divy, style_tab = style_tab, scoop_weight = scoop);
|
||||||
|
|
||||||
|
} else if (cdivx > 0 && cdivy > 0) {
|
||||||
|
|
||||||
|
cutCylinders(n_divx=cdivx, n_divy=cdivy, cylinder_diameter=cd, cylinder_height=ch, coutout_depth=c_depth, orientation=c_orientation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
gridfinityBase(gridx, gridy, l_grid, div_base_x, div_base_y, style_hole, only_corners=only_corners);
|
gridfinityBase(gridx, gridy, l_grid, div_base_x, div_base_y, style_hole, only_corners=only_corners);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,39 @@ module cutEqual(n_divx=1, n_divy=1, style_tab=1, scoop_weight=1) {
|
||||||
cut((i-1)*$gxx/n_divx,(j-1)*$gyy/n_divy, $gxx/n_divx, $gyy/n_divy, style_tab, scoop_weight);
|
cut((i-1)*$gxx/n_divx,(j-1)*$gyy/n_divy, $gxx/n_divx, $gyy/n_divy, style_tab, scoop_weight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Creates equally divided cylindrical cutouts
|
||||||
|
//
|
||||||
|
// n_divx: number of x cutouts
|
||||||
|
// n_divy: number of y cutouts
|
||||||
|
// set n_div values to 0 for a solid bin
|
||||||
|
// cylinder_diameter: diameter of cutouts
|
||||||
|
// cylinder_height: height of cutouts
|
||||||
|
// coutout_depth: offset from top to solid part of container
|
||||||
|
// orientation: orientation of cylinder cutouts (0 = x direction, 1 = y direction, 2 = z direction)
|
||||||
|
module cutCylinders(n_divx=1, n_divy=1, cylinder_diameter=1, cylinder_height=1, coutout_depth=0, orientation=0) {
|
||||||
|
rotation = (orientation == 0)
|
||||||
|
? [0,90,0]
|
||||||
|
: (orientation == 1)
|
||||||
|
? [90,0,0]
|
||||||
|
: [0,0,0];
|
||||||
|
|
||||||
|
gridx_mm = $gxx*l_grid;
|
||||||
|
gridy_mm = $gyy*l_grid;
|
||||||
|
padding = 2;
|
||||||
|
cutout_x = gridx_mm - d_wall*2;
|
||||||
|
cutout_y = gridy_mm - d_wall*2;
|
||||||
|
|
||||||
|
cut_move(x=0, y=0, w=$gxx, h=$gyy) {
|
||||||
|
translate([0,0,-coutout_depth]) {
|
||||||
|
rounded_rectangle(cutout_x, cutout_y, coutout_depth*2, r_base);
|
||||||
|
|
||||||
|
pattern_linear(x=n_divx, y=n_divy, sx=(gridx_mm - 2)/n_divx, sy=(gridy_mm - 2)/n_divy)
|
||||||
|
rotate(rotation)
|
||||||
|
cylinder(r=cylinder_diameter/2, h=cylinder_height*2, center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// initialize gridfinity
|
// initialize gridfinity
|
||||||
module gridfinityInit(gx, gy, h, h0 = 0, l = l_grid) {
|
module gridfinityInit(gx, gy, h, h0 = 0, l = l_grid) {
|
||||||
$gxx = gx;
|
$gxx = gx;
|
||||||
|
@ -65,7 +98,7 @@ module cut_move(x, y, w, h) {
|
||||||
translate([0,0,$dh0==0?$dh+h_base:$dh0+h_base])
|
translate([0,0,$dh0==0?$dh+h_base:$dh0+h_base])
|
||||||
cut_move_unsafe(clp(x,0,$gxx), clp(y,0,$gyy), clp(w,0,$gxx-x), clp(h,0,$gyy-y))
|
cut_move_unsafe(clp(x,0,$gxx), clp(y,0,$gyy), clp(w,0,$gxx-x), clp(h,0,$gyy-y))
|
||||||
children();
|
children();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== Modules ===== //
|
// ===== Modules ===== //
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue