You are on page 1of 53

MANUAL DE OPENSCAD Sobre este manual: Este manual es una traducin del manual en ingles de http://en.wikibooks.

org/wiki/OpenSCAD_User_Manual Esta traduccin fue realizada por Kikai Labs (http://kikailabs.com.ar/). La agradecemos que si encuentra algun error o considera que hay una mejor traduccin en algun punto lo cambie en . Datos a tener en cuenta: Las palabras y frases que estan en italics o en cursiva corresponden a lo que se tipea(introduce) en el editor de openscad. Las mismas se encuentran en ingles debido a que el programa (como todos los otros programas para programar) interpreta el cdigo en ingles. Palabras clave: Renderizado: es un trmino usado en jerga informtica para referirse al proceso de generar una imagen desde un modelo. Escape: una secuencia de escape consiste en una barra invertida (\) seguida de uno o ms caracteres especficos los cuales cumplen una determinada funcin antes o despus de imprimir el mensaje dependiendo de dnde se colocan dentro del mensaje. La / es el escape al plano de los meta caracteres. Impresin: se refiere a mostrar una secuencia de caracteres en el programa. Escalar: en informtica, un escalar es un determinado valor (que no vara todo a lo largo del programa informtico), una variable, o un campo, que solamente puede tener un valor en un cierto momento String: secuencia de caracteres, o sea texto. Resetear: reiniciar, volver a 0, empezar de vuelta. Extrusin: la extrusin es un proceso utilizado para crear objetos con seccin transversal definida y fija. El material se empuja o se extrae a travs de un troquel de una seccin transversal deseada. Las dos ventajas principales de este proceso por encima de procesos manufacturados son la habilidad para crear secciones transversales muy complejas y el trabajo con materiales que son quebradizos, porque el material solamente encuentra fuerzas de compresin y de cizallamiento. Manual de openscad: Parte 1 Para nuestro primer modelo vamos a crear un simple 2 x 3 x 4 cuboides. En el editor de OpenSCAD, escriba la siguiente lnea de comandos: Ejemplo de uso 1 - cubo simple: Cubo ([2,3,4]);

Abrir un documento: Abrir uno de los muchos ejemplos que vienen con OpenSCAD (Archivo, Ejemplos, por ejemplo example002.scad). O usted puede copiar y pegar este ejemplo simple en la ventana OpenSCAD:

Ejemplo de uso 1 - example002.scad: diferencia () { cubo (30, centro = true); esfera (20); } traducir ([0, 0, 30]) { cilindro (h = 40, r = 10); }

Despus de pegar el cdigo de ejemplo y presionamos F5. A continuacin, presione F5 para obtener una vista previa grfica de lo que ha escrito. Tienes tres tipos de movimiento en el marco de vista previa: 1. Arrastre con el botn izquierdo del ratn para girar la vista. El fondo va a cambiar los valores de rotacin. 2. Arrastre con un botn de traducir otra (mover) la vista. El fondo va a cambiar los valores de traducir. 3. Usa el escroler del ratn de desplazamiento para acercar y alejar. Alternativamente, puede utilizar la teclas + y -, o arrastrar con el ratn mientras presiona una tecla de maysculas. La lnea Viewport en la parte inferior de la ventana se muestra un cambio en el valor de distancia. Posicionando un objeto: Ya hemos visto cmo crear un cubo simple. Nuestra prxima tarea es tratar de utilizar el comando de posicionamiento translate realizar un cubo idntico al lado del cubo existente: Ejemplo de uso 1 - posicionar un objeto: cube([2,3,4]); translate ([3,0,0]) { cube ([2,3,4]); }

Posicionamiento OpenSCAD un objeto: -No hay punto y coma despus del comando translate -Tenga en cuenta que no hay punto y coma despus del comando translate. Esto es porque el comando translate refiere al objeto siguiente. Si el punto y coma no se omite, entonces el efecto de la traduccin en la posicin terminara, y el cuboides segunda se coloca en la misma posicin que la primera forma de cubo. Vista de los modelos: El modelo OpenSCAD forma de vista ofrece una variedad de opciones de visualizacin: 1. La vista de las superficies: La vista de la superficie es la vista del modelo inicial que aparece cuando el cdigo de modelo se representa por primera vez. 2.Red CGAL Slo La vista de cuadrcula slo presenta slo el "andamiaje" por debajo de la superficie. Piense en la Torre Eiffel. 2.La vista OpenCSG Este modo de visualizacin utilizar la biblioteca abierta geometra slida constructiva para generar la vista del modelo utilizando OpenGL. Si la biblioteca OpenCSG no est disponible o la tarjeta de vdeo o los controladores no son compatibles con OpenGL, esta vista se producir ninguna salida visible. 3. La cuadrcula slo ver. 4. El improvisado ver. La interfaz del openscad: Formas de navegacin: El rea de visualizacin se navega principalmente con el ratn: Arrastrar con el botn izquierdo del ratn hace girar la vista a lo largo de los ejes del rea de visualizacin. Conserva la direccin del eje vertical . Arrastrar con el botn izquierdo del ratn cuando la tecla de maysculas se pulsa permite girar la vista a lo largo del eje vertical y del eje apuntando hacia el usuario. Arrastrar con el botn derecho o central permite mover el rea visible. Para acercar, hay tres maneras: -con la rueda de desplazamiento. -arrastrando con el botn derecho del ratn, o scroler y la tecla shift. -las teclas + y La rotacin se puede restablecer mediante el atajo Ctrl +0. El movimiento resetearse usando el atajo Ctrl + P. Ver configuracin:

El rea de visualizacin puede estar configurado para utilizar diferentes mtodos de representacin y otras opciones utilizando el men View. La mayora de las opciones descritas aqu estn disponibles mediante los mtodos abreviados tambin. Modos de Renderizado: OpenCSG (F9): En el modo OpenCSG, la biblioteca OpenCSG se utiliza para generar el modelo visible. Esta biblioteca utiliza caractersticas avanzadas de OpenGL (2,0) como el tampn Z y no requiere una descripcin explcita de la forma resultante - en cambio, hace un seguimiento de cmo los objetos se van a combinar. Por ejemplo, cuando se crea un hueco esfrico en un cubo, lo primero har va a ser el cubo en la tarjeta grfica y luego va a hacer la esfera, pero en lugar de usar el tampn Z para ocultar las partes de la esfera que estn cubiertos por el cubo, va a crear slo la esfera, al combinarse resultan visualmente en un cubo con un hueco esfrico. Este mtodo produce resultados instantneos, pero tiene bajas tasas de frames (baja velocidad para procesar los grficos) cuando se trabaja con objetos muy convexos. Tenga en cuenta que la seleccin del modo OpenCSG usando F9 cambiar a la vista OpenCSG pasado gener, pero no se volver a evaluar el cdigo fuente. Es posible que desee utilizar la funcin de compilacin (F5, que se encuentra en el men Diseo) para reevaluar el cdigo fuente, construir los objetos OpenCSG y luego cambiar a a la vista OpenCSG. CGAL (Superficies y Grid, F10 y F11): El CGAL es un acrnimo que se refiere a la fuente abierta de Geometra Computacional Biblioteca de Algoritmos. En el modo de CGAL, la biblioteca CGAL se utiliza para calcular la creacin del objeto raz, que luego se muestra usando OpenGL simple. Este mtodo puede que necesite un poco de tiempo cuando se utiliz por primera vez con un nuevo programa, pero luego tendrn mayores tasas de frames (mejora la velocidad para procesar los grficos). Al igual que antes con OpenCSG, F10 y F11 activan el modo de pantalla CGAL pero no actualizan los objetos subyacentes; para ello, utilice la funcin de compilacin y renderizado (F6, que se encuentra en el men Diseo). Para combinar las ventajas de los dos mtodos de visualizacin, se puede ajustar selectivamente partes de su programa en una funcin de renderizado y los obligan a coincidir uniformemente aun con elm modo OpenCSG habilitado. Opciones de visualizacin: Mostrar bordes (Ctrl +1): Si la opcin de mostrar bordes est activada, tanto OpenCSG y el modo CGAL harn bordes, as como las caras de los objetos, en el modo CGAL se muestran incluso los vrtices. En el modo de cuadrcula CGAL, esta opcin no tiene efecto. Al activar esta opcin se muestra la diferencia entre OpenCSG y CGAL con toda claridad: En el modo CGAL se ve un borde dibujado en todas partes en las que "pertenece", OpenCSG no mostrar bordes resultantes de las operaciones booleanas (verdadero o falso) - esto se debe a que nunca se calcularon explcitamente, pero estn justo donde los recortes de un objeto Z comienza o termina. Mostrar ejes (Show) (Ctrl +2): Si la opcin Mostrar Ejes est activada, el origen del sistema de coordenadas global ser indicado por un indicador de ejes ortogonales. Adems, un indicador pequeo indicador de ejes con los nombres de

los mismos que se muestran en la esquina inferior izquierda del rea de visualizacin. El indicador ms pequeo de ejes marca x, y, z y de color rojo, verde, azul, respectivamente. Mostrar puntos de mira (Ctrl +3): Si la opcin Mostrar puntos de mira (Crosshairs) est activada, el centro de la ventana grfica se indicar con cuatro lneas que apuntan en la sala en direcciones diagonales del sistema de coordenadas global. Esto es til cuando se alinea el rea de visualizacin a un punto particular en el modelo para que lo mantenga centrado en la pantalla durante la rotacin. Animacin (animation): La opcin Animar aade una barra de animacin al borde inferior de la pantalla. Tan pronto como FPS (frames) y los Pasos (steps) se establecen (valores razonables para empezar son 10 y 100, respectivamente), la hora actual se incrementa en 1/paso, x FPS de tiempo por segundo, hasta llegar a 1, cuando se vuelve a 0. Cada vez que se cambia el tiempo, el programa se vuelve a evaluar con la variable $ t ajustandolo a la hora actual. Ver alineacin (View alignment): Los elementos del men superior, inferior, ..., Diagonal y Centro (Ctrl +4, Ctrl +5, ..., Ctrl +0, Ctrl + P) alinean la vista al sistema de coordenadas global. Arriba, Abajo, Izquierda, derecha, delante y detrs alinean en paralelo a los ejes, la opcin Diagonal se alinea en diagonal, ya que est alineado cuando OpenSCAD comienza. La opcin Centro pondr el centro de coordenadas en el centro de la pantalla (pero no girar la vista). Por defecto, la vista est en modo de perspectiva, lo que significa que los objetos a distancias alejadas del espectador se vern ms cortos, como es comn con los ojos o cmaras. Cuando el modo de visualizacin se cambia a distancias perpendiculares, no depender de la distancias visibles de la cmara (la vista simular una cmara en la distancia infinita con longitud focal infinita). Esto es especialmente til en combinacin con las opciones principales descritas anteriormente, esto se traducir en una imagen 2D similar a lo que se vera en un dibujo de ingeniera.

El lenguaje OpenSCAD. General: OpenSCAD utiliza el estilo de C + + para los comentarios: // Este es un comentario mytvar = 10; // El resto de la lnea es un comentario. /*

Comentarios Multi-linea permiten escribir multiples lneas. */ La diferencia es que // solo permite poner un comentario por lnea, y hay que ponerlo en cada lnea, con /* uno se ahorra letras en el cdigo. Variables: Las variables en OpenSCAD son simplemente un nombre seguido de una expresin a travs de la cual es asignada. El smbolo que permite asignar variables es el =. mivar = 5 + 4; Strings (cadena de caracteres, sea texto): Se deben poner si o si comillas y las barras invertidas se usan para escapar (\ "y \ \ respectivamente). Otros caracteres de escape especiales son saltos de lnea (\ n), tabuladores (\ t) y saltos de lnea (\ r). NOTA! Este comportamiento es nuevo ya que OpenSCAD-2011.04. Puede actualizar los archivos antiguos utilizando el siguiente comando sed: sed 's / \ \ / \ \ \ \ /' no escaped.scad> escaped.scad Ejemplo: echo("The quick brown fox \tjumps \"over\" the lazy dog.\rThe quick brown fox.\nThe \\lazy\\ dog."); Comandos de salida: ECHO: "El rapido zorro marron salta" sobre "el perro perezoso. El rpido zorro marrn. El perro \ perezoso \ ". Las variables se establece en tiempo de compilacin, no en tiempo de ejecucin: Debido a que OpenSCAD calcula sus valores de variables mientras realiza la compilacin y no en tiempo de ejecucin, la asignacin de la ltima variable se aplicar en todas partes en las que se utiliza la variable. Si uno modifica la variable x=3 y establece el valor x=5 , a partir de ese comando x va a equivaler a 5 en TODOS los casos en los que se utilice la variable. Ejemplo: / / El valor de 'a' refleja slo el ltimo valor ajustado a = 0; echo (a); a = 5; echo (a); Resultado: ECHO: 5 ECHO: 5 Compilacin de errores impresos. (Output). Este comportamiento sin embargo tiene como alcance a la raz o a una llamada especfica a de un mdulo, lo que significa que puede volver a definir una variable en un mdulo sin afectar a su valor fuera de ella. Sin embargo, todas las instancias dentro de dicha llamada se comportan como se describi anteriormente con el ltimo valor de ajuste se utilizan en todo. Ejemplo: p = 4; prueba (5);

echo (p); p = 6; prueba (8); echo (p); mdulo de prueba (q) { p = 2 + q; echo (p); p = 4 + q; echo (p); } Salida ECHO: 9 ECHO: 9 ECHO: 6 ECHO: 12 ECHO: 12 ECHO: 6 Si bien esto parece ser contrario a la intuicin, esto le permite hacer algunas cosas interesantes: Por ejemplo, si configura los archivos de biblioteca compartida para tener valores predeterminados definidos como variables en su nivel de raz, cuando se incluye ese archivo en su propio cdigo , puede "redefinir" o anular esas constantes simplemente asignando un nuevo valor a los mismos. Obtencin de puertas de entrada(input): Ahora tenemos las variables, sera muy bueno tener la capacidad de obtener un mtodo de entrada en lugar de establecer los valores de cdigo. Hay algunas funciones para leer los datos de los archivos DXF, o se puede configurar una variable con el modificador-d en la lnea de comandos. Conseguir un punto desde un dibujo: Conseguir un punto es til para la lectura de un punto de origen en una vista 2D en un dibujo tcnico. La funcin dxf_cross leer la interseccin de dos lneas en una capa que especifique y volver al punto de interseccin. Esto significa que el punto debe ser dado con dos lneas en el archivo DXF, y no un punto. OriginPoint = dxf_cross (file = "drawing.dxf", capa = "SCAD.Origin" origen = [0, 0], la escala = 1); Obtener un valor de dimensin: Usted puede leer las dimensiones de un dibujo tcnico. Esto puede ser til para leer un ngulo de rotacin, una altura de extrusin, o la separacin entre las partes. En el dibujo, hay que crear una dimensin que no se muestra, pero si sirve como un identificador. Para leer el valor, se especifica este identificador con la siguiente secuencia de comandos: TotalWidth = dxf_dim (file = "drawing.dxf" name = "totalWidth" capa = "SCAD.Origin", origen = [0, 0], la escala = 1);

Operadores matemticos: Operadores aritmticos escalares: Los operadores escalares aritmticos tienen nmeros como operandos y producen nmeros nuevos. + Suma Resta * Multiplicacin / Divisin % Mdulo El "-" tambin se puede utilizar como operador de prefijo para nmeros negativos. Los operadores relacionales: Todo operador relacional toma nmeros como operadores y produce un valor booleano (1 o 0, Verdadero o Falso). Los operadores de igualdad y no igual, tambin puede comparar los valores booleanos.

< <= == != >= > =

Menor que Menor o igual que Igual No igual Mayor o igual que Mayor que Igual

Existe una diferencia entre el = solo y el == , el segundo obliga a la igualdad de strings. Operadores lgicos: Todos los operadores lgicos tienen como operadores a valores booleanos y producen un valor booleano. && || ! Operadores condicionales: El Operador :? se puede utilizar para evaluar condicionalmente una u otra expresin. ?: Operador condicional Y lgico OR lgico (o a o b) NOT lgico (no)

Ejemplo dado: x> 0? "pos": "neg" el resultado ser "pos" si x es mayor que cero, de lo contrario ser "neg". Operadores numricos vectoriales: Los operadores numricos vectoriales toman un vector y un nmero como operadores y producen un nuevo vector. * Multiplicar todos los elementos del vector por nmero Dividir todos los elementos del vector por nmero

/ Operadores vectoriales: Los operadores vectoriales toman vectores como operadores y producen un nuevo vector. + Agregar elemento correcto Restar elemento correcto

El "-" tambin puede ser utilizado como prefijo del operador vectorial, para definirlo como negativo. Vector punto-producto operadoracional: El vector de punto-producto operador toma dos vectores como operadores y produce un valor escalar * Suma de los productos elemento de vector

Multiplicacin de matrices: Multiplica una matriz por un vector, un vector por la matriz y la matriz por la matriz * Matriz / vector de multiplicacin Funciones matemticas: Abs: Funcin matemtica de valor absoluto. Devuelve el valor positivo de un nmero decimal con signo. Ejemplos de uso: abs (-5,0); abs (0); abs (8,0); Resultados: 5.0 0,0 8.0 Acos: Funcin matemtica de arcocoseno, o la inversa, coseno. Asin:

Funcin matemtica de arcoseno, o la inversa, seno. Atan: Funcin matemtica de arcotangente o la inversa, tangente. Devuelve el valor principal del arco tangente de x, expresado en grados. Atan2 Funcin matemtica de dos argumentos atan. Devuelve el valor principal del arco tangente de y / x, expresado en grados. Ceil: Funcin matemtica techo. Cos: Funcin matemtica del coseno. Ejemplos de uso: for (i = [doce y treinta y seis]) translate ([i * 10,0,0]) cylinder (r = 5, h = cos (i * 10) * 50 +60); OpenSCAD Funcin Cos Exp: Funcin matemtica exp. Devuelve la funcin de base e exponencial de x, que es el nmero e elevado a la potencia x. Floor: Funcin matemtica floor. En: Logaritmo natural Matemtica. Vase: Logaritmo natural Cos: Funcin mtematica cos.
for(i=[0:36]) translate([i*10,0,0])cylinder(r=5,h=cos(i*10)*50+60);

Len: Funcin matemtica de longitud. Devuelve la longitud de una matriz, un vector o un parmetro en cadena. Ejemplos de uso: str1 = "abcdef"; len_str1 = len (str1); echo (str1, len_str1); a = 6; len_a = len (a); eco (a, len_a);

matriz1 = [1,2,3,4,5,6,7,8]; len_array1 = len (matriz1); echo (matriz1, len_array1); matriz2 = [[0,0], [0,1], [1,0], [1,1]]; len_array2 = len (matriz2); echo (matriz2, len_array2); len_array2_2 = len (matriz2 [2]); echo (matriz2 [2], len_array2_2); Resultados: ECHO: "abcdef", 6 ECHO: 6, undef ECHO: [1, 2, 3, 4, 5, 6, 7, 8], 8 ECHO: [[0, 0], [0, 1], [1, 0], [1, 1]], 4 ECHO: [1, 0], 2 Tenga en cuenta que el len () no se define cuando una simple variable se pasa como parmetro. Esta funcin permite (por ejemplo) el anlisis de una matriz, un vector o una cadena. Ejemplos de uso: str2 = "4711"; for (i = [0: len (str2) -1]) echo (str ("digit", i +1, ":", cadena2 [i])); Resultados: ECHO: "dgito 1: 4" ECHO: "digit 2: 7" ECHO: "dgito 3: 1" ECHO: "dgito 4: 1" Log: Logaritmo matemtico. Operaciones de bsqueda: (Puede fallar) A partir de un determinado valor-clave matriz, se puede interpolar un valor para cualquier clave mediante interpolacin lineal. Parmetros: Clave: clave de bsqueda <key,value array> Claves y valores Ejemplo de uso: Se crear una especie de carta 3D hecha de cilindros de diferente altura. function get_cylinder_h(p) = lookup(p, [ [ -200, 5 ], [ -50, 20 ], [ -20, 18 ], [ +80, 25 ], [ +150, 2 ] ]);

for (i = [-100:5:+100]) { // echo(i, get_cylinder_h(i)); translate([ i, 0, -30 ]) cylinder(r1 = 6, r2 = 2, h = get_cylinder_h(i)*3); }

OpenSCAD Funcin Lookup Mx: Devuelve el mximo de los dos parmetros. Parmetros <a> Decimal. <b> Decimal. Ejemplo de uso: max (3.0,5.0); max (8.0,3.0); Resultados: 5.0 8.0 Min: Devuelve el mnimo de los dos parmetros. Parmetros <a> Decimal. <b> Decimal. Ejemplo de uso: min (3.0,5.0); min (8.0,3.0); Resultados: 3,0 3,0 Pow: Funcin matemtica de poder. Parmetros: <base> Decimal. Base. <exponente> Decimal. Exponente. Ejemplos de uso:

for (i = [0:5]) { translate([i*25,0,0]) { cylinder(h = pow(2,i)*5, r=10); echo (i, pow(2,i)); } } Rands: Generador de nmeros aleatorios. Genera un vector constante de nmeros pseudo-aleatorios, al igual que una matriz. Cuando se genera un nico nmero, todava se puede obtener con variable [0] Parmetros: min-value: Valor mnimo del rango de nmeros aleatorios. max_value: Valor mximo del rango de nmeros aleatorios. value_count: Cantidad de nmeros aleatorios que se expresan como un vector. seed_value (opcional) Valor de inicio para el generador de nmeros aleatorios para obtener resultados repetibles. Ejemplos de uso: seed=42; random_vect=rands(5,15,4,seed); echo( "Random Vector: ",random_vect); sphere(r=5); for(i=[0:3]) { rotate(360*i/4) { translate([10+random_vect[i],0,0]) sphere(r=random_vect[i]/2); } } Redondeo: El operador round devuelve la parte mayor o menor nmero entero, respectivamente, si la entrada numrica es positiva o negativa. En otras palabras redondea un nmero. Algunos ejemplos: round (x.5) = x +1. round (x.49) = x. ronda (- (x.5)) = - (x +1). ronda (- (x.49)) =-x. round (5,4) / / -> 5 round (5,5) / / -> 6 round (5,6) / / -> 6 Signo Funcin matemtica signum. Devuelve un valor unitario que extrae el signo de un valor. Parmetros <x> Decimal. Valor para encontrar el signo de.

Ejemplos de uso: sign(-5.0); sign(0); sign(8.0); Resultados: -1,0 0,0 1,0 Sin: Funcin matemtica seno. Parmetros: <grados> Decimal. ngulo en grados. Ejemplo de uso 1: for (i = [0:5]) { echo(360*i/6, sin(360*i/6)*80, cos(360*i/6)*80); translate([sin(360*i/6)*80, cos(360*i/6)*80, 0 ]) cylinder(h = 200, r=10); } Ejemplo de uso 2: for(i=[0:36]) translate([i*10,0,0])cylinder(r=5,h=sin(i*10)*50+60);

Funcin Sin en OpenSCAD Sqrt: Funcin matemtica de raz cuadrada. Ejemplos de uso: translate([sqrt(100),0,0])sphere(100); Tan: Funcin matemtica tangente. Parmetros <Grados> Decimal. ngulo en grados. Ejemplos de uso: for (i = [0:5]) { echo(360*i/6, tan(360*i/6)*80); translate([tan(360*i/6)*80, 0, 0 ]) cylinder(h = 200, r=10);

} Funciones String: Str: Convertir todos los argumentos en strings y concatenar. Ejemplos de uso: number=2; echo ("This is ",number,3," and that's it."); echo (str("This is ",number,3," and that's it.")); Resultados: ECHO: "This is ", 2, 3, " and that's it." ECHO: "This is 23 and that's it." Slidos bsicos: Cubo: Crea un cubo en el origen del sistema de coordenadas. Cuando el centro es verdadero el cubo se centrar en el origen, de lo contrario, se crea en el primer octante. Los nombres de los argumentos son opcionales si los argumentos se dan en el mismo orden como se especifica en los parmetros. Parmetros: Tamao: Decimal o 3 de valor matriz. Si slo hay un nmero dado, el resultado ser un cubo con lados de esa longitud. Si una matriz de valor 3 se da, entonces los valores se corresponden a las longitudes de los ejes X, Y, y Z. El valor por defecto es 1. Centro: Booleano. Esto determina la posicin del objeto. Si es verdadero, objeto est centrado en (0,0,0). De lo contrario, el cubo se coloca en el cuadrante positivo con una esquina en (0,0,0). El valor predeterminado es falso. Ejemplos de uso: cube(size = 1, center = false); cube(size = [1,2,3], center = true);

Esfera: Crea una esfera en el origen del sistema de coordenadas. El nombre del argumento es opcional. Parmetros: R:

Decimal. Este es el radio de la esfera. La resolucin de la esfera se basar en el tamao de la esfera y la fa $, fs $ y $ fn variables. -$ fa ngulo en grados -$ fs ngulo en mm -$ fn Resolucin Ejemplos de uso: sphere(r = 1); sphere(r = 5); sphere(r = 10); / / Esto va a crear una esfera de alta resolucin con un radio de 2 mm esfera (2, $ fn = 100); / / Tambin se crear una esfera de 2 mm de alta resolucin pero ste / / No tiene tringulos pequeos como muchos de los polos de la esfera esfera (2, $ = fa 5, $ fs = 0,1);

Cilindro: Crea un cilindro o cono en el origen del sistema de coordenadas. Un solo radio (r) hace que un cilindro, dos diferentes radicales (r1, r2) hacen un cono. Parmetros: h Decimal. Esta es la altura del cilindro. El valor por defecto es 1. r1 Decimal. Este es el radio del cono en el extremo inferior. El valor por defecto es 1. r2 Decimal. Este es el radio del cono en el extremo superior. El valor por defecto es 1. r Decimal. El radio de los dos extremos superior e inferior del cilindro. Utilice este parmetro si desea cilindro plano. El valor por defecto es 1. Centro: Booleano. Si es verdadero va a centrar la altura del cono / cilindro alrededor del origen. El valor predeterminado es falso, colocando la base de la radio del cilindro o cono r1 en el origen. $ fa

ngulo en grados $ fs ngulo en mm Ejemplos de uso: cylinder(h = 10, r1 = 10, r2 = 20, center = false); cylinder(h = 10, r1 = 20, r2 = 10, center = true); cylinder(h = 10, r=20); cylinder(h = 10, r=20, $fs=6);

Poliedro: Crea un poliedro con una lista de puntos y una lista de tringulos. La lista de puntos esta formada todos los vrtices de la figura, la lista de tringulo es cmo los puntos se relacionan a las superficies del poliedro. Parmetros: Puntos: Vector de puntos o vrtices (cada vector de 3). Tringulos: Vector de tripletes de puntos (cada vector un nmero 3). Cada nmero es el nmero de punto 0indexado a partir del vector punto. Convexidad: Entero. El parmetro de convexidad especifica el nmero mximo de los lados frontales (back sides) un rayo que intersecta al objeto y lo podra penetrar. Este parmetro slo es necesario para visualizar correctamente el objeto en OpenCSG y modo de vista previa y no tiene efecto sobre la presentacin del poliedro. Sintaxis de ejemplo: polyhedron(points = [ [x, y, z], ... ], triangles = [ [p1, p2, p3..], ... ], convexity = N); Puntos del tringulo pedido: al mirar la cara de afuera hacia adentro, los puntos deben ser en sentido horario. Puede cambiar el orden de los puntos o el orden en que se mencionan en cada uno de tringulo triple. El orden de los tringulos es inmaterial. Tenga en cuenta que si los polgonos no estn orientadas de la misma manera OpenSCAD no imprimir un error o un accidente por completo, as que preste atencin al orden de los vrtices. Ejemplo, una pirmide de base cuadrada:
polyhedron( points=[ [10,10,0],[10,-10,0],[-10,-10,0],[-10,10,0], [0,0,10] ], triangles=[ [0,1,4],[1,2,4],[2,3,4],[3,0,4], [1,0,3],[2,1,3] ] square base ); // // // // the four points at base the apex point each triangle side two triangles for

Orden de los puntos del tringulo. Un ejemplo de un poliedro ms complejo, y la muestra de cmo solucionar poliedros con polgonos mal orientados. Cuando se selecciona 'Thrown together' desde el men de la vista y se compila el diseo (no compilar y hacer!), Ver una vista previa con los polgonos mal orientadas resaltados. Lamentablemente esto no es posible destacar en el modo de vista previa OpenCSG porque interferira con la forma en que se implement el modo de vista previa OpenCSG.) A continuacin, puedes ver el cdigo y la imagen de un poliedro problemtico. // Poliedro malo polyhedron (points = [ [0, -10, 60], [0, 10, 60], [0, 10, 0], [0, -10, 0], [60, -10, 60], [60, 10, 60], [10, -10, 50], [10, 10, 50], [10, 10, 30], [10, -10, 30], [30, -10, 50], [30, 10, 50] ], triangles = [ [0,2,3], [0,1,2], [0,4,5], [0,5,1], [5,4,2], [2,4,3], [6,8,9], [6,7,8], [6,10,11], [6,11,7], [10,8,11], [10,9,8], [0,3,9], [9,0,6], [10,6, 0], [0,4,10], [3,9,10], [3,10,4], [1,7,11], [1,11,5], [1,7,8], [1,8,2], [2,8,11], [2,11,5] ] ); polyhedron (points = [ [0, -10, 60], [0, 10, 60], [0, 10, 0], [0, -10, 0], [60, -10, 60], [60, 10, 60], [10, -10, 50], [10, 10, 50], [10, 10, 30], [10, -10, 30], [30, -10, 50], [30, 10, 50] ], triangles = [ [0,3,2], [0,2,1], [4,0,5], [5,0,1], [5,2,4], [4,2,3], [6,8,9], [6,7,8], [6,10,11],[6,11,7], [10,8,11], [10,9,8], [3,0,9], [9,0,6], [10,6, 0],[0,4,10], [3,9,10], [3,10,4], [1,7,11], [1,11,5], [1,8,7], [2,8,1], [8,2,11], [5,11,2] ] );

Consejo para principiantes: Si no entiende realmente la "orientacin", trate de identificar los tringulos rosados mal orientados y luego permutar las referencias a los vectores de puntos hasta que lo haga bien. Por ejemplo en el ejemplo anterior, el tercer tringulo ([0,4,5]) era errneo y lo fija como [4,0,5]. Adems, puede seleccionar "Mostrar bordes" en el "Men Ver", imprimir una captura de pantalla y numerar ambos puntos del tringulo. En nuestro ejemplo, los puntos son anotados en negro y los tringulos en azul. Girar el objeto alrededor y hacer una segunda copia de la parte de atrs si es necesario. De esta manera usted puede realizar un seguimiento. Tcnica en sentido horario: La orientacin se determina mediante la indexacin de las agujas del reloj. Esto significa que si usted est buscando en el tringulo (en este caso [4,0,5]) desde el exterior ver que el camino es hacia la derecha por el centro de la cara. La orden de creacin [4,0,5] es en sentido horario y por lo tanto correcta. La orden de creacin [0,4,5] es hacia la izquierda y por lo tanto incorrecta. Asimismo, cualquier otra orden en sentido de las agujas del reloj [4,0,5] obras: [5,4,0] y [0,5,4] tambin estn bien. Si se utiliza la tcnica de las agujas del reloj, usted siempre tendr sus caras exteriores (fuera de OpenSCAD, otros programas lo usan en sentido antihorario como el exterior sin embargo). Piense en ello como una regla de la mano izquierda: Si mantiene el tringulo y los dedos de su mano enrollados del mismo orden que los puntos, entonces su pulgar apunta hacia afuera.

Descripcin breve de un "Poliedro" * Los puntos definen todos los puntos / vrtices en la figura. * Tringulos es una lista de tringulos que se conectan hacia arriba los puntos / vrtices.

Cada punto, en la lista de puntos, se define con una posicin de 3- tuple x,y,z especifica. Los puntos en la lista de puntos se les asigna automticamente un identificador a partir de cero para el uso en la lista de tringulo (0,1,2,3, ... etc). Cada tringulo, en la lista de tringulo, se define mediante la seleccin de 3 de sus puntos (usando el identificador de puntos) fuera de la lista de puntos. Por ejemplo estos tringulos = [[0,1,2]] define un tringulo desde el primer punto (los puntos se hace referencia cero) para el segundo punto y luego al tercer punto. Al examinar cualquier tringulo desde el exterior, el tringulo debe listar sus 3 puntos en el orden de las agujas del reloj. Transformaciones: Escala (scale): Permite escalar los elementos secundarios utilizando el vector especificado. El nombre del argumento es opcional. Ejemplo: scale(v = [x, y, z]) { ... } Girar: Permite girar objetos unos grados alrededor del origen del sistema de coordenadas o alrededor de un eje arbitrario. Los nombres de los argumentos son opcionales, si los argumentos se presentan en el mismo orden que se especific anteriormente (x,y,z). Cuando se especifica una rotacin de ejes mltiples el modo en que la rotacin se aplica es en el siguiente orden: x, y, z. Ejemplo: rotate(a = deg, v = [x, y, z]) { ... } Por ejemplo, para voltear un objeto al revs, puede hacer lo siguiente: rotate(a=[0,180,0]) { ... } El ejemplo de arriba va girar el objeto 180 grados alrededor del eje y. El argumento opcional vle permite definir un eje arbitrario en el que el objeto se girar. Ejemplo con origen arbitrario. rotate(a=45, v=[1,1,0]) { ... } Este ejemplo se gira el objeto 45 grados alrededor del eje definido por el vector [1,1,0]. Traducir (translate): Traduce (mueve) sus elementos secundarios a lo largo del vector especificado. El nombre del argumento es opcional. Ejemplo: translate(v = [x, y, z]) { ... } Espejo(mirror): Refleja el elemento secundario en un plano que pasa por el origen. El argumento para duplicar () es el vector normal a dicho plano. Ejemplo:

mirror([ 0, 1, 0 ]) { ... } Multmatrix: Multiplica la geometra de los elementos secundarios con la matriz de transformacin dada 4x4. multmatrix(m = [...]) { ... } Ejemplo (se traduce por [10, 20, 30]): multmatrix(m = [ [1, 0, 0, 10], [0, 1, 0, 20], [0, 0, 1, 30], [0, 0, 0, 1] ]) cylinder(); Ejemplo (gira 45 grados en el plano XY y se traduce por [10,20,30]): angle=45; multmatrix(m = [ [cos(angle), -sin(angle), 0, 10], [sin(angle), cos(angle), 0, 20], [0, 0, 1, 30], [0, 0, 0, 1] ]) union() { cylinder(r=10.0,h=10,center=false); cube(size=[10,10,10],center=false); } Color: Muestra los elementos secundarios utilizando el especificado color RGB + valor alfa. Esto slo se utiliza para la vista previa F5 porque CGAL y STL (F6) no admiten actualmente color. El valor alfa por defecto es 1,0 (opaco) si no se especifica. Ejemplo: color([r, g, b, a]) { ... } Tenga en cuenta que el b r, g,, unos valores estn limitados a valores de tipo float(enteros) en el intervalo {0,0 ... 1,0} en lugar de los nmeros enteros ms tradicionales {0 ... 255}. Sin embargo, puede especificar los valores como fracciones, por ejemplo, para R, G, B en los nmeros enteros {0 ... 255} se puede utilizar:
color([ R/255, G/255, B/255 ]) { ... }

A partir de la versin 2011,12, los colores tambin se pueden elegir por su nombre. Por ejemplo, para crear una esfera roja, puede utilizar este cdigo:
color("red") sphere(5);

Alfa tambin est disponible con colores con nombre:


color("Blue",0.5) cube(5);

Los nombres de los colores disponibles son tomados de la lista del consorcio World Wide Web de color SVG. Este es un grfico de los nombres de los colores:

Minkowski: Es un mtodo que permite combinar objetos para lograr detalles ms definidos Ejemplo de uso: Digamos que usted tiene una caja plana, y desea un borde redondeado. Hay muchas maneras de hacer esto, pero Minkowski es muy elegante. Utilice un cubo y un cilindro:
$fn=50; cube([10,10,1]); cylinder(r=2,h=1);

A continuacin, realice una combinacin Minkowski de ellos:


$fn=50; minkowski() { cube([10,10,1]); cylinder(r=2,h=1); }

Cascara (hull): Al igual que el anterior es una forma de combinar objetos para crear mejores modelos. Ejemplo:
hull() { translate([15,10,0]) circle(10); circle(10); }

Funciones condicionales y de bucles(if/else/loop): For Loop: Recorre en iteracin los valores de un vector o de intervalo. Reitera un proceso siempre que ciertas condiciones (definidas por el usuario) sean verdaderas. Vector versin: for (variable=<vector>) <do_something> - <variable> en espaol: for (variable = <rango>) <hacer mientras>-<variable> se asigna a cada valor sucesivo en el vector. Versin Rango: for (variable=<range>) <do_something> en espaol: for (variable = <rango>) <hacer mientras> Rango: [<start>:<end>] en espaol: [<inicio>: <fin>] - iteracin de principio a fin inclusive. Tambin funciona si <fin> si es ms pequeo que <inicio> Rango:[<start>:<increment>:<end>] [<inicio>: <increment>: <fin>] - itera de principio a fin con el incremento dado. El incremento puede ser una fraccin. Nota: El incremento se da como un valor absoluto y no puede ser negativa. Si <fin> es menor que el incremento <inicio> debe permanecer sin

cambios. Advertencia: Si el incremento no es un divisor par de <fin> - <inicio>, el valor iterador para la ltima iteracin ser <fin> - (<fin> - <inicio> mod <increment>). Bucles anidados: for ( variable1 = <range or vector>, variable2 = <range or vector> ) <do something, using both variables> en espaol: for (variable1 = <Rango o vector>, variable2 = <Rango o vector>) <Hacer algo utilizando las variables> Los bucles pueden anidarse, al igual que en los programas normales. Una abreviatura es que ambas iteraciones se pueden dar en el mismo para la declaracin. Ejemplo de uso 1 - iteracin sobre un vector:
for (z = [-1, 1]) // two iterations, z = -1, z = 1 { translate([0, 0, z]) cube(size = 1, center = false); }

Ejemplo 2a - iteracin sobre un rango:


for ( i = [0 : 5] ) { rotate( i * 360 / 6, [1, 0, 0]) translate([0, 10, 0]) sphere(r = 1); }

Ejemplo 2b - iteracin en un rango que especifica un incremento: / / Nota: El parmetro central en la designacin de rango

/ / ('0 .2 'En este caso) es el incremento por un valor / / Advertencia: Dependiendo del valor "increment-by ', el / / Valor real final ser menor que el dado.
for ( i = [0 : 0.2 : 5] ) { rotate( i * 360 / 6, [1, 0, 0]) translate([0, 10, 0]) sphere(r = 1); }

Ejemplo de uso 3 - iteracin sobre un vector de vectores (rotacin):


for(i = [ [ 0, 0, 0], [ 10, 20, 300], [200, 40, 57], [ 20, 88, 57] ]) { rotate(i) cube([100, 20, 20], center = true); }

Sintaxis 4 ejemplo - iteracin sobre un vector de vectores (trasladacin):


for(i = [ [ 0, 0, 0], [10, 12, 10], [20, 24, 20], [30, 36, 30], [20, 48, 40], [10, 60, 50] ]) { translate(i) cube([50, 15, 10], center = true); }

Ejemplo de bucle anidado:


for (xpos=[0:3], ypos = [0,2,6]) // do four iterations, using the 3 values of the vector translate([xpos, ypos, 0]) cube([0.5, 0.5, 0.5]);

Interseccin bucle For: Recorre en iteracin los valores de un vector o rango y toma una interseccin de los contenidos. Nota: intersection_for () es un trabajo que gira a causa de un problema que no puede obtener los resultados esperados utilizando una combinacin de la norma para las declaraciones for () e intersection(). Parmetros: <loop variable name> en espaol: <nombre de la variable del bucle> Nombre de la variable a utilizar dentro del bucle for. Ejemplo de uso 1 - bucle en un rango de: intersection_for(n = [1 : 6]) { rotate([0, 0, n * 60]) { translate([5,0,0]) sphere(r=12); } }

Sintaxis 2 ejemplo de rotacin:


intersection_for(i = [ [ 0, 0, 0], [ 10, 20, 300], [200, 40, 57], [ 20, 88, 57] ]) { } rotate(i) cube([100, 20, 20], center = true);

Si (if): Condicionalmente evalua un sub-rbol. Evalua algo y realiza un proceso segun el resultado de esa evalucin. Parmetros: Es una expresin booleana, se debe utilizar como condicin. Ejemplo de uso:
if (x > y) { cube(size = 1, center = false); } else { cube(size = 2, center = true); }

Asignar Declaracin: Establezca las variables para un nuevo valor para un sub-rbol. Parmetros: Las variables que deben ser (re-) asignado Ejemplo de uso:
for (i = [10:50]) { assign (angle = i*360/20, distance = i*10, r = i*2) { rotate(angle, [1, 0, 0]) translate([0, distance, 0]) sphere(r = r); } }

Modelado CSG: Unin: Crea una unin de todos sus nodos secundarios. Esta es la suma de todos los objetos. Ejemplo de uso:
union() { cylinder (h = 4, r=1, center = true, $fn=100); rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100); }

