- 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
Yo recomiendo muchísimo FreeCAD.
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
.scadque en archivos binarios de Fusion 360Al 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
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
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 masteren vez de la release de 2021, es mucho más rápida y trae funciones más recientesCon 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
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
git masterrenderiza decenas de veces más rápido que la versión antiguaEs una lástima que OpenSCAD no tenga un concepto de objetos, así que no se puede hacer algo como
box1.widthProbé 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
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
Ver el repositorio en GitHub
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
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;$fndemasiado alto puede perjudicar el rendimiento de la mallaComo 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 difftambién funciona de forma útil, y el panel de customizer permite ajustar el modelo como si fuera una appEs mucho más eficiente que los enormes archivos XML de FreeCAD
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