Por definição, o OpenSCAD é um software do tipo CAD (Computer Aided Design) para criação de objetos sólidos 3D, na verdade é um interpretador de scripts que lê um script que descreve o objeto e rederiza o objeto 3D a partir desse script. É OpenSource, e está disponível para Linux, Windows e Mac. Tudo que será descrito a seguir foi testado na versão 2015-03.3 que é a mais recente disponibilizada nos repositórios da distribuição que eu uso (Mageia). Não estou capacitado para responder sobre instalação no Windows ou no Mac por absoluta falta de experiência, acredito que depois de instalado o uso seja igual - independente do Sistema Operacional utilizado. OpenSCAD para Windows e Mac pode ser baixado de http://openscad.org/. Para instalar na sua distribuição Linux, recomendo utilizar o instalador padrão da distribuição. No Mageia, basta
urpmi openscad
.Como pode-se ver a tela é dividida em 3 áreas: à esquerda temos o Editor de Script é a área onde você digitará a descrição do objeto 3D; à direita em cima temos a área de preview, onde veremos a representação do objeto e abaixo temos o console de mensagens. Podemos mudar a visualização utilizando o mouse: com o botão esquerdo pressionado podemos girar o objeto, a roda do mouse permite aumentar ou diminuir o zoom e com o botão direito pressionado podemos arrastar a visualização.
Vamos criar um objeto simples para testar isso, digite:
cube(5);
pressionando F5 você deverá ver:Experimente as funções do mouse.
Objetos mais complexos são obtidos pela adição e/ou subtração de sólidos básicos como cubos, cilindros, esferas e poliedros.
Vamos desenhar uma caixa de 100mm por 50mm e 30 mm de altura com paredes de 3mm:
difference(){
cube([100,50,30]);
translate([3,3,3])
cube([94,44,30]);
}
Confira se obteve um objeto como o da figura:
Detalhamento do código:
Primeira linha: O objeto será obtido pela diferença entre os dois sólidos
Segunda linha: um cubo (na verdade um paralelepípedo) com as dimensões (x,y,z)
Terceira linha: deslocamos a origem para os pontos (x,y,z)
Quarta linha: um cubo com as dimensões (x,y,z) que será subtraído do primeiro cubo
Para exemplificar a união de objetos vamos colocar uma divisão na caixa, para isso, nosso código ficará assim:
union(){
difference(){
cube([100,50,30]);
translate([3,3,3])
cube([94,44,30]);
}
translate([48.5,3,3])
cube([3,44,27]);
}
Ou seja, adicionamos um cubo de dimensão (x,y,z) na posição determinada pelo segundo translate
Vamos transformar nossa caixa em um Porta Joias, para isso, vamos adicionar na primeira caixa um pino. Nosso código ficará assim:
union(){
difference(){
cube([100,50,30]);
translate([3,3,3])
cube([94,44,30]);
}
translate([48.5,3,3])
cube([3,44,27]);
translate([24,25,0])
cylinder(r=6,h=26,$fn=50);
}
Novamente o translate determina a posição do pino e o objeto adicionado é um cilindro de raio igual a 6 e altura igual a 26. $fn=50 determina o número de "faces" do nosso pino, na verdade o cilindro é um objeto com 50 faces, o que é uma boa aproximação de um cilindro. Podemos aumentar o número de faces, mas não é recomendado aumentar muito pois isso só aumentaria o "trabalho" para renderizar o objeto e não teria muito efeito prático.Como "lição de casa" fica para vocês a tarefa de colocar um segundo pino na outra caixa e criar uma tampa para nossa caixa.
Vamos ver quem será o primeiro a apresentar a tarefa concluída.