Criando arquivos STL para impressão 3D em Python
Um arquivo STL é um arquivo com dados que descrevem um objeto tridimensional. Estes arquivos são muito utilizados para impressão 3D. Nesse tutorial aprenderemos a visualizar e criar arquivos STL com Python!
Os códigos deste tutorial estão como imagens, pois facilita minha produção, mas não se preocupe, se você precisa copiar algum deles e não tem tempo, pode copiar do arquivo copiável clicando aqui.
Este tutorial utiliza conceitos de equações paramétricas de superfícies, visto em qualquer disciplina de geometria analítica de uma universidade. Caso você não esteja familiarizado com este conceito, recomendo dar uma lida num tutorial que fiz, clicando aqui.
Este tutorial faz uso da linguagem de programação Python. É preciso ter noção básica da linguagem. Para rodar os códigos que estão aqui, recomendo o Jupyter Notebook que vem instalado no Anaconda 3.7. Você pode baixar o Anaconda clicando aqui.
Visualizando arquivos STL
Utilizaremos a biblioteca numpy-stl. Para instalar esta biblioteca basta digitar o comando:
O comando acima não será necessário nos trabalhos futuros, uma vez que a instalação é necessária apenas para o primeiro trabalho.
As bibliotecas Matplotlib e Numpy também são necessárias, mas caso você esteja utilizando o Jupyter Notebook do Anaconda Python 3.7, essas bibliotecas já estão pré-instaladas.
O próximo passo é baixar um arquivo STL para visualização. Para esse tutorial eu escolhi a máscara do homem de ferro que pode ser baixada aqui!
Primeiramente, importaremos as bibliotecas que serão utilizadas:
Para carregar o arquivo ironman.STL use o código abaixo:
Mudamos o nome do arquivo para ficar mais intuitivo. Não esqueça de mudar o nome do seu arquivo.
ATENÇÃO: Os três blocos de códigos a seguir, apesar de serem apresentados em 3 células diferente aqui no tutorial, devem estar numa mesma célula no seu Jupyter notebook.
Criaremos uma janela de figura e adicionaremos os eixos tridimensionais a esta janela:
Hora de adicionar os vetores do nosso arquivo STL à figura!
A letra ‘r’ é referente a cor vermelha.
Próximo passo é ajustar as escalas para uma melhor visualização:
E o resultado é o seguinte:
Caso queira utilizar um visualizador gratuito e online para visualizar esse mesmo arquivo, eis algumas sugestões:
- Paint 3D (Windows 10)
- https://3d-viewers.com/pt/stl-viewer.html
- https://www.viewstl.com
No Paint 3D podemos ver o mesmo arquivo da seguinte forma:
Criando seus próprios arquivos STL
Existem várias maneiras de criar arquivos STL. Nesse projeto utilizaremos Geometria Analítica, mais especificadamente equações paramétricas de superfícies!
Não se preocupe, você pode aprender sobre superfícies paramétricas nesse outro tutorial.
Novamente, começaremos importando as bibliotecas necessárias:
Nosso arquivo STL fornecerá dados tridimensionais para impressão 3D de um hiperboloide de uma folha. Uma das construções mais famosas com mesmo formato é a Catedral Metropolitana de Brasília.
O código aqui apresentado é uma adaptação do código encontrado na página https://github.com/WoLpH/numpy-stl/issues/19
Definiremos os parâmetros u e v que serão passados para as equações paramétricas:
Parece um pouco complicado, mas não é tanto. O que precisamos saber é que u varia de 0 a 2 π e o parâmetro v varia de -1.5 a 1.5.
O próximo passo é declarar as paramétricas do hiperboloide de uma folha.
Basicamente é isso, temos os pontos de um hiperboloide de uma folha. Antes de transformarmos esses pontos em um arquivo STL para impressão 3D, visualizaremos como ficou usando novamente o Matplotlib.
Dessa vez, faremos um gráfico por triangularização, isso quer dizer que pegaremos os pontos do hiperboloide de uma folha e conectaremos estes formando vários triângulos que cobrirão toda a superfície.
O resultado ficará assim:
É preciso entender o que é polygon mesh ou, em português, malha poligonal. Essa malha é uma coleção de pontos, arestas e polígonos que formam nossa superfície. No caso do hiperboloide, formamos nossa superfície com vários triângulos. O arquivo STL precisa dos dados do polygon mesh e, assim, fornecer informações suficientes para a impressão tridimensional do objeto em questão.
Hora de criar o arquivo STL!
Criaremos uma malha poligonal nula para posteriormente preenchê-la com os dados da triangularização do nosso hiperboloide.
A variável hiperboloide_mesh armazenará todas as informações da malha poligonal do hiperboloide. Essas informações, para nossa praticidade, já está toda armazena na variável tri.
Agora é só ver se tudo correu bem visualizando nosso arquivo no Python ou em algum dos sites sugeridos:
Ou, usando o Paint 3D:
Desafio!
Que tal fazer algumas impressões 3D de objetos um pouco mais elaborados, como uma peça de um jogo de xadrez?
O código para fazer esse peão está no meu github. Para acessá-lo, clique aqui.
Resumo
Nesse tutorial aprendemos:
- Ler arquivos STL
- Visualizar arquivos STL
- Triangularizar uma superfície paramétrica
- Visualizar as triangulações de uma superfície paramétrica
- Criar malhas poligonais de superfícies paramétricas triangularizadas
- Salvar uma malha poligonal num arquivo STL para impressão 3D
Espero que tenham gostado!