6 puntos por GN⁺ 2025-12-22 | 2 comentarios | Compartir por WhatsApp
  • Un caso que explora los conceptos básicos del CAD basado en código diseñando un soporte de baterías simple con OpenSCAD
  • Antes se había creado una caja parametrizada para baterías AA y AAA en Autodesk Fusion, y el aprendizaje continuó al reimplementarla en OpenSCAD
  • Cambiando solo variables como numRows, numColumns y batteryType en el código, se puede generar un soporte personalizado, y es posible obtener el mismo resultado sin software CAD costoso
  • Usa una estructura que genera y elimina repetidamente cajas y huecos con difference() y translate(), un enfoque de diseño simple pero eficiente
  • Aunque tiene límites para modelos complejos, se considera una herramienta útil para crear geometrías simples como espaciadores y bearing drifts

Diseño de un soporte de baterías con OpenSCAD

  • Después de diseñar en Autodesk Fusion un organizador básico tipo caja para baterías AA y AAA, se volvió a implementar en OpenSCAD
    • El modelo original en Fusion tenía una estructura parametrizada que permitía cambiar el tamaño de la batería y la cantidad de filas y columnas ajustando variables
    • El modelo terminado se subió a Printables
  • OpenSCAD es una herramienta CAD que crea objetos 3D escribiendo código, adecuada para aprender con modelos de estructura simple
    • El autor practicó durante alrededor de una hora apoyándose en parte de un tutorial de OpenSCAD
    • El resultado se publicó como el archivo battery_holder_generator.scad

Estructura del código y funcionamiento

  • Se definen variables principales como AA, AAA, heightCompartment, thicknessWall, numRows, numColumns y batteryType
    • widthBox, lengthBox y depthBox se calculan a partir de la combinación de esas variables
  • Con la función difference() se crea primero la caja base (cube), y luego se restan repetidamente los huecos para las baterías en el interior
    • Se calcula la posición de los huecos usando bucles for y translate(), y cada hueco se genera con cube()
    • Se menciona que fue confuso el punto donde había que definir startColumn y startRow dentro del bucle usando let()

Comparación entre OpenSCAD y Fusion

  • Se generó el mismo modelo tanto en Fusion como en OpenSCAD y luego se comparó en el slicer
    • Al final, las piezas impresas son prácticamente iguales, y OpenSCAD permite modificaciones rápidas con un enfoque ligero basado en código
    • Es posible obtener resultados del mismo nivel sin necesidad de software CAD caro

Posibilidades de uso y limitaciones

  • No es ideal para diseños complejos, pero es muy útil para crear geometrías simples como espaciadores y bearing drifts
    • Destaca especialmente en la automatización de la fabricación de piezas simples que se necesitan con frecuencia en la vida diaria
  • El enfoque de diseño centrado en código de OpenSCAD es eficiente para generar estructuras repetitivas y regulares

Conclusión

  • OpenSCAD se valora como una herramienta CAD basada en código que permite crear rápidamente modelos 3D simples
    • El autor lo describe como: “solo estás dibujando una caja y haciéndole agujeros, pero está bastante genial”
    • En trabajos de diseño simples a futuro, OpenSCAD podría resultar más práctico que Fusion

2 comentarios

 
ahwjdekf 2025-12-22

