Ecriture format STL vers IGES


STL vers IGES

Sur plusieurs forums ou sites on retrouve la même question : Comment transformer un fichier STL vers un format IGES ? Dès le départ je vais être clair, je n'ai pas la solution miracle.
A ma connaissance et au moment ou j'écris ces lignes il n'existe pas le produit miracle, pas cher qui prend un STL pour le transformer en un magnifique fichier IGES.

Tout d'abord un fichier STL c'est quoi:


STL est un format venant du monde de la stéréolytographie créer par la société 3D systems. Ce format est rapidement devenu un standard de l'industrie car il est simple est peut être facilement créé, relu par tout le monde (y compris moi) . Le format STL décrit une géométrie 3D à partir de triangles.

 Ce format est le plus simple qui existe pour décrire une géométrie 3D. Il ne contient aucune notion de couleur, texture ou autres attributs que l'on peut trouver dans les formats CAO. Il existe deux type de fichier STL le STL ASCII qui est un format texte donc lisible avec n'importe quel éditeur de texte et le STL Binaire qui lui n'est pas " lisible " mais par contre donne des fichiers plus petits.

Normalement un fichier STL décrit une suite de triangles par ses 3 sommets et la normal de longueur unitaire. Ce fichier décrivant une pièce destiné à l'origine à être créer par stéréolytographie il représentait normalement un volume fermé et chaque triangle était structuré pour que les sommets soient liés les uns au autres. Ce format étant utilisé par beaucoup de monde ceci n'est pas forcément vraie, tout va dépendre du logiciel ayant créé le modèle de départ...

Par rapport à des surfaces d'origines ou à un volume d'origine la description par une suite de triangles implique déjà une notion de tolérance d'approximation. Le modèle STL est déjà une approximation du modèle théorique de départ, de plus toutes notions de forme, surface, fonction de création disparaît ce qui rend impossible le passage vers un format plus évolué comme l'IGES.

Surface de base Modèle maillé à 0.01 mm Modèle maillé à 0.1 mm
Surface de base Mailage tolérance 0.01 mm Maillage tolérance 0.1 mm


Et L'IGES



International Graphics Exchange Standard (IGES) est un format d'échange créé par l'industrie américaine au début des années 1980. Il devait permettre d'échanger entre différents logiciels de CAO des définitions numérique.
 La technologie de l'époque basé sur du filaire, de la surface, a donné ce format qui reste très utilisé mais ne permet plus de transcrire les nouvelles formes de création que sont les volumes paramétrés ou paramétriques.

 Dans un fichier IGES l'on peut rertrouver des descriptions de circuits électrique, ou électronique, des entités filaires (ligne, courbe, arc etc) des surfaces et dans une moindre mesure une description de solide ( les entités 500) mais qui reste basé sur la descrition surfacique des formes.

 La notion de groupe, d'entité , de niveau et de couleur est aussi présente dans ces fichiers.


Donc comme on peut le voir nous avons donc d'un coté un format ou l'on connaît uniquement des triangles de l'autre des surfaces.

Pourquoi passer d'un format STL à un format IGES ?


Plusieurs raisons peuvent justifier ce genre de travail :

A) Si je veux modifier la géométrie de ma forme. Comme rajouté des congés, remettre de la dépouille, Changer le diamètre d'un percage etc. Le format STL ne permet pas dans une précision requise par le monde de la mécanique de faire ce genre de travail.

B) Si vous devez réaliser une pièce par usinage il est pratiquement toujours nécéssaire d' "habiller " la pièce. Construire des surfaces d'arrêts, un plan de joint, boucher des percages etc .


Quelles sont les solutions qui existent ?


Une conversion pure est simple par écriture du format STL au Format IGES.


 Autant dire que cette solution est complètement stupide. Tout au plus elle permettra de récupérer dans votre logiciel de CAO des segments de droite qu'il vous faudra retravailler.
Cette conversion n'est qu'une écriture d'un format simple vers un format complexe. Nous obtenons à l'arrivé autant de faces que l'on avait de triangles au départ.

D'un format simple on en fait un format compliqué. En effet pour traduire un triangle en IGES. Il faut décrire 3 lignes (type IGES) qui décriront les 3 cotés, Ces 3 lignes étant elles mêmes regroupées en une courbe composite ( type iges 102) . La courbe composite constituant la restriction d'une Surface (type 128) (on peut aussi utiliser un plan type 108). Tout ceci rassemblés dans une entité surface paramétrique limitée (type iges 144) accompagné de sa courbe définie par projection sur une surface (entité 142).

Structure IGES

Exemple d'écriture d'un triangle


Un triangles(Un triangle)

Par exemple le triangle suivant qui s'écrit en STL.
  facet normal -0.000  0.000  0.000
    outer loop
      vertex -5.502 15.871  0.439
      vertex -5.494 15.878  0.450
      vertex -5.496 15.877  0.444
    endloop
  endfacet

 Donnerait en IGES. 
     128       3       0       0       1       0       0       000010000D      5
     128       0      -1       8       8       0       0 Surface       0D      6
     110      11       0       0       1       0       0       000010500D      7
     110       0      -1       1       0       0       0 Ligne       1D      8
     110      12       0       0       1       0       0       000010500D      9
     110       0      -1       2       0       0       0
