Refactor code structure for improved readability and maintainability
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,76 @@
|
|||||||
|
# Extensão em "L" para Calha de Drenagem
|
||||||
|
|
||||||
|
## Descrição do Modelo
|
||||||
|
|
||||||
|
Este modelo cria uma extensão em formato "L" para calhas de drenagem, permitindo direcionar o fluxo de água para longe da estrutura.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Estrutura
|
||||||
|
|
||||||
|
### 1. Perna Vertical (Encaixe na Calha)
|
||||||
|
- Encaixa diretamente na boca da calha existente
|
||||||
|
- **Dimensões:** 103mm (largura) × 50mm (profundidade) × 72mm (altura)
|
||||||
|
- Possui cavidade interna para inserir na calha
|
||||||
|
- **Espessura das paredes:** 2.5mm
|
||||||
|
|
||||||
|
### 2. Perna Horizontal (Túnel de Escoamento)
|
||||||
|
- Forma um canal que direciona a água para frente
|
||||||
|
- **Dimensões:** 103mm (largura) × 80mm (comprimento) × 30mm (altura)
|
||||||
|
- **FUNDO FECHADO:** impede vazamento pela parte inferior
|
||||||
|
- **TOPO ABERTO:** permite limpeza e visualização do fluxo
|
||||||
|
- **FRENTE ABERTA:** água sai livremente pela extremidade
|
||||||
|
- **Laterais fechadas** para conter o fluxo
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fixação
|
||||||
|
|
||||||
|
- Dois buracos para parafusos (3.5mm) nas laterais
|
||||||
|
- Permite fixação segura em paredes ou estruturas
|
||||||
|
- Posição dos buracos configurável
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Parâmetros Configuráveis
|
||||||
|
|
||||||
|
| Parâmetro | Descrição | Valor Padrão |
|
||||||
|
|-----------|-----------|--------------|
|
||||||
|
| `largura_boca` | Largura da calha | 103mm |
|
||||||
|
| `altura_boca` | Altura do encaixe | 72mm |
|
||||||
|
| `profundidade_encaixe` | Quanto entra na calha | 50mm |
|
||||||
|
| `comprimento_tunel` | Extensão horizontal | 80mm |
|
||||||
|
| `altura_tunel` | Altura do canal | 30mm |
|
||||||
|
| `diametro_parafuso` | Tamanho do furo | 3.5mm |
|
||||||
|
| `espessura` | Espessura das paredes | 2.5mm |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Funcionamento
|
||||||
|
|
||||||
|
```
|
||||||
|
Calha → Perna Vertical → Túnel Horizontal → Saída Frontal
|
||||||
|
```
|
||||||
|
|
||||||
|
A água flui da calha, entra pela perna vertical, passa pelo túnel horizontal e sai pela frente aberta, sendo direcionada para longe da estrutura.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Impressão 3D
|
||||||
|
|
||||||
|
- ✅ Otimizado para impressão sem suportes
|
||||||
|
- ✅ Base plana na mesa de impressão
|
||||||
|
- ✅ Espessura de parede adequada (2.5mm)
|
||||||
|
- ✅ Parâmetros totalmente configuráveis
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Visualização
|
||||||
|
|
||||||
|
```
|
||||||
|
[Calha]
|
||||||
|
|
|
||||||
|
[Perna Vertical]
|
||||||
|
|
|
||||||
|
└─────[Túnel Horizontal]─────→ (saída de água)
|
||||||
|
```
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
// Extensão em "L" para calha 72.0mm X 101.35mm
|
||||||
|
// Projeto: Túnel em L com fundo fechado e frente aberta para água escoar
|
||||||
|
//
|
||||||
|
// ========== DESCRIÇÃO DO MODELO ==========
|
||||||
|
// Este modelo cria uma extensão em formato "L" para calhas de drenagem.
|
||||||
|
//
|
||||||
|
// ESTRUTURA:
|
||||||
|
// 1. PERNA VERTICAL (Encaixe na calha):
|
||||||
|
// - Encaixa diretamente na boca da calha existente
|
||||||
|
// - Dimensões: 103mm (largura) x 50mm (profundidade) x 72mm (altura)
|
||||||
|
// - Possui cavidade interna para inserir na calha
|
||||||
|
// - Espessura das paredes: 2.5mm
|
||||||
|
//
|
||||||
|
// 2. PERNA HORIZONTAL (Túnel de escoamento):
|
||||||
|
// - Forma um canal que direciona a água para frente
|
||||||
|
// - Dimensões: 103mm (largura) x 80mm (comprimento) x 30mm (altura)
|
||||||
|
// - FUNDO FECHADO: impede vazamento pela parte inferior
|
||||||
|
// - TOPO ABERTO: permite limpeza e visualização do fluxo
|
||||||
|
// - FRENTE ABERTA: água sai livremente pela extremidade
|
||||||
|
// - Laterais fechadas para conter o fluxo
|
||||||
|
//
|
||||||
|
// FIXAÇÃO:
|
||||||
|
// - Dois buracos para parafusos (3.5mm) nas laterais
|
||||||
|
// - Permite fixação segura em paredes ou estruturas
|
||||||
|
// - Posição dos buracos configurável
|
||||||
|
//
|
||||||
|
// PARÂMETROS CONFIGURÁVEIS:
|
||||||
|
// - largura_boca: largura da calha (103mm)
|
||||||
|
// - altura_boca: altura do encaixe (72mm)
|
||||||
|
// - profundidade_encaixe: quanto entra na calha (50mm)
|
||||||
|
// - comprimento_tunel: extensão horizontal (80mm)
|
||||||
|
// - altura_tunel: altura do canal (30mm)
|
||||||
|
// - diametro_parafuso: tamanho do furo (3.5mm)
|
||||||
|
// - espessura: espessura das paredes (2.5mm)
|
||||||
|
//
|
||||||
|
// FUNCIONAMENTO:
|
||||||
|
// A água flui da calha → entra pela perna vertical → passa pelo túnel horizontal
|
||||||
|
// → sai pela frente aberta, sendo direcionada para longe da estrutura
|
||||||
|
//
|
||||||
|
// IMPRESSÃO 3D:
|
||||||
|
// - Otimizado para impressão sem suportes
|
||||||
|
// - Base plana na mesa de impressão
|
||||||
|
// - Espessura de parede adequada (2.5mm)
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
// ========== PARÂMETROS ==========
|
||||||
|
// Dimensões da boca da calha (para encaixe traseiro)
|
||||||
|
largura_boca = 103.0; // mm (lado maior da calha)
|
||||||
|
altura_boca = 72.0; // mm (lado menor da calha)
|
||||||
|
|
||||||
|
// Espessura da parede
|
||||||
|
espessura = 2.5; // mm
|
||||||
|
|
||||||
|
// Profundidade do encaixe na calha (perna vertical do L)
|
||||||
|
profundidade_encaixe = 50; // mm - quanto entra na boca da calha
|
||||||
|
|
||||||
|
// Comprimento do túnel horizontal (perna horizontal do L)
|
||||||
|
comprimento_tunel = 80; // mm - extensão para frente
|
||||||
|
|
||||||
|
// Largura interna do túnel
|
||||||
|
largura_interna = largura_boca; // mantém a mesma largura
|
||||||
|
|
||||||
|
// Altura interna do túnel (CONFIGURÁVEL - altura do canal do L)
|
||||||
|
altura_tunel = 30; // mm - altura do canal (desacoplado das outras dimensões)
|
||||||
|
|
||||||
|
// Folga para encaixe na calha
|
||||||
|
folga = 0.5; // mm - folga em cada lado
|
||||||
|
|
||||||
|
// Parâmetros para buracos de parafuso
|
||||||
|
diametro_parafuso = 3.5; // mm - diâmetro do buraco para parafuso
|
||||||
|
posicao_parafuso_y = -25; // mm - posição do parafuso ao longo do túnel (a partir do início)
|
||||||
|
posicao_parafuso_z = 30; // mm - altura do parafuso na lateral (a partir do fundo)
|
||||||
|
|
||||||
|
// ========== CÁLCULOS ==========
|
||||||
|
// Dimensões externas do túnel
|
||||||
|
largura_externa = largura_interna + (2 * espessura);
|
||||||
|
altura_externa_tunel = altura_tunel + espessura; // altura do túnel (fundo fechado + canal)
|
||||||
|
|
||||||
|
// Altura da perna vertical (independente do túnel)
|
||||||
|
altura_perna_vertical = altura_boca; // mantém a altura da boca da calha
|
||||||
|
|
||||||
|
// ========== MODELO ==========
|
||||||
|
rotate([0, 0, 0]) // Rotaciona para posição de impressão
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
// PERNA VERTICAL DO L (parte traseira que encaixa na calha)
|
||||||
|
difference() {
|
||||||
|
// Bloco externo da perna vertical
|
||||||
|
cube([largura_externa, profundidade_encaixe, altura_perna_vertical]);
|
||||||
|
|
||||||
|
// Cavidade interna da perna vertical
|
||||||
|
translate([espessura, espessura, espessura])
|
||||||
|
cube([largura_interna, profundidade_encaixe + 0.1, altura_perna_vertical - espessura]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// PERNA HORIZONTAL DO L (túnel com frente toda aberta saindo horizontalmente)
|
||||||
|
translate([0, profundidade_encaixe, 0]) {
|
||||||
|
// Fundo do túnel
|
||||||
|
cube([largura_externa, comprimento_tunel, espessura]);
|
||||||
|
|
||||||
|
// Lateral esquerda
|
||||||
|
cube([espessura, comprimento_tunel, altura_externa_tunel]);
|
||||||
|
|
||||||
|
// Lateral direita
|
||||||
|
translate([largura_externa - espessura, 0, 0])
|
||||||
|
cube([espessura, comprimento_tunel, altura_externa_tunel]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Buracos para parafusos nas laterais
|
||||||
|
// Buraco na lateral esquerda
|
||||||
|
translate([-0.1, profundidade_encaixe + posicao_parafuso_y, posicao_parafuso_z])
|
||||||
|
rotate([0, 90, 0])
|
||||||
|
cylinder(h = espessura + 0.2, d = diametro_parafuso, $fn = 32);
|
||||||
|
|
||||||
|
// Buraco na lateral direita
|
||||||
|
translate([largura_externa - espessura - 0.1, profundidade_encaixe + posicao_parafuso_y, posicao_parafuso_z])
|
||||||
|
rotate([0, 90, 0])
|
||||||
|
cylinder(h = espessura + 0.2, d = diametro_parafuso, $fn = 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ========== INFORMAÇÕES ==========
|
||||||
|
echo("=================================");
|
||||||
|
echo("TÚNEL EM 'L' PARA CALHA");
|
||||||
|
echo("=================================");
|
||||||
|
echo(str("Dimensões da calha: ", largura_boca, " x ", altura_boca, " mm"));
|
||||||
|
echo(str("Profundidade encaixe (perna vertical): ", profundidade_encaixe, " mm"));
|
||||||
|
echo(str("Comprimento túnel (perna horizontal): ", comprimento_tunel, " mm"));
|
||||||
|
echo(str("Altura do túnel (canal do L): ", altura_tunel, " mm"));
|
||||||
|
echo(str("Canal interno: ", largura_interna, " x ", altura_tunel, " mm"));
|
||||||
|
echo(str("Espessura da parede: ", espessura, " mm"));
|
||||||
|
echo(str("Buracos para parafuso: diâmetro ", diametro_parafuso, "mm"));
|
||||||
|
echo("Formato: L com FUNDO FECHADO e TOPO ABERTO (tipo calha)");
|
||||||
|
echo("Água entra pela conexão com a calha e sai pela frente aberta");
|
||||||
|
echo("=================================");
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,51 @@
|
|||||||
|
// ============================================
|
||||||
|
// Disco 3D - OpenSCAD Model
|
||||||
|
// ============================================
|
||||||
|
|
||||||
|
// Configurações globais
|
||||||
|
$fn = 100; // Resolução das curvas (aumentar para mais suavidade)
|
||||||
|
|
||||||
|
// Parâmetros do disco
|
||||||
|
DISC_LENGTH = 10; // Comprimento do perfil do disco
|
||||||
|
DISC_WIDTH = 1.67; // Largura da base
|
||||||
|
CORNER_MULTIPLIER = 3; // Multiplicador para o canto arredondado (1.67 * 3 = 5mm)
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// Módulo: punch
|
||||||
|
// Cria um perfil 2D com canto arredondado
|
||||||
|
// Parâmetros:
|
||||||
|
// length - comprimento do perfil
|
||||||
|
// width - largura da base (opcional)
|
||||||
|
// ============================================
|
||||||
|
module punch(length, width = DISC_WIDTH) {
|
||||||
|
corner_width = width * CORNER_MULTIPLIER;
|
||||||
|
corner_radius = corner_width / 2;
|
||||||
|
|
||||||
|
translate([length, 0, 0])
|
||||||
|
union() {
|
||||||
|
// Canto arredondado (quadrante superior direito)
|
||||||
|
intersection() {
|
||||||
|
circle(r = corner_radius);
|
||||||
|
polygon([
|
||||||
|
[0, corner_radius],
|
||||||
|
[0, -corner_radius],
|
||||||
|
[corner_radius, -corner_radius],
|
||||||
|
[corner_radius, corner_radius]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retângulo principal
|
||||||
|
polygon([
|
||||||
|
[0, width/2],
|
||||||
|
[0, -width/2],
|
||||||
|
[-length, -width/2],
|
||||||
|
[-length, width/2]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// Geração do modelo 3D
|
||||||
|
// ============================================
|
||||||
|
rotate_extrude(convexity = 10)
|
||||||
|
punch(DISC_LENGTH);
|
||||||
+74202
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
Gridifnity Base Configurável
|
||||||
|
Este arquivo define quantidade de blocos na base do sistema Gridifnity.
|
||||||
|
Gridifnity é um sistema modular de blocos que permite a construção de estruturas personalizadas.
|
||||||
|
A configuração da base é feita através de variáveis que definem o número de blocos em
|
||||||
|
cada direção (X, Y).
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Configuração da base
|
||||||
|
medida_bloco = 37.7; // Medida de cada bloco em mm
|
||||||
|
|
||||||
|
// Defina a espessura das linhas interna (entre os blocos) e a parte externa do sistema Gridifnity (bordas)
|
||||||
|
// Valores padrão: 4.3 mm espessura das linhas internas, 2.15 mm espessura externa
|
||||||
|
espessura_externa = 2.15; // Espessura externa do sistema Gridfinity
|
||||||
|
espessura_interna = 4.3; // Espessura das linhas entre os blocos
|
||||||
|
|
||||||
|
// Defina a altura da base do sistema Gridifnity
|
||||||
|
// Valor padrão: 4.1 mm
|
||||||
|
altura_base = 4.1; // Altura da base em mm
|
||||||
|
|
||||||
|
// Defina o número de blocos na base do sistema Gridifnity
|
||||||
|
// Valores padrão: 6 blocos em X e 5 blocos em Y
|
||||||
|
num_blocos_x = 6; // Número de blocos na direção X
|
||||||
|
num_blocos_y = 6; // Número de blocos na direção Y
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Função para calcular a largura total da base
|
||||||
|
// =========================================================
|
||||||
|
function calcular_largura_total(num_blocos) =
|
||||||
|
(num_blocos * medida_bloco) + (2 * espessura_externa) + ((num_blocos - 1) * espessura_interna);
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Módulo principal para criar a base Gridifnity
|
||||||
|
// =========================================================
|
||||||
|
module gridifnity_base() {
|
||||||
|
largura_total_x = calcular_largura_total(num_blocos_x);
|
||||||
|
largura_total_y = calcular_largura_total(num_blocos_y);
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
// Criar o bloco sólido externo
|
||||||
|
cube([largura_total_x, largura_total_y, altura_base]);
|
||||||
|
|
||||||
|
// Remover os espaços internos para criar os blocos
|
||||||
|
for (x = [0:num_blocos_x-1]) {
|
||||||
|
for (y = [0:num_blocos_y-1]) {
|
||||||
|
translate([
|
||||||
|
espessura_externa + (x * (medida_bloco + espessura_interna)),
|
||||||
|
espessura_externa + (y * (medida_bloco + espessura_interna)),
|
||||||
|
-0.5
|
||||||
|
]) {
|
||||||
|
cube([medida_bloco, medida_bloco, altura_base + 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Gerar a base
|
||||||
|
// =========================================================
|
||||||
|
gridifnity_base();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,186 @@
|
|||||||
|
/*
|
||||||
|
Gridifnity Base Configurável
|
||||||
|
Este arquivo define quantidade de blocos da caixa do sistema Gridifnity.
|
||||||
|
Gridifnity é um sistema modular de blocos que permite a construção de estruturas personalizadas.
|
||||||
|
A configuração da caixa é feita através de variáveis que definem o número de blocos em
|
||||||
|
cada direção (X, Y).
|
||||||
|
Quando for mais de 1 bloco em X ou Y, a caixa espaçará os blocos de acordo com a espessura interna definida e os conectar.
|
||||||
|
O diâmetro da base será ajustável mas o padrão é 37 mm (medida do bloco padrão) pois a base é 37.7mm.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Configuração da caixa
|
||||||
|
medida_bloco = 42; // Medida de cada bloco em mm
|
||||||
|
tamanho_base = 37.2; // Tamanho da base quadrada de encaixe (encaixa no grid de 37.7mm)
|
||||||
|
|
||||||
|
// Defina a espessura das paredes da caixa
|
||||||
|
// Valores padrão: 2.0 mm para espessura das paredes, 2.0 mm para espessura do fundo
|
||||||
|
espessura_parede = 1.2; // Espessura das paredes da caixa
|
||||||
|
espessura_fundo = 3.0; // Espessura do fundo da caixa
|
||||||
|
altura_transicao = 2.5; // Altura da zona de transição suave
|
||||||
|
// Defina a espessura interna (espaçamento entre blocos quando múltiplos)
|
||||||
|
espessura_interna = 4.3; // Espessura das linhas entre os blocos
|
||||||
|
|
||||||
|
// Defina o número de blocos da caixa
|
||||||
|
// Valores padrão: 1 bloco em X e 1 bloco em Y
|
||||||
|
num_blocos_x = 2; // Número de blocos na direção X
|
||||||
|
num_blocos_y = 2; // Número de blocos na direção Y
|
||||||
|
|
||||||
|
// Defina a altura da caixa (altura útil interna)
|
||||||
|
altura_caixa = 30; // Altura útil da caixa em mm
|
||||||
|
|
||||||
|
// Raio de arredondamento dos cantos internos e externos
|
||||||
|
raio_canto = 3.5; // Raio de arredondamento dos cantos
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Função para calcular a largura total da caixa
|
||||||
|
// =========================================================
|
||||||
|
function calcular_largura_total_caixa(num_blocos) =
|
||||||
|
(num_blocos * medida_bloco);
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Função para calcular offset do bloco (posição central)
|
||||||
|
// =========================================================
|
||||||
|
function calcular_offset_bloco(indice) =
|
||||||
|
(medida_bloco / 2) + (indice * medida_bloco);
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Módulo para criar uma base quadrada para encaixe
|
||||||
|
// =========================================================
|
||||||
|
module base_encaixe() {
|
||||||
|
altura_base = 5; // Altura da base de encaixe
|
||||||
|
tolerancia = 0.20; // Tolerância para encaixe
|
||||||
|
raio_canto_base = 3.75; // Raio de arredondamento dos cantos da base
|
||||||
|
|
||||||
|
// Base quadrada com cantos arredondados para encaixe
|
||||||
|
hull() {
|
||||||
|
translate([raio_canto_base, raio_canto_base, 0])
|
||||||
|
cylinder(r=raio_canto_base, h=altura_base, $fn=32);
|
||||||
|
translate([tamanho_base - tolerancia - raio_canto_base, raio_canto_base, 0])
|
||||||
|
cylinder(r=raio_canto_base, h=altura_base, $fn=32);
|
||||||
|
translate([raio_canto_base, tamanho_base - tolerancia - raio_canto_base, 0])
|
||||||
|
cylinder(r=raio_canto_base, h=altura_base, $fn=32);
|
||||||
|
translate([tamanho_base - tolerancia - raio_canto_base, tamanho_base - tolerancia - raio_canto_base, 0])
|
||||||
|
cylinder(r=raio_canto_base, h=altura_base, $fn=32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Módulo para criar uma caixa com cantos arredondados
|
||||||
|
// =========================================================
|
||||||
|
module caixa_arredondada(largura, profundidade, altura, raio) {
|
||||||
|
hull() {
|
||||||
|
// Criar cilindros nos 4 cantos para arredondar
|
||||||
|
translate([raio, raio, 0])
|
||||||
|
cylinder(r=raio, h=altura, $fn=32);
|
||||||
|
translate([largura - raio, raio, 0])
|
||||||
|
cylinder(r=raio, h=altura, $fn=32);
|
||||||
|
translate([raio, profundidade - raio, 0])
|
||||||
|
cylinder(r=raio, h=altura, $fn=32);
|
||||||
|
translate([largura - raio, profundidade - raio, 0])
|
||||||
|
cylinder(r=raio, h=altura, $fn=32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Módulo principal para criar a caixa Gridifnity
|
||||||
|
// =========================================================
|
||||||
|
module gridifnity_caixa() {
|
||||||
|
largura_total_x = calcular_largura_total_caixa(num_blocos_x);
|
||||||
|
largura_total_y = calcular_largura_total_caixa(num_blocos_y);
|
||||||
|
altura_total = altura_caixa + espessura_fundo;
|
||||||
|
|
||||||
|
// Calcular dimensões
|
||||||
|
// Cada bloco tem 42mm, as pontes internas têm espessura_interna
|
||||||
|
largura_util = medida_bloco; // Largura de cada bloco (42mm)
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
// Criar as bases de encaixe para cada bloco
|
||||||
|
for (x = [0:num_blocos_x-1]) {
|
||||||
|
for (y = [0:num_blocos_y-1]) {
|
||||||
|
translate([
|
||||||
|
calcular_offset_bloco(x) - (tamanho_base / 2),
|
||||||
|
calcular_offset_bloco(y) - (tamanho_base / 2),
|
||||||
|
0
|
||||||
|
]) {
|
||||||
|
base_encaixe();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Criar estrutura completa conectada (caixas + pontes integradas)
|
||||||
|
// Primeiro: transições de cada base para a estrutura superior
|
||||||
|
for (x = [0:num_blocos_x-1]) {
|
||||||
|
for (y = [0:num_blocos_y-1]) {
|
||||||
|
hull() {
|
||||||
|
// Topo da base de encaixe
|
||||||
|
translate([
|
||||||
|
calcular_offset_bloco(x) - (tamanho_base / 2),
|
||||||
|
calcular_offset_bloco(y) - (tamanho_base / 2),
|
||||||
|
4.9
|
||||||
|
]) {
|
||||||
|
hull() {
|
||||||
|
translate([3.75, 3.75, 0])
|
||||||
|
cylinder(r=3.75, h=0.2, $fn=32);
|
||||||
|
translate([tamanho_base - 0.15 - 3.75, 3.75, 0])
|
||||||
|
cylinder(r=3.75, h=0.2, $fn=32);
|
||||||
|
translate([3.75, tamanho_base - 0.15 - 3.75, 0])
|
||||||
|
cylinder(r=3.75, h=0.2, $fn=32);
|
||||||
|
translate([tamanho_base - 0.15 - 3.75, tamanho_base - 0.15 - 3.75, 0])
|
||||||
|
cylinder(r=3.75, h=0.2, $fn=32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Início da estrutura superior (centrada no bloco)
|
||||||
|
translate([
|
||||||
|
calcular_offset_bloco(x) - (largura_util / 2),
|
||||||
|
calcular_offset_bloco(y) - (largura_util / 2),
|
||||||
|
5 + altura_transicao - 0.1
|
||||||
|
])
|
||||||
|
caixa_arredondada(
|
||||||
|
largura_util,
|
||||||
|
largura_util,
|
||||||
|
0.2,
|
||||||
|
raio_canto
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Segundo: criar corpo sólido conectado
|
||||||
|
// Calcular dimensão total (cada bloco é 42mm)
|
||||||
|
largura_corpo_x = num_blocos_x * medida_bloco;
|
||||||
|
largura_corpo_y = num_blocos_y * medida_bloco;
|
||||||
|
|
||||||
|
translate([0, 0, 5 + altura_transicao])
|
||||||
|
caixa_arredondada(
|
||||||
|
largura_corpo_x,
|
||||||
|
largura_corpo_y,
|
||||||
|
altura_total - 5 - altura_transicao,
|
||||||
|
raio_canto
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remover o interior da caixa (cavidade única, sem divisórias)
|
||||||
|
largura_corpo_x = num_blocos_x * medida_bloco;
|
||||||
|
largura_corpo_y = num_blocos_y * medida_bloco;
|
||||||
|
|
||||||
|
translate([
|
||||||
|
espessura_parede,
|
||||||
|
espessura_parede,
|
||||||
|
espessura_fundo + 5
|
||||||
|
])
|
||||||
|
caixa_arredondada(
|
||||||
|
largura_corpo_x - (2 * espessura_parede),
|
||||||
|
largura_corpo_y - (2 * espessura_parede),
|
||||||
|
altura_caixa + altura_transicao + 1,
|
||||||
|
raio_canto - espessura_parede
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// Gerar a caixa
|
||||||
|
// =========================================================
|
||||||
|
gridifnity_caixa();
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user