6 pontos por GN⁺ 2025-12-22 | 2 comentários | Compartilhar no WhatsApp
  • 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

 
ahwjdekf 2025-12-22

Eu recomendo fortemente o FreeCAD.

 
GN⁺ 2025-12-22
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 .scad do que em arquivos binários do Fusion 360

  • Sentindo 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

    • Fiquei curioso sobre como isso se diferencia de outras ferramentas de modelagem em Python, como Build123d e CadQuery
      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
    • Há expectativa de que essa biblioteca talvez resolva o problema da hélice cônica de passo variável
    • O PythonSCAD também oferece suporte a SDF via libfive — basta procurar por “sdf” mais ou menos no meio desta página de exemplos
    • É especialmente impressionante como ela permite implementar com facilidade blending no estilo metaball (blobby)
    • A capacidade de importar arquivos STL existentes para abrir furos ou unir outros objetos parece interessante
      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

    • Essa pessoa também conseguiu a precisão de projeto para impressão 3D graças ao OpenSCAD
      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
    • A versão git master renderiza dezenas de vezes mais rápido do que as versões antigas
    • Pediram o link da cola
    • Mas ainda existe a limitação de que tarefas como remover arestas vivas continuam difíceis
    • O BOSL2 é realmente uma biblioteca poderosa e útil
  • É uma pena que o OpenSCAD não tenha um conceito de objeto, então não dá para fazer algo como box1.width
    A 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

    • O OpenSCAD é baseado em coordenadas absolutas, então é difícil expressar posicionamento relativo ou relações entre sólidos
      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
    • O OpenSCAD também tem hull e soma de Minkowski, então, depois que você aprende, ele vira uma ferramenta poderosa
    • Existe também a versão em JavaScript OpenJSCAD, que roda no navegador
      Veja o repositório no GitHub
    • Também recomendaram o Bowler Studio, baseado em Java. Ele tem suporte a Clojure e recursos de simulação física embutidos
    • Também é possível criar formas complexas definindo coordenadas de pontos diretamente, mas a ordem é tão complicada que parece um teste da MENSA
  • 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

    • A pessoa usava bastante OpenSCAD no passado, mas hoje acha que, na prática, o CAD tradicional muitas vezes é mais intuitivo
      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;

    • Porém, ao exportar para análise FEM, usar um valor de $fn alto demais pode prejudicar o desempenho da malha
      Como 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

    • Eu costumo principalmente modificar ou variar peças únicas, e com Python esse tipo de trabalho repetitivo fica bem mais fácil
    • Descrever modelos matematicamente parece mais natural para mim
      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