Ligne       2D     10
     110      14       0       0       1       0       0       000010500D     11
     110       0      -1       2       0       0       0
Ligne       3D     12
     102      16       0       0       1       0       0       000010500D     13
     102       0      -1       1       0       0       0
Courbe 2D      0D     14
     110      17       0       0       1       0       0       000010000D     15
     110       0      -1       3       0       0       0
Ligne       1D     16
     110      20       0       0       1       0       0       000010000D     17
     110       0      -1       3       0       0       0
Ligne       2D     18
     110      23       0       0       1       0       0       000010000D     19
     110       0      -1       3       0       0       0
Ligne       3D     20
     102      26       0       0       1       0       0       000010000D     21
     102       0      -1       1       0       0       0Courbe 3D      0D     22
     142      27       0       0       1       0       0       000010000D     23
     142       0      -1       1       0       0       0 TrimBnd       1D     24
     144      28       0       0       1       0       0       000000000D     25
     144       0      -1       1       0       0       0   Face       1D     26

     
128,1,1,1,1,0,0,1,0,0,0.0D0,0.0D0,0.01487472452976402D0,         0000005P      3
0.01487472452976402D0,0.0D0,0.0D0,0.006550540549908678D0,        0000005P      4
0.006550540549908678D0,1.0D0,1.0D0,1.0D0,1.0D0,                  0000005P      5
-5.50175952911377D0,15.87142944335938D0,0.4390792548656464D0,    0000005P      6
-5.49360466003418D0,15.87792205810547D0,0.4496906399726868D0,    0000005P      7
-5.503937244415283D0,15.87018013000488D0,0.4330289363861084D0,   0000005P      8
-5.495782375335693D0,15.87667274475098D0,0.4436403214931488D0,   0000005P      9
0.0D0,0.01487472452976402D0,0.0D0,0.006550540549908678D0;        0000005P     10
110,0.0D0,0.0D0,0.0D0,0.01487472452976402D0,0.0D0,0.0D0;         0000007P     11
110,0.01487472452976402D0,0.0D0,0.0D0,0.01487472452976402D0,     0000009P     12
0.006550540549908678D0,0.0D0;                                    0000009P     13
110,0.01487472452976402D0,0.006550540549908678D0,0.0D0,0.0D0,    0000011P     14
0.0D0,0.0D0;                                                     0000011P     15
102,3,7,9,11;                                                    0000013P     16
110,-5.50175952911377D0,15.87142944335938D0,                     0000015P     17
0.4390792548656464D0,-5.49360466003418D0,15.87792205810547D0,    0000015P     18
0.4496906399726868D0;                                            0000015P     19
110,-5.49360466003418D0,15.87792205810547D0,                     0000017P     20
0.4496906399726868D0,-5.495782375335693D0,15.87667274475098D0,   0000017P     21
0.4436403214931488D0;                                            0000017P     22
110,-5.495782375335693D0,15.87667274475098D0,                    0000019P     23
0.4436403214931488D0,-5.50175952911377D0,15.87142944335938D0,    0000019P     24
0.4390792548656464D0;                                            0000019P     25
102,3,15,17,19;                                                  0000021P     26
142,0,5,13,21,1;                                                 0000023P     27
144,5,1,0,23;                                                    0000025P     28
128,1,1,1,1,0,0,1,0,0,0.0D0,0.0D0,0.4168596375949225D0,          0000027P     29
0.4168596375949225D0,0.0D0,0.0D0,0.4271268646280065D0,           0000027P     30
0.4271268646280065D0,1.0D0,1.0D0,1.0D0,1.0D0,                    0000027P     31
-5.50175952911377D0,15.87142944335938D0,0.4390792548656464D0,    0000027P     32
-5.793625831604004D0,15.57391548156738D0,0.4475327432155609D0,   0000027P     33
-5.201738357543945D0,16.17543601989746D0,0.4412371516227722D0,   0000027P     34
-5.49360466003418D0,15.87792205810547D0,0.4496906399726868D0,    0000027P     35
0.0D0,0.4168596375949225D0,0.0D0,0.4271268646280065D0;           0000027P     36
110,0.0D0,0.0D0,0.0D0,0.4168596375949225D0,0.0D0,0.0D0;          0000029P     37
110,0.4168596375949225D0,0.0D0,0.0D0,0.4168596375949225D0,       0000031P     38
0.4271268646280065D0,0.0D0;                                      0000031P     39
110,0.4168596375949225D0,0.4271268646280065D0,0.0D0,0.0D0,0.0D0, 0000033P     40
0.0D0;                                                           0000033P     41
102,3,29,31,33;                                                  0000035P     42
110,-5.50175952911377D0,15.87142944335938D0,                     0000037P     43
0.4390792548656464D0,-5.793625831604004D0,15.57391548156738D0,   0000037P     44
0.4475327432155609D0;                                            0000037P     45
110,-5.793625831604004D0,15.57391548156738D0,                    0000039P     46
0.4475327432155609D0,-5.49360466003418D0,15.87792205810547D0,    0000039P     47
0.4496906399726868D0;                                            0000039P     48
110,-5.49360466003418D0,15.87792205810547D0,                     0000041P     49
0.4496906399726868D0,-5.50175952911377D0,15.87142944335938D0,    0000041P     50
0.4390792548656464D0;                                            0000041P     51
102,3,37,39,41;                                                  0000043P     52
142,0,27,35,43,1;                                                0000045P     53
144,27,1,0,45;                                                   0000047P     54

 EXEMPLE




