Je vois que Le Soldat Inconnu viens de mettre un post dans un autre fil pour montrer sa version de l'application engrenages que j’avais montrée. C’est un as en PureBasic mais il a quand même mis une semaine, ce qui me fait dire que comme débutant en programmation je ne m’étais pas mal débrouillé.
Je post donc vite une deuxième application avant qu’il me prenne de vitesse. Le rendu n’est pas aussi bon que ce que sera le sien mais elle fonctionne. Voilà le travail !

PROBLEME POSE:
Il s’agit de réaliser un outil de coupe (appelé Fly-cutter) de 0,5 à 1,3 mm d’épaisseur environ, pour reproduire à l’identique, par taillage, un engrenage d’horloge cassé ou abîmé.
Les horlogers traditionnels réalisent le fly-cutter par comparaison avec le modèle et après beaucoup de tâtonnements.
J’ai voulu explorer la solution qui consiste à faire tourner un code qui permet de digitaliser le profil des dents de la roue cassée, d’en déduire le profil du fly-cutter, puis d’éditer le tableau des commandes à appliquer sur les volants de mon petit tour pour réaliser ce fly-cutter. Il n’y aurait aucun tâtonnement et on irait droit au but.
PREMIERE ETAPE
Je prends une photo des dents de la roue à reproduire. Il s'agit d'un barillet de pendule. Je compte ses dents et je mesure avec précision son diamètre extérieur. Avec MS Photo Editor je rogne cette photo pour ne garder que deux dents et je l’agrandis.
Dans une fenêtre console je rentre les trois données dont le code a besoin :
-Chemin d’accès à la photo sur le disque
-Diamètre extérieur de la roue : 54,3 mm
-Nombre de dents: 72
Le code ouvre la photo dans une fenêtre et affiche en superposition une mire qui est composée :
-D’un cercle de tête (représentant de cercle passant par le sommet des dents)
-D’un cercle de pied (représentant de cercle passant au fond du creux des dents) concentrique avec le précédent.
-De deux rayons (rouges) ayant entre eux une distance angulaire égale au pas angulaire entre deux dents de la roue à réaliser. Cette valeur restera inchangée pendant tous les traitements suivants.
-De trois rayons (bleus) séparés de leurs voisins par un demi-pas angulaire.
A ce stade la mire est centrée sur la fenêtre mais pas sur la photo. Il n’y a aucune correspondance dimensionnelle entre les deux objets, d'où l'absence d'indication au dessus du barreau unitaire sur l'axe des U.

DEUXIEME ETAPE
Par des actions sur le clavier je modifie la géométrie et la position de cette mire pour la faire cadrer au mieux aux deux dents représentées sur l’écran.
-Les flèches déplacent de centre des cercles.
-Deux touches font le zoom, c'est-à-dire augmentent de rayon du cercle de tête. C’est un zoom « cadré », c'est-à-dire que la position de la partie visible du cercle reste à sa place pendant le zoom et c’est le centre du cercle que se déplace.
-Deux autres touches font tourner la mire.
-Deux autres modifient le rayon du cercle de pied.
Quand j’estime que les dents de la photo s’inscrivent bien dans la mire j’appuie sur la touche qui déclenche le passage à l’étape suivante, après avoir enregistré une copie de l’image.
La correspondance dimensionnelle entre mire et photo est maintenant établie.
Je vais modifier le code pour remplacer les touches par des boutons.

TROISIEME ETAPE
A l’aide des flèches du clavier je positionne des points rouges le long du contour du flanc gauche de la dent de droite. L'utilisation de la souris serait dans ce cas une erreur d'ergonomie.
Pendant le déplacement du point rouge le code calcule la position des points conjugués, les bleu, vert et jaune et les affiche sur l’écran en les déplaçant en même temps que le point rouge. Pour cela le code :
- Calcule la position du point rouge dans le repère de coordonnées {u ; v}
- Calcule ensuite la position que les points bleu, vert et jaune doivent avoir dans ce même repère de coordonnées pour occuper une position symétrique par rapport aux rayons.
- Calcule les coordonnées de ces points dans le repère {X ; Y} de la fenêtre et peut alors les afficher.
Je cadre au mieux les quatre points sur les dents, je valide le point et je passe au point suivant.
Je pose ainsi une trentaine de points et je déclenche par une touche le passage à l’étape suivante.
C’est l’image en tout début de ce fil.
On a l'impression qu'un morceau du contour droit de la dent de gauche n'est pas pris en compte, mais ce n'est pas le contour extérieur lui-même. C'est une partie du flanc de la dent. Je soignerai plus l'éclairage la prochaine fois pour bien distinguer le contour.
QUATRIEME ETAPE
Je n’ai pas encore terminé cette partie du code et je la posterai bientôt.
Le code :
- Fait un lissage de la courbe reliant tous les points rouges par un algorithme de type régression linéaire, moindre carrés, etc et applique ce profil aux autres groupes de points. Cette fonctionnalité n’est pas indispensable. C’est juste un petit plus. Je cherche une procédure toute faite car il s’agit là d’un problème déjà abondamment traité.
- Génère une image du profil (juste pour le fun), c’est à dire du profil du creux entre deux dents.
- Crée un fichier des passes que je dois exécuter sur le tour pour réaliser le fly-cutter en version profil cylindrique.
- Crée le fichier des passes que je dois exécuter sur le tour pour réaliser le fly-cutter en version profil constant et détalonné.
Ces passes sont graduées en 1/100 de mm. Avec les éléments que je lui ai donnés le code peut réaliser la mise à l’échelle physique, quel que soit l’agrandissement de la photo et celui de sa visualisation sur l’écran.
CINQUIEME ETAPE, à venir
Aux manivelles du tour pour réaliser le fly-cutter, puis le tremper, etc
Puis aux manivelles de la fraiseuse pour tailler l’engrenage avec ce fly-cutter.
Cette dernière étape a été déjà été réalisée, ainsi que j’ai déjà eu l’occasion de la montrer dans les liens suivants. Il s’agissait alors de réaliser des profils normalisés, et pas un profil d’horloge ancienne, mais au niveau de la réalisation physique du fly-cutter le travail est le même.
USINAGE FLY-CUTTER
Aller vers le milieu de la page.
TAILLAGE ROUE
Amicalement
SULREN