Você está na página 1de 3

PRASC – Aula 4

Programação em OpenSCAD
Manual OpenSCAD: http://en.wikibooks.org/wiki/OpenSCAD_User_Manual
OpenSCAD Cheat Sheet: http://www.openscad.org/cheatsheet/

Primitivas  2D  
• circle(r | d) — Desenha um círculo
r, raio da esfera, decimal, ex.: r=2.5
d, diâmetro da esfera, , decimal, ex.: d=5.0
$fa, ângulo mínimo para um fragmento (para círculos, esferas, cilindros). Por omissão é
12
$fs, tamanho mínimo de um fragmento. Por omissão é 2
$fn, número de segmentos, sobrepõe-se aos 2 anteriores. Por omissão é 0.
Nota: Quando $fn é 0, são usados $fa e $fs para calcular o número de segmentos. O
valor mínimo de segmentos é 5.
Exemplos:
circle(r = 1);
// círculo de raio 1
circle (d = 5);
// círculo de raio 5
circle (3, $fn=60);
// círculo de raio 3 e com 60 segmentos

• square(size, center) — Desenha um quadrado ou rectângulo


size, decimal ou array com 2 valores, ex.: size=2.5 ou size=[2.5,3], por omissão é 1
center, booleano, pode ser true ou false, indica se o cubo fica centrado, por omissão é
false
Exemplos:
square(4);
// quadrado de lado 4 com vértice na origem
square(size = 1, center = false);
// quadrado de lado 1 com centro na origem
square(size = [5,10], center = true);
// rectângulo com dimensões dx=5 e dy=10, centrado na origem

• polygon (points = [ [x, y], ... ], paths = [ [p1, p2, p3..], ...], convexity = N) — Desenha um
polígono a partir dos vértices e paths, se paths for omitido desenha um polígono que liga
todos os pontos
Exemplos:
polygon(points=[[0,0],[100,0],[0,100],[10,10],[80,10],[10,80]], paths=[[0,1,2],[3,4,5]]);
// cria polígono com buraco (2 paths)

Primitivas  3D:  
• cube(size, center) — Desenha um cubo ou paralelepípedo
size, decimal ou array com 3 valores, ex.: size=2.5 ou size=[2.5,3,4.5], por omissão é 1
center, booleano, pode ser true ou false, indica se o cubo fica centrado, por omissão é
false
Exemplos:
cube(4);
// cubo de lado 4 com vértice na origem
cube(size = 1, center = false);
// cubo de lado 1 com vértice na origem
cube(size = [5,10,20], center = true);
// paralelepípedo com dimensões dx=5, dy=10 e dz=20, centrado na
origem

1
• sphere(r | d, $fa, $fs, $fn) — Desenha uma esfera
r, raio da esfera, decimal, ex.: r=2.5
d, diâmetro da esfera, , decimal, ex.: d=5.0
$fa, ângulo mínimo para um fragmento (para círculos, esferas, cilindros). Por omissão é
12
$fs, tamanho mínimo de um fragmento. Por omissão é 2
$fn, número de segmentos, sobrepõe-se aos 2 anteriores. Por omissão é 0.
Nota: Quando $fn é 0, são usados $fa e $fs para calcular o número de segmentos. O
valor mínimo de segmentos é 5.
Exemplos:
sphere(r = 1);
// esfera de raio 1
sphere(d = 5);
// esfera de raio 5
sphere(3, $fn=60);
// esfera de raio 3 e com 60 segmentos por circulo

• cylinder(h, r1, r2, r, center, $fa, $fs, $fn) — desenha um cilindro, tronco de cone ou cone
o h, altura do cilindro, ex.: h=12.5
o r1, raio da base, ex.: r1=0.5
o r2, raio do topo, ex.: r2=5
o r, raio da base e do topo, ex.: r=2.5
o center, booleano, pode ser true ou false, indica se o cilindro fica centrado, por
omissão é false
o $fa, $fs e $fn, idênticas à esfera
Exemplos:
sphere(r = 1);
// esfera de raio 1
sphere(r = 5);
// esfera de raio 5
sphere(3, $fn=60);
// esfera de raio 3 e com 60 segmentos por circulo

