Aprimorar a grade de drenagem com canais paralelos para melhor escoamento de água

This commit is contained in:
FelipeCN
2025-11-14 15:45:35 -03:00
parent 7b03dc7b98
commit d22a62e79f
@@ -20,9 +20,9 @@ espessura_parede = 2; // Espessura da parede
raio_arredondamento = 20; // Quanto maior, mais arredondado (recomendado: 15-30)
// Grade de drenagem no fundo
com_grade_drenagem = true; // true = com grade, false = fundo sólido
largura_fenda_drenagem = 2; // Largura das fendas da grade
espacamento_fendas = 6; // Espaçamento entre fendas
com_grade_drenagem = true; // true = com grade, false = fundo sólido
largura_linha_fundo = 1.5; // Largura das linhas do fundo (mesmo das laterais)
espacamento_linhas_fundo = 4; // Espaçamento entre linhas no fundo
// Textura lateral (linhas verticais)
com_textura = true; // true = com textura, false = liso
@@ -76,10 +76,9 @@ module porta_utensilios() {
textura_vertical();
}
// Grade de drenagem no fundo
// Grade de drenagem no fundo (ranhuras)
if (com_grade_drenagem) {
translate([0, 0, -0.5])
grade_drenagem();
grade_drenagem();
}
}
@@ -192,30 +191,33 @@ module textura_vertical() {
}
}
// Grade de drenagem no fundo
// Grade de drenagem no fundo (ranhuras que permitem escoar água)
module grade_drenagem() {
// Fendas no eixo X
num_fendas_x = floor((largura - 2*espessura_parede) / espacamento_fendas);
for (i = [1:num_fendas_x-1]) {
x_pos = -largura/2 + espessura_parede + i * espacamento_fendas;
translate([x_pos - largura_fenda_drenagem/2, 0, 0])
cube([
largura_fenda_drenagem,
profundidade - 2*espessura_parede,
espessura_parede + 1
], center=true);
}
dim_interna_x = largura - 2*espessura_parede;
dim_interna_y = profundidade - 2*espessura_parede;
// Fendas no eixo Y
num_fendas_y = floor((profundidade - 2*espessura_parede) / espacamento_fendas);
for (i = [1:num_fendas_y-1]) {
y_pos = -profundidade/2 + espessura_parede + i * espacamento_fendas;
translate([0, y_pos - largura_fenda_drenagem/2, 0])
cube([
largura - 2*espessura_parede,
largura_fenda_drenagem,
espessura_parede + 1
], center=true);
// Usar intersection para garantir que as linhas não ultrapassem a borda
intersection() {
// Limite da área interna
translate([0, 0, -1])
squircle_3d(
dim_interna_x - 1,
dim_interna_y - 1,
espessura_parede + 3,
raio_arredondamento - espessura_parede - 0.5
);
// Canais de drenagem paralelos
union() {
num_canais = floor(dim_interna_x / espacamento_linhas_fundo);
for (i = [1:num_canais-1]) {
x_pos = -dim_interna_x/2 + i * espacamento_linhas_fundo;
// Canal (cubo que remove material do fundo)
translate([x_pos - largura_linha_fundo/2, 0, espessura_parede/2])
cube([largura_linha_fundo, dim_interna_y + 10, espessura_parede + 1], center=true);
}
}
}
}