Fichier STL (Fichier STL)

Dans l'exemple utilisé ( j'ai pris un fichier STL sur le WEB venant d'une question de ce type, désolé j'ai pas pris le temps de noter le lien ni de demander l'autorisation d'utilisation)

 Le fichier STL de départ en STL Binaire à une taille de 451 ko il est constitué de 9222 triangles. Le STL ASCII lui à une taille de 1651 ko. La conversion nous donne un fichier IGES de 26 993 ko (16 fois la taille de notre fichier de départ)

Pièce convertie Le résultat de la conversion donne la même topologie de pièce. Toujours aussi peu "maniable" en CAO.


 Pour avoir des surfaces correctes on doit reconstruire ses surfaces sur le modèle. Il existe deux techniques de reconstruction.


Une rapide dite avec des surfaces non structurées


Le logiciel va dans une tolérance donner venir "plaquer" des surfaces d'un degré mathématique généralement assez faible ( 3x3 ou 4x4 ) sur le maillage. Afin d'assurer la continuité tangentielle entre elles..
Les logiciels de reconstruction de surfaces permettent ce genre de travail. (reverse engineering) ainsi que certains logiciels de CAO comme Solidworks avec son module Scan.

Avantages : très rapide, automatique, simple à mettre en œuvre, marche assez bien sur des formes " lisses "

Inconvénients : donne un réseau de surfaces non structuré, donc difficile à modifier. Le nombre de surfaces créés reste important. Gère très mal les discontinuités ou angles vifs.

Pièce non structuré Surfaces dites non structurées avec un peu de blanc de rouge et de bleu ca me rappel les scultures de Fernand Léger ou des peintures de MIRO.

Pièce non structuré Le résultat peut présenter dans certains cas un aspect un peu "chiffoné" de même les discontinuité de tangence donne toujours des problèmes de description à cette méthode.

 Dans l'exemple on a 5210 surfaces après conversion déviation maxi 0.18 mm par rapport au STL de départ.. Ce qui nous donne un fichier IGES de 40 109ko ( 24 fois la taille du fichier de départ) ce qui s'explique par le nombre de surfaces relativement important par rapport au nombre de triangles de départ et le degré mathématique des surfaces qui engendre plus de lignes de description par rapport aux surfaces issues de la conversion basique du STL, qui elles sont de degré 1x1)

Dernière solution utiliser un vrai logiciel de reconstruction de surface.  

Note 06/2009 : par vrai logiciel  je veux dire : la seule solution pour obtenir à ce jour un fichier surfacique de bonne qualité à partir d'un fichier STL est d'utiliser une logiciel pro dédié à ce genre de travail. je ne mentionne pas de solution car la liste pourrait être longue et devrait être actualise vous pouvez cependant vous référer à ma page Web bookmark pour obtenir une liste de solutions à jour.


 créer des surfaces structurés


 Il va permettre de diriger la reconstruction des surfaces. Des outils intégrés au logiciel permettent de structurer la pièce en utilisant les notions de courbures. Une fois la pièce structuré par un réseau de courbes le logiciel se charge de reconstruire à l'intérieur des zones les surfaces ou faces dans une tolérance donnée et un respect des continuité de tangence.

Avantages : bonne qualité de surface, nombre de surfaces moindre, respect des discontinuités.

Inconvénients : nécessite un logiciel spécifique, travail plus long.

 Dans l'exemple on a 219 surfaces après conversion déviation maxi 0.097 mm par rapport au STL de départ. IGES d'arrivé = 1586 ko .

Pièce + filaire en surfaces structurésSurfaces dites structurées

Pièce structuréQualité de surface meilleure


Comme on peut le voir seul cette dernière solution nous donne une taille de fichier comparé au STL ASCII de départ plus faible.



Liens


Page wikipedia sur le format STL : http://en.wikipedia.org/wiki/STL_(file_format) ( en anglais)
la page française est beaucoup plus pauvre (http://fr.wikipedia.org/wiki/Fichier_de_st%C3%A9r%C3%A9olithographie)
 



Merci d'envoyer vos commentaires, bug reports et autres à : usinage5axes@free.fr

page principale   |  lisez moi !