DigitizeGcode - Creation Gcode à partir d’un nuage de points

N

Noha819

Nouveau
Bonjour tout le monde.

J'ai créé un petit logiciel pour simplifier l'adaptation de l'usinage, donc du Gcode à partir d'un nuage de point.

Je fais beaucoup d'usinage en série sur des coupelles en métal, donc la mise en place de l'usinage me fait passer par plusieurs étapes:

1 création du nuage de point à l'aide de mon palpeur, comme il est possible de faire avec l'assistant Digitise Wizard de mach3.

2 création du Stl à l'aide de l'assistant Scan3D de Solidworks (possible avec le plugin Cambam aussi)

3 chargement du Stl dans mon projet Fusion360, pour enfin générer le nouveau chemin.

Mais voilà le pc d'atelier au quel est relié mach3 est un vieux coucou fatigué, et quand 10 fois par jour je dois Palper, copier le nuage sur une clé, lancer Solid et Fusion sur mon pc portable qui en profite pour s'encrasser à l'atelier, attendre que Fusion génère l'usinage (parfois long et lourd) pour enfin charger le nouveau gcode dans mon vieux coucou à mach3, je trouve cette procédure ch**** , et surtout compliquée car je ne suis pas seul à travailler à l'atelier et les compétences nécessaires à l'utilisation de tout ces gros logiciels n'est pas forcément au rendez-vous...

Le petit logiciel que j'ai créé va permettre de faciliter et de réduire le temp (et la puissance de calcul!!) nécessaire à cette opération, il va directement modifier le gcode initial pour suivre la forme de la pièce scannée.

Pour cela il passe par 3 étapes:

1 créer un stl à partir d'un nuage de point (seulement en 2d, il est destiné aux usinage 3 axes uniquement.)

2 augmenter la "résolution du gcode" (Par là je veux dire que si on à un déplacement en ligne droite sur notre gcode initial, il va segmenter le déplacement afin de pouvoir suivre la courbure)

3 adapter toutes les hauteurs en Z par rapport au stl créé.

Il a plusieurs avantages comparé à ce que l'on peut trouver d'existant, la création d'un stl à partir d'un nuage de point très facilement, là je pense à l'article de David (dh42) qui m'a beaucoup inspiré avec sont petit créateur de stl :) Mach3Digit2STL.exe
Mais qui malheureusement pour moi ne fonctionne pas, car le nuage de point n'est pas ordonné et rectangulaire. Mon logiciel lui va pouvoir créer le Stl peu importe l'organisation des points.

Contrairement au logiciels que l'on peut trouver sur la toile pour adapter le nivelling du gcode et qui sont adaptés pour la gravure, mon logiciel est capable d'adapter un usinage à plusieurs hauteur en Z, donc pas seulement pour la gravure.

Pour finir il demande beaucoup moins de puissance de calcul que Fusion ou autres logiciels CAM, car il ne calcul pas tout les chemins, il ne fait qu'adapter l'axe Z, il fonctionne donc parfaitement sur mon vieux windows 7 fatigué ^^.

Un petit exemple d'utilisation, en premier je prépare mon gcode à "plat":
gcode-plat.png


Ensuite je fait mon nuage de point avec mach3:

nuage.png


Le format de mon nuage est *.txt

3.45625,143.56250,-39.17812
1.14375,141.11875,-36.01875
4.51250,140.34375,-35.23438
1.87500,137.45625,-32.51250
-1.89375,137.71250,-32.71250
-1.42500,133.63125,-29.81250
-5.58125,133.28750,-29.67500
-5.52500,128.48750,-26.96875
-10.60000,126.68750,-26.24687 ... etc etc..

Ensuite je lance mon petit programme (DigitizeGcode):

DigitizeGcode.png


Je renseigne le chemin de mon Nuage de point, le paramètre "Longueur max" correspond à l'hypoténuse max des triangles composants mon stl de sortie, si ce paramètre est trop petit il va manquer des triangles, si il est beaucoup plus grand que l'espacement des points nécessaire à la création du slt, le calcul est beaucoup plus long.

Je renseigne mon gcode Source, c'est à dire le fichier *.tap que j'ai créé avec Fusion 360, le paramètre "Résolution" correspond à la longueur maximale des déplacements d'usinage en ligne droite, plus le stl est difforme plus la résolution doit être petite. Si la valeur est à 0 alors la résolution du gcode ne sera pas augmentée, si par exemple on usine une pièce plate mais qui n'est pas droite, comme par exemple un PCB ou une plaque augmenter la résolution n'est pas nécessaire.

Le paramètre "Hauteur de déplacements" défini à quel hauteur l'axe Z doit se positionner lors des déplacement, il est important que ce paramètre soit plus petit ou égal à la hauteur des déplacements du gcode source sinon le logiciel ne les traitera pas comme déplacements et sa peut faire des trucs étranges ^^

Et enfin je renseigne le nom du fichier gcode de sortie, et je clique sur "Nivelling".

Le résultat:
gcode-nivel-1.png

gcode-nivel-2.png


Il est aussi possible d'enregistrer le Stl créé à partir du nuage de point sans procéder à un nivelling, et également d'enregistrer le gcode avec la résolution augmentée sans nivelling en cliquant sur "Enregistrer sous".

Le stl créé:

stl30.png


Il manque beaucoup de triangles, mais sa ne m'importe peu car tout les chemins d'usinage passent sur des triangles existants. Si je voulais un résultat plus rempli, avec le paramètre "Longueur Max" à 115:

stl115.png


