From d22a62e79f1458f641fb528e0a7b298dcb504ea7 Mon Sep 17 00:00:00 2001 From: FelipeCN <57776624+felipecaninnovaes@users.noreply.github.com> Date: Fri, 14 Nov 2025 15:45:35 -0300 Subject: [PATCH] =?UTF-8?q?Aprimorar=20a=20grade=20de=20drenagem=20com=20c?= =?UTF-8?q?anais=20paralelos=20para=20melhor=20escoamento=20de=20=C3=A1gua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../porta-utensilios-banheiro.scad | 58 ++++++++++--------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/porta-utensilios-banheiro/porta-utensilios-banheiro.scad b/porta-utensilios-banheiro/porta-utensilios-banheiro.scad index 3520bec..2eaff0b 100644 --- a/porta-utensilios-banheiro/porta-utensilios-banheiro.scad +++ b/porta-utensilios-banheiro/porta-utensilios-banheiro.scad @@ -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); + } + } } }