J.C. Tchang |
Original Version On Philo's Site. |
PathTruder, est un programme générateur de faces LDraw, écrit par Philo (Philippe Hurbain).
L'utilitaire PathTruder permet de créer un maillage de surfaces par extrusion d'un profil, suivant
un chemin.
Le chemin est défini par 2 ensembles de lignes, fournies à PathTruder dans deux
fichiers au format LDraw.
Le profil, également constitué d'un ensemble de lignes, est le troisième fichier d'entrée
LDraw nécessaire à l'application.
Le premier segment du profil, en rouge sur l'image précédente, définit
comment ce profil est attaché au chemin. Une extrémité est positionnée sur le premier ensemble de
lignes du chemin, et l'autre sur le second.
PathTruder peut être considéré comme une variante de Coverer, utilisant un profil qui ne serait pas restreint à une ligne droite. En conséquence, PathTruder a beaucoup plus de possibilités, mais a également quelques restrictions. Par exemple Coverer permet d'avoir un nombre de segments différents dans les deux ensembles de lignes définissant le chemin. Une autre différence, est que PathTruder ne crée pas les lignes conditionnelles (lignes type 5) entre les faces. Vous devrez utiliser en complément Edger pour cela.
PathTruder est une simple procédure de commande,
dont le code source est fourni avec le programme dans le chapitre suivant,
pour celui qui veut l'intégrer dans une interface plus conviviale.
Vous pouvez également utiliser PathTruder sous Windows,
grâce à l'interface graphique LETGUI de Michael Heidemann, ce qui vous est même
fortement recommandé ! (voir plus bas).
Sur le site de l'auteur : PathTruder package (pathtruder_package.zip) (337 ko).
Ce fichier compressé inclue le programme pour Windows, la documentation, les fichiers source (Visual C++ 6.0), et des fichiers exemples, correspondants au cas de figures décrits plus bas.
Voici une copie d'écran d'une simple exécution du programme :
Il est possible de lancer PathTruder à partir d'une interface
plus conviviale que la ligne de commande. LETGUI crée par Michael Heidemann
est fait pour cela.
Pour plus d'informations générales sur cette interface, allez sur la page LETGUI.
PathTruder a été intégré dans l'éditeur de pièce LD Part Editor, voir la page : LD Part Editor, et particulièrement le chapitre Génération de faces sur profil : PathTruder.
La première ligne (de type 2) contenue dans le fichier du profil a une fonction spéciale,
car elle définit comment ce profil est attaché sur les lignes du chemin.
Cette première ligne (en rouge sur l'image précédente), est le vecteur directeur du profil, et
DOIT être dans le plan XY, pour obtenir un résultat correct. Elle définit les points
d'accrochage, l'orientation, et la mise à l'échelle du profil. Elle ne doit pas avoir une longueur nulle.
Le profil, lui même, est constitué de lignes (également de type 2). Ce profil
(en bleu sur l'image précédente) se raccroche généralement aux extrémités du vecteur directeur,
mais ce n'est pas toujours vrai (voir plus loin). L'ensemble du profil peut être un profil ouvert ou fermé.
Dans la plupart des cas d'utilisation de PathTruder, l'ensemble du profil doit également être défini
dans le plan XY. Une exception à cette règle
est le cas d'un profil balayant une spirale, comme on le verra dans un exemple plus loin.
Voir le fichier : 1shape1.dat
Le premier point du vecteur directeur du profil (shape1) est placé sur la ligne de Path1,
et le second point de ce vecteur est placé par homothétie (orientation et mise à l'échelle) sur la ligne de Path2.
Au cours du processus de création des surfaces, le profil va balayer tous les points du chemin
(constitué de Path1 et Path2).
Ligne de commande : PathTruder -p1 1path1.dat -p2 1path2.dat -s1 1shape1.dat 1result.dat
Fichier résultat : 1result.dat
Les lignes du chemin n'ont pas besoin d'être parallèles, et peuvent même se rejoindre.
Ligne de commande : PathTruder -p1 2path1.dat -p2 2path2.dat -s1 2shape1.dat 2result.dat
Fichier résultat : 2result.dat
Le chemin peut former une boucle fermée. Il est important dans ce cas qu'il n'y ait pas
de ligne supplémentaire en dehors de la boucle, sinon l'algorithme de tri peut ne pas marcher.
Ligne de commande : PathTruder -p1 2looppath1.dat -p2 2looppath2.dat -s1 2shape1.dat 2loopresult.dat
Fichier résultat : 2loopresult.dat
Si le profil est circulaire, avec son vecteur directeur dans l'axe ont obtient un tore, en prenant des cercles comme chemin, positionnés en parallèles.
L'orientation des segments de lignes dans le fichier du profil est importante. Un
segment doit se terminer là où le suivant commence. L'orientation des faces générées
dépendent de cela. Le bouton "Echanger" dans la boite de dialogue de création ou d'édition des
lignes dans MLCad permet de corriger cela. Nota : sur l'image, la boite de dialogue a volontairement
été retaillée.
Une autre solution, à postériori, est de retourner les surfaces à l'envers grâce à LDDP. Voir à ce sujet
le chapitre Certification BFC des faces
dans la page Créer de nouvelles pièces LDraw.
Ligne de commande : PathTruder -p1 2path1.dat -p2 2path2.dat -s1 2badbfcshape1.dat 2badbfcresult.dat
Fichier résultat : 2badbfcresult.dat
Lorsque deux fichiers de profils sont spécifiés, une déformation progressive est appliquée
entre ces deux profils au cours du balayage du chemin. Ici, le profil 3shape2
est obtenu à partir de 3shape1 en l'aplatissant.
Ligne de commande : PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape1.dat -s2 3shape2.dat 3result.dat
Fichier résultat : 3result.dat
Vous pouvez contrôler la vitesse de transition avec le paramètre -ts.
Celui-ci peut varier de 1 (transition linéaire)
à 10 (transition en "S", valeur
par défaut), à 100 et plus (transition abrupte).
Lignes de commandes : PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape1.dat -s2 3shape2.dat -ts 1 3resulta.dat PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape1.dat -s2 3shape2.dat -ts 10 3resultb.dat PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape1.dat -s2 3shape2.dat -ts 100 3resultc.dat
Fichiers résultat : 3resulta.dat, 3resultb.dat, 3resultc.dat
Le paramètre -tp contrôle la position de la transition, au cours du balayage.
Celui-ci peut varier de 0 à 1.
La valeur par défaut est 0.5 (à mi-chemin).
Lignes de commandes : PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape1.dat -s2 3shape2.dat -tp 0.2 3resultd.dat PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape1.dat -s2 3shape2.dat -tp 0.5 3resulte.dat PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape1.dat -s2 3shape2.dat -tp 0.8 3resultf.dat
Fichiers résultat : 3resultd.dat, 3resulte.dat, 3resultf.dat
Le paramètre -tn contrôle le nombre de transitions
entre le profil 1 et le profil 2 (déformations de shape1 à shape2).
-tn 1 va de shape1 à shape2, comme dans les exemples précédents.
-tn 2 va de shape1 à shape2, puis revient de shape2 à shape1.
-tn 3 va de shape1 à shape2, puis de shape2 à shape1, et enfin de shape1 à shape2.
-tn 4 va de shape1 à shape2, puis revient de shape2 à shape1,
puis refait la même chose une seconde fois.
-tn N ... et ainsi de suite.
Nota : En comparaison avec les exemples précédent, les fichiers de profils sont inversés
pour démarrer "à plat".
Lignes de commandes : PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape2.dat -s2 3shape1.dat -tn 1 3resultg.dat PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape2.dat -s2 3shape1.dat -tn 2 3resulth.dat PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape2.dat -s2 3shape1.dat -tn 4 3resulti.dat
Fichiers résultat : 3resultg.dat, 3resulth.dat, 3resulti.dat
Le paramètre -l permet d'affiner un chemin, en limitant
la longueur maximum des segments de lignes de ce chemin. La longueur spécifie
la longueur maximum qui occasionne la coupe des lignes en deux parties égales.
Lignes de commandes : PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape2.dat -s2 3shape1.dat -tn 4 3resulti.dat PathTruder -p1 3path1.dat -p2 3path2.dat -s1 3shape2.dat -s2 3shape1.dat -tn 4 -l 2 3resultj.dat
Fichiers résultat : 3resulti.dat, 3resultj.dat
Nouveau en version 1.2 : L'option -e permet un meilleur contrôle des extrémités
de la surface générée. Pour l'utiliser, vous devez ajouter des segments terminaux aux
deux extrémités des chemins. Le début et la fin de la surface générée sera
perpendiculaire au plan défini par ces segments terminaux. Dans cet exemple, l'option
est utilisée pour créer une surface qui rencontre un plan.
Lignes de commandes : PathTruder.exe -p1 11path1.dat -p2 11path2.dat -s1 1shape1.dat -e 11result.dat PathTruder.exe -p1 11path1e.dat -p2 11path2e.dat -s1 1shape1.dat -e 11resulte.dat
Vous pouvez aussi utiliser l'option -e pour raccorder plusieurs surfaces
générées par PathTruder.
Lignes de commandes : PathTruder.exe -p1 12path1.dat -p2 12path2.dat -s1 12shape1.dat -s2 12shape2.dat -e -i 12result1.dat PathTruder.exe -p1 12path3.dat -p2 12path4.dat -s1 12shape3.dat -s2 12shape2.dat -e 12result2.dat
Vous pouvez aussi utiliser l'option -e lorsque les 2 chemins se rejoignent, comme
dans cet exemple de coin sphérique particulier. Le profil shape2.dat
créé par aplatissement de shape1.dat (qui est dans le plan X/Y) est
uniquement nécessaire si l'on veut contrôler la forme du creux final avec l'option -ts 1.
Ligne de commande : PathTruder.exe -p1 path1.dat -p2 path2.dat -s1 shape1.dat -s2 shape2.dat -e -ts 1 cs_result.dat
Si vous regardez la partie gauche de l'image précédente, vous pouvez voir que l'enveloppe
externe n'est pas parallèle au chemin. Cela est dû à la projection du profil dans les angles du chemin,
qui n'est pas constante suivant l'angle. Cela varie proportionnellement au cosinus de cet angle.
Ce phénomène cause un aplatissement apparent du profil, ce qui est parfois gênant.
Le paramètre -a inverse cet aplatissement en augmentant la hauteur du profil
pour compenser cet effet.
Lignes de commandes : PathTruder -p1 4path1.dat -p2 4path2.dat -s1 4shape1.dat 4resultd.dat PathTruder -p1 4path1.dat -p2 4path2.dat -s1 4shape1.dat -a 4resulte.dat
Fichiers résultat : 4resultd.dat, 4resulte.dat
Le paramètre -c contrôle l'angle que fait le chemin avec le segment précédent.
Si cet angle est supérieur ou égal à la valeur donnée, alors
des lignes sont insérées à la jonction entre les surfaces. La valeur par défaut
est 180°, ce qui ne génère aucune ligne. Vous pouvez utiliser une valeur négative
pour forcer la création des lignes.
Lignes de commandes : PathTruder -p1 4path1.dat -p2 4path2.dat -s1 4shape1.dat -c 180 4resulta.dat PathTruder -p1 4path1.dat -p2 4path2.dat -s1 4shape1.dat -c 90 4resultb.dat PathTruder -p1 4path1.dat -p2 4path2.dat -s1 4shape1.dat -c 10 4resultc.dat
Fichiers résultat : 4resulta.dat, 4resultb.dat, 4resultc.dat
Vous pouvez également contrôler si et où des lignes doivent être créées le
long de l'extrusion. Pour faire cela, vous devez insérer une ou plusieurs lignes de longueur nulle
dans le fichier du profil. Lorsque deux fichiers de profils sont spécifiés,
les lignes de longueur nulle doivent exister dans les deux fichiers.
Ligne de commande : PathTruder -p1 5path1.dat -p2 5path2.dat -s1 5shape1.dat 5result.dat
Fichier résultat : 5result.dat
En utilisant la transition multiple de profils, il est facile de créer des tubes annelés
suivant un chemin de lignes. Ici les profils sont des cercles identiques, mais
la valeur du vecteur directeur est différente. Vous obtenez alternativement
des rétrécissements/dilatations. Vous pouvez jouer avec les paramètres de transition
-tp et -ts pour obtenir
le résultat désiré. Le paramètre de longueur -l peut
aider à couper les lignes du chemin pour obtenir une meilleure résolution.
Ligne de commande : PathTruder -p1 8path1.dat -p2 8path2.dat -s1 8shape1.dat -s2 8shape2.dat -l 2 -tn 24 8result.dat
Fichier résultat : 8result.dat
Une transition entre deux profils concave et convexe peut permettre de créer ce joli nez de bateau.
Maintenant, je dois admettre qu'il faut jongler avec les paramètres pour obtenir une pièce réellement... bien profilée !
Ligne de commande : PathTruder -p1 9path1.dat -p2 9path2.dat -s1 9shape1.dat -s2 9shape2.dat -tn 2 9result.dat
Fichier résultat : 9result.dat
Il est facile de créer une surface de révolution avec PathTruder.
Dessiner un demi-profil à l'échelle voulue. Ajoutez en première ligne
le vecteur directeur qui doit avoir comme longueur une valeur D, correspondant à
la hauteur du demi-profil, pour qu'il reste à l'échelle.
Il doit être positionné à une distance R quelconque de l'axe de symétrie du demi-profil.
Comme lignes
du chemin, choisissez deux cercles parallèles, ayant ce même rayon R,
et distants de la valeur D.
En conséquence, les surfaces créées forment un volume complet de 360°.
Ligne de commande : PathTruder -p1 7path1.dat -p2 7path2.dat -s1 7shape1.dat 7result.dat
Fichier résultat : 7result.dat
Sur cette base, en utilisant des demi-cercles, ou des quarts de cercles, il est possible de générer des demi-volumes, ou des quarts de volume.
Nouveau en version 1.2 : L'orientation adéquate de la surface créée dépend de
la façon dont vous avez crée le fichier du demi-profil
et la direction des lignes du chemin. Si le résultat que vous obtenez semble à l'envers, utilisez l'option
-i pour inverser la courbure du profil.
Lignes de commandes : PathTruder -p1 7path1a.dat -p2 7patha2.dat -s1 7shape1.dat 7resulta.dat PathTruder -p1 7path1a.dat -p2 7patha2.dat -s1 7shape1.dat -i 7resultb.dat
Avec le paramètre -r, vous indiquez à PathTruder
de tourner le vecteur directeur durant le balayage,
pour permettre de créer des pièces torsadées. Le profil ci-dessus est à la base de la modélisation du
Barbed Wire Coil.
C'est pour cela que j'ai ajouté cette fonction...
Dans la ligne de commande, le paramètre -r doit
être suivi de la valeur de l'angle de torsion en degré (ici 360 = 360° = 1 tour complet).
Ligne de commande : PathTruder -p1 6path1.dat -p2 6path2.dat -s1 6shape1.dat -r 360 6result.dat
Fichier résultat : 6result.dat
Autre exemple avec le paramètre -r, vous pouvez créer avec PathTruder
des tronçons de cordage. Les cordes anciennes (années 1980) font un diamètre d'environ 0.8 mm (2 LDU)
et actuellement environ 0.6 mm (1.5 LDU), et sont formés de 3 torons torsadés.
Dans la ligne de commande, le paramètre -r doit
être suivi de la valeur de l'angle de torsion en degré (ici 360 = 360° = 1 tour complet).
Dans cet exemple la longueur des lignes font 6 LDU, et sont espacés de 1 LDU dans
le premier cas et de 0.75 LDU dans le second. Une valeur plus petite de -l
augmente la qualité du résultat, au détriment de la taille du fichier. Cette méthode
génère malgré tout des tailles de fichiers importants, et il vaut mieux se limiter à
de petits tronçons de corde.
Ligne de commande 1 (corde ancienne) : PathTruder -p1 string_p1a.dat -p2 string_p2a.dat -s1 string_sec.dat -r 360 -l 0.5 string_l05_r360.dat
Fichier résultat : string_l05_r360.dat
Ligne de commande 2 (corde actuelle) : PathTruder -p1 string_p1a.dat -p2 string_p2b.dat -s1 string_sec.dat -r 360 -l 0.5 string_l05_r360n.dat
Fichier résultat : string_l05_r360n.dat
Vous pouvez télécharger les fichiers de cet exemple sur ce site : string.zip (18 Ko).
PathTruder peut créer également des ressorts avec le paramètre optionnel -r.
Dans ce cas d'utilisation, le profil peut avoir un angle avec le vecteur
directeur. Si R est le rayon du ressort, L sa longueur, n le nombre de tours, l'angle A
du plan du profil, avec la direction du vecteur doit se calculer
avec la formule A = atan(n*2*PI*R/L).
Chaque chemin donne la longueur L du ressort, et peut être composé d'une seule ligne.
Utilisez le paramètre -l pour couper les lignes.
Plus la valeur de -l est petit,
plus l'apparence du résultat est fin, mais plus la taille du fichier de sortie grossit !
La distance entre les lignes du chemin détermine le diamètre réel du fil.
Le profil est généralement circulaire, mais peut être également prismatique. Il
donne la forme du fil du ressort.
Il doit avoir le même diamètre apparent que la longueur du vecteur directeur.
La distance R du profil au vecteur directeur donne le rayon du ressort.
Dans la ligne de commande, le paramètre -r doit
être suivi de la valeur en degré du nombre de tours (ici 2,5 tours x 360°).
Ligne de commande : PathTruder -p1 10path1.dat -p2 10path2.dat -s1 10shape1.dat -l 0.5 -r 900 10result.dat
Fichier résultat : 10result.dat
Le programme PathTruder et son manuel d'utilisation appartient à (c) Philo (Philippe Hurbain).
Vous pouvez le retrouver sur son site et sa page des utilitaires LDraw, et sur la version d'origine en anglais de cette page.
Traduction libre et Adaptation : J.C. Tchang.
Ajout de la création de cordage : J.C. Tchang.