Mon gcode source était de 41 075 lignes, le gcode cible lui est de 41 112 lignes, mon parcours d'usinage étant déjà courbe je n'ai pas eu beaucoup de déplacement à segmenter, mais on voit que l'adaptation c'est bien passée.

A savoir:

-Pour l'instant DigitizeGcode ne fonctionne que pour les gcode au format TAP ! Je pense bien faire une mise à jour pour d'autres format, à voir lesquels, nc sera le prochain.

-Le fichier de palpage peut être de différents formats, l'important est qu'il y ait trois coordonnées par ligne, en premier X après Y et Z. Les nombre décimaux doivent être séparés par un point, pas une virgule! la séparation entre les coordonnées n'a pas d'importance, sa peut être un espace un virgule du texte etc... Le nuage de point doit être numérisé sur 3 axes!!! DigitizeGcode ne parviendra pas à créer un stl si il y a des pentes en dévert!

-Le point 0 du Nuage de point et du Gcode est important!!!! A la position ou votre palpeur est à 0 avant de commencer le scan doit se trouver la fraise avant de démarrer l'usinage!! Le zéro du palpeur et le 0 de la fraise doivent toucher la pièce à usiner au même endroit!! Pour cela je rajoute G31 Z-20 F300, G92X0Y0Z0, G0 Z5. au début de mon fichier de palpage, et lors de l'usinage je vient toucher la pièce avec la fraise.

-La hauteur des déplacement doit être supérieure à toutes les parties de votre pièce à usiner! Si par exemple vous usinez une plaque, que vous mettez votre palpeur à 0 dans un coin et que le coin opposé de la plaque est à 5mm au dessus, les déplacements doivent être plus haut que 5mm!

-Bien évidemment c'est un logiciel expérimental et mes connaissances en programmation restent expérimentales elles aussi ^^ Alors pensez à vérifier le gcode de sortie avant d'envoyer l'usinage!! Soyez prudent je vous demande de ne pas accorder une confiance aveugle au résultat obtenu! Pour contrôler le gcode j'utilise NcViewer EDIT --> kalu nous à posté un super logiciel d'affichage et d'édition de gcodes, à essayer NCnetic.

-Prochaine mise à jour:
-Un paramètre pour éliminer les triangles trop petits lors de la création du stl, à venir.
-Prise en charge des gcodes NC
-Un paramètre pour définir le Z=0 du Stl.

Encore une fois, c'est un logiciel tout frais, je vous invite à partager critiques, remarques et bugs pour le faire évoluer vers une version toujours plus stable :)

Télécharger DigitizeGcode

En espérant que sa puisse servir, bon usinage à vous :)
 

Fichiers joints

  • 30Stl.stl
    109.8 KB · Affichages: 50
  • 115stl.stl
    137.7 KB · Affichages: 46
  • DigitizeGcode.zip
    959.5 KB · Affichages: 117
Dernière édition:
N

Noha819

Nouveau
Voici la version 2, avec quelques petites mises à jour.

-Prise en charge des fichiers .nc
-Ajout automatique de l'extension des fichiers sauvegardés.
-La hauteur des déplacements se place maintenant automatiquement au dessus de la partie la plus haute du nuage de point.
-Il est maintenant possible grâce à l'option "Z max du Stl" de régler l'origine Z du stl (le logiciel défini le point le plus haut comme étant l'origine).
-Lors de la descente de l'axe Z, le logiciel ajoute automatiquement une ligne de descente en déplacement normal jusqu'au point de contact + hauteur de déplacement (cela évite d'avoir des descentes très longues en cas de pénétration de la matière à vitesse réduite).

J'ai ajouté dans le fichier ZIP un nuage de point et un gcode source que j'utilise, pour démonstration.

Ps: les fichiers dll joints ne sont pas utiles si vous avez Microsoft Visual C++ à jour.

Je pense que sa sera tout, je ne prévois pas d'autres mises à jours, sauf en cas de demande.

DigitizeGcode.png


EDIT 16/11/2021, Je viens de me rendre compte que l'option "Résolution" ne fonctionnait plus après mes derniers correctifs de déplacements! :oops: J'ai corrigé le bug et mis à jour DigitizeGcode, cette fois tout semble bien fonctionner :-D Et puis le terme "Nivelling" semble être une pure invention de mon franglish :lol::oops:, je change sa en un simple "Calculer" :-D


Noé.
 

Fichiers joints

  • DigitizeGcode.zip
    994.2 KB · Affichages: 40
Dernière édition:
N

Noha819

Nouveau
Bon finalement sa n'était pas grand chose d'adapter la lecture des fichiers *.gcode, alors j'ai fait une autre mise à jour.

Cette dernière version prend les fichiers .nc .tap et .gcode, prend également en compte les impressions 3d avec l'extrusion.

Dans le zip vous trouverez un fichier tap et un fichier gcode accompagnés d'un nuage de point pour faire un test.

Bonne soirée
 

Fichiers joints

  • DigitizeGcode-V2.zip
    4.1 Mo · Affichages: 58

Sujets similaires

esloch
Réponses
0
Affichages
264
esloch
esloch
Tom_Franche_Comté
Réponses
8
Affichages
623
peps
T
Réponses
0
Affichages
538
temujinCAM
T
2
Réponses
8
Affichages
404
2cv001
2
D
Réponses
1
Affichages
663
JLuc69
JLuc69
A
Réponses
5
Affichages
268
dh42
dh42
N
Réponses
4
Affichages
914
BRICOLO
B
G
Réponses
3
Affichages
456
mickbzh
mickbzh
Haut