Diseño de piezas con OpenScad

De WikiRobotics
Revisión del 04:08 22 may 2012 de Obijuan (Discusión | contribuciones) (Noicias)

Saltar a: navegación, buscar
Logo-openscad-openhw.png

Ficha

Introducción

Inicialmente en esta página se iban a poner sólo los ejemplos dados en la sesión 2 del seminario Diseño e Impresión de Piezas 3D con herramientas Open Source dentro del Máster de Áutomática y Robótica de la UC3M. Esta sesión fue presencial con una duración de 2 horas. Mostré diferentes ejemplos en mi portátil y los asistentes iban haciéndolos sobre la marcha en los suyos.

Al publicar la información en esta wiki (6 meses después y ya fuera de la UC3M), decidí hacer unos micro video-tutoriales y convertir esta sesión en un micro-curso on-line. Tomé la decisión de hacer micro-sesiones de unos 3 minutos. La razón de esto es que antes de la publicación, asistí a un curso/charla que duró 2h y 30 minutos, fue un auténtico rollazo y no aprendí nada. Salí tan cabreado que decidí hacer micro-sesiones de 3 minutos. Así, si una sesión no te ha gustado, sólo habrás perdido 3 minutos de tu vida. Y si te ha gustado, podrás seguir avanzando con las siguientes.

Descargas

tutorial_openscad-01-14.zip Paquete con los primeros 14 ejemplos de este tutorial

Primeros pasos con Openscad

1) Cubo Hola mundo

Video Tutorial 1
El cubo "hola mundo" (click para ampliar)

Programa:

//-- Cubo Hola Mundo
cube([10,10,10]);

Los pasos a realizar son los siguientes:

  • Abrir OpenScad
  • Escribir el código del programa
  • Pulsar F5 para renderizar el cubo en pantalla. Lo que se nos ha creado es un cubo de 10mm de arista
  • Con la rueda del ratón se hace zoom
  • Pulsando el botón izquierdo y moviendo el raton se rota la vista del cubo.
  • Pulsando el botón central y moviendo el ratón se hace traslación del punto de vista
  • Por último se graba el programa openscad creado
  • Se pulsa F6 para hacer un renderizado "bueno"
  • Se exporta la pieza al formato STL (view/export as STL)
  • ¡¡El cubo está listo para ser impreso en una impresora 3D open-source!!

2) Traslaciones y rotaciones

Video Tutorial 2
(click para ampliar)

Programa:

//-- Ejemplo de translación y rotación 
//-- Traslación y rotación de un cubo rotate([0,0,30]) translate([50,0,0]) cube([20,20,20],center=true);
//-- rotación de un cubo rotate([0,0,45]) cube([20,20,10],center=true);

Las traslaciones y rotaciones se realizan con los operadores translate() y rotate() respectivamente.

3) Cilindros: la navaja suiza

Video Tutorial 3
(click para ampliar)

Programa:

//-- Moneda
translate([-50,0,0])
  cylinder(r=40/2, h=5, $fn=100); 
//-- Hexágono cylinder(r=40/2, h=5, $fn=6);
//-- Triángulo equilátero translate([50,0,0]) cylinder(r=40/2, h=5, $fn=3);

Se muestra la versatilidad de los cilindros. Cambiando el parámetro $fn, se puede hacer cualquier polígono regular.

4) Haciendo taladros

Video Tutorial 4
Una rueda simple (click para ampliar)

Programa:

//-- Rueda simple
difference() {
  //-- Base de la rueda
  cylinder(r=50/2, h=5,$fn=100);
//-- Taladro de 8mm cylinder(r=8/2, h=20,$fn=20,center=true); }

Utilización de la operación booleana difference() y de los cilindros para realizar taladros a piezas.

5) Pegando piezas

Video Tutorial 5
Una rueda con portaejes (click para ampliar)

Programa:

