Linetrim
Mise à jour de la page : 24 mars 2009.
Linetrim (Line Trimmer) est un programme qui limite les lignes
à leur intersection avec des surfaces dans
un fichier LDraw. C'est un utilitaire pouvant servir à ceux qui
modélisent de nouvelles pièces LDraw.
Objet du programme
Linetrim limite les lignes traversant des surfaces en forme
de triangles ou de quadrilatères. L'ensemble des lignes et l'ensemble
des surfaces doivent être fournis à l'utilitaire dans des fichiers
LDraw séparés. Un troisième fichier est créé en sortie. Il contient
les lignes limitées. De façon optionnelle, un quatrième fichier,
contenant l'ensemble des surfaces et les lignes limitées peut être créé.
Cet utilitaire est une simple application en ligne de commande (DOS).
Le code source est fourni ci-dessous à tous ceux qui veulent l'intégrer
dans une interface plus au goût du jour.
Cette image montre l'utilité de limiter les lignes : Bien que les lignes
délimitant les rayons de la roue passent sous la surface du bord de la roue,
ils apparaissent avec quelques programmes de rendu, comme ici avec MLCad
(image de gauche). Limiter les lignes à leur longueur exacte fournit
un résultat plus propre (image de droite).
Avertissement : Les pièces LDraw sont construites de surfaces planes
et sont vides à l'intérieur. La seule information disponible pour connaître
ce qui est dans la pièce ou en dehors, est l'orientation locale du sens des
surfaces. Le coté CCW est considéré comme l'extérieur, c'est-à-dire le côté
de la surface où l'ordre des sommets est vu dans le sens horaire. Linetrim
enlèvera donc la portion de la ligne qui est sur le coté CCW de la
surface intersectée.
Une conséquence : Linetrim est efficace lorsque ce sont
les extrémités de la ligne qui doivent être limitées. Il ne fonctionne pas
correctement lorsque c'est la partie centrale qui doit être enlevée, comme
vous pouvez le voir dans l'image ci-dessous. Le résultat attendu sera obtenu
en coupant les lignes en deux avant d'utiliser Linetrim.
Téléchargement
- Téléchargez le Package
complet, contenant le programme pour Windows et Macintosh, la documentation
les fichiers source en Visual C++ 6.0, et les fichiers exemples suivants :
- spokes.dat contient des lignes et
surfaces trop longues à limiter.
- cyls.dat contient des triangles/quadrilatères
sur lesquels les lignes vont être limitées.
- trimmed.dat est le fichier avec les lignes limitées,
en sortie de Linetrim.
- spokeslineless.dat est le fichier optionnel crée par
Linetrim, correspondant au fichier spokes.dat
sans les lignes.
- spokestrimmed.dat est la combinaison des deux
fichiers précédents.
Nota : La version Macintosh (binaire universel) est de Jim DeVona.
Historique
- V1.1: Correction d'erreurs dans l'analyse des lignes de commandes.
Usage
- Préparez les fichiers LDraw d'entrée. Linetrim calcule la coupe des
lignes (Type 2) traversant les triangles (Type 3) ou quadrilatères (Type 4).
Les autres types de lignes LDraw (Type 0 ou 1) sont ignorés.
Les pièces ou primitives (Type 1), doivent avoir été au préalable
insérées (inlined) en tant que triangles et quadrilatères
(LDDesignPad fait cela très
facilement).
- Alors que Linetrim n'a pas besoin de fichier d'entrée certifié BFC,
il a besoin du sens des faces des triangles et quadrilatères coupant les lignes.
La façon simple est d'ajouter une ligne : 0 BFC CERTIFY CW
au début du fichier des surfaces et de le tester en utilisant
LDview avec l'option BFC +
faces colorées en vert et rouge. La partie des lignes du coté rouge des faces
sera coupée. Si quelques surfaces ont leur face rouge du mauvais coté,
utilisez LDDesignPad pour
inverser le sens des ces surfaces.
- Ouvrez une fenêtre "Invite de commande" (ex fenêtre DOS).
- Tapez la ligne de commande : Linetrim LdrawTriQuadFile
LdrawLineFile LdrawTrimmedLineFileOut [LdrawLineRemovedFile].
Linetrim créera le fichier LdrawTrimmedLineFileOut
contenant les lignes coupées. Notez que si le fichier
LdrawTrimmedLineFileOut existe, il est écrasé sans message d'erreur.
Optionnellement, LdrawLineRemovedFile avec le même contenu que
LdrawLineFile sans les lignes, sera créé.
- Linetrim génère un fichier de sortie avec 6 chiffres de
précision après le point décimal. Cette précision est excessive
pour la plupart des usages, et ces valeurs peuvent être arrondies.
Ici également, LDDesignPad
fait cela très bien.
Voici une copie d'écran d'un exemple d'utilisation du programme :
Intégration de Linetrim dans LETGUI
Il est possible de lancer Linetrim à 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
- Sélectionnez "Linetrim" dans le menu déroulant "Tool".
- Entrez le chemin d'accès à l'utilitaire Linetrim, si cela n'a pas été configuré, dans le champ "Linetrim".
- Entrez le nom du premier fichier d'entrée avec son chemin, dans le champ "Input1", ou le sélectionner
avec le bouton . Ce fichier
peut être visualisé en cliquant sur le bouton , ou
édité avec le bouton
- Entrez le nom du second fichier d'entrée avec son chemin, dans le champ "Input2", comme ci-dessus.
- Entrez le nom des fichiers de sortie, ou gardez ceux définis automatiquement, dans les champs "Output".
- Exécutez la commande en cliquant sur le bouton .
Pour plus d'informations générales sur cette interface, allez sur la page LETGUI.
Nota : Cet interfaçage a été supprimé à partir de la version 1.0.0.0
du 01-01-2009 de LETGUI. En remplacement utiliser Intersector.
Comment Linetrim fonctionne
- Les deux fichiers d'entrée sont lus et analysés. Les quadrilatères
sont coupés en deux triangles. Les quadrilatères dont les sommets sont croisés
(en forme de "nœud papillon"), ne peuvent être
correctement convertis. Les lignes contenues dans le premier fichier
sont stockées dans un tableau, et les triangles du second fichier
sont stockés dans un autre.
- Toutes les lignes du premier tableau sont testées en intersection
avec tous les triangles du second tableau. Si une intersection est
trouvée, le point extrême de la ligne se trouvant du coté CCW du triangle
a ses coordonnées remplacées par celles de l'intersection.
La partie du programme calculant l'intersection ligne/triangle est adapté
de "triangle intersection code" de
http://www.softsurfer.com/.
- Le ou les fichiers de sortie sont créés.
Limitation
Nota : (J.C. Tchang) Linetrim ne traite que les lignes du fichier d'entrée. Les surfaces,
pouvant relier ces lignes, ne sont pas traitées et sont donc non limitées. Elles
se trouvent tel quelles dans le quatrième fichier optionnel. Visuellement,
les surfaces non trimées ne posent aucun problème lorsqu'elles passent
sous une autre surface.
Droits et Copyright
Le programme Linetrim et son manuel d'utilisation appartiennent à (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.
Cette page
Traduction et Adaptation : J.C. Tchang.