- Um caso de exploração dos conceitos básicos de CAD baseado em código ao projetar um suporte de bateria simples com OpenSCAD
- Antes, foi criada no Autodesk Fusion uma caixa parametrizada para baterias AA e AAA, e o aprendizado avançou ao reimplementá-la no OpenSCAD
- Ao alterar apenas variáveis como
numRows, numColumns e batteryType no código, é possível gerar um suporte personalizado e obter o mesmo resultado sem software CAD caro
- A estrutura usa
difference() e translate() para criar e remover repetidamente a caixa e os furos, em um método de projeto simples, mas eficiente
- Embora tenha limites para modelos complexos, é avaliado como uma ferramenta útil para criar estruturas geométricas simples, como espaçadores e bearing drifts
Projetando um suporte de bateria com OpenSCAD
- Depois de projetar no Autodesk Fusion um organizador básico em formato de caixa para baterias AA e AAA, ele foi reimplementado no OpenSCAD
- O modelo original no Fusion tinha uma estrutura parametrizada em que era possível mudar o tamanho da bateria e o número de linhas e colunas ajustando variáveis
- O modelo final foi enviado ao Printables
- OpenSCAD é uma ferramenta CAD que cria objetos 3D por meio de código, adequada para aprender modelos de estrutura simples
- O autor praticou por cerca de uma hora consultando parte de um tutorial de OpenSCAD
- O resultado foi publicado como o arquivo
battery_holder_generator.scad
Estrutura do código e funcionamento
- As principais variáveis definidas são
AA, AAA, heightCompartment, thicknessWall, numRows, numColumns e batteryType
widthBox, lengthBox e depthBox são calculados a partir da combinação dessas variáveis
- A função
difference() cria a caixa base (cube) e depois remove repetidamente os furos das baterias no interior
- Um loop
for e translate() são usados para calcular a posição dos furos, e cube() cria cada furo
- Foi mencionado que a parte em que
startColumn e startRow precisavam ser definidos dentro do loop usando let() causou confusão
Comparação entre OpenSCAD e Fusion
- O mesmo modelo foi gerado separadamente no Fusion e no OpenSCAD e comparado no slicer
- No fim, as peças impressas ficaram praticamente idênticas, e o OpenSCAD permite modificações rápidas com uma abordagem leve baseada em código
- É possível obter resultados do mesmo nível sem software CAD caro
Possibilidades de uso e limites
- Não é adequado para projetos complexos, mas é muito útil para criar estruturas geométricas simples, como espaçadores e bearing drifts
- Tem como ponto forte a automação da criação de peças simples que são frequentemente necessárias no dia a dia
- A abordagem de projeto centrada em código do OpenSCAD é eficiente para gerar estruturas repetitivas e regulares
Conclusão
- O OpenSCAD é avaliado como uma ferramenta CAD baseada em código capaz de gerar rapidamente modelos 3D simples
- O autor descreve que “é só desenhar caixas e fazer furos, mas é bem legal”
- Em tarefas simples de projeto no futuro, o OpenSCAD pode ser mais prático que o Fusion
2 comentários
Eu recomendo fortemente o FreeCAD.
Comentários do Hacker News
O OpenSCAD é uma ferramenta de CAD que combina perfeitamente com a mentalidade de programador
Como tudo pode ser parametrizado, dá para pegar um gabinete de projeto já feito e gerar várias versões só mudando algumas variáveis
Nas builds nightly mais recentes, ao configurar o backend Manifold, a velocidade de renderização cai de minutos para segundos
A release oficial de 2021 está velha demais e é difícil de usar
A biblioteca BOSL2 adiciona recursos como filetes, arredondamento e anexação, transformando o OpenSCAD de algo quase de brinquedo em uma ferramenta prática de projeto
Ele também é muito amigável ao Git, então é bem mais fácil comparar mudanças em arquivos
.scaddo que em arquivos binários do Fusion 360Sentindo as limitações do OpenSCAD, alguém criou por conta própria a biblioteca sdf, para geração de malhas 3D baseada em SDF (signed distance function), em Python
Ela permite montar modelos aproveitando a lógica flexível do Python e também importar malhas 3D existentes para realizar operações como erosão, expansão, corte e esvaziamento
Ainda há muito trabalho a fazer nesse projeto, mas a pessoa acha essa área muito interessante
STL armazena coordenadas de triângulos como um bitmap, enquanto STEP armazena comandos de geração do modelo como arte vetorial
A maioria dos CADs com GUI é baseada em STEP, então a compatibilidade é boa
Se SDF só gerar STL, pensando na compatibilidade com CADs com GUI talvez seja melhor aprender Build123d ou CadQuery
O Build123d segue a ideia de fazer um esboço 2D e depois convertê-lo em 3D, como no Fusion360 ou no FreeCAD, então é prático para alternar entre GUI e CAD baseado em código
Ferramentas como o Meshlab falharam com mensagens de erro obscuras, mas desse jeito parece que o trabalho ficaria muito mais intuitivo
Alguém começou a usar OpenSCAD recentemente e comentou que, enquanto a maioria dos CADs exige aprender um monte de recursos, o OpenSCAD pode ser explicado com uma cola de uma folha A4
Se você usar a versão git master em vez da release de 2021, terá bem mais velocidade e recursos mais atuais
Com a biblioteca BOSL2, não é preciso implementar manualmente os recursos complexos de CAD tradicional, e ainda é divertido aprender vendo a implementação interna
Em CADs com GUI, até uma alteração de 0,25 mm exigia reajustar todos os furos e recortes, o que era frustrante, mas a abordagem baseada em código evita esse tipo de problema
O valor padrão de center origin do BOSL2 torna as transformações muito mais fáceis
É uma pena que o OpenSCAD não tenha um conceito de objeto, então não dá para fazer algo como
box1.widthA pessoa já testou o Build123d, mas achou que ele tem muitos bugs e pouca documentação. Espera que melhore algum dia
A vantagem do OpenSCAD é que ele facilita modelar combinando esferas, cilindros e cubos matematicamente
A desvantagem é que os limites da modelagem também ficam presos a essa capacidade de combinação matemática
O fork PythonSCAD, que suporta Python, deve ser integrado em breve à release principal
Para criar algo como um parafuso, é preciso modelar cada parte separadamente e sobrepô-las
Para alinhar com peças reais, são necessários muitos cálculos manuais, e dimensões hardcoded são difíceis de alterar
O renderizador das versões beta mais recentes é muito mais rápido, então vale a pena testar
Veja o repositório no GitHub
Como modelador 3D leve, gosto da simplicidade do OpenSCAD
Em vez de um CAD enorme com GUI, dá para criar modelos só com formas básicas e transformações, como em programação gráfica
Mesmo abrindo o código depois de muito tempo, basta olhar algumas linhas para entender tudo rapidamente
Restrições que exigem cálculos matemáticos ficam muito mais simples com os recursos de sketch de uma GUI CAD
Em CAD, dá para voltar etapa por etapa e ver a estrutura, sem precisar interpretar um script
O OpenSCAD permite usar um editor externo em vez do editor embutido
Ao salvar no editor externo, a prévia é atualizada automaticamente
Guia de configuração de editor externo
Alguém escreveu no passado um tutorial de introdução ao OpenSCAD chamado “10 conceitos essenciais”
Link do tutorial
Dica: dá para ajustar a resolução definindo a variável
$fn$fn = $preview ? 32 : 64;$fnalto demais pode prejudicar o desempenho da malhaComo a precisão da análise é mais importante do que a suavidade visual, algo entre 32 e 64 costuma ser adequado
Na prática, dá trabalho criar modelos realmente úteis, mas é irresistível poder representar um modelo paramétrico completo em um arquivo de texto de 2 KB
O Git diff funciona de forma significativa, e o painel de customização permite ajustar o modelo como se fosse um app
Isso é muito mais eficiente do que os enormes arquivos XML do FreeCAD
Mas é incômodo que recursos como chanfro e arredondamento não venham por padrão, então é preciso implementá-los com operações de Minkowski usando cone ou esfera