//-- Rueda con portaejes y taladro para el eje
difference() {
  //-- Rueda
  union() {
    //-- Base de la rueda
    cylinder(r=50/2, h=5, $fn=100);
    //-- Portaejes
    cylinder(r=20/2, h=20, $fn=80);
  }
  //-- Taladro
  cylinder(r=8/2, h=80, $fn=30,center=true);
}

Utilización de la operación booleana union() para pegar objetos

Vislumbrando la potencia de openscad

6) Parametrízame!

Video Tutorial 6
Una rueda parametrizada (click para ampliar)

Programa:

 //-- Parámetros de la rueda
 grosor = 5;
 diametro=50;
 diam_eje = 8; 
//-- Construcción de la rueda a partir de //-- los parámetros difference() { //-- Base de la rueda cylinder(r=diametro/2, h=grosor,$fn=100);
//-- Taladro del eje cylinder(r=diam_eje/2, h=3*grosor,$fn=20,center=true); }

Rueda paramétrica: La rueda se define por unos parámetros, y luego se construye la rueda usando esos parámetros

7) Modularízame!

Video Tutorial 7
Rueda modularizada (click para ampliar)

Programa:

module rueda_simple(grosor, diametro, diam_eje)
{
  //-- Construcción de la rueda a partir de
  //-- los parámetros
  difference() {
    //-- Base de la rueda
    cylinder(r=diametro/2, h=grosor,$fn=100);
    //-- Taladro del eje
    cylinder(r=diam_eje/2, h=3*grosor,$fn=20,center=true);
  }
} 
rueda_simple(diametro=50, grosor=5, diam_eje=8);
translate([50,0,0]) rueda_simple(diametro=40, grosor=20, diam_eje=10);

Convirtiendo la rueda en un módulo para poder reutilizarla fácilmente

8) Parámetros por defecto

Video Tutorial 8
Rueda modularizada con parámetros por defecto (click para ampliar)

Programa:

module rueda_simple(grosor=5, diametro=40, diam_eje=8)
{
  //-- Construcción de la rueda a partir de
  //-- los parámetros
  difference() {
    //-- Base de la rueda
    cylinder(r=diametro/2, h=grosor,$fn=100); 
//-- Taladro del eje cylinder(r=diam_eje/2, h=3*grosor,$fn=20,center=true); } }
//-- Ejemplos de utilizacion del modulo Rueda simple //-- Rueda por defecto rueda_simple();
translate([50,0,0]) rueda_simple(grosor=20);
translate([-50,0,0]) rueda_simple(diametro=20, grosor=10);

Dando parámetros por defecto al módulo de la rueda simple para facilitar su utilización

9) Usando módulos

Video Tutorial 9
Un coche simple (click para ampliar)

Programa:

//-- Ejemplo sencillo de como utilizar los modulos
use <rueda_simple.scad> 
//-- Chasis del cohe translate([30,0,0]) cube([100,60,10],center=true);
//-- Rueda delantera izquierda translate([0,-30,0]) rotate([90,0,0]) rueda_simple();
//-- Rueda trasera izquierda translate([60,-30,0]) rotate([90,0,0]) rueda_simple(grosor=20, diametro=50);
//-- Lado derecho del coche. Es simetrico con respecto //-- al izquierdo mirror([0,1,0]) { //-- Rueda delantera derecha translate([0,-30,0]) rotate([90,0,0]) rueda_simple();
//-- Rueda trasera derecha translate([60,-30,0]) rotate([90,0,0]) rueda_simple(grosor=20, diametro=50); }

Utilización del módulo rueda simple para construir un coche sencillo

10) Repitiendo tareas

Video Tutorial 10
Una tira variable de cilindros para hacer taladros (click para ampliar)

Programa:

drill=4;
h1=10;
d=10;
n = 20;
for (i=[0:n-1]) { translate([i*d,0,0]) cylinder(r=drill/2, h=h1, $fn=20,center=true); }

