stl2dat
Convertisseur STL vers LDraw

Mise à jour de la page : 17 septembre 2015.
    
J.C. Tchang
Version originale
Sur le site de Marc Klein
.

L'utilitaire stl2dat écrit par Marc Klein permet de convertir des fichiers .stl issus de logiciels CAO comme Solidworks, Autocad, etc... en fichiers .dat pour les programmes compatibles LDraw.

Créer des pièces LDraw à la main est intéressant, mais quand vous avez accès à un logiciel moderne de CAO, c'est un peu fastidieux. Ainsi j'ai (dixit l'auteur) recherché une solution pour convertir les modèles CAO en un fichier .dat pour LDraw. J'aurais pu faire un outil natif, mais ce travail est beaucoup plus compliqué, et il aurait seulement été valable pour un logiciel de CAO particulier. J'ai trouvé que le format stl contient suffisamment d'informations pour construire un fichier .dat. Ainsi j'ai décidé de faire cet outil de conversion de fichier STL en fichier DAT.

stl2dat lit un fichier au format STL (stéréo-lithographique) texte ou binaire, et convertit les facettes triangulaires de ce fichier en facettes triangulaires ou quadrangulaires dans un fichier au format LDraw, crée des lignes de bords et des lignes conditionnelles, et substitue toutes ces entités, lorsque c'est possible, par des primitives LDraw standards comme un cylindre (n-4cyli.dat) ou un bord circulaire (n-4edge.dat).

C'est une simple application en ligne de commande. Il est possible de l'utiliser sous Windows, grâce à l'interface LETGUI de Michael Heidemann, ce qui est hautement recommandé (voir plus bas).

 

Navigation rapide

 

Téléchargement

Programme et exemple :

Source du programme :

Pour configurer Solidworks :

 

Historique du programme

 

Installation

Installez le programme dans un simple dossier, comme vos autres utilitaires LDraw.
Exemple : c:\lego\stl2dat.

Si vous utilisez Solidworks installez la macro stl.swb avec vos autres macros, et double-cliquez sur stl.reg pour enregistrer dans votre base de registre les paramètres d'enregistrement au format stl. Double-cliquez également sur le fichier stl2000.reg (Solidworks 2000) ou stl99.reg (Solidworks 99) ou stl98.reg (Solidworks 98+ ou avant), pour définir le paramètre de tesselation (voir chapitre : Conseils de modélisation).

 

Description

Description des fonctionnalités du programme et son mode d'utilisation.

Voici une copie d'écran d'une simple exécution du programme :

Utilisation

  1. Créez la pièce avec un logiciel de CAO.
    Utilisez l'unité LDraw, pas les millimètres (20 LDU = 1 longueur de brique 1x1 = 8 mm).
    Pour une bonne substitution des facettes et des bords par des primitives LDraw, suivre les conseils du chapitre : Conseils de modélisation.
  2. Exportez le modèle dans le format stl. Avec Solidworks, utilisez la commande "Enregistrer sous...".
    Réglez les paramètres de stl : Déviation = 0,0005, Tolérance d'angle = 22,5°.
    La tolérance d'angle est importante pour la détection des primitives cylindriques.
    Avec Solidworks, vous devez utiliser la macro stl.swb (voir chapitre : Téléchargement) pour cela.
  3. Exécutez ensuite stl2dat pour convertir le fichier.
    Le programme doit s'exécuter dans une fenêtre DOS (Invite de commande) ou être démarré avec Démarrer / Exécuter. Le programme peut s'exécuter sous Windows, même s'il a une interface de type console.
    On peut également préférer l'interface graphique LETGUI (recommandé).
    Essayez différentes valeurs d'eps d'angle. On obtient un bon résultat avec les options -a 22,51 -eps 0,01
  4. Éditez le fichier .dat pour ajouter les informations manquantes comme les commentaires ou finaliser l'entête.
    Substituez manuellement les primitives complexes, comme les connecteurs Technic, axes, chevilles, goujons, etc..., car c'est trop complexe pour être fait automatiquement.
  5. Copiez le fichier .dat dans le sous-dossier parts du dossier d'installation de votre bibliothèque LDraw, et le faire reconnaître dans le fichier Parts.lst, puis utilisez-le avec un programme compatible LDraw.

Astuce

Pour certaines pièces complexes, il peut être utile de modéliser des sections séparées de la pièce, et puis fusionner les fichiers .dat résultants. Dans ce cas, il y a généralement des facettes superflues dans ce fichier .dat. Pour faciliter cette opération, les facettes tangentes sont regroupées. Vous pouvez également employer l'option -cs pour visualiser plus facilement les surfaces détectées par le programme.

 

Syntaxe

stl2dat.exe fichier_entrée [ options ] [ nom [ auteur ] ]

fichier_entrée : nom du fichier d'entrée au format STL (Texte ou Binaire).
nom : nom descriptif de la pièce (première ligne de l'entête du fichier dat).
auteur : nom et [pseudo] de l'auteur.
options : options disponibles :

-out nom_fichier : nom du fichier de sortie.
-o X Y Z : point d'origine.
-m X Y Z A B C D E F G H I : matrice de transformation.
-a angle : angle limite pour les lignes conditionnelles (défaut 22.5 degrés).
-aq angle : angle limite pour des quadrilatères (défaut 15 degrés).
-at angle : angle limite pour la suppression des facettes inutiles (défaut 11.25 degrés).
-eps valeur : arrondi de calcul (défaut 0.01).
-teps valeur : distance minimum pour la coïncidence (défaut 0.001).
-deps valeur : déterminant maximum pour les quadrilatères coplanaires (défaut 0.1).
-o4 : pas de fusion des quadrilatères.
-o5 : suppression des lignes conditionnelles internes (parties concaves).
-op : ne pas créer les primitives.
-pp : imprimer les surfaces géométriques.
-cn : détecter les cylindres d'après la différence entre la normale de la facette et la normal de la surface théorique.
-oe : ne pas créer les lignes de bord.
-of : ne pas supprimer les facettes inutiles.
-np : pas de surfaces géométriques planes.
-nc : pas de surfaces géométriques cylindriques.
-nt : pas de surfaces géométriques tangentes.
-c1 couleur : couleur des primitives.
-c2 couleur : couleur des lignes de bords.
-c3 couleur : couleur des triangles.
-c4 couleur : couleur des quadrilatères.
-c5 couleur : couleur des lignes conditionnelles.
-no1 : pas de primitives.
-no2 : pas de lignes de bords.
-no3 : pas de triangles.
-no4 : pas de quadrilatères.
-no5 : pas de lignes conditionnelles.
-cs : couleur aléatoire des surfaces.
-cc : couleur aléatoire des surfaces adjacentes à un cylindre.
-dat : crée un fichier .dat.
-ldr : crée un fichier .ldr.
-nobfc : pas d'instructions BFC.
-silent : n'affiche pas les informations.
-ldraw : ne crée pas l'entête au standard LDraw.
-raw : conversion directe sans aucun calcul.

Exemples

Exemples de lignes de commande :

stl2dat mypart.stl -a 22.5 "Ma première pièce" "Marc Klein"

stl2dat x000.dat -o 100 100 50 "Ma pièce" "Mon nom"

Le résultat est un fichier nommé mypart.dat dans le même dossier que mypart.stl

Exemple du résultat de la conversion :

La pièce 32137 a été créée avec Solidworks, puis convertie avec stl2dat et visualisée avec MLCad.

Algorithme de conversion

  1. Le programme balaye d'abord toutes les facettes pour créer tous les bords adjacents et pour garder l'information au sujet des facettes adjacentes.
  2. Toutes les facettes tangentes sont regroupées par surface géométrique. Les types supportés sont : plan, cylindre et toute autre surface tangente.
  3. Les primitives cylindriques sont détectées en tenant compte de l'angle entre deux facettes.
  4. Les bords nécessaires sont crées : lignes du type 2 (lignes de bord) et 5 (lignes conditionnelles).

 

Intégration de stl2dat dans LETGUI

Il est possible de lancer stl2dat à partir d'une interface plus conviviale que la ligne de commande. LETGUI crée par Michael Heidemann est fait pour cela.

Utilisation de l'interface

Pour plus d'informations générales sur cette interface, allez sur la page LETGUI.

 

Développements futurs

Quelques idées :

 

Conseils de modélisation

Quelques recommandations pour utiliser au mieux le programme de conversion de modèle CAO vers LDraw, et en particulier la substitution par des primitives LDraw courbes :

 

Droits et Copyright

Le programme stl2dat et son manuel d'utilisation appartient à (c) Marc Klein. Par convention de l'auteur, il est seulement destiné à être utilisé pour des pièces Lego.

Vous pouvez le retrouver sur son site et sa page Lego.

Les autres programmes cités appartiennent à leurs ayants droits respectifs.

Adaptation de ce manuel : J.C. Tchang. J'ai volontairement changé certains termes pour rester plus en cohérence avec mes autres manuels, par exemple : "ligne de bord" pour "arête" ou "bord" ou "ligne de type 2", "ligne conditionnelle" pour "bord facultatif" ou "ligne de type 5", "facettisation" pour "tessellation". J'ai également ajouté le chapitre sur LETGUI.