O formato de arquivo STL

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:

  1. 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.
  2. facet – Define um triângulo na malha. Cada triângulo é composto por três vértices e uma normal.
  3. vertex – Define as coordenadas de um vértice em um triângulo. Cada vértice é especificado em três dimensões (x, y, z).
  4. outer loop – Define o início de uma seção de dados que descreve os vértices de um triângulo.
  5. endloop – Define o final de uma seção de dados que descreve os vértices de um triângulo.
  6. endfacet – Define o final de um triângulo na malha.
  7. 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.
  8. 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.
  9. comment – Insere um comentário no arquivo STL. Os comentários são geralmente usados para adicionar notas aos arquivos STL.
  10. facet normal – Define a normal de um triângulo na malha. É semelhante à instrução normal, mas é usada em conjunto com a instrução facet para definir um triângulo específico.
  11. metadata – Insere informações adicionais sobre o arquivo STL, como o autor, a data de criação e outras informações relevantes.
  12. 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:

  1. solid e endsolid:
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”.

  1. 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.

  1. 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:

  1. 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ção vertex, 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
  1. name: Esta instrução é usada para dar um nome ao objeto. Ela é inserida após a instrução solid e antes da primeira instrução facet.

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
  1. color ou rgba: Estas instruções são usadas para especificar a cor de um objeto. A sintaxe pode variar dependendo do software usado. A instrução color pode ser seguida por um valor hexadecimal ou RGB, enquanto a instrução rgba 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
  1. 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-chave smooth.

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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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