Se crean multiples cilindros utilizando un bucle for

Ejemplo 1: Piezas de mecano básicas

En este bloque utilizaremos lo que hemos aprendido para cerrar el ciclo de diseño. Diseñaremos una pieza de mecano simple y la imprimiremos en la impresora 3D opensource. Durante el diseño se introducen también algunos conceptos nuevos

11) Pieza de mecano parametrizable I

Video Tutorial 11
Pieza de mecano parametrizada (click para ampliar)

Programa:

drill=3;
d=10;
n = 4; 
lx = n*d; anchura = 10; grosor = 3;
difference() { //-- Cuerpo de la pieza cube([lx,anchura,grosor],center=true);
//-- Taladros translate([-lx/2+d/2,0,0]) for (i=[0:n-1]) { translate([i*d,0,0]) cylinder(r=drill/2, h=grosor+5, $fn=20,center=true); } }

En este ejemplo se construye la pieza de mecano básica

12) Pieza de Mecano parametrizable II

Video Tutorial 12
Pieza de mecano parametrizada, convertida en un módulo y con parámetros por defecto (click para ampliar)

Programa:

module pieza_mecano(n=4, drill=4, d=10, anchura=10, grosor=3)
{
  //-- Calcular al longitud de la pieza
  lx = n*d;
//-- Construir la pieza difference() { //-- Cuerpo de la pieza cube([lx,anchura,grosor],center=true);
//-- Taladros translate([-lx/2+d/2,0,0]) for (i=[0:n-1]) { translate([i*d,0,0]) cylinder(r=drill/2, h=grosor+5, $fn=20,center=true); } } }
//-- Ejemplos de utilizacion pieza_mecano();
translate([0,20,0]) pieza_mecano(n=2);

La pieza de mecano se modulariza y se asignan parámetros por defecto

Depurando piezas

Video Tutorial 13
Depurando y entendiendo una pieza (click para ampliar)

Programa:

difference() { 
//-- Pieza sin taladros union() { //-- Cuerpo color("blue") cube([167.8, 30, 5],center=true);
//-- Torre derecha color("green") translate([167.8/2-20/2,0,13/2+5/2]) cube([20,30,13],center=true);
//-- Torre izquierda color("green") translate([-167.8/2+20/2,0,13/2+5/2]) cube([20,30,13],center=true); }
//-- Taladros #translate([-167.8/2+10,0,0]) cylinder(r=9/2, h=50, center=true);
#translate([+167.8/2-10,0,0]) cylinder(r=9/2, h=50, center=true); }

Se describen algunos modificaciones y operadores para hacer depuración:

  • Operador color(): Cambiar el color de una pieza o partes de una pieza
  • Modificador * : Comentar la rama. Se ignora al hacer el renderizado, pero se muestra el resto de objetos
  • Modificador ! : Lo contrario a *: Sólo se muestra el objeto al que se aplica y el resto NO se renderiza
  • Modificador # : Mostrar en transparente las partes usadas en las diferencias. Genial para ver cómo están hechos los taladros

Imprimiendo las piezas de mecano

Video Tutorial 14
Imprimiendo las piezas de mecano (click para ampliar)

Programa:

use <pieza_mecano.scad> 
pieza_mecano();
translate([0,15,0]) pieza_mecano(n=3);
translate([0,30,0]) pieza_mecano(n=2);

Se generan 3 piezas de mecano de 4, 3 y 2 taladros, y se imprimen usando la impresora R3 (Una Prusa mendel iteración 2)

Imprimiendo las piezas  (click para ampliar) Piezas impresas (click para ampliar) Probando las piezas (click para ampliar)

Repositorio

Los ficheros fuentes están en este repositorio SVN:

Licencia

Cc logo.png This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 Spain License.

Enlaces

Noicias

  • 22/Mayo/2012: Lista la primera versión. Video-tutorial (1-14) finalizado
  • 08/Mayo/2012: Comenzada la página