Comment tangenter (parfaitement) un arc à 2 polylignes ?

  • Auteur de la discussion vax
  • Date de début
V

vax

Modérateur
:wink:

Visite d'un copain parisien de passage ce matin, puis apéritif champêtre avec une de nos asso, puis invité à un gouter cet après midi....
Bref je me pose juste....

Non... Je suis arrivé à faire un test entre le déjeuner et le goûter.... Mon tour en NUM1060 me réclame toujours la composante R dans les G2/G3... Par contre oui (un grand merci) c'est OK pour les 3 digits après la virgule et le mode arc en mode absolu.
Va falloir que je mette les mains dans la prog du post-pro... La programmation pour moi c'est de l'assembleur, je me mets au Python quand je suis obligé ! A la rigueur de l'Arduino quand je suis trop fatigué... Jamais arrivé à me mettre au VB (pas faute d'avoir été obligé d'en faire quand j'étais dans la Marine... Certainement que je n'ai jamais eu le bon prof capable de comprendre mon esprit réduit...).

Il faut ajouter une fonction dans le post-processeur ? Ou ajouter quelques lignes dans le programme initial qui génère le code G2/G3 ?
(Je ne sais même pas où trouver les sources si elles sont dispo :wink:

Je commence à saturer de passer autant de temps pour une telle bêtise...

Encore merci pour tout ton soutien.
 
D

dh42

Compagnon
Il faut ajouter une fonction dans le post-processeur ? Ou ajouter quelques lignes dans le programme initial qui génère le code G2/G3 ?

Non, en fait tu crée une appli console séparée (console application dans visual studio) qui sera lancée par le PP une fois le GCode produit. Dans le PP tu met juste le chemin d'accès vers l’appli que tu a crée (un .exe)

Post traitement – Commande de post-traitement, Cmd. de post-traitement - args

Pour le programme en VB, tu peux utiliser ces programmes que tu devra modifier.

quelque exemples de codes pour diverse fonctions que tu peux adapter à ton traitement.




++
David
 
J

jon

Compagnon
Coucou les amis, je suis en train de finir le prog en VB pour notre ami @vax.
J'ai juste une petite question:

Dans ta formule @dh42 tu as: R = Sqrt((I-X)^2 + (J-Y)^2)
I c'est bien I inscrit, X idem mais J c'est K et Y c'est Z ?

Amicalement.
 
V

vax

Modérateur
Coucou Jon,
Comme mis en MP je pense que la formule pour du tournage devient : R = Sqrt((I-X)^2 + (K-Z)^2)
 
  • Réagir
Reactions: jon
J

jon

Compagnon
Voila le p'tit programme.
Alors il est fait en Excel (vba) et pourra être repris en VB ce soir ou mercredi pour t'en faire un fichier exe propre
Le fichier d'entrée sera remplacé par le fichier de sortie.
dans l'exemple le fichier d'entrée doit s'appeler data.txt et le fichier de sortie s’appelle sortie.txt
Je te mp ton fichier sortie.txt car je sais pas s'il y a confidentialité du prog :wink:
Pour la variable R, je limite à 3 chiffres après la virgule et je recherche jusque 3 lignes avant pour els données XZIK

John.

Sub traitement()
'définition du chemin des des fichiers entrée et sortie
chemin_p = ActiveWorkbook.Path & "\"
Open chemin_p & "data.txt" For Input As #1
Open chemin_p & "sortie.txt" For Output As #2

'définition des variables
Dim ligne_message
Dim ligne_avant
'lecture du fichier
Line Input #1, ligne_message

'Tant que la fin du fichier n'ets pas atteinte, je boucle
Do While EOF(1) = False
'Je met a 0 la ligne actuelle
donnee_p = 0
'Si G2 ou G3 sont présents
If ligne_message Like "G2 *" Or ligne_message Like "G3 *" Then
'mise a 0 des variables
data_x = ""
data_z = ""
data_i = ""
data_k = ""

'analyse de la ligne
'recherche de la ligne_actuelle ou précédente
retour_ligne:
If donnee_p = 0 Then tableau = Split(ligne_message, " ")
If donnee_p = 1 Then tableau = Split(ligne_prem, " ")
If donnee_p = 2 Then tableau = Split(ligne_deux, " ")
If donnee_p = 3 Then tableau = Split(ligne_trois, " ")

'mise en mémoire 2D de la ligne

'Eclatement de la ligne avec séparateur l'espace
For i = 0 To UBound(tableau)
If tableau(i) Like "X*" Then If data_x = "" Then data_x = Replace(Replace(tableau(i), "X", ""), ".", ",")
If tableau(i) Like "Z*" Then If data_z = "" Then data_z = Replace(Replace(tableau(i), "Z", ""), ".", ",")
If tableau(i) Like "I*" Then If data_i = "" Then data_i = Replace(Replace(tableau(i), "I", ""), ".", ",")
If tableau(i) Like "K*" Then If data_k = "" Then data_k = Replace(Replace(tableau(i), "K", ""), ".", ",")
Next i

'Je vérifie que toutes les variables X Z I K sont présentes
If data_x <> Empty And data_z <> Empty And data_i <> Empty And data_k <> Empty Then
'Toutes les données sont présentes, je calcule R avec la formule de David
'R = Sqrt((I-X)^2 + (K-Z)^2)
'J'applique la formule
rayon_p = Replace(Round(Math.Sqr(((data_i - data_x) ^ 2) + ((data_k - data_z) ^ 2)), 3), ",", ".")
'Ecriture du R abec la ligne
If rayon_p Like "*.*" Then Else rayon_p = rayon_p & ".0"

Print #2, ligne_message & " R" & rayon_p
'Je vide la variable
rayon_p = ""

Else
'Il manque une variable, je la recherche dans la ligne précédente
If donnee_p = 2 Then donnee_p = 3
If donnee_p = 1 Then donnee_p = 2
If donnee_p = 0 Then donnee_p = 1
GoTo retour_ligne
End If
Else
'Sinon, j'écris tel quel dans le fichier de sortie
Print #2, ligne_message

End If

'mise en mémoire de la ligne d'avant avant de lire la prochaine
ligne_trois = ligne_deux
ligne_deux = ligne_prem
ligne_prem = ligne_message
Line Input #1, ligne_message
Loop


Close #1
Close #2

End Sub
 
V

vax

Modérateur
Merci beaucoup Jon, je regarde tout de suite si ma Num1060 veut bien avaler ça :wink:

à tous de suite (pas d'apéro ou de goûter prévus aujourd'hui .....) :wink:
 
  • Réagir
Reactions: jon
V

vax

Modérateur
Bon....
Je crois qu'il fut impérativement qu'il y ait les paramètres X, Z, I et K dans la ligne du G2 ou G3...

Autrement mon code me donne en simulation une erreur 107...


107PGP : Programmation d’un cercle par son rayon et son point d’arrivée, dans laquelle le point
d’arrivée est distant du point de départ d’une valeur supérieure à 2 * rayon
Programmation d’un cercle par X, Z, I, K dans laquelle le rayon de départ est différent du point
d’arrivée (20 Microns) / Hélicoïdale : manque cote 3ème axe
Programmation d’un cercle sur 2 axes parallèles (avec I, J, K / Voir erreur 101)


J'y retourne entre deux couches de vernissage d'une commande à livrer très vite...
 
  • Réagir
Reactions: jon
J

jon

Compagnon
Si tu peux vérifier pour voir et dans ce cas, j'ajoute les données dans chaque ligne :wink:
 
V

vax

Modérateur
Suis en train de voir avec un copain spécialiste de Num (mais pas de Fusion ou de Cambam :wink: ) et je te dis.
 
  • Réagir
Reactions: jon
D

dh42

Compagnon
Salut,

Il faut quand même que tu soit conscient que CamBam est plus que limité en ce qui concerne le tournage et je ne pense pas qu'il y ai des améliorations dans un avenir proche ...


Dans cette première version il y a un certain nombre de limitations
  • Seules les opérations de profilage sont actuellement prisent en charge. Le dressage de face, le perçage et le filetage ne sont pas encore implémentés
  • Mis à part le rayon de l'outil, Il n'y a pas de mécanisme permettant de définir un profil d'outil. Le tracé devra être élaboré en tenant compte de la taille/forme de l'outil.
lis le dernier message du sujet ...

Perso, je n'ai pas de tour CNC, donc il m'est difficile de me rendre compte de ce que l'on peut faire ou non avec les limitation de ce plugin.

++
David
 
K

kiki86

Compagnon
si, via un plugin, voir plus haut :wink: (post #7)

mais il semble que Vax veuille autre chose, même si je ne comprends pas vraiment quoi. :oops:

++
David
bonsoir
si possible explique moi le mot ou la fonction plugin
merci
bonne soirée
 
D

dh42

Compagnon
si possible explique moi le mot ou la fonction plugin

Un plugin c'est un petit programme (une dll) qui rajoute des fonctions supplémentaires à un logiciel existant.


Dans le cas de CamBam, tu peux créer tes plugins toi même (à condition de savoir programmer) Le plugin rayon/chanfreins est de moi, et Eddycurrent y a ajouté récemment une autre fonction (un dégagement des angles)

++
David
 
V

vax

Modérateur
Je tenais à vous remercier tous et tout spécialement Dh42 pour tous ces bons conseils.
Plus j'avance dans mes recherches (l'idée étant de gagner du temps avec une FAO pour produire du Gcode de tournage FIABLE et assez rapidement), plus je désespère (mon sujet sur Fusion360 ne donne rien ni ici ni sur le forum Autodesk !).

Donc je me suis résigné cet après midi à faire comme d'habitude... A la main... Et ce n'est pas toujours super évident pour moi lorsque il faut jouer (très) finement... Mes utilisations de mon tour CN (bien que pro pour de petites séries) est généralement assez simple (pas simpliste).
 
J

jon

Compagnon
Je tenais à vous remercier tous et tout spécialement Dh42 pour tous ces bons conseils.
Plus j'avance dans mes recherches (l'idée étant de gagner du temps avec une FAO pour produire du Gcode de tournage FIABLE et assez rapidement), plus je désespère (mon sujet sur Fusion360 ne donne rien ni ici ni sur le forum Autodesk !).

