CB et gestion des déplacements
2 participants
Page 1 sur 1
CB et gestion des déplacements
Bonjour tous,
Je suis actuellement sur la conception (bien avancée) d'un robot dessinateur récalcitrant. J'utilise pour cela un postpro qui simplifie le gcode dont on a déjà discuté avec David quelque part sur le forum (faudrait que je retrouve). Le propre d'un robot dessinateur récalcitrant est de ne pas faire systématiquement ce qu'on lui demande, le mien devait être un chat dans une vie antérieure. Quand je lui demande de me dessiner un carré avec un gcode écrit à la main il me fait un beau carré, le même carré produit par Cambam et c'est du grand n'importe quoi. Cambam fait bien son boulot mais le robot n'aime pas Cambam.
Après l'être bien creusé les méninges pendant quelques temps je viens enfin de percuter et c'était pourtant évident, c'est Cambam qui ne voit pas les choses comme moi . Il simplifie les déplacements horizontaux ou verticaux à une seule coordonnée X ou Y, pour les obliques il en utilise deux: X et Y.
Visuellement çà se voit bien dans le gcode mais quand un programme le lit ce n'est pas évident parce qu'il n'y a pas d'indication de saut de ligne.
Exemple sur un carré simple de 100x100mm inscrit dans une feuille A4 (Z n'est pas important, c'est juste le lever/baisser stylo):
Mon gcode à la main qui utilise les coordonnées polaires:
Et le gcode simplifié généré par Cambam:
On remarque que CB passe à la ligne suivante pour chaque action différente, pour les obliques le X et le Y sont sur la même ligne.
Mon programme actuel lit d'abord le X, puis le Y et va ensuite tracer sa ligne, il ne sait pas interpréter les sauts de ligne ce qui donne des résultats de l'espace avec le gcode CB.
Il y a t-il moyen en bricolant un postpro:
- soit d'intercaler des sauts de lignes dans le gcode (amha non)
- soit d'obliger cb à écrire les horizontales et verticales en coordonnées XY
- ou une autre solution permettant de reconnaitre si c'est horizontal/vertical ou oblique ?
Je suis actuellement sur la conception (bien avancée) d'un robot dessinateur récalcitrant. J'utilise pour cela un postpro qui simplifie le gcode dont on a déjà discuté avec David quelque part sur le forum (faudrait que je retrouve). Le propre d'un robot dessinateur récalcitrant est de ne pas faire systématiquement ce qu'on lui demande, le mien devait être un chat dans une vie antérieure. Quand je lui demande de me dessiner un carré avec un gcode écrit à la main il me fait un beau carré, le même carré produit par Cambam et c'est du grand n'importe quoi. Cambam fait bien son boulot mais le robot n'aime pas Cambam.
Après l'être bien creusé les méninges pendant quelques temps je viens enfin de percuter et c'était pourtant évident, c'est Cambam qui ne voit pas les choses comme moi . Il simplifie les déplacements horizontaux ou verticaux à une seule coordonnée X ou Y, pour les obliques il en utilise deux: X et Y.
Visuellement çà se voit bien dans le gcode mais quand un programme le lit ce n'est pas évident parce qu'il n'y a pas d'indication de saut de ligne.
Exemple sur un carré simple de 100x100mm inscrit dans une feuille A4 (Z n'est pas important, c'est juste le lever/baisser stylo):
Mon gcode à la main qui utilise les coordonnées polaires:
Et le gcode simplifié généré par Cambam:
On remarque que CB passe à la ligne suivante pour chaque action différente, pour les obliques le X et le Y sont sur la même ligne.
Mon programme actuel lit d'abord le X, puis le Y et va ensuite tracer sa ligne, il ne sait pas interpréter les sauts de ligne ce qui donne des résultats de l'espace avec le gcode CB.
Il y a t-il moyen en bricolant un postpro:
- soit d'intercaler des sauts de lignes dans le gcode (amha non)
- soit d'obliger cb à écrire les horizontales et verticales en coordonnées XY
- ou une autre solution permettant de reconnaitre si c'est horizontal/vertical ou oblique ?
Re: CB et gestion des déplacements
Salut,
En fait CB ne réécrit pas une coordonnée si elle ne change pas par rapport à la position précédente.
pour le forcer à sortir même les infos redondantes, il faut supprimer les underscore devant les macro de sortie des axes dans ton post pro.
par exemple: {$g1} {$_x} {$_y} {$_z}
deviendrait: {$g1} {$x} {$y} {$z}
++
David
En fait CB ne réécrit pas une coordonnée si elle ne change pas par rapport à la position précédente.
pour le forcer à sortir même les infos redondantes, il faut supprimer les underscore devant les macro de sortie des axes dans ton post pro.
par exemple: {$g1} {$_x} {$_y} {$_z}
deviendrait: {$g1} {$x} {$y} {$z}
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
Yeessss !!! çà marche au poil
T'es vraiment trop fort. Pile-poil ce qu'il me faut, je vais pouvoir continuer mon projet. Pour les trois premières lignes et les deux dernières vraiment redondantes je vais pouvoir régler çà dans ma routine qui gère le Z.
T'es vraiment trop fort. Pile-poil ce qu'il me faut, je vais pouvoir continuer mon projet. Pour les trois premières lignes et les deux dernières vraiment redondantes je vais pouvoir régler çà dans ma routine qui gère le Z.
Re: CB et gestion des déplacements
Re
Tu devrais pouvoir améliorer encore les choses en mettant 'hauteur plongée en rapide' sur 0 dans les paramètres du dossier usinage
++
David
Tu devrais pouvoir améliorer encore les choses en mettant 'hauteur plongée en rapide' sur 0 dans les paramètres du dossier usinage
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
maintenant, si tu veux encore affiner, tu peux le faire par post traitement du Gcode ; je peux te passer le squelette du programme en VB qui scanne un Gcode, lancé par le PP de CB, ensuite il te restera à y inclure ce qu'il faut pour tester les lignes à enlever ou à garder ; ça fera tj moins de job à faire par l'arduino.
++
David
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
Je suis preneur, là je joue avec un simple carré pour débugger le programme mais ensuite M4rc3l aura à traiter de gros gcodes plus compliqués. Il faut avoir Visual Basic installé ?
Re: CB et gestion des déplacements
Il faut avoir Visual Basic installé ?
Oui
http://www.01net.com/telecharger/windows/Programmation/creation/fiches/104784.html
quand tu sera prêt et que VB sera installé je te mettrais pas à pas comment préparer le truc pour pouvoir en tirer un .exe (il y a des réglages à faire)
++
David
Dernière édition par dh42 le Mar 21 Mar 2017 - 15:03, édité 1 fois
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
voila un squelette commenté ; il te faudra faire quelque modifs mineurs pour gérer les .ngc au lieu de .nc
- Code:
Imports System.IO
Module Module1
Sub Main(args() As String)
'squelette post traitement auto du Gcode depuis un post pro CamBam
'dh42 - 2017
Dim line As String
Dim fname, outname As String
fname = args(0) 'contient les arguments passés par CamBam
If fname <> "" Then
outname = Left(fname, Len(fname) - 3) 'nom de fichier sans ".nc"
Try
Using sr As StreamReader = New StreamReader(fname)
FileOpen(1, outname & ".tmp", OpenMode.Output) 'créer un fichier "nomdugcode.tmp"
Do
'lire une ligne dans le fichier Gcode
line = sr.ReadLine()
'faire un traitement sur la ligne si elle correspond à certain critères
If ..... Then
'code pour modifier la ligne
'....
'....
PrintLine(1, line) 'écrire la ligne
Else 'sinon l'écrire telle quelle (ou ne pas l'écrire si on souhaite la supprimer)
PrintLine(1, line)
End If
Loop Until line Is Nothing 'lire jusqu'à la fin du fichier
sr.Close()
FileClose(1)
FileSystem.Kill(fname) 'effacer le fichier .nc original du DD
FileSystem.Rename(outname & ".tmp", outname & ".nc") 'renommer le fichier .tmp en .nc
End Using
Catch E As Exception
MsgBox("Error" & E.Message)
End Try
End If
End Sub
End Module
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
Re
- Lance VS 2010
- nouveau projet
- choisis 'Application console'
tu devrais te retrouver avec une page 'module1.vb'
- remplace la totalité de ce qu'il y a dans la page par le code du squelette.
- fichier/enregistrer tout, donne un nom et enregistre le projet.
à partir de la il te faudra écrire ce qui manque dans le code, puis compiler le code par Générer/générer nom_de_projet.
après compilation tu récupérera un fichier nom_de_projet.exe dans \nom_de_projet\nom_de_projet\bin\release
pour qu'il soit lancé par le post pro, ton post pro doit contenir:
"{$outfile}" (avec les double quote) dans Cmd. de post traitement - args (ce qui passe le nom du fichier GCode depuis Cambam à ton programme externe)
et dans Commande de post traitement tu dois avoir le chemin d'accès à ton fichier .exe
si tu n'y arrive pas, met ton post pro en PJ et dis moi ce qu'il faut que le programme fasse comme traitement et je te ferais le code.
++
David
- Lance VS 2010
- nouveau projet
- choisis 'Application console'
tu devrais te retrouver avec une page 'module1.vb'
- remplace la totalité de ce qu'il y a dans la page par le code du squelette.
- fichier/enregistrer tout, donne un nom et enregistre le projet.
à partir de la il te faudra écrire ce qui manque dans le code, puis compiler le code par Générer/générer nom_de_projet.
après compilation tu récupérera un fichier nom_de_projet.exe dans \nom_de_projet\nom_de_projet\bin\release
pour qu'il soit lancé par le post pro, ton post pro doit contenir:
"{$outfile}" (avec les double quote) dans Cmd. de post traitement - args (ce qui passe le nom du fichier GCode depuis Cambam à ton programme externe)
et dans Commande de post traitement tu dois avoir le chemin d'accès à ton fichier .exe
si tu n'y arrive pas, met ton post pro en PJ et dis moi ce qu'il faut que le programme fasse comme traitement et je te ferais le code.
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
Le VB est nouveau pour moi et je ne sais pas trop quoi ajouter dans ton squelette, à part la modif en .ngc a la ligne:
Cette ligne de condition sans condition m'interpelle, ne va-t'elle pas générer une erreur ? Je suppose que c'est ici qu'il faut rajouter des trucs mais je ne vois pas quoi.
- Code:
FileSystem.Rename(outname & ".tmp", outname & ".ngc") 'renommer le fichier .tmp en .ngc
Cette ligne de condition sans condition m'interpelle, ne va-t'elle pas générer une erreur ? Je suppose que c'est ici qu'il faut rajouter des trucs mais je ne vois pas quoi.
- Code:
'faire un traitement sur la ligne si elle correspond à certain critères
If ..... Then
Re: CB et gestion des déplacements
Cette ligne de condition sans condition m'interpelle, ne va-t'elle pas générer une erreur ? Je suppose que c'est ici qu'il faut rajouter des trucs mais je ne vois pas quoi.
Oui, c'est ça ...
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
Re
Plus de news .. la cervelle à disjonctée sur le VB ?
++
David
Plus de news .. la cervelle à disjonctée sur le VB ?
dh42 a écrit:si tu n'y arrive pas, met ton post pro en PJ et dis moi ce qu'il faut que le programme fasse comme traitement et je te ferais le code.
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
Ben en fait le postpro fait déjà du bon boulot et je ne sais pas quoi demander de plus à ton code VB
Pour mes tests un carré 100x100 qui se répète 4 fois:
Juste le Z3 qui est généré à chaque fois par Cambam mais ce n'est pas gênant, c'est juste parce que j'ai fais 4 gravures successives au lieu de faire 4 passes sur la même.
Le postpro:
Pour mes tests un carré 100x100 qui se répète 4 fois:
- Code:
Z3
X50 Y100
X50 Y100 Z0
X150 Y100
X150 Y200
X50 Y200
X50 Y100
Z3
X50 Y100 Z0
X150 Y100
X150 Y200
X50 Y200
X50 Y100
Z3
X50 Y100 Z0
X150 Y100
X150 Y200
X50 Y200
X50 Y100
Z3
X50 Y100 Z0
X150 Y100
X150 Y200
X50 Y200
X50 Y100
Z3
X50 Y100 Z0
X0 Y0
Z3
M30
Juste le Z3 qui est généré à chaque fois par Cambam mais ce n'est pas gênant, c'est juste parce que j'ai fais 4 gravures successives au lieu de faire 4 passes sur la même.
Le postpro:
Re: CB et gestion des déplacements
Re
Oui, et ça dépend aussi de la valeur de 'déplacement latéral maxi' dans ton op de gravure ; qui est exprimée en fraction du Ø de l'outil, donc si tu a laissé la valeur par défaut de 0.7, et par exemple que tu a défini un outil de Ø 1, si il y a plus de 0.7*1 mm entre la fin d'un trait et le début du suivant, il y a passage par le plan de dégagement.
Ne pas mettre un outil de Ø = 0, sinon le résultat pour le déplacement maxi est tj 0, et lafraise le stylo remontera même si le trait suivant démarre à la fin du précédant (pour des formes séparées)
Dans certains cas, en gravure de fin détails, on met 'le déplacement latéral maxi' à 0 pour éviter des "ponts" entre les gravures, par exemple sur les caractères de petite taille.
C'est vrai qu'il n'y a bien que le X50 Y100 Z0 qui pourrait être remplacé par Z0 uniquement, mais ce n'est pas catastrophique si il reste je suppose ?
++
David
Juste le Z3 qui est généré à chaque fois par Cambam mais ce n'est pas gênant, c'est juste parce que j'ai fais 4 gravures successives au lieu de faire 4 passes sur la même.
Oui, et ça dépend aussi de la valeur de 'déplacement latéral maxi' dans ton op de gravure ; qui est exprimée en fraction du Ø de l'outil, donc si tu a laissé la valeur par défaut de 0.7, et par exemple que tu a défini un outil de Ø 1, si il y a plus de 0.7*1 mm entre la fin d'un trait et le début du suivant, il y a passage par le plan de dégagement.
Ne pas mettre un outil de Ø = 0, sinon le résultat pour le déplacement maxi est tj 0, et la
Dans certains cas, en gravure de fin détails, on met 'le déplacement latéral maxi' à 0 pour éviter des "ponts" entre les gravures, par exemple sur les caractères de petite taille.
Ben en fait le postpro fait déjà du bon boulot et je ne sais pas quoi demander de plus à ton code VB
C'est vrai qu'il n'y a bien que le X50 Y100 Z0 qui pourrait être remplacé par Z0 uniquement, mais ce n'est pas catastrophique si il reste je suppose ?
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: CB et gestion des déplacements
Ben non puisqu'on est déjà sur la position par le XY précédent, ça roule bien comme çà à priori. J'ai encore des bugs mais je ne pense pas que çà vienne du gcode.
Sujets similaires
» [plugin] Déplacements numériques
» importation du plugins deplacements numeriques
» [Questions] Premiers pas : ID-conception+CamBam+Mach3
» Gestion des Attaches CAMBAM
» gestion du 4 eme axe rotatif
» importation du plugins deplacements numeriques
» [Questions] Premiers pas : ID-conception+CamBam+Mach3
» Gestion des Attaches CAMBAM
» gestion du 4 eme axe rotatif
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum