Intersector
un outil de coupe LDraw

Mise à jour de la page : 20 mai 2015.
    
J.C. Tchang
Original Version
On Philo's Site
.

L'utilitaire Intersector vous permet de couper les faces contenues dans un fichier LDraw, au niveau de leurs intersections. Chaque ensemble de faces est envoyé à l'utilitaire dans des fichiers LDraw séparés. Un troisième fichier, contenant le résultat coupé est crée. Tous les triangles, quadrilatères, lignes, et lignes conditionnelles du fichier coupé sont limités par les triangles et quadrilatères du fichier coupant.

Nota : Les lignes d'intersection ne sont pas calculées. Vous devez utiliser le programme Isecalc avec les mêmes fichiers d'entrée pour les créer.

C'est une simple application utilisant la console DOS, et le code source est fourni ci-dessous pour celui qui l'intégrera dans une interface plus agréable. Vous pouvez également utiliser l'interface de Michael Heidemann LETGUI, (fortement recommandé !).

 

Navigation rapide

 

Téléchargement

 

Historique

 

Utilisation

Voici une copie d'écran d'un exemple d'exécution :

 

Intégration dans LETGUI

Il est possible de lancer Intersector à 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.

 

Intégration dans LDForge

Le programme Intersector a été interfacé dans LDForge.

Voir le chapitre : Programme de coupe d'entités : Intersector.

 

Intégration dans LD Part Editor

Intersector a été intégré dans l'éditeur de pièce LD Part Editor, voir la page : LD Part Editor, et particulièrement le chapitre Coupe d'entités : Intersector.

 

Comment Intersector fonctionne

 

Exemples

Exemples d'utilisation d'Intersector


Le cylindre coupe un quadrilatère, et une ligne, montrés ici dans LDView, avec le mode BFC actif (l'intérieur est rouge, et l'extérieur vert).
Le résultat à droite. La partie intérieure est jaune (Yellow) pour la face et brun (Dark Tan) pour la ligne, et la partie extérieure est turquoise (Turquoise) pour la face et bleue (Blue) pour la ligne.
Intersector ne sait pas donner de quel côté se trouve les deux zones triangulaires grises.

Ligne de commande : intersector -c square.dat cylint.dat cutint.dat

Fichiers : square.dat, cylint.dat, cutint.dat


Le sens des quadrilatères composant le cylindre ont été inversés, et l'intérieur devient l'extérieur. La coloration des faces coupées change en conséquence.

Ligne de commande : intersector -c square.dat cylext.dat cutext.dat

Fichiers : square.dat, cylext.dat, cutext.dat


Lorsque le sens des faces du fichier coupant n'est pas cohérant (ici elles ont été inversées aléatoirement), l'intérieur et l'extérieur n'est pas clairement défini. Trier le résultat devient beaucoup plus difficile !

Ligne de commande : intersector -c square.dat cylrnd.dat cutrnd.dat

Fichiers : square.dat, cylrnd.dat, cutrnd.dat


Le regroupement des triangles est très utile pour nettoyer le résultat du processus de coupe. Sur la gauche le résultat sans regroupement (option -t)

Ligne de commande : intersector -c -t square.dat cylint.dat triangul2.dat

Fichiers : square.dat, cylint.dat, triangul2.dat

Exemple d'utilisation de l'option -s


Pour de petites pièces (le cylindre dans cet exemple fait 0.8 LDU de rayon), les tolérances de calcul utilisées par Intersector peuvent être inadaptées. L'option de mise à l'échelle (-s <échelle>) peut aider. L'image de gauche, montre le résultat d'Intersector sans l'option -s : Il manque 2 facettes dans la partie jaune, et il y a un petit espace dans la partie droite. L'image de droite montre le résultat avec l'option -s 3. Avec cette augmentation d'échelle temporaire, tous les problèmes ont disparus.

Lignes de commande : intersector -c a1.dat a2.dat noprescaling.dat
                     intersector -c -s 3 a1.dat a2.dat prescaling_3.dat

Fichiers : a1.dat, a2.dat, noprescaling.dat, prescaling_3.dat

Exemple réel pour construire un cockpit


Voici une utilisation plus pratique. Nous avons eu besoin de construire un cockpit de forme arrondie. Nous sommes partis de l'intersection de deux quarts de cylindres.

Fichiers : ws1.dat, ws2.dat


Nous créons maintenant l'intersection de ws1 coupé par ws2 :

Ligne de commande : intersector -c ws1.dat ws2.dat ws12.dat