• polyhedron(points = [ [x, y, z], ... ], triangles = [ [p1, p2, p3..], ... ], convexity = N) —
Desenha um poliedro a partir dos vértices e faces
Exemplos:
polyhedron(
points=[ [10,10,0],[10,-10,0],[-10,-10,0],[-10,10,0], // 4 pontos na base
[0,0,10] ], // o topo da pirâmide
triangles=[ [0,1,4],[1,2,4],[2,3,4],[3,0,4], // os 4 triângulos do lado
[1,0,3],[2,1,3] ] // 2 triangulos (quadrado) da base
); // cria pirâmide quadrangular

Transformações  
• scale(v) — Altera a escala do(s) objeto(s) filho(s)
v, array com 3 valores (factores) para a nova escala: x, y e z; valores maiores que 1
aumentam a escala, valores entre 0 e um reduzem a escala
Exemplos:
scale([1,2,0.5]) cube()
// mantem a escala do eixo dos xx, duplica a do eixo dos yy, e reduz
para metade (1/2) a escala do eixo dos zz; equivalente a
cube(1,2,0.5)

• resize(v, auto) — Altera os parâmetros do(s) objeto(s) filho(s) para ficar com a nova escala
v, array com 3 valores para as novas dimensões do objecto: x, y e z; valores 0 mantêm a
escala, excepto se for usado o parâmetro auto
auto, (opcional) booleano ou array com 3 booleanos, define se as dimensões para os
valores 0 é ajustada de acordo com os outros valores
Exemplos:
resize([50,50,0]) cube();
2
// cria um cubo com dimensões([50,50,1])
resize([30,0,0], auto=true) cube();
// cria um cubo com dimensões ([30,30,30])
resize([20,0,0], auto=[true,true,false]) cube([5,4,3]);
// cria um cubo com dimensões ([20,16,3])

• rotate(a, v) — Roda o(s) objeto(s) filho(s)


a, decimal ou vector com 3 decimais, roda os objetos um determinado ângulo em torno
de v, ou no caso de um vector em torno do x, y e z por esta ordem
v, (opcional) array com 3 decimais; eixo de rotação
Exemplos:
rotate([50,0,0]) cube();
// roda um cubo de lado 1, 50° em torno do eixo dos xx
resize([0,180,30) cube();
// roda um cubo de lado 1, 180° em torno do eixo dos yy e depois 30°
em torno do eixo dos zz
resize(45, [1,1,0]) cylinder();
// roda um cilindro de altura e raio 1, 45° em torno de um eixo que
faz 45° com o eixos dos xx e dos yy

• translate(a) — Desloca o(s) objeto(s) filho(s)


a, array com 3 decimais; deslocação em x, y e z
Exemplos:
translate([2,4,-3]) cube();
// move um cubo de lado 1, 2 unidades no eixo dos xx, 4 unidades no
eixo dos yy, -3 unidades no eixo dos zz

Operações  booleanas  
• union() {...} — Faz união dos objetos que estão entre chavetas
Exemplos:
union() {
cylinder (h = 4, r=1, center = true, $fn=100);
rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true,
$fn=100);
}

• intersection () {...} — Faz a intersecção dos objetos que estão entre chavetas
Exemplos:
intersection() {
cylinder (h = 4, r=1, center = true, $fn=100);
rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true,
$fn=100);
}

• difference () {...} — Faz a subtração ao primeiro objeto, dos objetos que estão a seguir
Exemplos:
difference() {
cylinder (h = 4, r=1, center = true, $fn=100);
rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true,
$fn=100);
}

caracteres modificadores de operações:


% ignora os objetos ou “sub-objetos” para a operação e desenha-os a transparente cinza
# usa os objetos ou “sub-objetos” para a operação, mas desenha-os também sem
modificação a transparente vermelho
! ignora o objeto que está antes, e só desenha o objecto ou “sub-objetos” que estão a
partir daqui
* ignora completamente o objeto ou “sub-objetos”

Você também pode gostar