You are on page 1of 53

MANUAL DE OPENSCAD Sobre este manual: Este manual es una traducin del manual en ingles de http://en. i!i"##!s.#rg/ i!

i/OpenSCAD$User$Manual Esta traduccin %ue reali&ada p#r 'i!ai La"s (http://!i!aila"s.c#m.ar/). La agradecem#s *ue si encuentra algun err#r # c#nsidera *ue ha+ una me,#r traduccin en algun punt# l# cam"ie en . Dat#s a tener en cuenta: Las pala"ras + %rases *ue estan en italics # en cursi-a c#rresp#nden a l# *ue se tipea(intr#duce) en el edit#r de #penscad. Las mismas se encuentran en ingles de"id# a *ue el pr#grama (c#m# t#d#s l#s #tr#s pr#gramas para pr#gramar) interpreta el cdig# en ingles. Palabras clave: Renderizado: es un t.rmin# usad# en ,erga in%#rm/tica para re%erirse al pr#ces# de generar una imagen desde un m#del#. Escape: una secuencia de escape c#nsiste en una "arra in-ertida (0) seguida de un# # m/s caracteres espec1%ic#s l#s cuales cumplen una determinada %uncin antes # despu.s de imprimir el mensa,e dependiend# de dnde se c#l#can dentr# del mensa,e. La / es el escape al plan# de l#s meta caracteres. Impresin: se re%iere a m#strar una secuencia de caracteres en el pr#grama. Escalar: en in%#rm/tica2 un escalar es un determinad# -al#r (*ue n# -ar1a t#d# a l# larg# del pr#grama in%#rm/tic#)2 una -aria"le2 # un camp#2 *ue s#lamente puede tener un -al#r en un ciert# m#ment# String: secuencia de caracteres2 # sea te3t#. Resetear: reiniciar2 -#l-er a 42 empe&ar de -uelta. Extrusin: la e3trusin es un pr#ces# utili&ad# para crear #",et#s c#n seccin trans-ersal de%inida + %i,a. El material se empu,a # se e3trae a tra-.s de un tr#*uel de una seccin trans-ersal deseada. Las d#s -enta,as principales de este pr#ces# p#r encima de pr#ces#s manu%acturad#s s#n la ha"ilidad para crear secci#nes trans-ersales mu+ c#mple,as + el tra"a,# c#n materiales *ue s#n *ue"radi&#s2 p#r*ue el material s#lamente encuentra %uer&as de c#mpresin + de ci&allamient#. Manual de openscad: Parte 1 Para nuestr# primer m#del# -am#s a crear un simple 5 3 6 3 7 cu"#ides. En el edit#r de OpenSCAD2 escri"a la siguiente l1nea de c#mand#s: E,empl# de us# 8 9 cu"# simple: Cu"# (:52627;)<

A"rir un d#cument#: A"rir un# de l#s much#s e,empl#s *ue -ienen c#n OpenSCAD (Archi-#2 E,empl#s2 p#r e,empl# e3ample445.scad). O usted puede c#piar + pegar este e,empl# simple en la -entana OpenSCAD:

E,empl# de us# 8 9 e3ample445.scad: di%erencia () = cu"# (642 centr# > true)< es%era (54)< ? traducir (:42 42 64;) = cilindr# (h > 742 r > 84)< ?

Despu.s de pegar el cdig# de e,empl# + presi#nam#s @A. A c#ntinuacin2 presi#ne @A para #"tener una -ista pre-ia gr/%ica de l# *ue ha escrit#. Bienes tres tip#s de m#-imient# en el marc# de -ista pre-ia: 8. Arrastre c#n el "#tn i&*uierd# del ratn para girar la -ista. El %#nd# -a a cam"iar l#s -al#res de r#tacin. 5. Arrastre c#n un "#tn de traducir #tra (m#-er) la -ista. El %#nd# -a a cam"iar l#s -al#res de traducir. 6. Usa el escr#ler del ratn de despla&amient# para acercar + ale,ar. Alternati-amente2 puede utili&ar la teclas C + 92 # arrastrar c#n el ratn mientras presi#na una tecla de ma+Dsculas. La l1nea Eie p#rt en la parte in%eri#r de la -entana se muestra un cam"i# en el -al#r de distancia. P#sici#nand# un #",et#: Fa hem#s -ist# cm# crear un cu"# simple. Nuestra pr3ima tarea es tratar de utili&ar el c#mand# de p#sici#namient# translate reali&ar un cu"# id.ntic# al lad# del cu"# e3istente: E,empl# de us# 8 9 p#sici#nar un #",et#: cu"e(:52627;)< translate (:62424;) = cu"e (:52627;)< ?

P#sici#namient# OpenSCAD un #",et#: 9N# ha+ punt# + c#ma despu.s del c#mand# translate 9Benga en cuenta *ue n# ha+ punt# + c#ma despu.s del c#mand# translate. Est# es p#r*ue el c#mand# translate re%iere al #",et# siguiente. Si el punt# + c#ma n# se #mite2 ent#nces el e%ect# de la traduccin en la p#sicin terminar1a2 + el cu"#ides segunda se c#l#ca en la misma p#sicin *ue la primera %#rma de cu"#. Eista de l#s m#del#s: El m#del# OpenSCAD %#rma de -ista #%rece una -ariedad de #pci#nes de -isuali&acin: 8. La -ista de las super%icies: La -ista de la super%icie es la -ista del m#del# inicial *ue aparece cuand# el cdig# de m#del# se representa p#r primera -e&. 5.Ged CHAL Sl# La -ista de cuadr1cula sl# presenta sl# el Iandamia,eI p#r de"a,# de la super%icie. Piense en la B#rre Ei%%el. 5.La -ista OpenCSH Este m#d# de -isuali&acin utili&ar/ la "i"li#teca a"ierta ge#metr1a slida c#nstructi-a para generar la -ista del m#del# utili&and# OpenHL. Si la "i"li#teca OpenCSH n# est/ disp#ni"le # la tar,eta de -1de# # l#s c#ntr#lad#res n# s#n c#mpati"les c#n OpenHL2 esta -ista se pr#ducir/ ninguna salida -isi"le. 6. La cuadr1cula sl# -er. 7. El impr#-isad# -er. La interfaz del openscad: @#rmas de na-egacin: El /rea de -isuali&acin se na-ega principalmente c#n el ratn: Arrastrar c#n el "#tn i&*uierd# del ratn hace girar la -ista a l# larg# de l#s e,es del /rea de -isuali&acin. C#nser-a la direccin del e,e -ertical . Arrastrar c#n el "#tn i&*uierd# del ratn cuand# la tecla de ma+Dsculas se pulsa permite girar la -ista a l# larg# del e,e -ertical + del e,e apuntand# hacia el usuari#. Arrastrar c#n el "#tn derech# # central permite m#-er el /rea -isi"le. Para acercar2 ha+ tres maneras: 9c#n la rueda de despla&amient#. 9arrastrand# c#n el "#tn derech# del ratn2 # scr#ler + la tecla shi%t. 9las teclas C + 9 La r#tacin se puede resta"lecer mediante el ata,# Ctrl C4. El m#-imient# resetearse usand# el ata,# Ctrl C P. Eer c#n%iguracin:

El /rea de -isuali&acin puede estar c#n%igurad# para utili&ar di%erentes m.t#d#s de representacin + #tras #pci#nes utili&and# el menD Eie . La ma+#r1a de las #pci#nes descritas a*u1 est/n disp#ni"les mediante l#s m.t#d#s a"re-iad#s tam"i.n. M#d#s de Genderi&ad#: OpenCSH (@J): En el m#d# OpenCSH2 la "i"li#teca OpenCSH se utili&a para generar el m#del# -isi"le. Esta "i"li#teca utili&a caracter1sticas a-an&adas de OpenHL (524) c#m# el tampn K + n# re*uiere una descripcin e3pl1cita de la %#rma resultante 9 en cam"i#2 hace un seguimient# de cm# l#s #",et#s se -an a c#m"inar. P#r e,empl#2 cuand# se crea un huec# es%.ric# en un cu"#2 l# primer# har/ -a a ser el cu"# en la tar,eta gr/%ica + lueg# -a a hacer la es%era2 per# en lugar de usar el tampn K para #cultar las partes de la es%era *ue est/n cu"iert#s p#r el cu"#2 -a a crear sl# la es%era2 al c#m"inarse resultan -isualmente en un cu"# c#n un huec# es%.ric#. Este m.t#d# pr#duce resultad#s instant/ne#s2 per# tiene "a,as tasas de %rames ("a,a -el#cidad para pr#cesar l#s gr/%ic#s) cuand# se tra"a,a c#n #",et#s mu+ c#n-e3#s. Benga en cuenta *ue la seleccin del m#d# OpenCSH usand# @J cam"iar/ a la -ista OpenCSH pasad# gener2 per# n# se -#l-er/ a e-aluar el cdig# %uente. Es p#si"le *ue desee utili&ar la %uncin de c#mpilacin (@A2 *ue se encuentra en el menD DiseL#) para ree-aluar el cdig# %uente2 c#nstruir l#s #",et#s OpenCSH + lueg# cam"iar a a la -ista OpenCSH. CHAL (Super%icies + Hrid2 @84 + @88): El CHAL es un acrnim# *ue se re%iere a la %uente a"ierta de He#metr1a C#mputaci#nal Mi"li#teca de Alg#ritm#s. En el m#d# de CHAL2 la "i"li#teca CHAL se utili&a para calcular la creacin del #",et# ra1&2 *ue lueg# se muestra usand# OpenHL simple. Este m.t#d# puede *ue necesite un p#c# de tiemp# cuand# se utili& p#r primera -e& c#n un nue-# pr#grama2 per# lueg# tendr/n ma+#res tasas de %rames (me,#ra la -el#cidad para pr#cesar l#s gr/%ic#s). Al igual *ue antes c#n OpenCSH2 @84 + @88 acti-an el m#d# de pantalla CHAL per# n# actuali&an l#s #",et#s su"+acentes< para ell#2 utilice la %uncin de c#mpilacin + renderi&ad# (@N2 *ue se encuentra en el menD DiseL#). Para c#m"inar las -enta,as de l#s d#s m.t#d#s de -isuali&acin2 se puede a,ustar selecti-amente partes de su pr#grama en una %uncin de renderi&ad# + l#s #"ligan a c#incidir uni%#rmemente aun c#n elm m#d# OpenCSH ha"ilitad#. Opci#nes de -isuali&acin: M#strar "#rdes (Ctrl C8): Si la #pcin de m#strar "#rdes est/ acti-ada2 tant# OpenCSH + el m#d# CHAL har/n "#rdes2 as1 c#m# las caras de l#s #",et#s2 en el m#d# CHAL se muestran inclus# l#s -.rtices. En el m#d# de cuadr1cula CHAL2 esta #pcin n# tiene e%ect#. Al acti-ar esta #pcin se muestra la di%erencia entre OpenCSH + CHAL c#n t#da claridad: En el m#d# CHAL se -e un "#rde di"u,ad# en t#das partes en las *ue IperteneceI2 OpenCSH n# m#strar/ "#rdes resultantes de las #peraci#nes "##leanas (-erdader# # %als#) 9 est# se de"e a *ue nunca se calcular#n e3pl1citamente2 per# est/n ,ust# d#nde l#s rec#rtes de un #",et# K c#mien&a # termina. M#strar e,es (Sh# ) (Ctrl C5): Si la #pcin M#strar E,es est/ acti-ada2 el #rigen del sistema de c##rdenadas gl#"al ser/ indicad# p#r un indicad#r de e,es #rt#g#nales. Adem/s2 un indicad#r pe*ueL# indicad#r de e,es c#n l#s n#m"res de