Donc je me suis résigné cet après midi à faire comme d'habitude... A la main... Et ce n'est pas toujours super évident pour moi lorsque il faut jouer (très) finement... Mes utilisations de mon tour CN (bien que pro pour de petites séries) est généralement assez simple (pas simpliste).
Coucou,
As tu avancé sur les
Conditions à mettre dans le gcode ?
Le petit programme au dessus je peux te l’adapter très rapidement et te le compiler :wink:
 
D

dh42

Compagnon
Re

Oui, CB peut faire l'affaire pour certaines choses, comme tourner un arbre avec des Ø différents ou faire des rayons/chanfreins. On peut aussi faire du profilage de forme avec un outil rond, mais ça s'arrête la pour l'instant. Je ne connais pas NUM, mais sur ton directeur de commande tu n'a pas des fonctions préprogrammées de base, comme les Wizard de Mach3 ? ...

mach3_11.jpg


par exemple avec OD fillet2, je peux produire le Gcode après avoir rentré les valeurs demandées dans les visus. (ne pas trop se fier à la simu 3D de la pièce, elle est à l'ouest sur Mach3)

Sans titre-1.jpg


Voila le Gcode obtenu.


à voir ce qu'il faudrait en code NUM pour que ça fonctionne.

ça pourrait être un autre moyen de produire du Gcode, car les Wizards de Mach3 sont programmés en Basic script, donc il devrait être facile de les modifier pour qu'ils sortent les R et autres paramètres nécessaires. Ensuite, même si Mach3 ne comprends pas le code produit (edit: si, apparemment Mach3 comprend aussi la syntaxe avec R), ça n'a pas d'importance et ça n’empêche pas de sauver le fichier GCode ; on pourrait même modifier l'interface du Wizard de façon à ce que ça affiche bien du Gcode Mach3 afin que la simu soit ok dans le Wizard, mais avoir un bouton qui permette de faire une sauvegarde en NUM directement ... (donc on aurait 2 Gcodes, un au format fanuc nécéssaire à la simulation visuelle sur Mach3 et un au format NUM) ... je pense que ça fonctionnerait même sans la licence, vu que la version d'essais ne limite que le pilotage, pas la longueur du Gcode que l'on peut charger si aucune machine n'est présente.(mode OFF line ou pas de port // ou carte d'axe installé)

un extrait de ce qu'il y a dans le code qui produit le Gcode ci-dessus ..

Sans titre-2.jpg


Possible que les G2 doivent être remplacés par des G3, je crois que ça dépend de la tourelle utilisée (av ou ar)

++
David
 
Dernière édition:
D

dh42

Compagnon
Salut,

Un autre sujet à propos de NUM et de CamBam ..


++
David
 

Sujets similaires

P
Réponses
33
Affichages
15 986
wika58
wika58
F
Réponses
1
Affichages
5 915
desmo-phil
desmo-phil
P
Réponses
7
Affichages
949
Popino
P
E
Réponses
15
Affichages
11 458
remy06710
R
misty soul
Réponses
4
Affichages
1 732
serge 91
serge 91
EmmanuelCyril
Réponses
27
Affichages
9 287
Borgue
B
SuperSpinach
Réponses
11
Affichages
20 168
SuperSpinach
SuperSpinach
Haut