[[|400px|]]
Ficha
Introducción
Descargas
Primeros pasos con Openscad
1) Cubo Hola mundo
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
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
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
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
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!
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!
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
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);
|
9) Usando módulos
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);
}
|
Repitiendo tareas
300|250</youtube>
|
Programa para OpenScad:
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);
}
|
Ejemplo 1: Piezas de mecano básicas
Pieza de mecano parametrizable I
300|250</youtube>
|
Programa para OpenScad:
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);
}
}
|
Pieza de Mecano parametrizable II
300|250</youtube>
|
Programa para OpenScad:
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);
|
Depurando piezas
300|250</youtube>
|
Programa para OpenScad:
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);
}
|
Imprimiendo las piezas de mecano
300|250</youtube>
|
Programa para OpenScad:
use <pieza_mecano.scad>
pieza_mecano();
translate([0,15,0])
pieza_mecano(n=3);
translate([0,30,0])
pieza_mecano(n=2);
|
Repositorio
Los ficheros fuentes están en este repositorio SVN:
Licencia
Enlaces
Noicias
- 08/Mayo/2011: Comenzada la página