l#s mism#s *ue se muestran en la es*uina in%eri#r i&*uierda del /rea de -isuali&acin. El indicad#r m/s pe*ueL# de e,es marca 32 +2 & + de c#l#r r#,#2 -erde2 a&ul2 respecti-amente. M#strar punt#s de mira (Ctrl C6): Si la #pcin M#strar punt#s de mira (Cr#sshairs) est/ acti-ada2 el centr# de la -entana gr/%ica se indicar/ c#n cuatr# l1neas *ue apuntan en la sala en direcci#nes diag#nales del sistema de c##rdenadas gl#"al. Est# es Dtil cuand# se alinea el /rea de -isuali&acin a un punt# particular en el m#del# para *ue l# mantenga centrad# en la pantalla durante la r#tacin. Animacin (animati#n): La #pcin Animar aLade una "arra de animacin al "#rde in%eri#r de la pantalla. Ban pr#nt# c#m# @PS (%rames) + l#s OPas#sP (steps) se esta"lecen (-al#res ra&#na"les para empe&ar s#n 84 + 8442 respecti-amente)2 la h#ra actual se incrementa en 8/pas#2 3 @PS de tiemp# p#r segund#2 hasta llegar a 82 cuand# se -uel-e a 4. Cada -e& *ue se cam"ia el tiemp#2 el pr#grama se -uel-e a e-aluar c#n la -aria"le Q t a,ustand#l# a la h#ra actual. Eer alineacin (Eie alignment): L#s element#s del menD superi#r2 in%eri#r2 ...2 Diag#nal + Centr# (Ctrl C72 Ctrl CA2 ...2 Ctrl C42 Ctrl C P) alinean la -ista al sistema de c##rdenadas gl#"al. Arri"a2 A"a,#2 R&*uierda2 derecha2 delante + detr/s alinean en paralel# a l#s e,es2 la #pcin Diag#nal se alinea en diag#nal2 +a *ue est/ alinead# cuand# OpenSCAD c#mien&a. La #pcin Centr# p#ndr/ el centr# de c##rdenadas en el centr# de la pantalla (per# n# girar/ la -ista). P#r de%ect#2 la -ista est/ en m#d# de perspecti-a2 l# *ue signi%ica *ue l#s #",et#s a distancias ale,adas del espectad#r se -er/n m/s c#rt#s2 c#m# es c#mDn c#n l#s #,#s # c/maras. Cuand# el m#d# de -isuali&acin se cam"ia a distancias perpendiculares2 n# depender/ de la distancias -isi"les de la c/mara (la -ista simular/ una c/mara en la distancia in%inita c#n l#ngitud %#cal in%inita). Est# es especialmente Dtil en c#m"inacin c#n las #pci#nes principales descritas anteri#rmente2 est# se traducir/ en una imagen 5D similar a l# *ue se -er1a en un di"u,# de ingenier1a.

El lengua e !penS"#$% &eneral: OpenSCAD utili&a el estil# de C C C para l#s c#mentari#s: // Este es un comentario m+t-ar > 84< // El resto de la lnea es un comentario. /*

Comentarios Multi-linea permiten escribir multiples lneas. */ La di%erencia es *ue // s#l# permite p#ner un c#mentari# p#r l1nea2 + ha+ *ue p#nerl# en cada l1nea2 c#n /S un# se Oah#rraP letras en el cdig#. Earia"les: Las -aria"les en OpenSCAD s#n simplemente un n#m"re seguid# de una e3presin a tra-.s de la cual es asignada. El s1m"#l# *ue permite asignar -aria"les es el >. mivar = 5 + 4; Strings (cadena de caracteres2 sea te3t#): Se de"en p#ner si # si c#millas + las "arras in-ertidas se usan para OescaparP (0 I+ 0 0 respecti-amente). Otr#s caracteres de escape especiales s#n salt#s de l1nea (0 n)2 ta"ulad#res (0 t) + salt#s de l1nea (0 r). TNOBAU Este c#mp#rtamient# es nue-# +a *ue OpenSCAD95488.47. Puede actuali&ar l#s archi-#s antigu#s utili&and# el siguiente c#mand# sed: sed Vs / 0 0 / 0 0 0 0 /V n# escaped.scadW escaped.scad E,empl#: echo !"he #uic$ bro%n &o' \t(umps \"over\" the la)* do+.\r"he #uic$ bro%n &o'.\n"he \\la)*\\ do+.!,; C#mand#s de salida: EC-./ !El rapido )orro marron salta! sobre !el perro pere)oso. El r0pido )orro marr1n. El perro 2 pere)oso 2 !. Las variables se establece en tiempo de compilacin' no en tiempo de e ecucin: De"id# a *ue OpenSCAD calcula sus -al#res de -aria"les mientras reali&a la c#mpilacin + n# en tiemp# de e,ecucin2 la asignacin de la Dltima -aria"le se aplicar/ en t#das partes en las *ue se utili&a la -aria"le. Si un# m#di%ica la -aria"le 3>6 + esta"lece el -al#r 3>A 2 a partir de ese c#mand# 3 -a a e*ui-aler a A en BODOS l#s cas#s en l#s *ue se utilice la -aria"le. E,empl#: / / El valor de 3a3 re&le(a s1lo el 4ltimo valor a(ustado a = 5; echo a,; a = 5; echo a,; Gesultad#: ECXO: A ECXO: A C#mpilacin de err#res impres#s. (Output). Este c#mp#rtamient# sin em"arg# tiene c#m# alcance a la ra1& # a una llamada espec1%ica a de un mdul#2 l# *ue signi%ica *ue puede -#l-er a de%inir una -aria"le en un mdul# sin a%ectar a su -al#r %uera de ella. Sin em"arg#2 t#das las instancias dentr# de dicha llamada se c#mp#rtan c#m# se descri"i anteri#rmente c#n el Dltim# -al#r de a,uste se utili&an en t#d#. E,empl#: p > 7< prue"a (A)<

ech# (p)< p > N< prue"a (Y)< ech# (p)< mdul# de prue"a (*) = p > 5 C *< ech# (p)< p > 7 C *< ech# (p)< ? Salida ECXO: J ECXO: J ECXO: N ECXO: 85 ECXO: 85 ECXO: N Si "ien est# parece ser c#ntrari# a la intuicin2 est# le permite hacer algunas c#sas interesantes: P#r e,empl#2 si c#n%igura l#s archi-#s de "i"li#teca c#mpartida para tener -al#res predeterminad#s de%inid#s c#m# -aria"les en su ni-el de ra1&2 cuand# se inclu+e ese archi-# en su pr#pi# cdig# 2 puede Irede%inirI # anular esas c#nstantes simplemente asignand# un nue-# -al#r a l#s mism#s. O"tencin de puertas de entrada(input): Ah#ra tenem#s las -aria"les2 ser1a mu+ "uen# tener la capacidad de #"tener un m.t#d# de entrada en lugar de esta"lecer l#s -al#res de cdig#. Xa+ algunas %unci#nes para leer l#s dat#s de l#s archi-#s DZ@2 # se puede c#n%igurar una -aria"le c#n el m#di%icad#r9d en la l1nea de c#mand#s. C#nseguir un punt# desde un di"u,#: C#nseguir un punt# es Dtil para la lectura de un punt# de #rigen en una -ista 5D en un di"u,# t.cnic#. La %uncin d3%$cr#ss leer/ la interseccin de d#s l1neas en una capa *ue especi%i*ue + -#l-er/ al punt# de interseccin. Est# signi%ica *ue el punt# de"e ser dad# c#n d#s l1neas en el archi-# DZ@2 + n# un punt#. .ri+in6oint = d'&7cross &ile = !dra%in+.d'&!8 capa = !9C:;..ri+in! ori+en = <58 5=8 la escala = >,; O"tener un -al#r de dimensin: Usted puede leer las dimensi#nes de un di"u,# t.cnic#. Est# puede ser Dtil para leer un /ngul# de r#tacin2 una altura de e3trusin2 # la separacin entre las partes. En el di"u,#2 ha+ *ue crear una dimensin *ue n# se muestra2 per# si sir-e c#m# un identi%icad#r. Para leer el -al#r2 se especi%ica este identi%icad#r c#n la siguiente secuencia de c#mand#s: B#tal[idth > d3%$dim (%ile > Idra ing.d3%I name > It#tal[idthI capa > ISCAD.OriginI2 #rigen > :42 4;2 la escala > 8)<

!peradores matem(ticos: Operad#res aritm.tic#s escalares: L#s #perad#res escalares aritm.tic#s tienen nDmer#s c#m# #perand#s + pr#ducen nDmer#s nue-#s. C Suma 9 Gesta S Multiplicacin / Di-isin \ Mdul# El I9I tam"i.n se puede utili&ar c#m# #perad#r de pre%i,# para nDmer#s negati-#s. L#s #perad#res relaci#nales: B#d# #perad#r relaci#nal t#ma nDmer#s c#m# #perad#res + pr#duce un -al#r "##lean# (8 # 42 Eerdader# # @als#). L#s #perad#res de igualdad + n# igual2 tam"i.n puede c#mparar l#s -al#res "##lean#s.

] ]> >> U> W> W >

Men#r *ue Men#r # igual *ue Rgual N# igual Ma+#r # igual *ue Ma+#r *ue Rgual

E3iste una di%erencia entre el > s#l# + el >> 2 el segund# #"liga a la igualdad de strings. Operad#res lgic#s: B#d#s l#s #perad#res lgic#s tienen c#m# #perad#res a -al#res "##lean#s + pr#ducen un -al#r "##lean#. ^^ __ U Operad#res c#ndici#nales: El Operad#r :` se puede utili&ar para e-aluar c#ndici#nalmente una u #tra e3presin. `: Operad#r c#ndici#nal F lgic# OG lgic# (# a # ") NOB lgic# (n#)

E,empl# dad#: 3W 4` Ip#sI: InegI el resultad# ser/ Ip#sI si 3 es ma+#r *ue cer#2 de l# c#ntrari# ser/ InegI. Operad#res num.ric#s -ect#riales: L#s #perad#res num.ric#s -ect#riales t#man un -ect#r + un nDmer# c#m# #perad#res + pr#ducen un nue-# -ect#r. S Multiplicar t#d#s l#s element#s del -ect#r p#r nDmer# Di-idir t#d#s l#s element#s del -ect#r p#r nDmer#

/ Operad#res -ect#riales: L#s #perad#res -ect#riales t#man -ect#res c#m# #perad#res + pr#ducen un nue-# -ect#r. C 9 Agregar element# c#rrect# Gestar element# c#rrect#

El I9I tam"i.n puede ser utili&ad# c#m# pre%i,# del #perad#r -ect#rial2 para de%inirl# c#m# negati-#. Eect#r punt#9pr#duct# #perad#raci#nal: El -ect#r de punt#9pr#duct# #perad#r t#ma d#s -ect#res c#m# #perad#res + pr#duce un -al#r escalar S Suma de l#s pr#duct#s element# de -ect#r

Multiplicacin de matrices: Multiplica una matri& p#r un -ect#r2 un -ect#r p#r la matri& + la matri& p#r la matri& S Matri& / -ect#r de multiplicacin )unciones matem(ticas: A"s: @uncin matem/tica de -al#r a"s#lut#. De-uel-e el -al#r p#siti-# de un nDmer# decimal c#n sign#. E,empl#s de us#: abs -585,; abs 5,; abs ?85,; Gesultad#s: A.4 424 Y.4 Ac#s: @uncin matem/tica de arc#c#sen#2 # la in-ersa2 c#sen#. Asin:

@uncin matem/tica de arc#sen#2 # la in-ersa2 sen#. Atan: @uncin matem/tica de arc#tangente # la in-ersa2 tangente. De-uel-e el -al#r principal del arc# tangente de 32 e3presad# en grad#s. Atan5 @uncin matem/tica de d#s argument#s atan. De-uel-e el -al#r principal del arc# tangente de + / 32 e3presad# en grad#s. Ceil: @uncin matem/tica tech#. C#s: @uncin matem/tica del c#sen#. E,empl#s de us#: &or i = <doce * treinta * seis=, translate <i * >58585=, c*linder r = 58 h = cos i * >5, * 55 +@5,; OpenSCAD @uncin C#s E3p: @uncin matem/tica e3p. De-uel-e la %uncin de "ase OeP e3p#nencial de 32 *ue es el nDmer# e ele-ad# a la p#tencia 3. @l##r: @uncin matem/tica %l##r. En: L#garitm# natural Matem/tica. E.ase: L#garitm# natural C#s: @uncin m/tematica c#s.
for(i=[0:36]) translate([i*10,0,0])cylinder(r=5,h=cos(i*10)*50+60);

Len: @uncin matem/tica de l#ngitud. De-uel-e la l#ngitud de una matri&2 un -ect#r # un par/metr# en cadena. E,empl#s de us#: str> = !abcde&!; len7str> = len str>,; echo str>8 len7str>,; a = @; len7a = len a,; eco a8 len7a,;

matri)> = <>8A8B84858@8C8?=; len7arra*> = len matri)>,; echo matri)>8 len7arra*>,; matri)A = <<585=8 <58>=8 <>85=8 <>8>==; len7arra*A = len matri)A,; echo matri)A8 len7arra*A,; len7arra*A7A = len matri)A <A=,; echo matri)A <A=8 len7arra*A7A,; Gesultad#s: ECXO: Ia"cde%I2 N ECXO: N2 unde% ECXO: :82 52 62 72 A2 N2 a2 Y;2 Y ECXO: ::42 4;2 :42 8;2 :82 4;2 :82 8;;2 7 ECXO: :82 4;2 5 Benga en cuenta *ue el len () n# se de%ine cuand# una simple -aria"le se pasa c#m# par/metr#. Esta %uncin permite (p#r e,empl#) el an/lisis de una matri&2 un -ect#r # una cadena. E,empl#s de us#: strA = !4C>>!; &or i = <5/ len strA, ->=, echo str !di+it!8 i +>8 !/!8 cadenaA <i=,,; Gesultad#s: ECXO: Id1git# 8: 7I ECXO: Idigit 5: aI ECXO: Id1git# 6: 8I ECXO: Id1git# 7: 8I L#g: L#garitm# matem/tic#. Operaci#nes de "Ds*ueda: (Puede %allar) A partir de un determinad# -al#r9cla-e matri&2 se puede interp#lar un -al#r para cual*uier cla-e mediante interp#lacin lineal. Par/metr#s: Cla-e: cla-e de "Ds*ueda ]!e+2-alue arra+W Cla-es + -al#res E,empl# de us#: Se crear/ una especie de carta 6D hecha de cilindr#s de di%erente altura. function +et7c*linder7h p, = loo$up p8 < < -A558 5 =8 < -558 A5 =8 < -A58 >? =8 < +?58 A5 =8 < +>558 A = =,;