Diferencia: Resta la 2 foma (y todo el resto de la forma) los nodos secundarios de la primera forma. Ejemplo:
difference() { cylinder (h = 4, r=1, center = true, $fn=100); rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100); }

Interseccin: Crea la interseccin de todos los nodos secundarios. Esto mantiene la parte de superposicin. Ejemplo:
intersection() { cylinder (h = 4, r=1, center = true, $fn=100); rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100); }

Renderizar: Siempre calcula el modelo de CSG para esta estructura (incluso en OpenCSG modo de vista previa). El parmetro convexidad especifica el nmero mximo de los lados frontales (back lados) un rayo que intersecta el objeto al que podra penetrar. Este parmetro slo es necesario para visualizar correctamente el objeto en OpenCSG modo de vista previa y no tiene efecto sobre el resultado final del objeto.

Ejemplo:
render(convexity = 1) { ... }

Crcteres de modificacin: Modificador del fondo. Esto sirve para determinar un fondo. Ejemplo:
difference() { // start objects cylinder (h = 4, r=1, center = true, $fn=100); // first object that will subtracted % rotate ([90,0,0]) cylinder (h = 4, r=0.3, center = true, $fn=100); // second object that will be subtracted % rotate ([0,90,0]) cylinder (h = 4, r=0.9, center = true, $fn=100); }

Modificador de depuraracin: Utilice este subrbol como de costumbre en el proceso de representacin, sino tambin dibujar sin modificar en rosa transparente.
difference() { // start objects cylinder (h = 4, r=1, center = true, $fn=100); // first object that will subtracted # rotate ([90,0,0]) cylinder (h = 4, r=0.3, center = true, $fn=100); // second object that will be subtracted # rotate ([0,90,0]) cylinder (h = 4, r=0.9, center = true, $fn=100); }

Modificador de la raz(root): Ignora el resto del diseo y el uso de este subrbol como root diseo. Ejemplo:
! { ... }

Desactivar Modificador: Haga caso omiso de este subrbol completo.


* { ... }

Modulos: Define su propio mdulo (ms o menos comparable a una macro o una funcin en otros idiomas) es una poderosa manera de reutilizar los procedimientos.
module hole(distance, rot, size) { rotate(a = rot, v = [1, 0, 0]) { translate([0, distance, 0]) { cylinder(r = size, h = 100, center = true); } } }

En este ejemplo, pasando por los parmetros de distancia, rooteo y tamao le permiten volver a utilizar esta funcin varias veces, salvando muchas lneas de cdigo y la presentacin de su programa ser mucho ms fcil de leer. Usted puede crear una instancia del mdulo y pasar valores (o frmulas) para los parmetros al igual que una llamada a la funcin C:
hole(0, 90, 10);

Los nodos secundarios de la creacin de instancias del mdulo se pueden acceder mediante el child () declaracin en el mdulo:
module lineup(num, space) { for (i = [0 : num-1]) translate([ space*i, 0, 0 ]) child(0); } lineup(5, 65) sphere(30);

Si usted necesita para hacer su mdulo iterar sobre todos los child ,tendr que hacer uso de la variable $ child, por ejemplo:
module elongate() {

for (i = [0 : $children-1]) scale([10 , 1, 1 ]) child(i);

elongate() { sphere(30); cube([10,10,10]); cylinder(r=10,h=50); }

Se pueden especificar valores predeterminados para los argumentos:

module house(roof="flat",paint=[255,0,0]){ color(paint) if(roof=="flat"){ translate([0,-1,0]) cube(); } else if(roof=="pitched"){ rotate([90,0,0]) linear_extrude(height=1) polygon(points=[[0,0],[0,1],[0.5,1.5],[1,1],[1,0]],paths=[ [0,1,2,3,4] ]); } else if(roof=="domical"){ translate([0,-1,0]) union(){ translate([0.5,0.5,1]) sphere(r=0.5,$fn=20); cube(); } } }

Y a continuacin, utilice uno de los siguientes mtodos para proporcionar los argumentos:
union(){ house(); translate([2,0,0]) house("pitched"); translate([4,0,0]) house("domical",[0,255,0]); translate([6,0,0]) house(roof="pitched",paint=[0,0,255]); translate([8,0,0]) house(paint=[0,0,0],roof="pitched"); translate([10,0,0]) house(roof="domical"); translate([12,0,0]) house(paint=[0,128,128]); }

Declaracines de inclusin: Para incluir cdigo desde archivos externos en OpenSCAD, hay dos comandos disponibles: Incluyen el comando <filename> como si el contenido del archivo incluido se escribiera en el archivo incluido, y permite utilizar importaciones <filename> mdulos y funciones, pero no ejecuta ningn comando que no sean esas definiciones. Los archivos de biblioteca se buscan en la misma carpeta que desde el diseo donde esta abierto, o en la carpeta de la biblioteca de la instalacin OpenSCAD. Puede utilizar una ruta de acceso relativa a cualquiera de los dos. Si ellos estn en otra parte debe dar la ruta completa. Una serie de archivos de biblioteca se incluyen en la instalacin. Un archivo de biblioteca para la generacin de los anillos podra tener este aspecto (que define una funcin y proporciona un ejemplo): ring.scad:
module ring(r1, r2, h) { difference() { cylinder(r = r1, h = h); translate([ 0, 0, -1 ]) cylinder(r = r2, h = h+2); } } ring(5, 4, 10);

Incluyendo la biblioteca utilizando:


include <ring.scad>; rotate([90, 0, 0]) ring(10, 1, 1);

resultara en el anillo de ejemplo que se muestra, adems de girar el anillo, pero:


use <ring.scad>; rotate([90, 0, 0]) ring(10, 1, 1);

slo muestra el anillo girado.

Caractersticas de otros lenguajes: Las variables especiales: Todas las variables que empiezan con un "$" son variables especiales. La semntica es similar a las variables especiales en LISP: tienen dinmica en lugar de un mbito lxico. $ fa, fs $ y $ fn: La $fa, $fs y $fn son variables especiales que controlan el nmero de facetas utilizadas para generar un arco: $ fa es el ngulo mnimo de un fragmento. Incluso un enorme crculo no tiene ms de 360 fragmentos dividido por este nmero. El valor predeterminado es 12 (es decir, 30 fragmentos de un crculo completo). El valor mnimo permitido es de 0,01. Cualquier intento de establecer un valor ms bajo causar una advertencia. $ fs es el tamao mnimo de un fragmento. Debido a esta variable crculos muy pequeos tienen un menor nmero de fragmentos que los especificados usando $ fa. El valor predeterminado es 2. El valor mnimo permitido es de 0,01. Cualquier intento de establecer un valor ms bajo causar una advertencia. $ fn suele ser 0. Cuando esta variable tiene un valor mayor que cero, las otras dos variables son ignoradas y el crculo completo se representa utilizando este nmero de fragmentos. El valor predeterminado es 0. Cuando $fa y $ fs se utilizan para determinar el nmero de fragmentos de un crculo, entonces OpenSCAD nunca usar menos de 5 fragmentos. Este es el cdigo C que calcula el nmero de fragmentos en un crculo:
int get_fragments_from_r(double r, double fn, double fs, double fa) { if (fn > 0.0) return (int)fn; return (int)ceil(fmax(fmin(360.0 / fa, r*2*M_PI / fs), 5)); }

Las esferas son primero cortadas en rebanadas, tantas como el nmero de fragmentos que se utilizan para representar un crculo de radio de la esfera, y luego cada rebanada se representa en tantos

fragmentos como se necesiten para segmentar el radio. Es posible que usted haya reconocido ya que el polo de la esfera es por lo general un pentgono. Esto es por qu. El nmero de fragmentos de un cilindro se determina utilizando el mayor de los dos radios. El mtodo tambin se utiliza al representar crculos y arcos de archivos DXF. Puede generar mbitos de alta resolucin al restablecer los valores $ FX en el mdulo de instancia:
$fs = 0.01; sphere(2);

o simplemente pasando la variable especial como parmetro:


sphere(2, $fs = 0.01);

Usted puede incluso escalar la variable especial en lugar de resetearla cero:


sphere(2, $fs = $fs * 0.01);

$t: La variable $ t se utiliza para la animacin. Si se habilita el marco de la animacin con view-> animar y dar un valor para "FPS" y "Pasos", el campo "Tiempo" muestra el valor actual de $ t. Con esta informacin en mente, usted puede animar su diseo. El diseo se vuelve a compilar cada 1 / "FPS" segundos y $ t aumenta en 1 / "Pasos" los "Pasos" de los tiempos, terminando en cualquiera de los dos t = $ 1 o $ t = 1-1/steps. Si "Pictures" Dump est activada, las imgenes se crearn en el mismo directorio que el archivo de scad, utilizando los siguientes valores $ t, y se guarda en los siguientes archivos.: $t=0/Steps filename="frame00001.png" $t=1/Steps filename="frame00002.png $t=2/Steps filename="frame00003.png" ... $t=1-3/Steps filename="frame<Steps-2>.png" $t=1-2/Steps filename="frame<Steps-1>.png" $t=1-1/Steps filename="frame00000.png" O bien, para otros valores de los pasos, se sigue este patrn: $t=0/Steps filename="frame00001.png" $t=1/Steps filename="frame00002.png $t=2/Steps filename="frame00003.png" ... $t=1-3/Steps filename="frame<Steps-2>.png" $t=1-2/Steps filename="frame<Steps-1>.png" $t=1-1/Steps filename="frame<Steps-0>.png"

$t=1-0/Steps filename="frame00000.png"

El patrn que se eligo parece ser un impredecible, pero una coherente, funcin de a pasos. Por ejemplo, cuando Pasos(steps) = 4, se sigue el primer patrn, y da salida a un total de 4 archivos. Cuando Pasos = 3, se deduce el segundo patrn, y tambin genera 4 archivos. Siempre ser salida, ya sea Pasos o Pasos + 1 archivos, aunque puede que no sea tan previsible. Cuando haya terminado, se envolver alrededor y recrear cada uno de los archivos, a travs de un bucle y volver a crearlos en un bucle infinito. $ vpr y $ vpt: Estos contienen los viewport actuales de rotacin y traslacin - en el momento de hacer el render. Mover la ventana no la actualiza. Durante una animacin se actualizanen cada frame. $ vpr muestra la rotacin. $ vpt muestra la traduccin (es decir, no se vern afectados por rotacin y zoom) No es posible escribir en ellos y por lo tanto tampoco se pueden cambiar los parmetros del visor (aunque eso podra ser una idea bastante buena). Ejemplo:
cube([10,10,$vpr[0]/10]);

Lo que produce que cambie de tamao en el cubo basado en el ngulo de visin, si un bucle de animacin est activo (que no necesita usar la variable $ t) Tambin puede hacer que los bits de un modelo complejo se desvanescan a medida que cambia la vista. El comando de men Edicin - Pegar Viewport rotacin / traslacin copia el valor actual de la ventana, pero no la actual $vpt o $vpd. Funciones definidas por el usuario: Permite definir una funcin para mejorar la legibilidad del cdigo y la reutilizacin. Ejemplos de uso:
my_d=20; function r_from_dia(my_d) = my_d / 2; echo("Diameter ", my_d, " is radius ", r_from_dia(my_d));

Declaraciones Echo: Esta funcin imprime el contenido de la ventana de compilacin. til para depurar cdigo. Ejemplos de uso:
my_h=50; my_r=100; echo("This is a cylinder with h=", my_h, " and r=", my_r); cylinder(h=my_h, r=my_r);

Render: Fuerza la generacin de una malla incluso en el modo de previsualizacin. Es til cuando las operaciones booleanas son demasiado lentos para realizar el seguimiento. Necesidades descripcin. Ejemplos de uso:
render(convexity = 2) difference() { cube([20, 20, 150], center = true); translate([-10, -10, 0]) cylinder(h = 80, r = 10, center = true); translate([-10, -10, +40]) sphere(r = 10); translate([-10, -10, -40]) sphere(r = 10); }

Superficie Ejemplo 1:
//surface.scad

surface(file = "surface.dat", center = true, convexity = 5); %translate([0,0,5])cube([10,10,10], center =true); #surface.dat 10 9 8 7 6 5 5 5 5 5 9 8 7 6 6 4 3 2 1 0 8 7 6 6 4 3 2 1 0 0 7 6 6 4 3 2 1 0 0 0 6 6 4 3 2 1 1 0 0 0 6 6 3 2 1 1 1 0 0 0 6 6 2 1 1 1 1 0 0 0 6 6 1 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0

Resultado:

Ejemplo 2:
// example010.dat generated using octave: // d = (sin(1:0.2:10)' * cos(1:0.2:10)) * 10; // save("example010.dat", "d"); intersection() { surface(file = "example010.dat", center = true, convexity = 5); rotate(45, [0, 0, 1]) surface(file = "example010.dat", center = true, convexity

= 5); }

Buscar: Uso del patrn:


"search" "(" ( match_value | list_of_match_values ) "," vector_of_vectors ("," num_returns_per_match ("," index_col_num )? )? ")"; match_value : ( Value::NUMBER | Value::STRING ); list_of_values : "[" match_value ("," match_value)* "]"; vector_of_vectors : "[" ("[" Value ("," Value)* "]")+ "]"; num_returns_per_match : int; index_col_num : int;

Los siguientes son algunos ejemplos de uso. Los valores del ndice regresan como lista Ejemplo 1:
search("a","abcdabcd");

Devuelve:
[0,4]

Ejemplo 2:
search("a","abcdabcd",1);

Devuelve:
[0]

Ejemplo 3:
search("e","abcdabcd",1);

Devuelve:
[]

Ejemplo 4:
search("a",[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8], ["e",9] ]);

