Diseño de piezas con OpenScad II
Contenido
- 1 Ficha
- 2 Introducción
- 3 Descargas
- 4 Aprendiendo más opciones de Openscad
- 4.1 1) Usando un editor mejorado
- 4.2 2) ¡¡¡Las pirámides son cilindros!!!
- 4.3 3) Mis objetos en una cuadrícula, por favor
- 4.4 4) Esferita, esferita, dime donde está la cuadrícula
- 4.5 5) Organiza tus canicas
- 4.6 6) ¡Comparte tus diseños!
- 4.7 7) Tirando tangentes con el operador hull
- 4.8 8) Figuras redondeadas en el plano xy
- 4.9 9) Automatizando con vectores
- 4.10 Apilando 2 objetos
- 4.11 Apilando varios objetos
- 4.12 Mis cubos con curvas, por favor
- 4.13 Objetos condicionales: cilindros redondeados
- 4.14 Cubos redondeados en 3D con hull (II)
- 4.15 Figuras redondeadas en 3D: Minkowski
- 4.16 Resumen de openscad: cheatsheet!
- 5 POR HACER...
- 6 Creando tus propias transformaciones
- 7 Redondeando figuras
- 8 Objetos 3D a partir de objetos 2D
- 8.1 2 bis) Extruyendo objetos 2D
- 8.2 3) Polígonos 2D
- 8.3 4) Ejercicio: Rueda del miniskybot
- 8.4 5) Generación automática de polígonos con python
- 8.5 6) Creando logos
- 8.6 7) Creando logos (II)
- 8.7 8) Creating logos from images!
- 8.8 10) ....
- 8.9 11) Using libraries: write
- 8.10 12) Obiscad: roudend cube
- 8.11 13) Obiscad: Vectors
- 8.12 14) Obiscad: beveling and reinforcements
- 8.13 15) attach?
- 8.14 16) MCAD library
- 9 Repositorio
- 10 Licencia
- 11 Enlaces
- 12 Noticias
Ficha
- Título: Diseño de piezas con OpenScad II
- Contexto: Continuación del tutorial Diseño de piezas con OpenScad
- Autor: Juan González (Obijuan)
Introducción
Segunda temporada de tutoriales de Openscad. La filosofía es la misma que con los primeros: Intentar que NO SOBREPASEN LOS 3 MINUTOS, de manera que si uno no te gusta, sólo habrás perdido 3 minutos de tu vida.
Nota: Bueno, vale, en algunos vídeos me he pasado de tiempo. Intentaré estar por debajo de 5 minutos siempre :-)
Descargas
Pendiente... de momento los ejemplos están accesibles desde el repositorio en github |
Aprendiendo más opciones de Openscad
1) Usando un editor mejorado
Video Tutorial 1 |
---|
Descripción
El editor de textos que incorpora openscad es muy básico. Vamos a ver cómo podemos utilizar un editor externo
Pasos
Los pasos a realizar son los siguientes:
- Abrir openscad
- Ir a la opción view/hide editor. Con esto dejamos de ver el editor de openscad
- Ir a la opción design/automatic reload and compile
- Salir de openscad. Se quedarán grabadas las estas opciones de manera que la siguiente vez que arranque openscad no hace falta volverlas a activar
Ahora, para editar cualquier programa sólo hay que abrirlo con openscad y luego con el editor de texto que queramos. Cada vez que se graben los cambios, openscad cargará automaticamente ese fichero y lo visualizará.
Configuración del editor kate en Linux
- Instalar kate (sudo apt-get install kate)
- Descargar el fichero openscad.xml
- Copiar el fichero en /usr/share/kde4/apps/katepart/syntax/
sudo cp $HOME/Downloads/openscad.xml /usr/share/kde4/apps/katepart/syntax/
- Dar permiso de lectura al fichero:
sudo chmod a+r /usr/share/kde4/apps/katepart/syntax/openscad.xml
Créditos
- El primero que me enseñó esta opción de openscad fue Sergio Vilches
- El fichero con resaltado de sintaxis de kate es obra de Kevin Weekly
2) ¡¡¡Las pirámides son cilindros!!!
Video Tutorial 2 |
---|
Descripción
Se muestra cómo con el comando "cylinder" de openscad se pueden crear conos, pirámides y tetraedros
Código
- Fichero: cylindros-2.scad
//-- Cilindro normal. r es el radio, h es la altura *cylinder (r = 20, h = 20, $fn = 100); //-- Cono truncado. r1 radio base inferior, r2 radio de la base superior *cylinder (r1 = 20, r2 = 10, h = 20, $fn = 100); //-- Cono *cylinder (r1 = 20, r2 = 0, h = 20, $fn = 100); //-- Piramide de base hexagonal *cylinder (r1 = 20, r2 = 10, h = 20, $fn = 6); //-- Piramide *cylinder (r1 = 20, r2 = 0, h = 20, $fn = 4); //-- Tetraedro cylinder (r1 = 20, r2 = 0, h = 20, $fn = 3);
3) Mis objetos en una cuadrícula, por favor
Video Tutorial 3 |
---|
Descripción
Ejemplo de organización de 6 objetos en una cuadrícula virtual paramétrica. Más adelante esta idea se desarrollará y refinará
Código
- Fichero: cuadricula-1.scad
//-- Dimensiones de los cuadros de la cuadricula d = 60; //-- Centrar la cuadricula (opcional) translate([-2*d / 2, -d / 2, 0]) { //-- Punto: 0, 0 translate([0, 0, 0]) cylinder (r = 20, h = 20, $fn = 100); //-- Punto: 1, 0 translate([d, 0, 0]) cylinder (r1 = 20, r2 = 10, h = 20, $fn = 100); //-- Punto: 2, 0 translate([2*d, 0, 0]) cylinder (r1 = 20, r2 = 0, h = 20, $fn = 100); //-- Punto: 0, 1 translate([0, d, 0]) cylinder (r1 = 20, r2 = 10, h = 20, $fn = 6); //-- Punto: 1, 1 translate([d, d, 0]) cylinder (r1 = 20, r2 = 0, h = 20, $fn = 4); //-- Punto: 2, 1 translate([2*d, d, 0]) cylinder (r1 = 20, r2 = 0, h = 20, $fn = 3); }
4) Esferita, esferita, dime donde está la cuadrícula
Video Tutorial 4 |
---|
Descripción
Aprender a crear esferas. Ejemplo de cómo visualizar una cuadrícula.
Código
Fichero: esfera-cuadricula.scad
//-- Ejemplo de uso de esferas para visualizar una cuadrícula //-- de N x N cuadros //-- Tamaño de cada cuadro d = 30; //-- Radio de las esferas en la cuadrícula r = 2; //-- Número de cuadros (N x N) N = 10; //-- Tamaño total de la cuadrícula size = N * d; //-- Dibujar la cuadricula translate([-size / 2, -size / 2, 0]) //-- Centrar cuadricula for (ix = [0:N]) //-- Esferas en eje x for (iy = [0:N]) //-- Esferas en eje y //-- Posicionar la esfera en punto (ix, iy) translate([ix * d, iy * d, 0]) sphere(r = r, $fn=20); //-- Objeto ejemplo en punto (2, 2): una esfera roja translate([2 * d, 2 * d, 0]) color("red") sphere(r = 15, $fn = 20); //-- Objeto ejemplo en punto (-3, -4): un cubo azul color("blue") translate([-3 * d, -4 * d, 0]) cube([20, 20, 20], center = true);
5) Organiza tus canicas
Video Tutorial 5 |
---|
Descripción
Ejemplo de diseño de una pieza paramétrica para organizar las canicas
Código
- Fichero: porta-canicas.scad
//-- Organizador de canicas paramétrico //-- Número de canicas N = 3; //-- Diametro de las canicas dc = 16; //-- Tamaño de cada cuadro d = dc + 3; //-- Tamaño total de la cuadrícula size = (N-1) * d; //-- Tamaño de la caja donde están las canicas size_box = N * d; h_box = dc / 2 + 1; difference() { //-- Caja de las canicas translate([0, 0, -h_box / 2]) cube([size_box, size_box, h_box], center = true); //-- Canicas translate([-size / 2, -size / 2, 0]) //-- Centrar canicas for (ix = [0:N-1]) for (iy = [0:N-1]) //-- Posicionar la canica en punto (ix, iy) translate([ix * d, iy * d, 0]) sphere(r = dc/2, $fn=20); }
6) ¡Comparte tus diseños!
Video Tutorial 6 |
---|
Descripción
Una vez terminado un diseño... ¡Compártelo! Es la manera de que el conocimiento esté disponible para todos y que podamos mejorar.
Como ejemplo, esto son los sitios donde he compartido el organizador de canicas:
- En mi wiki personal
- El código lo subo a github. Es un repositorio y permite que otros aporten sus modificaciones fácilmente
- También lo he publicado en Fabfabbers
- y en Youmagine
- El repositorio más antiguo es Thingiverse, aunque yo lo he dejado de usar.
7) Tirando tangentes con el operador hull
Video Tutorial 7 |
---|
Descripción
El comando hull crea el objeto convexo mínimo que incluye otros objetos indicados. Se muestra su uso para construir una pieza en la que es necesario crear las tangentes entre dos cilindros.
Código
- Fichero: tirando-tangentes.scad
//-------- Parametros de la pieza r1 = 25; //-- Radio cilindro 1 r2 = 10; //-- Radio cilindro 2 th = 5; //-- Grosor //-- Distancia entre los centros de los cilincros d = r1 + r2 + 10; //-- Crear el objetco convexo minimo que contiene ls dos //-- cilindros hull() { //-- Cilindro 1 translate([-d/2, 0, 0]) cylinder(r = r1, h = th, center = true, $fn = 50); //-- Cilincro 2 translate([d/2, 0, 0]) cylinder(r = r2, h = th, center = true, $fn = 50); }
8) Figuras redondeadas en el plano xy
Video Tutorial 8 |
---|
Descripción
Ejemplo de cómo se pueden hacer objetos con las aristas verticales redondeadas, usando el comando hull
Código
- Fichero: cubo-redondeado.scad
//-- Parametros de la caja lx = 50; //-- Longitud en eje x ly = 40; //-- Longitud en eje y r = 5; //-- Radio del redondeo de las esquinas h = 10; //-- Altura //-- Coordenadas del cilindro del primer cuadrante cx = lx/2 - r; cy = ly/2 - r; //-- Posicion de los 4 cilindros de las esquinas P1 = [cx, cy, 0]; P2 = [-cx, cy, 0]; P3 = [-cx, -cy, 0]; P4 = [cx, -cy, 0]; //-- Obtener el menor objeto convexo que contiene //-- los 4 cilindros hull() { translate(P1) cylinder(r = r, h = h, center = true, $fn = 20); translate(P2) cylinder(r = r, h = h, center = true, $fn = 20); translate(P3) cylinder(r = r, h = h, center = true, $fn = 20); translate(P4) cylinder(r = r, h = h, center = true, $fn = 20); }
9) Automatizando con vectores
Video Tutorial 9 |
---|
Descripción
Creación de objetos redondeados a partir de un número genérico de cilindros. Las posiciones de los cilincros se guardan en un vector (array). Usando un bucle for se recorren y se colocan automáticamente los cilindros. Luego se aplica hull para generar el objeto convexo mínimo que contiene todos los cilindros.
Código
- Fichero: poligonos-redondeados.scad
//-- Parametros r = 5; //-- Radio del redondeo de las esquinas h = 10; //-- Altura //-- Coordenadas del cilindro del primer cuadrante cx = 20; cy = 15; //-- Vector de puntos, con las posiciones de los cilindros POINT = [ [cx, cy, 0], //-- Punto 0 [-cx, cy, 0], //-- Punto 1 [-cx, -cy, 0], //-- Punto 2 [cx, -cy, 0], //-- Punto 3 [2*cx, 0, 0], //-- Punto 4 [0, 1.5*cy, 0], //-- Punto 5 [0,0,h], //-- Punto 6 ]; //-- Obtener el menor objeto convexo que contiene //-- los cilindros situados en los puntos indicados en //-- el vector POINT hull() { //-- Dibujar cada cilindro en su posicion correspondiente for (pos = POINT) translate(pos) cylinder(r = r, h = h, center = true, $fn = 20); }
Apilando 2 objetos
Video Tutorial 10 |
---|
Descripción
Apilar 2 objetos es fácil... pero usando vectores es mucho más fácil aún y el código se mantiene mejor
Código
- Fichero: apilando-2-cajas.scad
//-- Definiciones para acceder a las componentes X,Y,Z //-- Aunque las definimos todas, en este ejemplo solo //-- accedemos a la componente Z de los cubos X = 0; Y = 1; Z = 2; //-- Dimensiones de los cubos. Se pueden cambiar por el usuario //-- Todo se recalculara para que B esté siempre encima de A A = [30, 30, 10]; B = [10, 10, 30]; //-- Calcular la posicion de B para que este encima de A posB = [0, 0, B[Z]/2 + A[Z]/2]; //---- Construccion de la figura a partir de los datos calculados! //-- Poner el cubo B encima del A //-- Poner el cubo A (es la base) cube(A, center = true); //-- Cubo B, encima de A translate(posB) cube(B, center = true);
Apilando varios objetos
Video Tutorial 11 |
---|
Descripción
Se propone como ejercicio modificar el ejemplo del tutorial anterior para apilar 4 objetos
Código
- Fichero: apilando-varias-cajas.scad
//-- Definiciones para acceder a las componentes X,Y,Z //-- Aunque las definimos todas, en este ejemplo solo //-- accedemos a la componente Z de los cubos X = 0; Y = 1; Z = 2; //-- Dimensiones de los cubos. Se pueden cambiar por el usuario //-- Todo se recalculara para que todos los cubos esten apilados A = [30, 30, 10]; B = [10, 10, 30]; C = [6, 6, 10]; D = [3, 3, 3]; //-- Calcular las posicion de los cubos para que esten apilados posB = [0, 0, B[Z]/2 + A[Z]/2]; posC = posB + [0, 0, C[Z]/2 + B[Z]/2]; posD = posC + [0, 0, D[Z]/2 + C[Z]/2]; //---- Construccion de la figura a partir de los datos calculados! //-- Poner el cubo A (es la base) cube(A, center = true); //-- Cubo B, encima de A translate(posB) cube(B, center = true); //-- Poner el cubo C encima del B translate(posC) cube(C, center = true); //-- Poner el cubo D encima del C translate(posD) cube(D, center = true);
Mis cubos con curvas, por favor
Video Tutorial 12 |
---|
[[|thumb|300px| (click para ampliar)]] | [[|thumb|300px| (click para ampliar)]] |
Descripción
un cubo a partir de esferas y hull.
Código
Objetos condicionales: cilindros redondeados
[ Video Tutorial x] |
---|
[[|thumb|300px| (click para ampliar)]] | [[|thumb|300px| (click para ampliar)]] |
Descripción
Objeto rcylinder(): un cilindro redondeado por una o dos caras
Código
Cubos redondeados en 3D con hull (II)
[ Video Tutorial x] |
---|
redondeo usando rcylinder: cubos con sólo la parte superior redondeada
Figuras redondeadas en 3D: Minkowski
[ Video Tutorial x] |
---|
Resumen de openscad: cheatsheet!
http://www.openscad.org/cheatsheet/
POR HACER...
Operaciones: Escalar, simetrías
Creando tus propias transformaciones
Cuadricula: grid
Redondeando figuras
Figuras redondeadas en 3D
- minkowski
Objetos 3D a partir de objetos 2D
2 bis) Extruyendo objetos 2D
- 2d -> square, circle
- Show: Linear extrusion, rotate extrusion, linear extrusion + twist!
3) Polígonos 2D
- Ej. triangle
4) Ejercicio: Rueda del miniskybot
5) Generación automática de polígonos con python
6) Creando logos
- draw lines
- move to origin
- export to dxf
- import into openscad
7) Creando logos (II)
- The same but with bezier curves!!
a) Draw curves b) insert multiple points c) convert into lines d) move orig e) export dxf f) import openscad
8) Creating logos from images!
Ej. Obijuan Academy!
10) ....
11) Using libraries: write
12) Obiscad: roudend cube
13) Obiscad: Vectors
14) Obiscad: beveling and reinforcements
15) attach?
16) MCAD library
Repositorio
Los ficheros fuentes están en este repositorio:
Licencia
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 Spain License. |
Enlaces
- http://www.thingiverse.com/thing:29505: Resaltado de sintaxis en kate para Openscad
Noticias
- 25/Dic/2013: Tutorial 1) Usando un editor externo
- 24/Dic/2013: Comenzada la página
|
Proyecto Clone wars: Construye tu impresora 3D opensource! |
|
Proyecto RepRap: Impresoras 3D auto-replicantes. El origen de la revolución de las impresoras 3D opensource |
|
Obijuan Academy, Tu academia rebelde! ;-) |