for i = <->55/5/+>55=, D // echo i8 +et7c*linder7h i,,; translate < i8 58 -B5 =, c*linder r> = @8 rA = A8 h = +et7c*linder7h i,*B,; E

OpenSCAD @uncin L##!up M/3: De-uel-e el m/3im# de l#s d#s par/metr#s. Par/metr#s ]aW Decimal. ]"W Decimal. E,empl# de us#: ma' B.585.5,; ma' ?.58B.5,; Gesultad#s: A.4 Y.4 Min: De-uel-e el m1nim# de l#s d#s par/metr#s. Par/metr#s ]aW Decimal. ]"W Decimal. E,empl# de us#: min B.585.5,; min ?.58B.5,; Gesultad#s: 624 624 P# : @uncin matem/tica de p#der. Par/metr#s: ]"aseW Decimal. Mase. ]e3p#nenteW Decimal. E3p#nente. E,empl#s de us#:

&or i = <5/5=, D translate <i*A58585=, D c*linder h = po% A8i,*58 r=>5,; echo i8 po% A8i,,; E E Gands: Henerad#r de nDmer#s aleat#ri#s. Henera un -ect#r c#nstante de nDmer#s pseud#9aleat#ri#s2 al igual *ue una matri&. Cuand# se genera un Dnic# nDmer#2 t#da-1a se puede #"tener c#n -aria"le :4; Par/metr#s: min9-alue: Eal#r m1nim# del rang# de nDmer#s aleat#ri#s. ma3$-alue: Eal#r m/3im# del rang# de nDmer#s aleat#ri#s. -alue$c#unt: Cantidad de nDmer#s aleat#ri#s *ue se e3presan c#m# un -ect#r. seed$-alue (#pci#nal) Eal#r de inici# para el generad#r de nDmer#s aleat#ri#s para #"tener resultad#s repeti"les. E,empl#s de us#: seed=4A; random7vect=rands 58>5848seed,; echo !Fandom Gector/ !8random7vect,; sphere r=5,; &or i=<5/B=, D rotate B@5*i/4, D translate <>5+random7vect<i=8585=, sphere r=random7vect<i=/A,; E E Ged#nde#: El #perad#r Or#undP de-uel-e la parte ma+#r # men#r nDmer# enter#2 respecti-amente2 si la entrada num.rica es p#siti-a # negati-a. En #tras pala"ras red#ndea un nDmer#. Algun#s e,empl#s: round '.5, = ' +>. round '.4H, = '. ronda - '.5,, = - ' +>,. ronda - '.4H,, =-'. round 584, / / -I 5 round 585, / / -I @ round 58@, / / -I @ Sign# @uncin matem/tica OsignumP. De-uel-e un -al#r unitari# *ue e3trae el sign# de un -al#r. Par/metr#s ]3W Decimal. Eal#r para enc#ntrar el sign# de.

E,empl#s de us#: si+n -5.5,; si+n 5,; si+n ?.5,; Gesultad#s: 9824 424 824 Sin: @uncin matem/tica sen#. Par/metr#s: ]grad#sW Decimal. bngul# en grad#s. E,empl# de us# 8: &or i = <5/5=, D echo B@5*i/@8 sin B@5*i/@,*?58 cos B@5*i/@,*?5,; translate <sin B@5*i/@,*?58 cos B@5*i/@,*?58 5 =, c*linder h = A558 r=>5,; E E,empl# de us# 5: &or i=<5/B@=, translate <i*>58585=,c*linder r=58h=sin i*>5,*55+@5,;

@uncin Sin en OpenSCAD S*rt: @uncin matem/tica de ra1& cuadrada. E,empl#s de us#: translate <s#rt >55,8585=,sphere >55,; Ban: @uncin matem/tica tangente. Par/metr#s ]Hrad#sW Decimal. bngul# en grad#s. E,empl#s de us#: &or i = <5/5=, D echo B@5*i/@8 tan B@5*i/@,*?5,; translate <tan B@5*i/@,*?58 58 5 =, c*linder h = A558 r=>5,;

E )unciones String: Str: C#n-ertir t#d#s l#s argument#s en OstringsP + c#ncatenar. E,empl#s de us#: number=A; echo !"his is !8number8B8! and that3s it.!,; echo str !"his is !8number8B8! and that3s it.!,,; Gesultad#s: EC-./ !"his is !8 A8 B8 ! and that3s it.! EC-./ !"his is AB and that3s it.! Slidos b(sicos: Cu"#: Crea un cu"# en el #rigen del sistema de c##rdenadas. Cuand# el centr# es -erdader# el cu"# se centrar/ en el #rigen2 de l# c#ntrari#2 se crea en el primer #ctante. L#s n#m"res de l#s argument#s s#n #pci#nales si l#s argument#s se dan en el mism# #rden c#m# se especi%ica en l#s par/metr#s. Par/metr#s: BamaL#: Decimal # 6 de -al#r matri&. Si sl# ha+ un nDmer# dad#2 el resultad# ser/ un cu"# c#n lad#s de esa l#ngitud. Si una matri& de -al#r 6 se da2 ent#nces l#s -al#res se c#rresp#nden a las l#ngitudes de l#s e,es Z2 F2 + K. El -al#r p#r de%ect# es 8. Centr#: M##lean#. Est# determina la p#sicin del #",et#. Si es -erdader#2 #",et# est. centrad# en (42424). De l# c#ntrari#2 el cu"# se c#l#ca en el cuadrante p#siti-# c#n una es*uina en (42424). El -al#r predeterminad# es %als#. E,empl#s de us#: cube si)e = >8 center = &alse,; cube si)e = <>8A8B=8 center = true,;

Es%era: Crea una es%era en el #rigen del sistema de c##rdenadas. El n#m"re del argument# es #pci#nal. Par/metr#s: G:

Decimal. Este es el radi# de la es%era. La res#lucin de la es%era se "asar/ en el tamaL# de la es%era + la %a Q2 %s Q + Q %n -aria"les. 9Q %a bngul# en grad#s 9Q %s bngul# en mm 9Q %n Ges#lucin E,empl#s de us#: sphere r = >,; sphere r = 5,; sphere r = >5,; / / Esto va a crear una es&era de alta resoluci1n con un radio de A mm es&era A8 J &n = >55,; / / "ambiKn se crear0 una es&era de A mm de alta resoluci1n pero Kste / / Lo tiene tri0n+ulos pe#ueMos como muchos de los polos de la es&era es&era A8 J = &a 58 J &s = 58>,;

Cilindr#: Crea un cilindr# # c#n# en el #rigen del sistema de c##rdenadas. Un s#l# radi# (r) hace *ue un cilindr#2 d#s di%erentes radicales (r82 r5) hacen un c#n#. Par/metr#s: h Decimal. Esta es la altura del cilindr#. El -al#r p#r de%ect# es 8. r8 Decimal. Este es el radi# del c#n# en el e3trem# in%eri#r. El -al#r p#r de%ect# es 8. r5 Decimal. Este es el radi# del c#n# en el e3trem# superi#r. El -al#r p#r de%ect# es 8. r Decimal. El radi# de l#s d#s e3trem#s superi#r e in%eri#r del cilindr#. Utilice este par/metr# si desea cilindr# plan#. El -al#r p#r de%ect# es 8. Centr#: M##lean#. Si es -erdader# -a a centrar la altura del c#n# / cilindr# alreded#r del #rigen. El -al#r predeterminad# es %als#2 c#l#cand# la "ase de la radi# del cilindr# # c#n# r8 en el #rigen. Q %a

bngul# en grad#s Q %s bngul# en mm E,empl#s de us#: c*linder h = >58 r> = >58 rA = A58 center = &alse,; c*linder h = >58 r> = A58 rA = >58 center = true,; c*linder h = >58 r=A5,; c*linder h = >58 r=A58 J&s=@,;