Devuelve:
[0,4]

Buscar en otra columna, los valores de retorno de indexacin: Ejemplo 5:


search(3,[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",3] ], 0, 1);

Devuelve:
[[0,4],[1,5],[2,6]]

Buscar en la lista de valores: Ejemplo 6: Devuelve todos los elementos relacionados con elemento de bsqueda vector:
search("abc",[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8], ["e",9] ], 0);

Devuelve:
[[0,4],[1,5],[2,6]]

Ejemplo 7: Regreso primer partido por elemento de bsqueda vector, vector especial de regreso caso:
search("abc",[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8], ["e",9] ], 1);

Devuelve:
[0,1,2]

Ejemplo 8: Mostrar los primeros dos partidos por elemento de bsqueda vector, vector de vectores:
search("abce",[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8], ["e",9] ], 2);

Devuelve:
[[0,4],[1,5],[2,6],[8]]

Buscar en la lista de strings: Ejemplo 9:


lTable2=[ ["cat",1],["b",2],["c",3],["dog",4],["a",5],["b",6],["c",7],["d",8], ["e",9],["apple",10],["a",11] ]; lSearch2=["b","zzz","a","c","apple","dog"]; l2=search(lSearch2,lTable2); echo(str("Default list string search (",lSearch2,"): ",l2));

