Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



jueves, 28 de febrero de 2019

OpenSCAD: ejemplos...


OpenSCAD: ejemplos...



Siguiendo los micro tutoriales de openScad [lista de youtube] y otra lista de la 2º temparada [ lista ]de Juan Gonzalez Gomez, os dejo mis primeras pruebas y códigos:

Mi primer ejemplo de OpenSCAD:
//-- girando    objeto siguiente
rotate([0,0,30])
//-- tralado objeto siguiente
translate([50,0,0])
cube([10,10,10],center=true);

rotate([0,0,45])
cube([20,20,5],center=true);
//-- cubo hola mundo
translate([0,0,35])
cylinder(r=20,h=30,$fn=5);
translate([100,0,0])
cylinder(r=20,h=30,$fn=3);

//--taladro... Diferencia entre dos cilindros:
difference() {
translate([00,100,0])
cylinder(r=20,h=20,$fn=50);
translate([00,100,0])
cylinder(r=4,h=165,$fn=20,center=true);}

//-- union + difference -> rueda porta ejes
difference() {
    union(){
    translate([100,50,0])
    cylinder(r=25,h=5,$fn=10);
 
    translate([100,50,0])
    cylinder(r=15,h=25,$fn=10);
     
    }
translate([100,50,-5])
cylinder(r=10,h=35,$fn=30);
}
//-- parametros !!!
//-- Construccion de la rueda a partir de los parametros
grosor=5;
diametro=25;
diameje=8;
//-- Rueda Simple:
translate([100,100,100])
difference(){
    cylinder(r=diametro/2,h=grosor,$fn=50);
    //taladro de 8 mm:
 
    cylinder(r=diameje/2,h=3*grosor,$fn=20,center=true);
}

Mi segundo ejemplo: usando modulo (o funciones), con valores por defecto...
module RuedaSimple(grosor,diametro,diamEje)
{
    difference(){
        //-- Base de la rueda
        cylinder(r=diametro/2,h=grosor,$fn=100);
        //-Taladro del eje
        cylinder(r=diamEje/2,h=3*grosor,$fn=100,center=true);
         
    }
}
RuedaSimple(10,50,10);

translate([100,0,0])
RuedaSimple(diametro=40,grosor=20,diamEje=10);

translate([-100,0,0])
RuedaSimple(40,20,10);

Fijaos que dependiendo si defino los valores de las variables o los pongo sin definir varia la asignación... (me refiero a poner dentro dde la llamada de la funcion "grosor=")



Mi 3 ejemplo: cochesito
Aqui me encontré con la incidencia de tener que poner la ruta completa del archivo, donde esta el modulo de RuedaSimple definido. También añadí el tema de poner colores de las piezas.

use </home/mint/ModuloRuedaSimple.scad>

//-- Chasis del coche
color("green",0.2)
translate([30,0,10])
cube([100,60,5],center=true);

//rueda delantera
color("blue")
translate([0,-30,0])
rotate([90,0,0])
RuedaSimple(10,50,12);

//rueta trasera (un poco mas ancha)
color("red")
translate([60,-30,0])
rotate([90,0,0])
RuedaSimple(20,50,12);

//- ruedas del otro lado (que son simetricas)
mirror([0,1,0]) {
    color("blue")
    translate([0,-30,0])
    rotate([90,0,0])
    RuedaSimple(10,50,12);
 
    color("red")
    translate([60,-30,0])
    rotate([90,0,0])
    RuedaSimple(20,50,12);
}