P#liedr#: Crea un p#liedr# c#n una lista de punt#s + una lista de tri/ngul#s. La lista de punt#s esta %#rmada t#d#s l#s -.rtices de la %igura2 la lista de tri/ngul# es cm# l#s punt#s se relaci#nan a las super%icies del p#liedr#. Par/metr#s: Punt#s: Eect#r de punt#s # -.rtices (cada -ect#r de 6). Bri/ngul#s: Eect#r de tripletes de punt#s (cada -ect#r un nDmer# 6). Cada nDmer# es el nDmer# de punt# 49 inde3ad# a partir del -ect#r punt#. C#n-e3idad: Enter#. El par/metr# de c#n-e3idad especi%ica el nDmer# m/3im# de l#s lad#s %r#ntales ("ac! sides) un ra+# *ue intersecta al #",et# + l# p#dr1a penetrar. Este par/metr# sl# es necesari# para -isuali&ar c#rrectamente el #",et# en OpenCSH + m#d# de -ista pre-ia + n# tiene e%ect# s#"re la presentacin del p#liedr#. Sinta3is de e,empl#: pol*hedron points = < <'8 *8 )=8 ... =8 trian+les = < <p>8 pA8 pB..=8 ... =8 conve'it* = L,; Punt#s del tri/ngul# pedid#: al mirar la cara de a%uera hacia adentr#2 l#s punt#s de"en ser en sentid# h#rari#. Puede cam"iar el #rden de l#s punt#s # el #rden en *ue se menci#nan en cada un# de tri/ngul# triple. El #rden de l#s tri/ngul#s es inmaterial. Benga en cuenta *ue si l#s p#l1g#n#s n# est/n #rientadas de la misma manera OpenSCAD n# imprimir/ un err#r # un accidente p#r c#mplet#2 as1 *ue preste atencin al #rden de l#s -.rtices. E,empl#2 una pir/mide de "ase cuadrada:
polyhedron( points=[ [10,10,0],[10, 10,0],[ 10, 10,0],[ 10,10,0], [0,0,10] ], trian%les=[ [0,1,&],[1,',&],[',3,&],[3,0,&], [1,0,3],[',1,3] ] s)"are #ase ); !! !! !! !! the fo"r points at #ase the ape$ point each trian%le side t(o trian%les for

Orden de l#s punt#s del tri/ngul#. Un e,empl# de un p#liedr# m/s c#mple,#2 + la muestra de cm# s#luci#nar p#liedr#s c#n p#l1g#n#s mal #rientad#s. Cuand# se selecci#na VBhr# n t#getherV desde el menD de la -ista + se c#mpila el diseL# (n# c#mpilar + hacerU)2 Eer/ una -ista pre-ia c#n l#s p#l1g#n#s mal #rientadas resaltad#s. Lamenta"lemente est# n# es p#si"le destacar en el m#d# de -ista pre-ia OpenCSH p#r*ue inter%erir1a c#n la %#rma en *ue se implement el m#d# de -ista pre-ia OpenCSH.) A c#ntinuacin2 puedes -er el cdig# + la imagen de un p#liedr# pr#"lem/tic#. // 6oliedro malo pol*hedron points = < <58 ->58 @5=8 <58 >58 @5=8 <58 >58 5=8 <58 ->58 5=8 <@58 ->58 @5=8 <@58 >58 @5=8 <>58 ->58 55=8 <>58 >58 55=8 <>58 >58 B5=8 <>58 ->58 B5=8 <B58 ->58 55=8 <B58 >58 55= =8 trian+les = < <58A8B=8 <58>8A=8 <58485=8 <5858>=8 <5848A=8 <A848B=8 <@8?8H=8 <@8C8?=8 <@8>58>>=8 <@8>>8C=8 <>58?8>>=8 <>58H8?=8 <58B8H=8 <H858@=8 <>58@8 5=8 <5848>5=8 <B8H8>5=8 <B8>584=8 <>8C8>>=8 <>8>>85=8 <>8C8?=8 <>8?8A=8 <A8?8>>=8 <A8>>85= = ,; pol*hedron points = < <58 ->58 @5=8 <58 >58 @5=8 <58 >58 5=8 <58 ->58 5=8 <@58 ->58 @5=8 <@58 >58 @5=8 <>58 ->58 55=8 <>58 >58 55=8 <>58 >58 B5=8 <>58 ->58 B5=8 <B58 ->58 55=8 <B58 >58 55= =8 trian+les = < <58B8A=8 <58A8>=8 <48585=8 <5858>=8 <58A84=8 <48A8B=8 <@8?8H=8 <@8C8?=8 <@8>58>>=8<@8>>8C=8 <>58?8>>=8 <>58H8?=8 <B858H=8 <H858@=8 <>58@8 5=8<5848>5=8 <B8H8>5=8 <B8>584=8 <>8C8>>=8 <>8>>85=8 <>8?8C=8 <A8?8>=8 <?8A8>>=8 <58>>8A= = ,;

C#nse,# para principiantes: Si n# entiende realmente la I#rientacinI2 trate de identi%icar l#s tri/ngul#s r#sad#s mal #rientad#s + lueg# permutar las re%erencias a l#s -ect#res de punt#s hasta *ue l# haga "ien. P#r e,empl# en el e,empl# anteri#r2 el tercer tri/ngul# (:4272A;) era errne# + l# %i,a c#m# :7242A;. Adem/s2 puede selecci#nar IM#strar "#rdesI en el IMenD EerI2 imprimir una captura de pantalla + numerar am"#s punt#s del tri/ngul#. En nuestr# e,empl#2 l#s punt#s s#n an#tad#s en negr# + l#s tri/ngul#s en a&ul. Hirar el #",et# alreded#r + hacer una segunda c#pia de la parte de atr/s si es necesari#. De esta manera usted puede reali&ar un seguimient#. B.cnica en sentid# h#rari#: La #rientacin se determina mediante la inde3acin de las agu,as del rel#,. Est# signi%ica *ue si usted est/ "uscand# en el tri/ngul# (en este cas# :7242A;) desde el e3teri#r -er/ *ue el camin# es hacia la derecha p#r el centr# de la cara. La #rden de creacin :7242A; es en sentid# h#rari# + p#r l# tant# c#rrecta. La #rden de creacin :4272A; es hacia la i&*uierda + p#r l# tant# inc#rrecta. Asimism#2 cual*uier #tra #rden en sentid# de las agu,as del rel#, :7242A; #"ras: :A2724; + :42A27; tam"i.n est/n "ien. Si se utili&a la t.cnica de las agu,as del rel#,2 usted siempre tendr/ sus caras e3teri#res (%uera de OpenSCAD2 #tr#s pr#gramas l# usan en sentid# antih#rari# c#m# el e3teri#r sin em"arg#). Piense en ell# c#m# una regla de la man# i&*uierda: Si mantiene el tri/ngul# + l#s ded#s de su man# enr#llad#s del mism# #rden *ue l#s punt#s2 ent#nces su pulgar apunta hacia a%uera.

Descripcin "re-e de un IP#liedr#I S L#s punt#s de%inen t#d#s l#s punt#s / -.rtices en la %igura. S Bri/ngul#s es una lista de tri/ngul#s *ue se c#nectan hacia arri"a l#s punt#s / -.rtices.

Cada punt#2 en la lista de punt#s2 se de%ine c#n una p#sicin de 69 tuple 32+2& especi%ica. L#s punt#s en la lista de punt#s se les asigna aut#m/ticamente un identi%icad#r a partir de cer# para el us# en la lista de tri/ngul# (42825262 ... etc). Cada tri/ngul#2 en la lista de tri/ngul#2 se de%ine mediante la seleccin de 6 de sus punt#s (usand# el identi%icad#r de punt#s) %uera de la lista de punt#s. P#r e,empl# est#s tri/ngul#s > ::42825;; de%ine un tri/ngul# desde el primer punt# (l#s punt#s se hace re%erencia cer#) para el segund# punt# + lueg# al tercer punt#. Al e3aminar cual*uier tri/ngul# desde el e3teri#r2 el tri/ngul# de"e listar sus 6 punt#s en el #rden de las agu,as del rel#,. *ransformaciones: Escala (scale): Permite escalar l#s element#s secundari#s utili&and# el -ect#r especi%icad#. El n#m"re del argument# es #pci#nal. E,empl#: scale v = <'8 *8 )=, D ... E Hirar: Permite girar #",et#s un#s grad#s alreded#r del #rigen del sistema de c##rdenadas # alreded#r de un e,e ar"itrari#. L#s n#m"res de l#s argument#s s#n #pci#nales2 si l#s argument#s se presentan en el mism# #rden *ue se especi%ic anteri#rmente (32+2&). Cuand# se especi%ica una r#tacin de e,es mDltiples el m#d# en *ue la r#tacin se aplica es en el siguiente #rden: 32 +2 &. E,empl#: rotate a = de+8 v = <'8 *8 )=, D ... E P#r e,empl#2 para -#ltear un #",et# al re-.s2 puede hacer l# siguiente: rotate a=<58>?585=, D ... E El e,empl# de arri"a -a girar el #",et# 8Y4 grad#s alreded#r del e,e O+P. El argument# #pci#nal O-Ple permite de%inir un e,e ar"itrari# en el *ue el #",et# se girar/. E,empl# c#n #rigen ar"itrari#. rotate a=458 v=<>8>85=, D ... E Este e,empl# se gira el #",et# 7A grad#s alreded#r del e,e de%inid# p#r el -ect#r :82824;. Braducir (translate): Braduce (mue-e) sus element#s secundari#s a l# larg# del -ect#r especi%icad#. El n#m"re del argument# es #pci#nal. E,empl#: translate v = <'8 *8 )=, D ... E Espe,#(mirr#r): Ge%le,a el element# secundari# en un plan# *ue pasa p#r el #rigen. El argument# para duplicar () es el -ect#r n#rmal a dich# plan#. E,empl#:

mirror < 58 >8 5 =, D ... E Multmatri3: Multiplica la ge#metr1a de l#s element#s secundari#s c#n la matri& de trans%#rmacin dada 737. multmatri' m = <...=, D ... E E,empl# (se traduce p#r :842 542 64;): multmatri' m = < <>8 58 58 >5=8 <58 >8 58 A5=8 <58 58 >8 B5=8 <58 58 58 >= =, c*linder ,; E,empl# (gira 7A grad#s en el plan# ZF + se traduce p#r :84254264;): an+le=45; multmatri' m = < <cos an+le,8 -sin an+le,8 58 >5=8 <sin an+le,8 cos an+le,8 58 A5=8 <58 58 >8 B5=8 <58 58 58 >= =, union , D c*linder r=>5.58h=>58center=&alse,; cube si)e=<>58>58>5=8center=&alse,; E C#l#r: Muestra l#s element#s secundari#s utili&and# el especi%icad# c#l#r GHM C -al#r al%a. Est# sl# se utili&a para la -ista pre-ia @A p#r*ue CHAL + SBL (@N) n# admiten actualmente c#l#r. El -al#r al%a p#r de%ect# es 824 (#pac#) si n# se especi%ica. E,empl#: color <r8 +8 b8 a=, D ... E Benga en cuenta *ue el " r2 g22 un#s -al#res est/n limitad#s a -al#res de tip# %l#at(enter#s) en el inter-al# =424 ... 824? en lugar de l#s nDmer#s enter#s m/s tradici#nales =4 ... 5AA?. Sin em"arg#2 puede especi%icar l#s -al#res c#m# %racci#nes2 p#r e,empl#2 para G2 H2 M en l#s nDmer#s enter#s =4 ... 5AA? se puede utili&ar:
color([ R/255, G/255, B/255 ]) { ... }

A partir de la -ersin 54882852 l#s c#l#res tam"i.n se pueden elegir p#r su n#m"re. P#r e,empl#2 para crear una es%era r#,a2 puede utili&ar este cdig#:
color("red") sphere(5);

Al%a tam"i.n est/ disp#ni"le c#n c#l#res c#n n#m"re:


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

L#s n#m"res de l#s c#l#res disp#ni"les s#n t#mad#s de la lista del c#ns#rci# [#rld [ide [e" de c#l#r SEH. Este es un gr/%ic# de l#s n#m"res de l#s c#l#res:

Min!# s!i: Es un m.t#d# *ue permite c#m"inar #",et#s para l#grar detalles m/s de%inid#s E,empl# de us#: Digam#s *ue usted tiene una ca,a plana2 + desea un "#rde red#ndead#. Xa+ muchas maneras de hacer est#2 per# Min!# s!i es mu+ elegante. Utilice un cu"# + un cilindr#:
$fn=50; cube([10,10,1]); cylinder(r=2,h=1);

A c#ntinuacin2 realice una c#m"inacin Min!# s!i de ell#s:


*fn=50; +in,o(s,i() c"#e([10,10,1]); cylinder(r=',h=1); .

Cascara (hull): Al igual *ue el anteri#r es una %#rma de c#m"inar #",et#s para crear me,#res m#del#s. E,empl#:
h"ll() translate([15,10,0]) circle(10); circle(10); .

)unciones condicionales + de bucles,if-else-loop.: @#r L##p: Gec#rre en iteracin l#s -al#res de un -ect#r # de inter-al#. Geitera un pr#ces# siempre *ue ciertas c#ndici#nes (de%inidas p#r el usuari#) sean -erdaderas. Eect#r -ersin: %#r (-aria"le>]-ect#rW) ]d#$s#methingW 9 ]-aria"leW en espaL#l: %#r (-aria"le > ]rang#W) ]hacer mientrasW9]-aria"leW se asigna a cada -al#r sucesi-# en el -ect#r. Eersin Gang#: %#r (-aria"le>]rangeW) ]d#$s#methingW en espaL#l: %#r (-aria"le > ]rang#W) ]hacer mientrasW Gang#: :]startW:]endW; en espaL#l: :]inici#W: ]%inW; 9 iteracin de principi# a %in inclusi-e. Bam"i.n %unci#na si ]%inW si es m/s pe*ueL# *ue ]inici#W Gang#::]startW:]incrementW:]endW; :]inici#W: ]incrementW: ]%inW; 9 itera de principi# a %in c#n el increment# dad#. El increment# puede ser una %raccin. N#ta: El increment# se da c#m# un -al#r a"s#lut# + n# puede ser negati-a. Si ]%inW es men#r *ue el increment# ]inici#W de"e permanecer sin

cam"i#s. Ad-ertencia: Si el increment# n# es un di-is#r par de ]%inW 9 ]inici#W2 el -al#r iterad#r para la Dltima iteracin ser/ ]%inW 9 (]%inW 9 ]inici#W m#d ]incrementW). Mucles anidad#s: %#r ( -aria"le8 > ]range #r -ect#rW2 -aria"le5 > ]range #r -ect#rW ) ]d# s#mething2 using "#th -aria"lesW en espaL#l: %#r (-aria"le8 > ]Gang# # -ect#rW2 -aria"le5 > ]Gang# # -ect#rW) ]Xacer alg# utili&and# las -aria"lesW L#s "ucles pueden anidarse2 al igual *ue en l#s pr#gramas n#rmales. Una a"re-iatura es *ue am"as iteraci#nes se pueden dar en el mism# para la declaracin. E,empl# de us# 8 9 iteracin s#"re un -ect#r:
for (/ = [ 1, 1]) !! t(o iterations, / = translate([0, 0, /]) c"#e(si/e = 1, center = false); . 1, / = 1

E,empl# 5a 9 iteracin s#"re un rang#:


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

E,empl# 5" 9 iteracin en un rang# *ue especi%ica un increment#: / / Lota/ El par0metro central en la desi+naci1n de ran+o

/ / 35 .A 3En este caso, es el Nincremento porO un valor / / :dvertencia/ ;ependiendo del valor !increment-b* 38 el / / Galor real &inal ser0 menor #ue el dado.
for ( i = [0 : 00' : 5] ) rotate( i * 360 ! 6, [1, 0, 0]) translate([0, 10, 0]) sphere(r = 1); .

E,empl# de us# 6 9 iteracin s#"re un -ect#r de -ect#res (r#tacin):


for(i = [ [ 0, 0, 0], [ 10, '0, 300], ['00, &0, 51], [ '0, 22, 51] ]) rotate(i) c"#e([100, '0, '0], center = tr"e); .

Sinta3is 7 e,empl# 9 iteracin s#"re un -ect#r de -ect#res (trasladacin):


for(i = [ [ 0, 0, 0], [10, 1', 10], ['0, '&, '0], [30, 36, 30], ['0, &2, &0], [10, 60, 50] ]) translate(i) c"#e([50, 15, 10], center = tr"e); .

E,empl# de "ucle anidad#:


for ($pos=[0:3], ypos = [0,',6]) !! do fo"r iterations, "sin% the 3 3al"es of the 3ector translate([$pos, ypos, 0]) c"#e([005, 005, 005]);

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 roblema que no uede obtener los resultados es erados utili!ando una combinacin de la norma ara las declaraciones for () e intersection(). "ar#metros: $loo variable name% en es a&ol: $nombre de la variable del bucle% Nombre de la variable a utili!ar dentro del bucle for. 'jem lo de uso ( ) bucle en un rango de: intersection4for(n = [1 : 6]) rotate([0, 0, n * 60]) translate([5,0,0]) sphere(r=1'); . .

Sinta3is 5 e,empl# de r#tacin:


intersection4for(i = [ [ 0, 0, 0], [ 10, '0, 300], ['00, &0, 51], [ '0, 22, 51] ]) . rotate(i) c"#e([100, '0, '0], center = tr"e);

Si (i%): C#ndici#nalmente e-alua un su"9/r"#l. E-alua alg# + reali&a un pr#ces# segun el resultad# de esa e-alucin. Par/metr#s: Es una e3presin "##leana2 se de"e utili&ar c#m# c#ndicin. E,empl# de us#:
if ($ 5 y) c"#e(si/e = 1, center = false); . else c"#e(si/e = ', center = tr"e); .

Asignar Declaracin: Esta"le&ca las -aria"les para un nue-# -al#r para un su"9/r"#l. Par/metr#s: Las -aria"les *ue de"en ser (re9) asignad# E,empl# de us#:
for (i = [10:50]) assi%n (an%le = i*360!'0, distance = i*10, r = i*') rotate(an%le, [1, 0, 0]) translate([0, distance, 0]) sphere(r = r); . .

Modelado "S&: Unin: Crea una unin de t#d#s sus n#d#s secundari#s. Esta es la suma de t#d#s l#s #",et#s. E,empl# de us#:
union() * cylinder (+ , -. r,(. center , true. /fn,(00)1 rotate (230.0.04) cylinder (+ , -. r,0.3. center , true. /fn,(00)1 5

Di%erencia: Gesta la 5 c %#ma (+ t#d# el rest# de la %#rma) l#s n#d#s secundari#s de la primera %#rma. E,empl#:
difference() cylinder (h = &, r=1, center = tr"e, *fn=100); rotate ([60,0,0]) cylinder (h = &, r=006, center = tr"e, *fn=100); .

Rnterseccin: Crea la interseccin de t#d#s l#s n#d#s secundari#s. Est# mantiene la parte de superp#sicin. E,empl#:
intersection() cylinder (h = &, r=1, center = tr"e, *fn=100); rotate ([60,0,0]) cylinder (h = &, r=006, center = tr"e, *fn=100); .

Genderi&ar: Siempre calcula el m#del# de CSH para esta estructura (inclus# en OpenCSH m#d# de -ista pre-ia). El par/metr# c#n-e3idad especi%ica el nDmer# m/3im# de l#s lad#s %r#ntales ("ac! lad#s) un ra+# *ue intersecta el #",et# al *ue p#dr1a penetrar. Este par/metr# sl# es necesari# para -isuali&ar c#rrectamente el #",et# en OpenCSH m#d# de -ista pre-ia + n# tiene e%ect# s#"re el resultad# %inal del #",et#.

E,empl#:
render(convexity = 1) { ... }

"(rcteres de modificacin: M#di%icad#r del %#nd#. Est# sir-e para determinar un %#nd#. E,empl#:
difference() !! start o#7ects cylinder (h = &, r=1, center = tr"e, *fn=100); !! first o#7ect that (ill s"#tracted 8 rotate ([60,0,0]) cylinder (h = &, r=003, center = tr"e, *fn=100); !! second o#7ect that (ill #e s"#tracted 8 rotate ([0,60,0]) cylinder (h = &, r=006, center = tr"e, *fn=100); .

M#di%icad#r de depuraracin: Utilice este su"/r"#l c#m# de c#stum"re en el pr#ces# de representacin2 sin# tam"i.n di"u,ar sin m#di%icar en r#sa transparente.
difference() !! start o#7ects cylinder (h = &, r=1, center = tr"e, *fn=100); !! first o#7ect that (ill s"#tracted 9 rotate ([60,0,0]) cylinder (h = &, r=003, center = tr"e, *fn=100); !! second o#7ect that (ill #e s"#tracted 9 rotate ([0,60,0]) cylinder (h = &, r=006, center = tr"e, *fn=100); .

M#di%icad#r de la ra1&(r##t): Rgn#ra el rest# del diseL# + el us# de este su"/r"#l c#m# r##t diseL#. E,empl#:
: - 000 .

Desacti-ar M#di%icad#r: Xaga cas# #mis# de este su"/r"#l c#mplet#.


* - 000 .

Modulos: De%ine su pr#pi# mdul# (m/s # men#s c#mpara"le a una macr# # una %uncin en #tr#s idi#mas) es una p#der#sa manera de reutili&ar l#s pr#cedimient#s.
+od"le hole(distance, rot, si/e) rotate(a = rot, 3 = [1, 0, 0]) translate([0, distance, 0]) cylinder(r = si/e, h = 100, center = tr"e); . . .

En este e,empl#2 pasand# p#r l#s par/metr#s de distancia2 r##te# + tamaL# le permiten -#l-er a utili&ar esta %uncin -arias -eces2 sal-and# muchas l1neas de cdig# + la presentacin de su pr#grama ser/ much# m/s %/cil de leer. Usted puede crear una instancia del mdul# + pasar -al#res (# %rmulas) para l#s par/metr#s al igual *ue una llamada a la %uncin C:
hole(0, 60, 10);

L#s n#d#s secundari#s de la creacin de instancias del mdul# se pueden acceder mediante el child () declaracin en el mdul#:
+od"le line"p(n"+, space) for (i = [0 : n"+ 1]) translate([ space*i, 0, 0 ]) child(0); . line"p(5, 65) sphere(30);

Si usted necesita para hacer su mdul# iterar s#"re t#d#s l#s OchildP 2tendr/ *ue hacer us# de la -aria"le Q child2 p#r e,empl#:
module elongate() {

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

elon%ate() - sphere(30); c"#e([10,10,10]); cylinder(r=10,h=50); .

Se pueden especi%icar -al#res predeterminad#s para l#s argument#s:

+od"le ho"se(roof=;flat;,paint=['55,0,0])color(paint) if(roof==;flat;)translate([0, 1,0]) c"#e(); . else if(roof==;pitched;)rotate([60,0,0]) linear4e$tr"de(hei%ht=1) poly%on(points=[[0,0],[0,1],[005,105],[1,1],[1,0]],paths=[ [0,1,',3,&] ]); . else if(roof==;do+ical;)translate([0, 1,0]) "nion()translate([005,005,1]) sphere(r=005,*fn='0); c"#e(); . . .

F a c#ntinuacin2 utilice un# de l#s siguientes m.t#d#s para pr#p#rci#nar l#s argument#s:
"nion()ho"se(); translate([',0,0]) ho"se(;pitched;); translate([&,0,0]) ho"se(;do+ical;,[0,'55,0]); translate([6,0,0]) ho"se(roof=;pitched;,paint=[0,0,'55]); translate([2,0,0]) ho"se(paint=[0,0,0],roof=;pitched;); translate([10,0,0]) ho"se(roof=;do+ical;); translate([1',0,0]) ho"se(paint=[0,1'2,1'2]); .

$eclaracines de inclusin: Para incluir cdig# desde archi-#s e3tern#s en OpenSCAD2 ha+ d#s c#mand#s disp#ni"les: Rnclu+en el c#mand# ]%ilenameW c#m# si el c#ntenid# del archi-# incluid# se escri"iera en el archi-# incluid#2 + permite utili&ar imp#rtaci#nes ]%ilenameW mdul#s + %unci#nes2 per# n# e,ecuta ningDn c#mand# *ue n# sean esas de%inici#nes. L#s archi-#s de "i"li#teca se "uscan en la misma carpeta *ue desde el diseL# d#nde esta a"iert#2 # en la carpeta de la "i"li#teca de la instalacin OpenSCAD. Puede utili&ar una ruta de acces# relati-a a cual*uiera de l#s d#s. Si ell#s est/n en #tra parte de"e dar la ruta c#mpleta. Una serie de archi-#s de "i"li#teca se inclu+en en la instalacin. Un archi-# de "i"li#teca para la generacin de l#s anill#s p#dr1a tener este aspect# (*ue de%ine una %uncin + pr#p#rci#na un e,empl#): ring.scad:
+od"le rin%(r1, r', h) difference() cylinder(r = r1, h = h); translate([ 0, 0, 1 ]) cylinder(r = r', h = h+'); . . rin%(5, &, 10);

Rnclu+end# la "i"li#teca utili&and#:


incl"de <rin%0scad5; rotate([60, 0, 0]) rin%(10, 1, 1);

resultar1a en el anill# de e,empl# *ue se muestra2 adem/s de girar el anill#2 per#:


"se <rin%0scad5; rotate([60, 0, 0]) rin%(10, 1, 1);

sl# muestra el anill# girad#.

"aracter/sticas de otros lengua es: Las -aria"les especiales: B#das las -aria"les *ue empie&an c#n un IQI s#n -aria"les especiales. La sem/ntica es similar a las -aria"les especiales en LRSP: tienen din/mica en lugar de un /m"it# l.3ic#. Q %a2 %s Q + Q %n: La Q%a2 Q%s + Q%n s#n -aria"les especiales *ue c#ntr#lan el nDmer# de %acetas utili&adas para generar un arc#: Q %a es el /ngul# m1nim# de un %ragment#. Rnclus# un en#rme c1rcul# n# tiene m/s de 6N4 %ragment#s di-idid# p#r este nDmer#. El -al#r predeterminad# es 85 (es decir2 64 %ragment#s de un c1rcul# c#mplet#). El -al#r m1nim# permitid# es de 4248. Cual*uier intent# de esta"lecer un -al#r m/s "a,# causar/ una ad-ertencia. Q %s es el tamaL# m1nim# de un %ragment#. De"id# a esta -aria"le c1rcul#s mu+ pe*ueL#s tienen un men#r nDmer# de %ragment#s *ue l#s especi%icad#s usand# Q %a. El -al#r predeterminad# es 5. El -al#r m1nim# permitid# es de 4248. Cual*uier intent# de esta"lecer un -al#r m/s "a,# causar/ una ad-ertencia. Q %n suele ser 4. Cuand# esta -aria"le tiene un -al#r ma+#r *ue cer#2 las #tras d#s -aria"les s#n ign#radas + el c1rcul# c#mplet# se representa utili&and# este nDmer# de %ragment#s. El -al#r predeterminad# es 4. Cuand# Q%a + Q %s se utili&an para determinar el nDmer# de %ragment#s de un c1rcul#2 ent#nces OpenSCAD nunca usar/ men#s de A %ragment#s. Este es el cdig# C *ue calcula el nDmer# de %ragment#s en un c1rcul#:
int %et4fra%+ents4fro+4r(do"#le r, do"#le fn, do"#le fs, do"#le fa) if (fn 5 000) ret"rn (int)fn; ret"rn (int)ceil(f+a$(f+in(36000 ! fa, r*'*=4>? ! fs), 5)); .

Las es%eras s#n primer# c#rtadas en re"anadas2 tantas c#m# el nDmer# de %ragment#s *ue se utili&an para representar un c1rcul# de radi# de la es%era2 + lueg# cada re"anada se representa en tant#s

%ragment#s c#m# se necesiten para segmentar el radi#. Es p#si"le *ue usted ha+a rec#n#cid# +a *ue el p#l# de la es%era es p#r l# general un pent/g#n#. Est# es p#r *u.. El nDmer# de %ragment#s de un cilindr# se determina utili&and# el ma+#r de l#s d#s radi#s. El m.t#d# tam"i.n se utili&a al representar c1rcul#s + arc#s de archi-#s DZ@. Puede generar /m"it#s de alta res#lucin al resta"lecer l#s -al#res Q @Z en el mdul# de instancia:
*fs = 0001; sphere(');

# simplemente pasand# la -aria"le especial c#m# par/metr#:


sphere(2, $fs = 0.01);

Usted puede inclus# escalar la -aria"le especial en lugar de resetearla cer#:


sphere(', *fs = *fs * 0001);

Qt: La -aria"le Q t se utili&a para la animacin. Si se ha"ilita el marc# de la animacin c#n -ie 9W animar + dar un -al#r para I@PSI + IPas#sI2 el camp# IBiemp#I muestra el -al#r actual de Q t. C#n esta in%#rmacin en mente2 usted puede animar su diseL#. El diseL# se -uel-e a c#mpilar cada 8 / I@PSI segund#s + Q t aumenta en 8 / IPas#sI l#s IPas#sI de l#s tiemp#s2 terminand# en cual*uiera de l#s d#s t > Q 8 # Q t > 898/steps. Si IPicturesI Dump est/ acti-ada2 las im/genes se crear/n en el mism# direct#ri# *ue el archi-# de scad2 utili&and# l#s siguientes -al#res Q t2 + se guarda en l#s siguientes archi-#s.: Qt>4/Steps %ilename>I%rame44448.pngI Qt>8/Steps %ilename>I%rame44445.png Qt>5/Steps %ilename>I%rame44446.pngI ... Qt>896/Steps %ilename>I%rame]Steps95W.pngI Qt>895/Steps %ilename>I%rame]Steps98W.pngI Qt>898/Steps %ilename>I%rame44444.pngI O "ien2 para #tr#s -al#res de l#s pas#s2 se sigue este patrn: Qt>4/Steps %ilename>I%rame44448.pngI Qt>8/Steps %ilename>I%rame44445.png Qt>5/Steps %ilename>I%rame44446.pngI ... Qt>896/Steps %ilename>I%rame]Steps95W.pngI Qt>895/Steps %ilename>I%rame]Steps98W.pngI Qt>898/Steps %ilename>I%rame]Steps94W.pngI

Qt>894/Steps %ilename>I%rame44444.pngI

El patrn *ue se elig1# parece ser un impredeci"le2 per# una c#herente2 %uncin de a pas#s. P#r e,empl#2 cuand# Pas#s(steps) > 72 se sigue el primer patrn2 + da salida a un t#tal de 7 archi-#s. Cuand# Pas#s > 62 se deduce el segund# patrn2 + tam"i.n genera 7 archi-#s. Siempre ser/ salida2 +a sea Pas#s # Pas#s C 8 archi-#s2 aun*ue puede *ue n# sea tan pre-isi"le. Cuand# ha+a terminad#2 se en-#l-er/ alreded#r + recrear cada un# de l#s archi-#s2 a tra-.s de un "ucle + -#l-er a crearl#s en un "ucle in%init#. Q -pr + Q -pt: Est#s c#ntienen l#s -ie p#rt actuales de r#tacin + traslacin 9 en el m#ment# de hacer el render. M#-er la -entana n# la actuali&a. Durante una animacin se actuali&anen cada %rame. Q -pr muestra la r#tacin. Q -pt muestra la traduccin (es decir2 n# se -er/n a%ectad#s p#r r#tacin + &##m) N# es p#si"le escri"ir en ell#s + p#r l# tant# tamp#c# se pueden cam"iar l#s par/metr#s del -is#r (aun*ue es# p#dr1a ser una idea "astante "uena). E,empl#:
c"#e([10,10,*3pr[0]!10]);

L# *ue pr#duce *ue cam"ie de tamaL# en el cu"# "asad# en el /ngul# de -isin2 si un "ucle de animacin est/ acti-# (*ue n# necesita usar la -aria"le Q t) Bam"i.n puede hacer *ue l#s "its de un m#del# c#mple,# se des-anescan a medida *ue cam"ia la -ista. El c#mand# de menD Edicin 9 Pegar Eie p#rt r#tacin / traslacin c#pia el -al#r actual de la -entana2 per# n# la actual Q-pt # Q-pd. @unci#nes de%inidas p#r el usuari#: Permite de%inir una %uncin para me,#rar la legi"ilidad del cdig# + la reutili&acin. E,empl#s de us#:
+y4d='0; f"nction r4fro+4dia(+y4d) = +y4d ! '; echo(;@ia+eter ;, +y4d, ; is radi"s ;, r4fro+4dia(+y4d));

Declaraci#nes Ech#: Esta %uncin imprime el c#ntenid# de la -entana de c#mpilacin. dtil para depurar cdig#. E,empl#s de us#:
my_+,601 my_r,(001 ec+o(78+is is a cylinder 9it+ +,7. my_+. 7 and r,7. my_r)1 cylinder(+,my_+. r,my_r)1

Gender: @uer&a la generacin de una malla inclus# en el m#d# de pre-isuali&acin. Es Dtil cuand# las #peraci#nes "##leanas s#n demasiad# lent#s para reali&ar el seguimient#. Necesidades descripcin. E,empl#s de us#:
render(con3e$ity = ') difference() c"#e(['0, '0, 150], center = tr"e); translate([ 10, 10, 0]) cylinder(h = 20, r = 10, center = tr"e); translate([ 10, 10, +&0]) sphere(r = 10); translate([ 10, 10, &0]) sphere(r = 10); .

Super%icie E,empl# 8:
//surface.scad

s"rface(file = ;s"rface0dat;, center = tr"e, con3e$ity = 5); 8translate([0,0,5])c"#e([10,10,10], center =tr"e); 9s"rface0dat 10 6 2 1 6 5 5 5 5 5 6 2 1 6 6 & 3 ' 1 0 2 1 6 6 & 3 ' 1 0 0 1 6 6 & 3 ' 1 0 0 0 6 6 & 3 ' 1 1 0 0 0 6 6 3 ' 1 1 1 0 0 0 6 6 ' 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

Gesultad#:

E,empl# 5:
!! e$a+ple0100dat %enerated "sin% octa3e: !! d = (sin(1:00':10)A * cos(1:00':10)) * 10; !! sa3e(;e$a+ple0100dat;, ;d;); intersection() s"rface(file = ;e$a+ple0100dat;, center = tr"e, con3e$ity = 5); rotate(&5, [0, 0, 1]) s"rface(file = ;e$a+ple0100dat;, center = tr"e, con3e$ity

= 5); .

Muscar: Us# del patrn:


;search; ;(; ( +atch43al"e B list4of4+atch43al"es ) ;,; 3ector4of43ectors (;,; n"+4ret"rns4per4+atch (;,; inde$4col4n"+ )C )C ;);; +atch43al"e : ( Dal"e::EF=GHI B Dal"e::JKI?EL ); list4of43al"es : ;[; +atch43al"e (;,; +atch43al"e)* ;];; 3ector4of43ectors : ;[; (;[; Dal"e (;,; Dal"e)* ;];)+ ;];; n"+4ret"rns4per4+atch : int; inde$4col4n"+ : int;

L#s siguientes s#n algun#s e,empl#s de us#. L#s -al#res del 1ndice regresan c#m# lista E,empl# 8:
search(;a;,;a#cda#cd;);

De-uel-e:
[0,&]

E,empl# 5:
search(;a;,;a#cda#cd;,1);

De-uel-e:
[0]

E,empl# 6:
search(;e;,;a#cda#cd;,1);

De-uel-e:
[]

E,empl# 7:
search(;a;,[ [;a;,1],[;#;,'],[;c;,3],[;d;,&],[;a;,5],[;#;,6],[;c;,1],[;d;,2], [;e;,6] ]);

De-uel-e:
[0,&]

Muscar en #tra c#lumna2 l#s -al#res de ret#rn# de inde3acin: E,empl# A:


searc+(:.2 27a7.(4.27b7.;4.27c7.:4.27d7.-4.27a7.64.27b7.<4.27c7.=4.27d7.>4.27e7.:4 4. 0. ()1

De-uel-e:
[[0,&],[1,5],[',6]]

Muscar en la lista de -al#res: E,empl# N: De-uel-e t#d#s l#s element#s relaci#nad#s c#n element# de "Ds*ueda -ect#r:
search(;a#c;,[ [;a;,1],[;#;,'],[;c;,3],[;d;,&],[;a;,5],[;#;,6],[;c;,1],[;d;,2], [;e;,6] ], 0);

De-uel-e:
[[0,&],[1,5],[',6]]

E,empl# a: Gegres# primer partid# p#r element# de "Ds*ueda -ect#r2 -ect#r especial de regres# cas#:
search(;a#c;,[ [;a;,1],[;#;,'],[;c;,3],[;d;,&],[;a;,5],[;#;,6],[;c;,1],[;d;,2], [;e;,6] ], 1);

De-uel-e:
[0,1,']

E,empl# Y: M#strar l#s primer#s d#s partid#s p#r element# de "Ds*ueda -ect#r2 -ect#r de -ect#res:
search(;a#ce;,[ [;a;,1],[;#;,'],[;c;,3],[;d;,&],[;a;,5],[;#;,6],[;c;,1],[;d;,2], [;e;,6] ], ');

De-uel-e:
[[0,&],[1,5],[',6],[2]]

Muscar en la lista de strings: E,empl# J:


lKa#le'=[ [;cat;,1],[;#;,'],[;c;,3],[;do%;,&],[;a;,5],[;#;,6],[;c;,1],[;d;,2], [;e;,6],[;apple;,10],[;a;,11] ]; lJearch'=[;#;,;///;,;a;,;c;,;apple;,;do%;]; l'=search(lJearch',lKa#le'); echo(str(;@efa"lt list strin% search (;,lJearch',;): ;,l'));

Gesultad#:
HMNO: ;@efa"lt list strin% search ([P;#P;, P;///P;, P;aP;, P;cP;, P;appleP;, P;do%P;]): [1, [], &, ', 6, 3];

0tilizando el susbsistema 1$% 1$ b(sico:


B#das las primiti-as 5D pueden ser trans%#rmadas al %#rmat# 6D. N#rmalmente se utili&a c#m# parte de una e3trusin 6D. Aun*ue s#n mu+ delgadas2 se representan c#n un espes#r de 8. Cuadrad#: Crea un cuadrad# en el #rigen del sistema de c##rdenadas.Cuand# la %uncin centrar sea -erdadera centrar/ el cuadrad# en el #rigen2 de l# c#ntrari#2 se crea en el primer cuadrante. L#s n#m"res de l#s argument#s s#n #pci#nales2 si l#s argument#s se dan en el mism# #rden c#m# se especi%ica en l#s par/metr#s. Par/metr#s: BamaL# Decimal # 5 matri& de Arra+. Si sl# ha+ un nDmer# dad#2 el resultad# ser/ un cuadrad# c#n lad#s de esa l#ngitud. Si una matri& de -al#r 5 se da2 ent#nces l#s -al#res se c#rresp#nden a las l#ngitudes de l#s e,es Z + F lad#s. El -al#r p#r de%ect# es 8. Centrar M##lean#. Est# determina la p#sicin del #",et#. Si es -erdad2 #",et# est. centrad# en (424). De l# c#ntrari#2 el cuadrad# se c#l#ca en el cuadrante p#siti-# c#n una es*uina en (424). El -al#r predeterminad# es %alse. E,empl#: s)"are ([','],center = tr"e); C1rcul#: Crea un c1rcul# en el #rigen del sistema de c##rdenadas. El n#m"re del argument# es #pci#nal. Par/metr#s G: Decimal. Este es el radi# del c1rcul#. La res#lucin del c1rcul# se "asar/ en el tamaL# del c1rcul#. Si usted necesita un c1rcul# pe*ueL#2 de alta res#lucin se puede e-itar est# haciend# un c1rcul# grande2 ent#nces la ampliacin de"e ser utili&and# un %act#r apr#piad#2 # puede esta"lecer Q %n u #tras -aria"les especiales. El -al#r p#r de%ect# es 8. E,empl#s: circle(); !! "ses defa"lt radi"s, r=1 circle(r = 10); scale([1!100, 1!100, 1!100]) circle('00); !! this (ill create a hi%h resol"tion circle (ith a '++ radi"s circle(', *fn=50); !! Qnother (ay to create a hi%h resol"tion circle (ith a radi"s of '0

P#l1g#n#: Crea un p#l1g#n# c#n l#s punt#s + tra+ect#rias especi%icad#s . Par/metr#s: Punt#s: Eect#r c#mpuest# p#r 5 -ect#res de l#s element#s element#2 es decir2 la lista de l#s punt#s del p#l1g#n#. Bra+ect#rias: Fa sea un s#l# -ect#r2 la enumeracin de la lista de punt#s2 +a sea el %in de atra-esar l#s punt#s2 #2 un

-ect#r de -ect#res2 # "ien una lista de listas de punt#s para cada cur-a particular del p#l1g#n#. Este Dltim# es necesari# si el p#l1g#n# tiene agu,er#s. El par/metr# es #pci#nal + si se #mite2 se sup#ne *ue l#s punt#s en #rden (El IPNI c#mp#nentes del -ect#r de tra+ect#rias es 49inde3ad# re%erenciand# a l#s element#s del -ect#r de punt#s.) C#n-e3idad: Rnteger. NDmer# de cur-as Ihacia adentr#I2 es decir cruces esperad#s de ruta de una l1nea a tra-.s de la ar"itrat+ p#l1g#n#. Us#:
poly%on(points = [ [$, y], 000 ], paths = [ [p1, p', p300], 000], con3e$ity = E);

E,empl#:
poly%on(points=[[0,0],[100,0],[0,100],[10,10],[20,10],[10,20]], paths=[[0,1,'], [3,&,5]]);

En este e,empl#2 tenem#s N punt#s (tres para el Ie3teri#rI del tri/ngul#2 + tres para el Iinteri#rI de un#). P#nem#s en c#ntact# a cada un# c#n d#s 5 tra+ect#rias. Cada element# de una ruta de"e c#rresp#nder a la p#sicin de un punt# de%inid# en el -ect#r de punt#s2 p#r e,empl#2 I8I se re%iere a :84424;. A-is#: C#n el %in de #"tener un #",et# 6D2 +a sea e3truir un p#l1g#n# 5D (lineal # (r#tar) # utilice directamente el slid# primiti-# p#liedr#. Cuand# se utili&a la e3trusin para %#rmar slid#s2 es imp#rtante darse cuenta de *ue la direccin de creacin del p#l1g#n# es signi%icati-a. Si un p#l1g#n# se enr#lla en la direccin inc#rrecta c#n respect# al e,e de r#tacin2 el slid# %inal (despu.s de la e3trusin) puede terminar in-isi"le. Este pr#"lema puede ser -eri%icad# al -#ltear el p#l1g#n# utili&and# la escala (:9828;) (sup#niend# *ue la e3trusin se reali&a alreded#r del e,e K c#m# est/ p#r de%ect#). A-is#: sin em"arg#2 a di%erencia de las rdenes de di"u,# 5D al #perar en l#s e,es r#tulad#s c#m# Z e F2 la e3trusin #rdena impl1citamente traducir est#s #",et#s en c##rdenadas ZK + girar alreded#r del e,e K. E,empl#:
poly%on([[0,0],[10,60],[11, 10]], con3e$ity = E);

Rmp#rt$d3%: Leer un archi-# DZ@ + crear una %#rma 5D. E,empl#:


linear4e$tr"de(hei%ht = 5, center = tr"e, con3e$ity = 10) i+port4d$f(file = ;e$a+ple0060d$f;, layer = ;plate;);

Pro+eccin de 1$ a 2$% Usand# la %uncin de pr#,ecti#n()2 puede crear di"u,#s 5D en m#del#s 6D2 + e3p#rtarlas al %#rmat# d3%. @unci#na mediante la pr#+eccin de un m#del# 6D al plan# (32 +)2 c#n & en 4. Si se cut > true sl# l#s punt#s c#n & > 4 se c#nsideran (c#rtes e%ecti-#s del #",et#)2 c#n cut > %alse2 punt#s p#r encima + p#r de"a,# del plan# se c#nsideran as1 (la creacin de una pr#+eccin adecuada). E,empl#: C#nsidere e3ample445.scad2 *ue -iene c#n OpenSCAD. Se puede cargar + representar a e3ample445.stl (c#n @N). A c#ntinuacin2 puede cargar el archi-# de nue-# en stl OpenSCAD2 as1:
i+port4stl(;e$a+ple00'0stl;);

Ent#nces usted puede hacer un Ic#rteI de pr#+eccin2 *ue le da la Ire"anadaI del plan# 3+ c#n & > 4.
pro7ection(c"t = tr"e) i+port4stl(;e$a+ple00'0stl;);

Bam"i.n se puede hacer una pr#+eccin I#rdinariaI 2 l# *ue da una especie de Is#m"raI del #",et# s#"re el plan# 3+.
pro7ection(c"t = false) i+port4stl(;e$a+ple00'0stl;);

efu. pasa si t#mam#s e,empl# 445 + m#-erl# hacia arri"a2 %uera del plan# ZF` F gira`
translate([0,0,'5]) rotate([60,0,0]) i+port4stl(;!t+p!d0stl;);

Ah#ra2 usted puede pr#+ectar + #"tener una I-ista lateralI de t#d# el #",et#.
pro7ection(c"t=false) i+port4stl(R!f"ll!path!to!stlS);

E3trusin lineal: La e3trusin lineal es una #peracin de m#delad# *ue t#ma un p#l1g#n# 5D c#m# entrada + l# e3tiende en la tercera dimensin. De esta manera se crea una %#rma 6D. Us#:
linear4e$tr"de(hei%ht = fan(idth, center = tr"e, con3e$ity = 10, t(ist = -000. fanrot)

(De"e utili&ar n#m"res de par/metr#s de"id# a un pr#"lema de c#mpati"ilidad c#n -ersi#nes anteri#res) Si %alla la e3trusin de una %#rma 5D n# tri-al2 intente a,ustar el par/metr# de c#n-e3idad (p#r de%ect# n# es 842 per# 84 es un I"uenI -al#r para pr#"arl#). B ist(Hir#): B ist es el nDmer# de grad#s a tra-.s del cual se e3tru+e la %#rma. A,uste del gir# > par/metr# 6N4g se

e3tru+e a tra-.s de una re-#lucin. El sentid# de gir# sigue la regla de la man# i&*uierda # sentid# antih#rari#.

B ist al 4g.
linear4e$tr"de(hei%ht = 10, center = tr"e, con3e$ity = 10, t(ist = 0) translate([', 0, 0]) circle(r = 1);

B ist al 9844g.

linear4e$tr"de(hei%ht = 10, center = tr"e, con3e$ity = 10, t(ist = translate([', 0, 0]) circle(r = 1);

100)

linear4e$tr"de(hei%ht = 10, center = tr"e, con3e$ity = 10, t(ist = 100) translate([', 0, 0]) circle(r = 1);

B ist al 9A44g.

linear4e$tr"de(hei%ht = 10, center = tr"e, con3e$ity = 10, t(ist = translate([', 0, 0]) circle(r = 1);

500)

Centrar: Centrar determina si el #",et# se centra despu.s de la e3trusin2 para *ue n# se e3tru+a hacia arri"a + hacia a"a,# desde el centr#2 c#m# se p#dr1a esperar.

center > true


linear4e$tr"de(hei%ht = 10, center = tr"e, con3e$ity = 10, t(ist = translate([', 0, 0]) circle(r = 1); 500)

El re%inamient# de malla: El par/metr# slices se puede utili&ar para me,#rar la salida.


linear4e$tr"de(hei%ht = 10, center = false, con3e$ity = 10, t(ist = 360, slices = 100) translate([', 0, 0]) circle(r = 1);

Las -aria"les especiales Q %n2 %s + %a Q Q tam"i.n se puede utili&ar para me,#rar el rendimient#.
linear4e$tr"de(hei%ht = 10, center = false, con3e$ity = 10, t(ist = 360, *fn = 100) translate([', 0, 0]) circle(r = 1);

E3trusin r#tati-a. Una e3trusin de r#tacin es una e3trusin lineal c#n un t#*ue2 literalmente. Desa%#rtunadamente2 n# se puede utili&ar para pr#ducir una h.lice para r#scas de t#rnill# p#r*ue el c#nt#rn# 5D de"e ser n#rmal al e,e de r#tacin. E,empl#s:

Un t#r#ide sencill# se puede c#nstruir usand# una e3trucin r#tati-a.


rotate4e$tr"de(con3e$ity = 10) translate([', 0, 0]) circle(r = 1, *fn = 100);

El re%inamient# de la malla.

Aumentar el nDmer# de %ragment#s *ue la %#rma 5D se c#mp#ne de me,#rar/ la calidad de la malla2 per# lle-a m/s tiemp#.
rotate4e$tr"de(con3e$ity = 10) translate([', 0, 0]) circle(r = 1, *fn = 100);

El nDmer# de l#s %ragment#s utili&ad#s p#r la e3trusin tam"i.n se puede aumentar.


rotate4e$tr"de(con3e$ity = 10, *fn = 100) translate([', 0, 0]) circle(r = 1, *fn = 100);

E3trusin de un p#l1g#n#: La e3trusin tam"i.n se puede reali&ar en p#l1g#n#s c#n punt#s elegid#s p#r el usuari#. A*u1 se muestra un p#l1g#n# simple.

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

A*u1 es el mism# p#l1g#n#2 r#taci#nalmente e3truid#2 + c#n el re%inamient# de la malla esta"lecid# en 544. El p#l1g#n# de"e t#car el e,e de r#tacin para la e3trusin del tra"a,#2 es decir2 n# se puede c#nstruir una r#tacin de un p#l1g#n# c#n un agu,er#.

rotate4e$tr"de(*fn='00) poly%on( points=[[0,0],[2,1],[1,2],[1,3],[3,4],[0,5]] );

Descripcin de l#s par/metr#s de e3trusin: Par/metr#s para t#d#s l#s m#d#s de e3trusin: C#n-e3idad: Rnteger. El par/metr# c#n-e3idad especi%ica el nDmer# m/3im# de l#s lad#s %r#ntales ("ac! sides) es un ra+# *ue intersecta al #",et# al *ue p#dr1a penetrar. Este par/metr# sl# es necesari# para -isuali&ar c#rrectamente el #",et# en OpenCSH m#d# de -ista pre-ia + n# tiene e%ect# s#"re la prestacin del p#liedr#.

Esta imagen muestra una %#rma 5D c#n una c#n-e3idad de 72 c#m# se indica el ra+# r#,# cru&a la %#rma 5D un m/3im# de 7 -eces. La c#n-e3idad de una %#rma 6D se determina de una manera similar. Si l# esta"lece a 84 de"er1a %unci#nar "ien para la ma+#r1a de l#s cas#s. Par/metr#s de e3trusin lineal s#lamente. height Bhe e3trusi#n height center R% true the s#lid ill "e centered a%ter e3trusi#n t ist Bhe e3trusi#n t ist in degrees Similar t# special -aria"le Q%n ith#ut "eing passed d# n t# the child 5D slices shape.

Extrusin $)3%,este texto se encuentra incompleto.% C#n las declaraci#nes de e3trusin DZ@ es p#si"le c#n-ertir archi-#s DZ@ 5D directamente en #",et#s 6D. E3trusin lineal: C#n las declaraci#nes de e3trusin DZ@ es p#si"le c#n-ertir #",et#s 5D en #",et#s 6D.
linear_e?trude(file , 7e?am le003.d?f7. layer , 7fan_to 7. +eig+t , fan9idt+. center , true. conve?ity , (0. t9ist , )fanrot)1

E3trusin r#tati-a: Una e3trusin r#tati-a es una e3trusin lineal c#n un t#*ue2 literalmente.
rotate_e?trude(file , 7e?am le003.d?f7. layer , 7fan_side7. origin , fan_side_center. conve?ity , (0)1

Descripcin de l#s par/metr#s de e3trusin: Par/metr#s para t#d#s l#s m#d#s de e3trusin: %ile Bhe name #% the DZ@ %ile t# e3trude la+er Bhe name #% the DZ@ la+er t# e3trude c#n-e3it+ See 5D t# 6D E3trusi#n :32+; c##rdinates t# use as the dra ingVs center2 in the units speci%ied in the DZ@ #rigin %ile scale @RZME Par/metr#s de e3trusin lineal sl#s.

height Bhe e3trusi#n height R% true2 e3trusi#n is hal% up and hal% d# n. R% %alse2 the secti#n is e3truded center up. t ist Bhe e3trusi#n t ist in degrees slices @RZME !tros formatos 1d% En la actualidad2 OpenSCAD sl# es c#mpati"le c#n DZ@ c#m# un %#rmat# de gr/%ic#s para gr/%ic#s en 5D. Otr#s %#rmat#s c#munes s#n PS / EPS + SEH. PS / EPS El pr#grama pst#edit puede hacer c#n-erci#nes entre di%erentes %#rmat#s de gr/%ic#s -ect#riales. OpenSCAD necesita la #pcin 9p#l+aslines para pasa al plugin de salida d3% para entender el archi-#. Las #pci#nes del DB9instru+e pst#edit para hacer te3t#s2 *ue suelen ser l# *ue *uieres si inclu+e te3t#. (Si la res#lucin del te3t# representad# en t.rmin#s de nDmer# de p#l1g#n#s es demasiad# "a,a2 la s#lucin m/s %/cil es escapar l#s eps antes de la c#n-ersin.)
pstoedit dt f d$f: polyaslines infile0eps o"tfile0d$f

SEH pst#edit n# entiende SEH2 EPS2 per# se puede c#n-ertir de un SEH. in!scape2 un edit#r de SEH se puede utili&ar para la c#n-ersin.
in,scape pstoedit H inter+ediate0eps infile0s3% dt f d$f: polyaslines inter+ediate0eps o"tfile0d$f

Aut#mati&acin de ma!e%ile. La c#n-ersin se puede aut#mati&ar mediante el sistema de marca2 para hacer es# de"e p#ner las siguientes l1neas en su Ma!e%ile:
all: +y4first4file0d$f +y4second4file0d$f another4file0d$f 80eps: 80s3% in,scape 80d$f: 80eps pstoedit H *T *< dt f d$f: polyaslines *< *T

La primera l1nea especi%ica *u. archi-#s DZ@ se genera cuand# se in-#ca a ma!e en el direct#ri# actual. El segund# p/rra%# especi%ica cm# c#n-ertir un archi-# c#n e3tensin. S-g a un archi-# c#n e3tensin. Eps2 + el tercer# de Eps. a D3%. Importar + exportar S*L:

imp#rt
Rmp#rta un archi-# para su us# en el m#del# actual OpenSCAD. Parametr#s: I]%ile nameWI Una cadena *ue c#ntiene la ruta de acces# al archi-# de SBL para incluir. Las c#millas s#n necesarias. E,empl#:
i+port(;e$a+ple01'0stl;);

N#tas: En la Dltima -ersin de OpenSCAD2 imp#rt () ah#ra se utili&a para imp#rtar tant# en 5D (DZ@ para la e3trusin) + l#s archi-#s 6D (SBL). imp#rt$stl: ]DEPGECABED .. Utilice el c#mand# de imp#rtacin en lugar ..W Rmp#rta un archi-# de SBL para su us# en el m#del# actual OpenSCAD Par/metr#s I]%ile nameWI Una cadena *ue c#ntiene la ruta de acces# al archi-# de SBL para incluir.Las c#millas s#n necesarias. C#n-e3idad: Rnteger. El par/metr# c#n-e3idad especi%ica el nDmer# m/3im# de l#s lad#s %r#ntales ("ac! sides)es un ra+# *ue intersecta el #",et# p#dr1a penetrar. Este par/metr# sl# es necesari# para -isuali&ar c#rrectamente el #",et# en OpenCSH m#d# de -ista pre-ia + n# tiene e%ect# s#"re la prestacin del p#liedr#. E,empl#:
i+port4stl(;e$a+ple01'0stl;, con3e$ity = 5);

Exportacin a S*L% Para e3p#rtar su diseL#2 selecci#ne IE3p#rtar c#m# SBL ...I desde el IdiseL#I del menD2 a c#ntinuacin2 escri"a un n#m"re de archi-# en el cuadr# de di/l#g# resultante. N# se #l-ide de aLadir la e3tensin I. StlI. S#lucin de Pr#"lemas: Despu.s de c#mpilar + hacer HCAL (@N)2 es p#si"le -er *ue su diseL# es simple: n#. Esas s#n malas n#ticias. Eea la l1nea Y en la siguiente salida de OpenSCAD 5484245:
>arsin% desi%n (QJK %eneration)000 Mo+pilin% desi%n (MJL Kree %eneration)000 Mo+pilation finished0 Ienderin% >oly%on =esh "sin% MLQU000 E"+#er of 3ertices c"rrently in MLQU cache: 13' E"+#er of o#7ects c"rrently in MLQU cache: 1' Kop le3el o#7ect is a 3@ o#7ect:

Ji+ple: no Dalid: yes Dertices: '' Nalfed%es: 10 Hd%es: 35 Nalffacets: 3' Vacets: 16 Dol"+es: ' Kotal renderin% ti+e: 0 ho"rs, 0 +in"tes, 0 seconds Ienderin% finished0

Cuand# intenta e3p#rtar este a SBL #"tendr/ un mensa,e c#m#:


O#7ect isnAt a 3alid ' +anifold: =odify yo"r desi%n00

IMani%#ldI signi%ica *ue es Ia prue"a de aguaI + *ue n# ha+ ningDn agu,er# en la ge#metr1a. En un #",et# -/lid# de 5g9-ariedad cada arista de"e c#nectar e3actamente d#s %acetas. Est# signi%ica *ue el pr#grama de"e ser capa& de c#nectarse c#n una cara de un #",et#. P#r e,empl# si se utili&a un cu"# de altura 84 paraa tallar alg# de una medida m/s amplia en #tr# cu"# de altura 842 n# est/ clar# a *u. cu"# de la parte superi#r # in%eri#r de la parte. As1 *ue el pe*ueL# cu"# de"e ser un p#c# m/s IlargaI (# Ic#rtaI):
difference() !! ori%inal c"#e (si/e = [',',']); !! o#7ect that car3es o"t 9 translate ([005,005, 005]) c"#e (si/e = [1,1,3]); . .

+od"le e$a+ple1() c"#e(['0, '0, '0]); translate([ '0, '0, 0]) c"#e([50, 50, 5], center . +od"le e$a+ple'() c"#e(['001, '001, '0]); translate([ '0, '0, 0]) c"#e([50, 50, 5], center .

c"#e(['0, '0, '0]); = tr"e);

c"#e(['001, '001, '0]); = tr"e);

Otr# e,empl#:
+od"le e$a+ple1() c"#e(['0, '0, '0]); translate([ '0, '0, 0]) c"#e([50, 50, 5], center . +od"le e$a+ple'() c"#e(['001, '001, '0]); translate([ '0, '0, 0]) c"#e([50, 50, 5], center . c"#e(['0, '0, '0]); = tr"e);

c"#e(['001, '001, '0]); = tr"e);

El e,empl#8 har1a as1:

El mdul# e,empl#8 n# es -/lid# en la 5g9-ariedad p#r*ue am"#s cu"#s c#mparten un "#rde. Se t#can per# n# se intersecan. E,empl# 5 es un e,empl# de la 5g9-ariedad -/lid# p#r*ue n# e3iste una interseccin. Ah#ra en el "#rde cada un# de"e c#nectarse e3actamente c#n d#s limitaci#nes de %acetas de 59-ariedades se se cumple. Pie&as *ue est/n restand# de"en e3tenderse m/s all/ de la pie&a #riginal. Para re%erencia2 #tra situacin *ue hace *ue el diseL# sea n# e3p#rta"le es cuand# d#s caras *ue s#n cada un# el resultad# de un t#*ue restan. A c#ntinuacin2 el mensa,e de err#r aparece.
difference () c"#e (['0,10,10]); translate ([10,0,0]) c"#e (10); . difference () c"#e (['0,10,10]); c"#e (10); .

Las super%icies *ue t#can simplemente se c#ntr#lan c#rrectamente.


translate ([10,0,0]) c"#e (10); c"#e (10);

0sando !penS"#$ en un entorno de l/nea de comandos: OpenSCAD n# sl# puede ser utili&ad# c#m# una inter%a& gr/%ica de usuari#2 tam"i.n trata l#s

argument#s c#m# una l1nea de c#mand#s. Su us# de la l1nea dice:


openscad [ [ o o"tp"t4file [ d deps4file ] ] P + +a,e4co++and ] [ @ 3ar=3al [00] ] filena+e

El us# de la -ersin es de OpenSCAD 64/4J/5488.


openscad [ - s stl4file B o off4file B $ d$f4file . [ d deps4file ] ]P [ + +a,e4co++and ] [ @ 3ar=3al [00] ] filena+e

Opci#nes de e3p#rtacin: Cuand# se in-#ca c#n la #pcin2 OpenSCAD n# inicia la HUR2 per# s1 e,ecuta el archi-# dad# + l# e3p#rta al #utput$%ile en un %#rmat# *ue es determinad# segDn *ue e3tensin sea la %uncin (. Stl /. / Desacti-ar. D3%2. CSH). Algunas -ersi#nes usan 9s/9d/9# para determinar el %#rmat# de archi-# de salida en lugar de c#mpr#"ar IOpenSCAD 9 helpI. Si la #pcin9d se da usa c#n de un c#mand# de e3p#rtacin2 t#d#s l#s archi-#s accedid#s mientras se reali&a"a la c#nstruccin de la malla est/n escrit#s en el argument# de la9d en la sinta3is de un Ma!e%ile. C#nstantes: Para prede%inir -aria"les2 utilice la #pcin9D. Se puede administrar en -arias #casi#nes. Cada aparicin de9D de"e ser seguida p#r una asignacin. A di%erencia de las asignaci#nes n#rmales en OpenSCAD2 estas asignaci#nes n# de%inen -aria"les2 si c#nstantes2 *ue n# se pueden cam"iar en el interi#r del pr#grama2 + p#r l# tant# se puede utili&ar para s#"rescri"ir l#s -al#res de%inid#s en el pr#grama en el m#ment# de la e3p#rtacin. Las u"icadas a la derecha puede ser ar"itrarias2 inclu+end# e3presi#nes OpenSCAD #peraci#nes matem/ticas + strings. Benga en cuenta *ue las cadenas tienen *ue ir entre c#millas2 *ue tienen *ue ser para el shell. Para representar un m#del# *ue t#ma un par/metr# de calidad c#n el -al#r de Ipr#duccinI2 ha+ *ue c#rrer.
openscad o +y4+odel4prod"ction0stl @ A)"ality=;prod"ction;A +y4+odel0scad

C#mand# para crear archi-#s necesari#s: En un c#mple,# pr#ces# de c#nstruccin2 algun#s archi-#s re*uerid#s p#r un archi-# OpenSCAD p#dr1an n# ser enc#ntrad#s2 per# se pueden generar2 p#r e,empl#2 si se de%inen en un Ma!e%ile. Si OpenSCAD se le da la #pcin -m ma$e *ue c#men&ar/ a hacerse presente la primera -e& *ue se intenta acceder a un archi-# *ue %alta. E,empl# de ma!e%ile El 9d + 9m sl# tienen sentid# ,untas. (9m sin9d n# -an a ser c#nsideradas las dependencias n# m#di%icadas en la c#nstruccin de las e3p#rtaci#nes2 sin9d 29m re*uerir1a l#s archi-#s *ue se ha+an reali&ad# durante la primera e,ecucin *ue genera las dependencias.) Xe a*u1 un e,empl# de un Ma!e%ile "/sica *ue crea un archi-# de un archi-# stl scad del mism# n#m"re..:
9 e$plicit (ildcard e$pansion s"ppresses errors (hen no files are fo"nd incl"de *((ildcard *0deps)

80stl: 80scad openscad

+ +a,e

o *T

d *T0deps *<

Cuand# hacer m+$e3ample.stl se e,ecuta p#r primera -e&2 *ue n# encuentra archi-#s deps2 sl# depender/ de m+$e3ample.scad<. Desde m+$e3ample.stl t#da-1a n# est/ prea,ustad#2 se crear/ inc#ndici#nalmente. Si OpenSCAD encuentra l#s archi-#s *ue %altan2 l#s usara para c#nstruir la %igura2 + se m#strar/ una lista de t#d#s l#s archi-#s *ue se utili&an en m+$e3ample.stl.deps. Al hacer *ue m+$e3ample.stl se llame p#steri#rmente2 su #"n,eti-# ser/ enc#ntrar e incluir m+$e3ample.stl.deps + c#mpr#"ar si algun# de l#s archi-#s *ue aparecen all12 inclu+end# m+$e3ample.scad2 cam"iad# desde m+$e3ample.stl se c#nstru+ s#"re la "ase de sus marcas de tiemp#. Sl# si ese es el cas#2 se -a a c#nstruir m+$e3ample.stl nue-#. Mlanc#s aut#m/tic#s: En la c#nstruccin de l#s archi-#s SBL similares desde un Dnic# archi-# de scad2 tam"i.n ha+ una manera de aut#mati&arl#s:
9 +atch ;+od"le foo#ar() - !! W+a,eW +e; KQILHKJ=*(shell sed A!X+od"le [a /0 64 ]*()0*+a,e00PC+e0***!:d;s!+od"le !!;s! ()0*!0stl!A #ase0scad) all: *-KQILHKJ. 9 a"to %enerated 0scad files (ith 0deps +a,e +a,e re #"ild al(ays0 ,eepin% the 9 scad files sol3es this pro#le+0 (e$planations are (elco+e0) 0JHMOE@QIY: *(shell echo ;*-KQILHKJ.; B sed As!P0stl!0scad!%A) 9 e$plicit (ildcard e$pansion s"ppresses errors (hen no files are fo"nd incl"de *((ildcard *0deps) 80scad: echo n A"se <#ase0scad5Pn**();A 5 *T + +a,e o *T d *T0deps *< 80stl: 80scad openscad

B#d#s l#s #",et#s *ue se sup#nen -an a ser e3p#rtad#s aut#m/ticamente tiene *ue ser de%inid#s en "ase.scad en un mdul# pr#pi# c#n su %utur# n#m"re de archi-# (sin la e3tensin I. StlI)2 + *ue un c#mentari# c#m# I/ / me hacenI en la l1nea de la de%inicin del mdul#. L#s IBargets >I de l1nea rec#gen estas %uera del archi-# de la "ase + crean l#s n#m"res de archi-#. Est#s se c#nstruir/n cuand# hacen t#d# (# hacen2 para a"re-iar) es llamad#. C#m# la c#n-encin del Dltim# e,empl# es la creacin de l#s archi-#s. Stl de. Archi-#s C#misin Cient1%ica del mism# n#m"re "ase2 para cada un# de est#s archi-#s2 un archi-#. Scad tiene *ue ser generad#. Est# se hace en el I.\ SCAD:I p/rra%#< m+$e3ample.scad ser/ un archi-# OpenSCAD mu+ simple:
use $base.scad% my_e?am le()1 La lineaI. SECONDI est/ ah1 para e-itar *ue ma!e l# elimine el archi-#. Archi-#s SCAD. Si l# elimina2 n# ser1a capa& de determinar aut#m/ticamente *u. archi-#s n# necesitan rec#nstruir nada m/s.

You might also like