Resultado:
ECHO: "Default list string search ([\"b\", \"zzz\", \"a\", \"c\", \"apple\", \"dog\"]): [1, [], 4, 2, 9, 3]"

Utilizando el susbsistema 2D. 2D bsico:


Todas las primitivas 2D pueden ser transformadas al formato 3D. Normalmente se utiliza como parte de una extrusin 3D. Aunque son muy delgadas, se representan con un espesor de 1. Cuadrado: Crea un cuadrado en el origen del sistema de coordenadas.Cuando la funcin centrar sea verdadera centrar el cuadrado en el origen, de lo contrario, se crea en el primer cuadrante. Los nombres de los argumentos son opcionales, si los argumentos se dan en el mismo orden como se especifica en los parmetros. Parmetros: Tamao Decimal o 2 matriz de Array. Si slo hay un nmero dado, el resultado ser un cuadrado con lados de esa longitud. Si una matriz de valor 2 se da, entonces los valores se corresponden a las longitudes de los ejes X y Y lados. El valor por defecto es 1. Centrar Booleano. Esto determina la posicin del objeto. Si es verdad, objeto est centrado en (0,0). De lo contrario, el cuadrado se coloca en el cuadrante positivo con una esquina en (0,0). El valor predeterminado es false. Ejemplo: square ([2,2],center = true); Crculo: Crea un crculo en el origen del sistema de coordenadas. El nombre del argumento es opcional. Parmetros R: Decimal. Este es el radio del crculo. La resolucin del crculo se basar en el tamao del crculo. Si usted necesita un crculo pequeo, de alta resolucin se puede evitar esto haciendo un crculo grande, entonces la ampliacin debe ser utilizando un factor apropiado, o puede establecer $ fn u otras variables especiales. El valor por defecto es 1. Ejemplos: circle(); // uses default radius, r=1 circle(r = 10); scale([1/100, 1/100, 1/100]) circle(200); // this will create a high resolution circle with a 2mm radius circle(2, $fn=50); // Another way to create a high-resolution circle with a radius of 2.

