Rectifier
Mise à jour de la page : 20 mai 2015.
Rectifier, est un optimiseur de fichier au format LDraw, particulièrement utile pour
les développeurs de fichiers de pièces.
Navigation rapide
Objet du programme
Rectifier est un utilitaire qui analyse un fichier au format LDraw,
et exécute deux sortes d'optimisations sur lui.
- Convertit des triangles adjacents en quadrilatères. Cette conversion
est faite seulement si le quadrilatère est convexe (Non concave), assimilable
à un plan (plus petit que la première limite : voir PlanarCheck), et si les triangles
ont le même sens BFC, et la même couleur.
- Convertit les parallélogrammes (quadrilatères qui ont des côtés opposés parallèles),
et au moins une ligne servant de bord, en primitive rect (voir Primitives Rectangle).
Les parallélogrammes doivent être parfaitement plats pour faire cette conversion.
C'est une simple application en ligne de commande. Le code source est fourni ci-dessous,
pour celui qui voudrait l'intégrer dans une interface plus conviviale.
Vous pouvez également l'utiliser sous Windows, grâce à l'interface de LETGUI de
Michael Heidemann (Hautement recommandé !).
Téléchargement
-
Rectifier package (120 Ko), sur le site de l'auteur, incluant le programme pour Windows,
la documentation, les fichiers source (Visual C++ 6.0), et les fichiers exemples.
Historique
- V1.0 - 1 janvier 2009 : Version initiale.
- V1.1 - 9 janvier 2009 : Corrigé la taille de la pile, causant un arrêt brutal du programme sous Windows 2000.
- V1.2 - 12 janvier 2009 : Rectifier respecte maintenant l'orientation BFC lorsqu'il remplace les quadrilatères
par des primitives rect. Si aucune orientation BFC n'est spécifiée,
dans le fichier d'entrée, le sens CCW est pris par défaut. Egalement, essaie de garder
des coefficients simples dans la matrice de transformation de rect,
lorsque c'est possible.
- V1.3 - 18 juin 2009 : Corrigé bug, occasionnant de mauvais coefficients sur de petits rect.
- V1.4 - 4 novembre 2009 : Ajouté option -t permettant de choisir l'angle maximal formé par 2 triangles pour
les fusionner en 1 quadrilatère.
- V1.5 - 22 février 2011 : Ajouté option -a permettant d'annuler la conversion d'un quadrilatère en primitive rect
lorsque qu'il est adjacent à une ou plusieurs lignes conditionnelles.
- V1.6 - 10 novembre 2011 : Utilise la gestion dynamique de la mémoire, la taille des fichiers
n'est limitée que par la taille de la mémoire et la patience de l'utilisateur.
- V1.7 - 20 mars 2012 : Ajouté codage des couleurs directes (code source courtoisement fourni par Nils Schmidt).
Prévient la création de quadrilatères à des angles trop plats.
- V1.8 - 5 avril 2012 : Corrigé erreur introduite en v1.7 (fichier de sortie mauvais sur lignes de bord).
- V1.9 - 13 décembre 2012 : Primitives rect générées avec des valeurs plus simples dans leur
matrice de transformation. Le code LDraw est encore plus petit. Le programme est plus simple, également ;)
Utilisation
- Préparez le fichier LDraw d'entrée. Rectifier travaille sur n'importe quel fichier LDraw,
mais devrait être utilisé en fin de création de la géométrie de la pièce, avant de soumettre
cette pièce au "LDraw Parts Tracker".
- Ouvrez une fenêtre "Invite de commande" (ex fenêtre DOS).
- Tapez la ligne de commande : rectifier [-q] [-r] [-a] [-c] [-t <valeur>] LdrawFileIn LdrawFileOut.
Rectifier créera le fichier LdrawFileOut
contenant le résultat optimisé. Notez que si le fichier
LdrawFileOut existe, il est écrasé sans message d'erreur.
Les options -q, -r, -a, -c,
et -t,
contrôlent le comportement de Rectifier.
Ces options sont détaillées plus bas.
Voici une copie d'écran d'un exemple d'utilisation du programme :
Intégration dans LETGUI
Il est possible de lancer Rectifier à 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 "Rectifier" dans le menu déroulant "Tool".
- Entrez le chemin d'accès à l'utilitaire Rectifier, si cela n'a pas été configuré, dans le champ "Rectifier".
- Entrez le nom du fichier d'entrée avec son chemin, dans le champ "Inputfile", 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 fichier de sortie, ou gardez celui défini automatiquement, dans le champ "Outputfile".
- Cochez, si besoin les options -c, -q, -r ou -a, et entrez si besoin l'angle de l'option -t
dans le champ "angle threshold".
- Exécutez la commande en cliquant sur le bouton
Nota : Si vous avez un message d'erreur genre Numéric value error...,
il faut remplacer le "." par une "," dans le champ "angle threshold". Vous êtes
sûrement en configuration clavier Français.
Pour plus d'informations générales sur cette interface, allez sur la page LETGUI.
Intégration dans LDForge
Le programme Rectifier a été interfacé dans LDForge.
Voir le chapitre : Programme d'optimisation : Rectifier.
Intégration dans LD Part Editor
Rectifier a été intégré dans l'éditeur de pièce LD Part Editor, voir la page :
LD Part Editor, et particulièrement
le chapitre Optimisation Rect : Rectifier.
Comment Rectifier fonctionne
- Le fichier d'entrée est lu et analysé. Les triangles, quadrilatères, et lignes
sont stockées dans un tableau
(limité à 10 000 lignes, ce qui devrait être suffisant !)
(limité par la mémoire... ou la patience).
- Une première analyse est faite pour localiser les triangles de la même couleur, et qui partagent
un côté commun. Pour chaque candidat, le programme vérifie si le quadrilatère formé est convexe
ou assimilable à un plan. Si le quadrilatère est validé, il remplace le premier triangle, et le
second est supprimé. Le programme recherche alors si une ligne conditionnelle existait
entre les deux triangles. Si elle est trouvée, elle est supprimée.
- Une seconde analyse du fichier est faite pour rechercher les parallélogrammes. Ils sont identifiés
par leurs diagonales, qui se croisent dans leur milieu. Quand un parallélogramme est trouvé,
le programme recherche des lignes de bords encadrant ce parallélogramme. En fonction du nombre
de lignes trouvées, et de leur configuration, le programme détermine le type de primitive
rect à utiliser parmi rect1, rect2p,
rect2a, rect3, et rect, ainsi que son orientation.
Le centre du parallélogramme devient le centre de la primitive, pendant que la longueur et l'orientation
de ses côtés détermine la matrice de transformation de la primitive. Cette primitive
est insérée dans le tableau à la place du parallélogramme, et les lignes de bords, maintenant
incorporées à la primitive, sont supprimées.
- Rectifier écrit ensuite le fichier de sortie, touchant uniquement les lignes de commandes
modifiées ou supprimées.
- Le comportement de Rectifier peut être contrôlé avec les paramètres de la ligne de commande suivants :
- -c : Les quadrilatères crées sont colorés en jaune, et les
nouvelles primitives rect sont colorées en bleu. Cette aide permet
d'apprécier le travail fait par Rectifier.
- -q : Rectifier ne fait pas la transformation
de triangles en quadrilatères.
- -a : Rectifier ne fait pas la transformation
de quadrilatères en primitives rect lorsqu'ils sont adjacents à des lignes conditionnelles.
Cela améliore le lissage graphique des bords arrondis de la pièce.
- -r : Rectifier ne fait pas la transformation
de parallélogrammes en primitives rect.
- -t <valeur> : définit l'angle maximal formé par 2 triangles
pour les fusionner en 1 quadrilatère. La valeur par défaut est mis à 0.95° (valeur < 1), conformément
au standard LDraw : LDraw recommended value,
ou en français : Planéité des quadrilatères.
Exemple
Ce fichier (64053.dat) a été traité par Rectifier. Il a localisé plusieurs
triangles adjacents (en jaune), et combiné quelques quadrilatères et lignes en primitives
rect (en bleu). Comme résultat, le fichier a une taille réduite de 24%...
Ligne de commande : rectifier -c 64053.dat 64053r.dat.
Nota : Pour supprimer l'affectation des couleurs jaune et bleu, le plus simple est de relancer
la ligne de commande sans l'option -c, ou en décochant
cette option dans LETGUI.
Ligne de commande : rectifier 64053.dat 64053r.dat.
Limitation
Il arrive parfois que l'optimisation "automatique" de Rectifier ne facilite pas l'usage du fichier généré :
- Limite de symétrie non respectée par exemple. Dans ce cas le changement de couleur de quelques triangles
permet de contourner cet automatisme.
- Au contraire, en mettant des pairs de triangles d'une même couleur, ont peut forcer préférentiellement leur fusion.
Droits et Copyright
Le programme Rectifier 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.