O formato de arquivo STL é um dos formatos mais populares usados para distribuir objetos para impressão 3D. É uma abreviação de “stereolithography”, que é um processo de fabricação aditiva em que camadas de material são depositadas para criar um objeto 3D.
O formato STL é amplamente utilizado na impressão 3D, pois é fácil de gerar a partir de software de modelagem 3D e é compatível com a maioria das impressoras 3D. Ele representa a geometria de um objeto por meio de uma malha de triângulos. Cada triângulo é definido por três pontos em um espaço tridimensional.
A estrutura básica de um arquivo STL é simples. Ele começa com uma linha que identifica o tipo de arquivo (ASCII ou binário) e, em seguida, uma seção de dados que descreve a geometria do objeto.
Os arquivos STL podem ser salvos em dois formatos diferentes: ASCII e binário. O formato ASCII é mais legível por humanos e é fácil de editar manualmente, enquanto o formato binário é menor e mais rápido de carregar, mas não pode ser editado manualmente. No entanto, a maioria dos programas de modelagem 3D permite exportar para ambos os formatos.
No formato ASCII, cada triângulo é definido por uma sequência de linhas que começam com a palavra “facet”. Cada triângulo é composto por três vértices (pontos) e uma normal, que é um vetor que aponta para fora do triângulo. A normal é usada para determinar a orientação do triângulo. A seguir, um exemplo de um triângulo em formato ASCII:
facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet
O formato binário é mais compacto e rápido de carregar do que o formato ASCII. Cada triângulo é definido por um conjunto de 12 bytes. Os primeiros quatro bytes representam a normal do triângulo (em x, y, z) e os próximos nove bytes representam os três vértices do triângulo (em x, y, z). O último byte é reservado para fins de controle.
Os arquivos STL podem conter várias instruções adicionais, dependendo do software que gerou o arquivo. Algumas instruções comuns incluem configurações de unidade (para determinar a escala do objeto), comentários e metadados.
Em resumo, o formato de arquivo STL é um formato simples e amplamente utilizado para distribuir objetos para impressão 3D. Ele representa a geometria de um objeto por meio de uma malha de triângulos e pode ser salvo em dois formatos diferentes: ASCII e binário. Embora seja simples, o formato STL pode conter várias instruções adicionais, dependendo do software que gerou o arquivo.
Instruções
Existem várias instruções adicionais que podem ser encontradas em arquivos STL, dependendo do software que gerou o arquivo e da finalidade para a qual o arquivo é destinado. Aqui está uma lista com algumas das instruções mais comuns encontradas nos arquivos STL, juntamente com uma breve descrição de cada uma:
solid
– Define o início de uma seção de dados sólidos. A seção sólida é geralmente usada para agrupar vários objetos em um único arquivo STL.facet
– Define um triângulo na malha. Cada triângulo é composto por três vértices e uma normal.vertex
– Define as coordenadas de um vértice em um triângulo. Cada vértice é especificado em três dimensões (x, y, z).outer loop
– Define o início de uma seção de dados que descreve os vértices de um triângulo.endloop
– Define o final de uma seção de dados que descreve os vértices de um triângulo.endfacet
– Define o final de um triângulo na malha.endsolid
– Define o final de uma seção de dados sólidos. A seção sólida é geralmente usada para agrupar vários objetos em um único arquivo STL.normal
– Define a normal de um triângulo na malha. A normal é um vetor que aponta para fora do triângulo e é usada para determinar a orientação do triângulo.comment
– Insere um comentário no arquivo STL. Os comentários são geralmente usados para adicionar notas aos arquivos STL.facet normal
– Define a normal de um triângulo na malha. É semelhante à instruçãonormal
, mas é usada em conjunto com a instruçãofacet
para definir um triângulo específico.metadata
– Insere informações adicionais sobre o arquivo STL, como o autor, a data de criação e outras informações relevantes.unit
– Define a unidade de medida utilizada no arquivo STL. Essa instrução é importante para garantir que a escala do objeto seja correta ao imprimir em uma impressora 3D.
Essas são apenas algumas das instruções adicionais que podem ser encontradas nos arquivos STL. É importante lembrar que nem todos os arquivos STL contêm todas essas instruções e que diferentes programas de modelagem 3D podem usar instruções adicionais exclusivas.
Aqui estão alguns exemplos de como as instruções adicionais podem ser usadas em um arquivo STL:
solid
eendsolid
:
solid Part1 facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid Part1
Neste exemplo, a instrução solid
é usada para definir o início de uma seção de dados sólidos chamada “Part1”. Em seguida, é especificado um triângulo usando as instruções facet
, outer loop
, vertex
e endloop
. Finalmente, a instrução endsolid
é usada para definir o final da seção sólida “Part1”.
comment
:
solid Part2 facet normal 0.0 0.0 1.0 outer loop vertex 1.0 0.0 0.0 vertex 1.0 1.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet # This is a comment facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 0.0 1.0 0.0 vertex 1.0 1.0 0.0 endloop endfacet endsolid Part2
Neste exemplo, a instrução comment
é usada para inserir um comentário no arquivo STL. O comentário começa com o caractere “#” e é usado para adicionar uma nota explicativa para os usuários que abrem o arquivo.
unit
:
solid Part3 facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid Part3
Neste exemplo simples, a instrução unit
não é especificada. Isso significa que as unidades de medida usadas para definir as coordenadas do triângulo são desconhecidas. No entanto, se fosse necessário especificar as unidades de medida, a instrução unit
poderia ser usada da seguinte forma:
solid Part3 unit millimeter facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 10.0 0.0 0.0 vertex 0.0 10.0 0.0 endloop endfacet endsolid Part3
Neste exemplo, a instrução unit
é usada para especificar que as coordenadas do triângulo estão em milímetros. Isso garante que a escala do objeto seja correta ao imprimir em uma impressora 3D.
Há instruções adicionais que podem ter uma sintaxe diferente dos exemplos apresentados anteriormente. Vou apresentar alguns exemplos de instruções adicionais com sintaxes diferentes:
facet normal <float> <float> <float>
: Esta instrução é usada para especificar a normal da superfície de um triângulo. A sintaxe é a mesma que a instruçãovertex
, mas em vez de coordenadas, ela especifica as componentes X, Y e Z da normal.
Exemplo:
facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet
name
: Esta instrução é usada para dar um nome ao objeto. Ela é inserida após a instruçãosolid
e antes da primeira instruçãofacet
.
Exemplo:
solid MyObject name "Cube" facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
color
ourgba
: Estas instruções são usadas para especificar a cor de um objeto. A sintaxe pode variar dependendo do software usado. A instruçãocolor
pode ser seguida por um valor hexadecimal ou RGB, enquanto a instruçãorgba
pode ser seguida por valores de 0 a 1 para cada componente de cor (vermelho, verde, azul e alfa).
Exemplo:
solid MyObject color 0xFFFFFF facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
smooth
: Esta instrução é usada para especificar que os vértices de um triângulo devem ser suavizados, ou seja, a transição entre as faces adjacentes deve ser suave. A sintaxe é simples e consiste apenas da palavra-chavesmooth
.
Exemplo:
solid MyObject facet normal 0.0 0.0 1.0 smooth outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
param
: Esta instrução é usada para especificar parâmetros adicionais para a geometria. A sintaxe é definida pelo software que a utiliza e pode variar de acordo com a ferramenta.
Exemplo:
solid MyObject param some_parameter=1.0 another_parameter=2.0 facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
tesselation
: Esta instrução é usada para especificar o nível de tesselagem para uma superfície curva. A sintaxe é definida pelo software que a utiliza e pode variar de acordo com a ferramenta.
Exemplo:
solid MyObject tesselation level=5 facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
facettype
: Esta instrução é usada para especificar o tipo de superfície de um triângulo. A sintaxe é definida pelo software que a utiliza e pode variar de acordo com a ferramenta.
Exemplo:
solid MyObject facettype plane facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
curv
: Esta instrução é usada para especificar a curvatura de uma superfície. A sintaxe é definida pelo software que a utiliza e pode variar de acordo com a ferramenta.
Exemplo:
solid MyObject curv type=circle radius=1.0 facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
texmap
: Esta instrução é usada para especificar um mapa de textura para a superfície. A sintaxe é definida pelo software que a utiliza e pode variar de acordo com a ferramenta.
Exemplo:
solid MyObject texmap filename="texture.jpg" scale=2.0 offset=0.5 facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
material
: Esta instrução é usada para especificar o material utilizado na impressão 3D do objeto. A sintaxe é definida pelo software que a utiliza e pode variar de acordo com a ferramenta.
Exemplo:
solid MyObject material name="ABS" color="red" facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject
metadata
: Esta instrução é usada para adicionar metadados ao arquivo STL, como informações sobre o autor, licença e data de criação. A sintaxe é definida pelo software que a utiliza e pode variar de acordo com a ferramenta.
Exemplo:
solid MyObject metadata author "John Doe" license "CC BY-SA 4.0" created "2022-01-01" endmetadata facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 0.0 vertex 1.0 0.0 0.0 vertex 0.0 1.0 0.0 endloop endfacet endsolid MyObject