Polgono: Crea un polgono con los puntos y trayectorias especificados . Parmetros: Puntos: Vector compuesto por 2 vectores de los elementos elemento, es decir, la lista de los puntos del polgono. Trayectorias: Ya sea un solo vector, la enumeracin de la lista de puntos, ya sea el fin de atravesar los puntos, o, un

vector de vectores, o bien una lista de listas de puntos para cada curva particular del polgono. Este ltimo es necesario si el polgono tiene agujeros. El parmetro es opcional y si se omite, se supone que los puntos en orden (El "PN" componentes del vector de trayectorias es 0-indexado referenciando a los elementos del vector de puntos.) Convexidad: Integer. Nmero de curvas "hacia adentro", es decir cruces esperados de ruta de una lnea a travs de la arbitraty polgono. Uso:
polygon(points = [ [x, y], ... ], paths = [ [p1, p2, p3..], ...], convexity = N);

Ejemplo:
polygon(points=[[0,0],[100,0],[0,100],[10,10],[80,10],[10,80]], paths=[[0,1,2], [3,4,5]]);

En este ejemplo, tenemos 6 puntos (tres para el "exterior" del tringulo, y tres para el "interior" de uno). Ponemos en contacto a cada uno con dos 2 trayectorias. Cada elemento de una ruta debe corresponder a la posicin de un punto definido en el vector de puntos, por ejemplo, "1" se refiere a [100,0]. Aviso: Con el fin de obtener un objeto 3D, ya sea extruir un polgono 2D (lineal o (rotar) o utilice directamente el slido primitivo poliedro. Cuando se utiliza la extrusin para formar slidos, es importante darse cuenta de que la direccin de creacin del polgono es significativa. Si un polgono se enrolla en la direccin incorrecta con respecto al eje de rotacin, el slido final (despus de la extrusin) puede terminar invisible. Este problema puede ser verificado al voltear el polgono utilizando la escala ([-1,1]) (suponiendo que la extrusin se realiza alrededor del eje Z como est por defecto). Aviso: sin embargo, a diferencia de las rdenes de dibujo 2D al operar en los ejes rotulados como X e Y, la extrusin ordena implcitamente traducir estos objetos en coordenadas XZ y girar alrededor del eje Z. Ejemplo:
polygon([[0,0],[10,90],[11,-10]], convexity = N);

Import_dxf: Leer un archivo DXF y crear una forma 2D. Ejemplo:


linear_extrude(height = 5, center = true, convexity = 10) import_dxf(file = "example009.dxf", layer = "plate");

Proyeccin de 2D a 3D. Usando la funcin de projection(), puede crear dibujos 2D en modelos 3D, y exportarlas al formato dxf. Funciona mediante la proyeccin de un modelo 3D al plano (x, y), con z en 0. Si se cut = true slo los puntos con z = 0 se consideran (cortes efectivos del objeto), con cut = false, puntos por encima y por debajo del plano se consideran as (la creacin de una proyeccin adecuada). Ejemplo: Considere example002.scad, que viene con OpenSCAD. Se puede cargar y representar a example002.stl (con F6). A continuacin, puede cargar el archivo de nuevo en stl OpenSCAD, as:
import_stl("example002.stl");

Entonces usted puede hacer un "corte" de proyeccin, que le da la "rebanada" del plano xy con z = 0.
projection(cut = true) import_stl("example002.stl");

Tambin se puede hacer una proyeccin "ordinaria" , lo que da una especie de "sombra" del objeto sobre el plano xy.
projection(cut = false) import_stl("example002.stl");

Qu pasa si tomamos ejemplo 002 y moverlo hacia arriba, fuera del plano XY? Y gira?
translate([0,0,25]) rotate([90,0,0]) import_stl("/tmp/d.stl");

Ahora, usted puede proyectar y obtener una "vista lateral" de todo el objeto.
projection(cut=false) import_stl(/full/path/to/stl);

Extrusin lineal: La extrusin lineal es una operacin de modelado que toma un polgono 2D como entrada y lo extiende en la tercera dimensin. De esta manera se crea una forma 3D. Uso:
linear_extrude(height = fanwidth, center = true, convexity = 10, twist = -fanrot) {...}

(Debe utilizar nombres de parmetros debido a un problema de compatibilidad con versiones anteriores) Si falla la extrusin de una forma 2D no trival, intente ajustar el parmetro de convexidad (por defecto no es 10, pero 10 es un "buen" valor para probarlo). Twist(Giro): Twist es el nmero de grados a travs del cual se extruye la forma. Ajuste del giro = parmetro 360 se

extruye a travs de una revolucin. El sentido de giro sigue la regla de la mano izquierda o sentido antihorario.

Twist al 0.
linear_extrude(height = 10, center = true, convexity = 10, twist = 0) translate([2, 0, 0]) circle(r = 1);

Twist al -100.

linear_extrude(height = 10, center = true, convexity = 10, twist = -100) translate([2, 0, 0]) circle(r = 1);

linear_extrude(height = 10, center = true, convexity = 10, twist = 100) translate([2, 0, 0]) circle(r = 1);

Twist al -500.

linear_extrude(height = 10, center = true, convexity = 10, twist = -500) translate([2, 0, 0]) circle(r = 1);

Centrar: Centrar determina si el objeto se centra despus de la extrusin, para que no se extruya hacia arriba y hacia abajo desde el centro, como se podra esperar.

center = true
linear_extrude(height = 10, center = true, convexity = 10, twist = -500) translate([2, 0, 0]) circle(r = 1);

El refinamiento de malla: El parmetro slices se puede utilizar para mejorar la salida.


linear_extrude(height = 10, center = false, convexity = 10, twist = 360, slices = 100) translate([2, 0, 0]) circle(r = 1);

Las variables especiales $ fn, fs y fa $ $ tambin se puede utilizar para mejorar el rendimiento.
linear_extrude(height = 10, center = false, convexity = 10, twist = 360, $fn = 100) translate([2, 0, 0]) circle(r = 1);

Extrusin rotativa. Una extrusin de rotacin es una extrusin lineal con un toque, literalmente. Desafortunadamente, no se puede utilizar para producir una hlice para roscas de tornillo porque el contorno 2D debe ser normal al eje de rotacin. Ejemplos:

Un toroide sencillo se puede construir usando una extrucin rotativa.


rotate_extrude(convexity = 10) translate([2, 0, 0]) circle(r = 1, $fn = 100);

El refinamiento de la malla.

Aumentar el nmero de fragmentos que la forma 2D se compone de mejorar la calidad de la malla, pero lleva ms tiempo.
rotate_extrude(convexity = 10) translate([2, 0, 0]) circle(r = 1, $fn = 100);

El nmero de los fragmentos utilizados por la extrusin tambin se puede aumentar.


rotate_extrude(convexity = 10, $fn = 100) translate([2, 0, 0]) circle(r = 1, $fn = 100);

Extrusin de un polgono: La extrusin tambin se puede realizar en polgonos con puntos elegidos por el usuario. Aqu se muestra un polgono simple.

rotate([90,0,0]) polygon( points=[[0,0],[2,1],[1,2],[1,3],[3,4],[0,5]] );

Aqu es el mismo polgono, rotacionalmente extruido, y con el refinamiento de la malla establecido en 200. El polgono debe tocar el eje de rotacin para la extrusin del trabajo, es decir, no se puede construir una rotacin de un polgono con un agujero.

rotate_extrude($fn=200) polygon( points=[[0,0],[2,1],[1,2],[1,3],[3,4],[0,5]] );

Descripcin de los parmetros de extrusin: Parmetros para todos los modos de extrusin: Convexidad: Integer. El parmetro convexidad especifica el nmero mximo de los lados frontales (back sides) es un rayo que intersecta al objeto al que podra penetrar. Este parmetro slo es necesario para visualizar correctamente el objeto en OpenCSG modo de vista previa y no tiene efecto sobre la prestacin del poliedro.

Esta imagen muestra una forma 2D con una convexidad de 4, como se indica el rayo rojo cruza la forma 2D un mximo de 4 veces. La convexidad de una forma 3D se determina de una manera similar. Si lo establece a 10 debera funcionar bien para la mayora de los casos. Parmetros de extrusin lineal solamente. height The extrusion height center If true the solid will be centered after extrusion twist The extrusion twist in degrees Similar to special variable $fn without being passed down to the child 2D slices shape.

Extrusin DFX.(este texto se encuentra incompleto). Con las declaraciones de extrusin DXF es posible convertir archivos DXF 2D directamente en objetos 3D. Extrusin lineal: Con las declaraciones de extrusin DXF es posible convertir objetos 2D en objetos 3D.
linear_extrude(file = "example009.dxf", layer = "fan_top", height = fanwidth, center = true, convexity = 10, twist = -fanrot);

Extrusin rotativa: Una extrusin rotativa es una extrusin lineal con un toque, literalmente.
rotate_extrude(file = "example009.dxf", layer = "fan_side", origin = fan_side_center, convexity = 10);

Descripcin de los parmetros de extrusin: Parmetros para todos los modos de extrusin: file The name of the DXF file to extrude layer The name of the DXF layer to extrude convexity See 2D to 3D Extrusion [x,y] coordinates to use as the drawing's center, in the units specified in the DXF origin file scale FIXME Parmetros de extrusin lineal slos.

height The extrusion height If true, extrusion is half up and half down. If false, the section is extruded center up. twist The extrusion twist in degrees slices FIXME Otros formatos 2d. En la actualidad, OpenSCAD slo es compatible con DXF como un formato de grficos para grficos en 2D. Otros formatos comunes son PS / EPS y SVG. PS / EPS El programa pstoedit puede hacer converciones entre diferentes formatos de grficos vectoriales. OpenSCAD necesita la opcin -polyaslines para pasa al plugin de salida dxf para entender el archivo. Las opciones del DT-instruye pstoedit para hacer textos, que suelen ser lo que quieres si incluye texto. (Si la resolucin del texto representado en trminos de nmero de polgonos es demasiado baja, la solucin ms fcil es escapar los eps antes de la conversin.)
pstoedit -dt -f dxf:-polyaslines infile.eps outfile.dxf

SVG pstoedit no entiende SVG, EPS, pero se puede convertir de un SVG. inkscape, un editor de SVG se puede utilizar para la conversin.
inkscape -E intermediate.eps infile.svg pstoedit -dt -f dxf:-polyaslines intermediate.eps outfile.dxf

Automatizacin de makefile. La conversin se puede automatizar mediante el sistema de marca, para hacer eso debe poner las siguientes lneas en su Makefile:
all: my_first_file.dxf my_second_file.dxf another_file.dxf %.eps: %.svg inkscape -E $@ $< %.dxf: %.eps pstoedit -dt -f dxf:-polyaslines $< $@

La primera lnea especifica qu archivos DXF se genera cuando se invoca a make en el directorio actual. El segundo prrafo especifica cmo convertir un archivo con extensin. Svg a un archivo con extensin. Eps, y el tercero de Eps. a Dxf. Importar y exportar STL:

import
Importa un archivo para su uso en el modelo actual OpenSCAD. Parametros: "<file name>" Una cadena que contiene la ruta de acceso al archivo de STL para incluir. Las comillas son necesarias. Ejemplo:
import("example012.stl");

Notas: En la ltima versin de OpenSCAD, import () ahora se utiliza para importar tanto en 2D (DXF para la extrusin) y los archivos 3D (STL). import_stl: <DEPRECATED .. Utilice el comando de importacin en lugar ..> Importa un archivo de STL para su uso en el modelo actual OpenSCAD Parmetros "<file name>" Una cadena que contiene la ruta de acceso al archivo de STL para incluir.Las comillas son necesarias. Convexidad: Integer. El parmetro convexidad especifica el nmero mximo de los lados frontales (back sides)es un rayo que intersecta el objeto podra penetrar. Este parmetro slo es necesario para visualizar correctamente el objeto en OpenCSG modo de vista previa y no tiene efecto sobre la prestacin del poliedro. Ejemplo:
import_stl("example012.stl", convexity = 5);

Exportacin a STL. Para exportar su diseo, seleccione "Exportar como STL ..." desde el "diseo" del men, a continuacin, escriba un nombre de archivo en el cuadro de dilogo resultante. No se olvide de aadir la extensin ". Stl". Solucin de Problemas: Despus de compilar y hacer GCAL (F6), es posible ver que su diseo es simple: no. Esas son malas noticias. Vea la lnea 8 en la siguiente salida de OpenSCAD 2010,02:
Parsing design (AST generation)... Compiling design (CSG Tree generation)... Compilation finished. Rendering Polygon Mesh using CGAL... Number of vertices currently in CGAL cache: 732 Number of objects currently in CGAL cache: 12 Top level object is a 3D object:

Simple: no Valid: yes Vertices: 22 Halfedges: 70 Edges: 35 Halffacets: 32 Facets: 16 Volumes: 2 Total rendering time: 0 hours, 0 minutes, 0 seconds Rendering finished.

Cuando intenta exportar este a STL obtendr un mensaje como:


Object isn't a valid 2-manifold! Modify your design..

"Manifold" significa que es "a prueba de agua" y que no hay ningn agujero en la geometra. En un objeto vlido de 2-variedad cada arista debe conectar exactamente dos facetas. Esto significa que el programa debe ser capaz de conectarse con una cara de un objeto. Por ejemplo si se utiliza un cubo de altura 10 paraa tallar algo de una medida ms amplia en otro cubo de altura 10, no est claro a qu cubo de la parte superior o inferior de la parte. As que el pequeo cubo debe ser un poco ms "larga" (o "corta"):
difference() { // original cube (size = [2,2,2]); // object that carves out # translate ([0.5,0.5,-0.5]) { cube (size = [1,1,3]); } }

module example1() { cube([20, 20, 20]); translate([-20, -20, 0]) cube([50, 50, 5], center } module example2() { cube([20.1, 20.1, 20]); translate([-20, -20, 0]) cube([50, 50, 5], center }

cube([20, 20, 20]); = true);

cube([20.1, 20.1, 20]); = true);

Otro ejemplo:
module example1() { cube([20, 20, 20]); translate([-20, -20, 0]) cube([50, 50, 5], center } module example2() { cube([20.1, 20.1, 20]); translate([-20, -20, 0]) cube([50, 50, 5], center } cube([20, 20, 20]); = true);

cube([20.1, 20.1, 20]); = true);

El ejemplo1 hara as:

El mdulo ejemplo1 no es vlido en la 2-variedad porque ambos cubos comparten un borde. Se tocan pero no se intersecan. Ejemplo 2 es un ejemplo de la 2-variedad vlido porque no existe una interseccin. Ahora en el borde cada uno debe conectarse exactamente con dos limitaciones de facetas de 2-variedades se se cumple. Piezas que estn restando deben extenderse ms all de la pieza original. Para referencia, otra situacin que hace que el diseo sea no exportable es cuando dos caras que son cada uno el resultado de un toque restan. A continuacin, el mensaje de error aparece.
difference () { cube ([20,10,10]); translate ([10,0,0]) cube (10); } difference () { cube ([20,10,10]); cube (10); }

Las superficies que tocan simplemente se controlan correctamente.


translate ([10,0,0]) cube (10); cube (10);

Usando OpenSCAD en un entorno de lnea de comandos: OpenSCAD no slo puede ser utilizado como una interfaz grfica de usuario, tambin trata los

argumentos como una lnea de comandos. Su uso de la lnea dice:


openscad [ -o output_file [ -d deps_file ] ] \ [ -m make_command ] [ -D var=val [..] ] filename

El uso de la versin es de OpenSCAD 30/09/2011.


openscad [ { -s stl_file | -o off_file | -x dxf_file } [ -d deps_file ] ]\ [ -m make_command ] [ -D var=val [..] ] filename

Opciones de exportacin: Cuando se invoca con la opcin, OpenSCAD no inicia la GUI, pero s ejecuta el archivo dado y lo exporta al output_file en un formato que es determinado segn que extensin sea la funcin (. Stl /. / Desactivar. Dxf,. CSG). Algunas versiones usan -s/-d/-o para determinar el formato de archivo de salida en lugar de comprobar "OpenSCAD - help". Si la opcin-d se da usa con de un comando de exportacin, todos los archivos accedidos mientras se realizaba la construccin de la malla estn escritos en el argumento de la-d en la sintaxis de un Makefile. Constantes: Para predefinir variables, utilice la opcin-D. Se puede administrar en varias ocasiones. Cada aparicin de-D debe ser seguida por una asignacin. A diferencia de las asignaciones normales en OpenSCAD, estas asignaciones no definen variables, si constantes, que no se pueden cambiar en el interior del programa, y por lo tanto se puede utilizar para sobrescribir los valores definidos en el programa en el momento de la exportacin. Las ubicadas a la derecha puede ser arbitrarias, incluyendo expresiones OpenSCAD operaciones matemticas y strings. Tenga en cuenta que las cadenas tienen que ir entre comillas, que tienen que ser para el shell. Para representar un modelo que toma un parmetro de calidad con el valor de "produccin", hay que correr.
openscad -o my_model_production.stl -D 'quality="production"' my_model.scad

Comando para crear archivos necesarios: En un complejo proceso de construccin, algunos archivos requeridos por un archivo OpenSCAD podran no ser encontrados, pero se pueden generar, por ejemplo, si se definen en un Makefile. Si OpenSCAD se le da la opcin -m make que comenzar a hacerse presente la primera vez que se intenta acceder a un archivo que falta. Ejemplo de makefile El -d y -m slo tienen sentido juntas. (-m sin-d no van a ser consideradas las dependencias no modificadas en la construccin de las exportaciones, sin-d ,-m requerira los archivos que se hayan realizado durante la primera ejecucin que genera las dependencias.) He aqu un ejemplo de un Makefile bsica que crea un archivo de un archivo stl scad del mismo nombre..:
# explicit wildcard expansion suppresses errors when no files are found include $(wildcard *.deps)

%.stl: %.scad openscad -m make -o $@ -d $@.deps $<

Cuando hacer my_example.stl se ejecuta por primera vez, que no encuentra archivos deps, slo depender de my_example.scad;. Desde my_example.stl todava no est preajustado, se crear incondicionalmente. Si OpenSCAD encuentra los archivos que faltan, los usara para construir la figura, y se mostrar una lista de todos los archivos que se utilizan en my_example.stl.deps. Al hacer que my_example.stl se llame posteriormente, su obnjetivo ser encontrar e incluir my_example.stl.deps y comprobar si alguno de los archivos que aparecen all, incluyendo my_example.scad, cambiado desde my_example.stl se construy sobre la base de sus marcas de tiempo. Slo si ese es el caso, se va a construir my_example.stl nuevo. Blancos automticos: En la construccin de los archivos STL similares desde un nico archivo de scad, tambin hay una manera de automatizarlos:
# match "module foobar() { // `make` me" TARGETS=$(shell sed '/^module [a-z0-9_-]*().*make..\?me.*$$/!d;s/module //;s/ ().*/.stl/' base.scad) all: ${TARGETS} # auto-generated .scad files with .deps make make re-build always. keeping the # scad files solves this problem. (explanations are welcome.) .SECONDARY: $(shell echo "${TARGETS}" | sed 's/\.stl/.scad/g') # explicit wildcard expansion suppresses errors when no files are found include $(wildcard *.deps) %.scad: echo -n 'use <base.scad>\n$*();' > $@ %.stl: %.scad openscad -m make -o $@ -d $@.deps $<

Todos los objetos que se suponen van a ser exportados automticamente tiene que ser definidos en base.scad en un mdulo propio con su futuro nombre de archivo (sin la extensin ". Stl"), y que un comentario como "/ / me hacen" en la lnea de la definicin del mdulo. Los "Targets =" de lnea recogen estas fuera del archivo de la base y crean los nombres de archivo. Estos se construirn cuando hacen todo (o hacen, para abreviar) es llamado. Como la convencin del ltimo ejemplo es la creacin de los archivos. Stl de. Archivos Comisin Cientfica del mismo nombre base, para cada uno de estos archivos, un archivo. Scad tiene que ser generado. Esto se hace en el ".% SCAD:" prrafo; my_example.scad ser un archivo OpenSCAD muy simple:
use <base.scad> my_example(); La linea". SECOND" est ah para evitar que make lo elimine el archivo. Archivos SCAD. Si lo elimina, no sera capaz de determinar automticamente qu archivos no necesitan reconstruir nada ms.

You might also like