Yo recomiendo muchísimo FreeCAD.

 
GN⁺ 2025-12-22
Comentarios en Hacker News
  • OpenSCAD es una herramienta CAD que encaja perfecto con la mentalidad de programador
    Como todo se puede parametrizar, puedes tomar una carcasa de proyecto que hiciste una vez y generar varias versiones cambiando solo unas cuantas variables
    Si activas el backend Manifold en los builds nightly recientes, la velocidad de renderizado baja de minutos a segundos
    La versión oficial de 2021 ya está demasiado vieja y es difícil de usar
    La librería BOSL2 añade funciones como filetes, redondeos y uniones, y convierte a OpenSCAD de un juguete en una herramienta de diseño práctica
    También es muy amigable con Git: es muchísimo más fácil comparar cambios en archivos .scad que en archivos binarios de Fusion 360

  • Al sentir las limitaciones de OpenSCAD, hice por mi cuenta sdf, una librería en Python para generar mallas 3D basada en SDF (función de distancia con signo)
    Puedes construir modelos aprovechando la lógica flexible de Python, e importar mallas 3D existentes para hacer operaciones como erosión, expansión, corte y ahuecado
    A este proyecto todavía le falta bastante trabajo, pero creo que este campo tiene mucho potencial

    • Me da curiosidad en qué se diferencia de otras herramientas de modelado en Python como Build123d o CadQuery
      STL guarda coordenadas de triángulos como si fuera un mapa de bits, mientras que STEP guarda instrucciones de creación del modelo como si fuera arte vectorial
      La mayoría de los CAD con GUI se basan en STEP, así que la compatibilidad es buena
      Si SDF solo genera STL, pensando en la compatibilidad con CAD de GUI, quizá convenga más aprender Build123d o CadQuery
      Build123d sigue la idea de hacer un sketch 2D y luego convertirlo a 3D, como Fusion360 o FreeCAD, así que es cómodo para moverse entre CAD con GUI y CAD basado en código
    • Tengo esperanza de que esta librería quizá resuelva el problema de la hélice cónica de paso variable
    • PythonSCAD también soporta SDF mediante libfive — en la página de ejemplos, busca “sdf” por la mitad
    • Me impresiona especialmente lo fácil que es implementar blending estilo metaball (blobby)
    • Me parece interesante la función para importar archivos STL existentes, perforarles agujeros o unirles otros objetos
      Con herramientas como Meshlab fallé porque los mensajes de error son muy crípticos, pero con este enfoque parece mucho más intuitivo trabajar
  • Empecé a usar OpenSCAD hace poco, y mientras la mayoría de los CAD te obligan a aprender una enorme cantidad de funciones, OpenSCAD se puede explicar con una chuleta de una hoja A4
    Si usas la versión git master en vez de la release de 2021, es mucho más rápida y trae funciones más recientes
    Con la librería BOSL2 no hace falta implementar a mano las funciones complejas del CAD tradicional, y además da gusto aprender viendo cómo está hecho por dentro

    • Yo también conseguí precisión en diseños para impresión 3D gracias a OpenSCAD
      En un CAD con GUI me frustraba tener que reajustar todos los agujeros y recortes por una corrección de 0.25 mm, pero con el enfoque basado en código se evita ese problema
      El valor por defecto de center origin en BOSL2 hace que las transformaciones sean mucho más sencillas
    • La versión git master renderiza decenas de veces más rápido que la versión antigua
    • Piden el enlace a la chuleta
    • Pero sigue teniendo la limitación de que tareas como eliminar bordes afilados todavía son difíciles
    • BOSL2 es de verdad una librería muy potente y útil
  • Es una lástima que OpenSCAD no tenga un concepto de objetos, así que no se puede hacer algo como box1.width
    Probé Build123d, pero tiene bastantes bugs y le falta documentación. Ojalá mejore algún día

  • La ventaja de OpenSCAD es que facilita modelar combinando matemáticamente esferas, cilindros y cubos
    La desventaja es que sus límites de modelado están atados a esa capacidad de combinación matemática
    El fork PythonSCAD, que soporta Python, pronto se integrará en la release principal

    • OpenSCAD se basa en coordenadas absolutas, así que es difícil expresar ubicación relativa o relaciones entre sólidos
      Para crear un modelo como un tornillo, hay que hacer cada parte por separado y superponerlas
      Alinearlo con una pieza real exige mucho cálculo manual, y las dimensiones hardcodeadas son difíciles de modificar
      El renderer de la beta más reciente es muchísimo más rápido, así que vale la pena probarlo
    • OpenSCAD también tiene hull y suma de Minkowski, así que una vez que lo dominas se vuelve una herramienta potente
    • También existe OpenJSCAD, una versión en JavaScript que corre en el navegador
      Ver el repositorio en GitHub
    • También recomiendan Bowler Studio, basado en Java. Tiene soporte para Clojure y simulación física integrada
    • También se pueden definir coordenadas de puntos directamente para crear formas complejas, pero el orden es tan delicado que se siente como una prueba MENSA
  • Como modelador 3D ligero, me gusta la simplicidad de OpenSCAD
    En lugar de un enorme CAD con GUI, puedes construir modelos como si fuera programación gráfica, usando solo primitivas y transformaciones
    Aunque vuelva a abrir el código mucho tiempo después, con ver unas pocas líneas ya se entiende de inmediato

    • Antes usaba mucho OpenSCAD, pero en la práctica siento que el CAD tradicional suele ser más intuitivo
      Para restricciones que requieren cálculos matemáticos, la función de sketches en un CAD con GUI es mucho más simple
      En CAD puedes volver atrás paso a paso y ver la estructura, sin necesidad de interpretar un script
  • OpenSCAD permite usar un editor externo en lugar de su editor propio
    Si guardas en el editor externo, la vista previa se actualiza automáticamente
    Guía para configurar un editor externo

  • Hace tiempo escribí un tutorial de introducción a OpenSCAD llamado “10 conceptos clave”
    Enlace al tutorial

  • Tip: puedes ajustar la resolución configurando la variable $fn
    $fn = $preview ? 32 : 64;

    • Eso sí, al exportar para análisis FEM, usar un valor de $fn demasiado alto puede perjudicar el rendimiento de la malla
      Como la precisión del análisis importa más que la suavidad visual, entre 32 y 64 suele ser adecuado
  • Para crear un modelo realmente útil en la práctica hace falta bastante trabajo manual, pero sigue siendo muy atractivo poder expresar un modelo paramétrico completo en un archivo de texto de 2 KB
    git diff también funciona de forma útil, y el panel de customizer permite ajustar el modelo como si fuera una app
    Es mucho más eficiente que los enormes archivos XML de FreeCAD

    • Yo sobre todo hago modificaciones o variantes de una sola pieza con frecuencia, y usando Python ese trabajo repetitivo se vuelve mucho más fácil
    • Describir un modelo matemáticamente me resulta más natural
      Eso sí, como funciones como chamfer o redondeo no vienen por defecto, es molesto tener que implementarlas con operaciones de Minkowski usando conos o esferas