Puis, ws2 coupé par ws1 :

Ligne de commande : intersector -c ws2.dat ws1.dat ws21.dat

et, en utilisant Isecalc, le ligne d'intersection entre les deux fichiers :

Ligne de commande : isecalc ws1.dat ws2.dat wsline.dat

Fichiers : ws1.dat, ws2.dat, ws12.dat, ws21.dat, wsline.dat


L'étape suivante est de nettoyer les fichiers, supprimer les parties inutiles, colorées en bleu ou en turquoise.

C'est facile pour ws12 : Dans MLCad, cliquer sur une face turquoise, puis sélectionner tous les éléments de la même couleur (Menu : Edition / Sélectionner / Même couleur, ou bouton correspondant), puis appuyer sur la touche de suppression "Suppr" ou "Del". Maintenant sélectionner une ligne conditionnelle "blue" (bleue) dans la liste (on ne les voit pas facilement dans les fenêtres graphiques), puis comme précédemment sélectionnez toutes celles de cette couleur, et supprimez-les toutes, pour enlever les lignes non désirées dans le fichier résultat de la coupe.

Le traitement de ws21 est juste un peu plus compliqué, puisqu'il reste quelques éléments de couleur grise (grey). Il vous faut alors utiliser la sélection par zone, en complément de la sélection par couleur.

Astuce : Comment utiliser la sélection par zone sur des lignes conditionnelles ? Par défaut MLCad prend en compte uniquement les lignes conditionnelles qui sont visibles dans la vue ou se fait la sélection. Voici comment passer outre cette restriction :

Après nettoyage, tous les éléments restants sont recolorés en "main color" (couleur 16) et "edge color" (couleur 24)

Fichiers : ws12a.dat, ws21a.dat


Après assemblage des différents sous-fichiers, vous obtenez ce résultat final.

Fichier : ws.dat

Exemple réel plus complexe


Voici un exemple plus détaillé utilisé pour construire une première ébauche du moyen moteur "Power Functions". Ce moteur, présente deux épineux problèmes de modélisation : La ligne de séparation en zigzag entre les pièces avant et arrière, et la face plane de l'attache du câble.


Trois éléments, dans des fichiers séparés, sont utilisés : Un cylindre fermé et chanfreiné, une lame de coupe en zigzag, et une lame de coupe de l'attachement de câble.


Les primitives du cylindre sont décomposées (Inlined) dans le fichier en utilisant Inliner. Dans LDView, avec son mode BFC actif, nous vérifions que le fichier est cohérent sur le sens des faces (les faces adjacentes sont de la même couleur).

Fichiers : pf1.dat, pf2.dat, pf3.dat


La coupe est faite par :

Ligne de commande : intersector -c pf1.dat pf2.dat pfsplit.dat

Puis, avec MLCad, en utilisant la sélection par couleur, et la sélection par zone, les parties avant et arrière sont séparées et mises dans des fichiers différents. Elles sont recolorées en "main color" / "edge color" (cette étape n'est pas nécessaire pour la partie arrière, car elle sera encore coupée dans la prochaine étape...).

Fichiers : pfsplit.dat, pfback.dat, pffront.dat


L'arrière est maintenant coupé pour créer l'attache plane du câble. Ici nous avons besoin de couper les deux éléments, aussi deux utilisations d'Intersector sont nécessaires.

Lignes de commande : intersector -c pfback.dat pf3.dat pfback1.dat
                     intersector -c pf3.dat pfback.dat pfback2.dat

Fichiers : pfback1.dat, pfback2.dat


A nouveau, les fichiers sont séparés et recolorés avec MLCad.

Fichiers : pfback1a.dat, pfback2a.dat


Enfin, les lignes d'intersection sont calculées avec Isecalc :

Lignes de commande : isecalc pfback.dat pf3.dat pfbackl.dat
                     isecalc pf1.dat pf2.dat pffrontl.dat

Fichiers : pfbackl.dat, pffrontl.dat


Tous les sous-fichiers sont assemblés, et colorés correctement.

Notez encore qu'il s'agit d'une première ébauche. Le fichier final de la pièce LDraw a aussi besoin d'être séparée en deux moitiés pour en réduire la taille (c'est aussi un avantage de le faire sur une pièce entièrement symétrique, le processus de coupe ne respectant pas cette symétrie). Quelques substitutions par des primitives, si elles sont possibles, sont à faire également.

Fichier : pf.dat

 

Droits et Copyright

Le programme Intersector 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.

Traduction et Adaptation : J.C. Tchang.