MACH3 WIZAR NESTING LE RETOUR
2 participants
Page 1 sur 1
MACH3 WIZAR NESTING LE RETOUR
Bonjour à tous et à DH42
voila j ai été dans le wizard Nesting crée je crois par Brian Baker et traduit par Olivier Adler
j ai copié le code pour le mettre sur un bouton pour faire du multipiece en X et Y avec un increment en X et en Y (espace entre l origine de chaque piece en X et Y)
le code fonctionne bien pour la 1ere rangée en X il fait plein de piece avec g92 Xincrement * nb de piece-1 et Y=0
mais il reste sur la 1ere rangée et refait les pieces avec le meme Y=0
c est une boucle que je connais pas
et voila le code de la piece
le probleme est dans le 92 y mais je trouve pas
Merci pour votre aide
voila j ai été dans le wizard Nesting crée je crois par Brian Baker et traduit par Olivier Adler
j ai copié le code pour le mettre sur un bouton pour faire du multipiece en X et Y avec un increment en X et en Y (espace entre l origine de chaque piece en X et Y)
le code fonctionne bien pour la 1ere rangée en X il fait plein de piece avec g92 Xincrement * nb de piece-1 et Y=0
mais il reste sur la 1ere rangée et refait les pieces avec le meme Y=0
c est une boucle que je connais pas
- Code:
File = Filename()
XTimes = GetoemDRO (1050)
YTimes = GetoemDRO (1051)
XInc = GetoemDRO (1052)
YInc = GetoemDRO (1053)
CurX = GetoemDRO(800)
CurY = GetoemDRO(801)
CurZ = GetoemDRO(802)
SafeZ = GetoemDRO(1130)'GetSafeZ()
OpenTeachFile( "Nested.tap" )
For Y = 1 To YTimes Step 1 'For y = 1 To YTimes Step 1
For X = 1 To XTimes Step 1 ' For x = 1 To XTimes Step 1
If X > 1 Then ' If (x > 1) Then
code "G92 X0"
End If
code "M98(" & "-" & File & ")"
code "G0 Z" & SafeZ
If X < Xtimes Then
code "G0 X" & XInc & " Y0"
Else
code "G0 X0 Y0"
End If
Next
code "G92 X" & (Xinc * (Xtimes - 1)) ' code "G92 X" & (Xinc * (Xtimes - 1))
If Y < Ytimes Then
code "G0 X0"& "Y" & YInc
code "G92 Y0"
Else
code "G92 Y" & (Yinc * (Ytimes - 1))
code "G0 X0 Y0"
End If
Next
Code "M30"
CloseTeachFile ()
Call LoadTeachFile()
et voila le code de la piece
- Code:
rem WF bbbbETRIER
Sub Main()
DoOEMButton (169) ' efface le gcode precedent
SetOEMDRO(1318,0) ' efface le compteur
SetOEMDRO(1050,0) 'efface le NOMBRE TOTAL DE PIECE EN X sur nesting wizard
SetOEMDRO(1303,0) 'efface le NOMBRE DE PIECE EN X
SetOEMDRO(1051,0) 'efface le NOMBRE TOTAL DE PIECE EN Y sur nesting wizard
SetOEMDRO(1304,0) 'efface le NOMBRE DE PIECE EN Y
SetOEMDRO(1307,0) 'efface le NOMBRE TOTAL DE PIECE
sleep(400)
'REM BROCHE OUTILS
ToolDia = GetOEMDRO (43) ' diametre outils
RadTOOL = ToolDia / 2 'RAYON outils
Tool = GetOemDRO (824) ' numero d outils
Speed = GetOemDRO (1660) ' vitesse de la broche
'REM RAINURES DECOUPE
LarD = SetOEMDRO (1305,ToolDia ) ' LARGEUR RAINURE DECOUPE PLAQUE EN X
sleep(300)
LonD = SetOEMDRO (1306,ToolDia ) ' LARGEUR RAINURE DECOUPEPLAQUE EN Y
sleep(300)
' REM Avances
FEEDC = GetOEMDRO(1120) ' avance ebauche
FEEDP=GetOEMDRO (1121) ' avance en plongéeFEEDPlung
Zsecu=GetOEMDRO (1130) ' Z SECURITE
' REM Valeur des Passes
DEPTHper = Abs(GetOEMDRO(1314))*(-1) 'valeur absolue multiplier par -1 pour etre negative
'REM DIMENSIONS PLAQUE
LarP = GetOEMDRO (1300) ' LARGEUR PLAQUE EN X
LonP = GetOEMDRO (1301) ' LARGEUR PLAQUE EN Y
DEPTHa = Abs(GetOEMDRO(1302))*(-1) 'EPAISSEUR PLAQUE valeur absolue multiplier par -1 pour etre negative
DEPTH =DEPTHa-0.1
'*****REM DIMENSIONS ETRIER *****
LarE = GetOEMDRO (1310)+(GetOEMDRO (43)) ' LARGEUR ETRIER EN X + diametre TOOL
LonE = GetOEMDRO (1311)+(GetOEMDRO (43)) ' LONGUEUR ETRIER EN Y + diametre TOOL
Trou = GetOEMDRO (1315) ' DIAMETRE TROU
'REM RAINURE TIGE
DEPTHT= Abs(GetOEMDRO(1313))*(-1) 'PROFONDEUR RAINURE TIGE valeur absolue multiplier par -1 pour etre negative
LarT = GetOEMDRO (1312) ' LARGEUR RAINURE TIGE EN X
If LarT<ToolDia Then
Code "(MSG,Rainure Tige trop petite ou outils trop grand)"
Exit Sub
End If
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx REM ETRIER + RAINURES DECOUPESxxxxxxxxxxxxxxxxxxxxx
Kx = (GetOEMDRO (1310))+(GetOEMDRO (1305))'calcul increment X =LarE +LarD
SetOEMDRO(1052,Kx) 'AFFICHE INCREMENT EN X sur nesting wizard
sleep(300)
Wy= (GetOEMDRO (1311))+(GetOEMDRO (1306))'+(GetOEMDRO (43)) 'Wy=LonE+LonD+TOOLDIA '***********
SetOEMDRO(1053,Wy) 'AFFICHE INCREMENT EN Y sur nesting wizard
sleep(300)
'ooooooooooooooooooooooooREM NOMBRE DE PIECE ooooooooooooooo
NbPenXb =nFmt(Abs(GetOEMDRO (1300))/(Kx),0) ' NbPenXb = LarP/ kx
NbPenX =NbPenXb '
SetOEMDRO(1050,NbPenX) 'AFFICHE NOMBRE TOTAL DE PIECE EN X sur nesting wizard
sleep(300)
SetOEMDRO(1303,NbPenX) 'AFFICHE NOMBRE DE PIECE EN X
sleep(300)
NbPenYb =nFmt(Abs(GetOEMDRO (1301))/(Wy),0) ' NbPenYb = LonP/ Wy
NbPenY =NbPenYb'
SetOEMDRO(1051,NbPenY) 'AFFICHE NOMBRE TOTAL DE PIECE EN Y sur nesting wizard
sleep(300)
SetOEMDRO(1304,NbPenY) 'AFFICHE NOMBRE DE PIECE EN Y
sleep(300)
NbTP = NbPenX * NbPenY 'CALCUL NOMBRE TOTAL DE PIECE
SetOEMDRO(1307,NbTP) 'AFFICHE NOMBRE TOTAL DE PIECE
sleep(300)
'***************************CONDITIONS****************
If LarP<Kx Then
Code "(MSG, PLAQUE TROP PETITE EN LARGEUR X )"
SetOEMDRO(1050,0)
SetOEMDRO(1303,0)
Exit Sub
End If
If LonP<Wy Then
Code "(MSG, PLAQUE TROP PETITE EN LONGUEUR Y )"
SetOEMDRO(1051,0)
SetOEMDRO(1304,0)
Exit Sub
End If
' Rem G59 offset fixture 6
Xx = GetOEMDRO (1100) ' debut brut valeur coordonnée machine G59
Yy = GetOEMDRO (1101) ' debut brut valeur coordonnée machine G59
Zz = Abs(GetOEMDRO (1102))*(-1) ' audessus du brut dans l axe YO valeur coordonnée machine G59
SetOEMDRO(46,5) 'ecrit la valeur fixture 4 pour work offset table valeur G59
Sleep(500)
SetOEMDRO(47,0) 'ecrit la valeur 0 pour X work offset table valeur G58
Sleep(500)
SetOEMDRO(48,0) 'ecrit la valeur 0 pour Y work offset table valeur G58
Sleep(500)
SetOEMDRO(49,0) 'ecrit la valeur 0 pour Zwork offset table valeur G58
Sleep(500)
SetOEMDRO(46,5) 'ecrit la valeur fixture 3 pour work offset table valeur G58
Sleep(500)
SetOEMDRO(47,Xx) 'ecrit la valeur Xx pour work offset table valeur X
Sleep(500)
SetOEMDRO(48,Yy) 'ecrit la valeur Yy pour work offset table valeur Y
Sleep(500)
SetOEMDRO(49,Zz) 'ecrit la valeur Zz pour work offset table valeur Z
Sleep(500)
'************** REM APPROCHE DU ZERO RALLENTIE ***************
Zo=-50 ' deplacement safe au dessus du brut
Za=Zz+10 ' +10mm au dessus du brut
Code "G0G53 Z" & Zo
Code "G0G53"& "X" & Xx &"Y"&Yy
Code "F"& FEEDP ' avance plongeante
Code "G0G53Z"& Za
Code "F25" ' avance plongeante rallentie sur 10mm
Code "G1G53Z"&Zz
While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
Sleep(100)
Wend
DoButton (8 ) ' zero visu X
DoButton (9 ) ' zero visu Y
DoButton (10) ' zero visu Z
Sleep(300)
DoOEMButton (33) ' lance G58
DoOEMButton (11) ' affiche l ecran 11 toolpath wf11
If DEPTH = 0 Then
MsgBox( "******EPAISSEUR PLAQUE =0 A MODIFIER ******")
Exit Sub
End If
If DEPTHper = 0 Then
MsgBox( "******PASSE D EBAUCHE =0 A MODIFIER******")
Exit Sub
End If
OpenTeachFile ("ETRIER_Wf.tap") '"CETRIER_Wf.tap"
Code "G0 G49 G40 G17 G80 G50 G90 "
Code"M6 T" & Tool & "(TOOL DIA. " & ToolDia & ")"
' Code"G58"' &"X"& Xx &"Y"& Yy &"Z"& Zz
Code"M03 S" & Speed
'Code "G00 G43 H" & tool
CODE "G00 Z" & Zsecu
XDEPARTa = (LarP/2) ' LARGEUR PLAQUE/2
XDEPART =XDEPARTa '0' centre plaque en x
YDEPART =0' RadTOOL ' '**********
CODE "G0 Z" & Zsecu
CODE "G0 X" & XDEPART
CODE "G0 Y" & YDEPART
Code "(MSG, 1111111111111)"
'***************RAINURE TIGE***************
CODE "(MSG,RAINURE TIGE)"
CODE "G0 Z" & Zsecu
AXE = (LarE/2) 'AXE ETRIER
B = LarT-ToolDia '
G=-(B/2)
H=(B/2)
CODE "G0 X" & AXE -(B/2)
Nc = 1
Counter = 1
CODE "G0 Z" & Zsecu
Do
DEPTHPASST = (NC*DEPTHper)
If DEPTHPASST<DEPTHT Then
Depthpasst=Deptht
End If
CODE "G1 Y" & YDEPART ' en bas
CODE "G1 Z" & nFmt(DEPTHPASST,2) & " F" & FEEDP ' descend
code" F" & FEEDC
CODE "G1 Y" & LonE ' monte en haut
CODE "(MSG, 555555555)"
CODE "G1 X" & AXE +(B/2) 'va droite
CODE "(MSG, 666666666)"
CODE "G1 Y" & YDEPART ' en bas
CODE "(MSG, 77777777)"
CODE "G1 X" & AXE -(B/2) ' va gauche
CODE "(MSG, 888888)"
CODE "G1 Y" & LonE ' monte en haut
CODE "G0 Z" & Zsecu
Nc=Nc+1
Loop While DEPTHPASST > DEPTHT
' Nc1=Nc1+1
'**** '*******************REM TROU A **************
CODE "(MSG, DEPART TROU A)"
XDEPARTa = (LarP/2) ' LARGEUR PLAQUE/2
XDEPART =XDEPARTa '0' centre plaque en x
YDEPART =0' '**********
Trou = Abs(GetOEMDRO (1315))
REM Centres en X & REM Centre en Y
XPOSA= (LarE/4) 'XDEPART-(LarE*3/4)
XPOSB= (LarE*3/4) '
YPOS= (LonE/2) '(YDEPART+(RadTOOL/2)+(LonE/2)) '
per_stepover =25'GetOEmDRO (1058)' passe horizontale
RampDis =Trou/3'GetOemDRO (1060) ' distance centre bord
' test inputs
If ToolDia<=0 Then
CODE "(MSG,Tool must not be zero or negitive)"
Exit Sub
End If
If per_stepover<=0 Then
CODE "(MSG,Stepover is set wrong)"
Exit Sub
End If
If per_stepover>100 Then
per_stepover=100
Exit Sub
End If
If Trou<=(1.02*ToolDia) Then
CODE "(MSG,Tool Dia. to Large)"
Exit Sub
End If
If FEEDC<=0 Then
CODE "(MSG,Cutting Feedrate Needed)"
Exit Sub
End If
If FEEDP<= 0Then
CODE "(MSG,Plunge Feedrate Needed)"
Exit Sub
End If
If DEPTHper=0 Then
CODE "(MSG,StepDEPTH is set wrong)"
Exit Sub
End If
If DEPTH>=0 Then
CODE"(MSG, The DEPTH must be Neg.)"
Exit Sub
End If
Nc = 1
RAD=0
Stepover =(Abs(per_stepover))/100*ToolDia
Passcounter= 1
RTOOL = ToolDia / 2
RHOLE = ((Trou / 2)- RTOOL)
Counter = 1
'CODE "G00 G43 H" & Tool & " Z" & Zsecu
Do
DEPTHPASSA = (NC*DEPTHper)
If DEPTHPASSA<DEPTH Then
DEPTHpassA=DEPTH
End If
CODE "(MSG, TROU A)"
CODE "(MSG, 999999)"
CODE "X" & XPOSA & " Y" & YPOS
CODE "G01 Z" & nFmt(DEPTHPASSA,4) & " F" & FEEDP
nc1=0
RAD = Stepover
Do
If RHOLE < Stepover Then Exit Do
XENDPOINT = nFmt(XPOSA+RAD,4)
RADCIRCLE = nFmt(RAD-STEPOVER/2,4)
'Advance the Cut
If nc1=0 Then
If GetUserLED (1004) Then
CODE "G3 Y" & YPOS & " X" & XENDPOINT & " R" & RADCIRCLE & " F" & FEEDC
Else
CODE "G2 Y" & YPOS & " X" & XENDPOINT & " R" & RADCIRCLE & " F" & FEEDC
End If
Else
CODE "Y" & YPOS & " X" & XENDPOINT & " R" & RADCIRCLE
End If
nc1=1
XENDPOINT = nFmt( XPOSA-RAD,4)
RAD = nFmt(RAD,4)
'Clean out the other side of the cut
CODE"Y" & YPOS & " X" & XENDPOINT & " R" & RAD
RAD = RAD+Stepover
If RHOLE <= Rad Then
RADCIRCLE= nFmt(( Abs((XPOSA-XENDPOINT))+RHOLE )/2 ,4) ' Need to have a round HERE
CODE "Y" & YPOS & " X" & XPOSA+RHOLE & " R" & RADCIRCLE
CODE "Y" & YPOS & " X" & XPOSA-RHOLE & " R" & RHOLE
CODE "X" & XPOSA+RHOLE & " Y" & YPOS & " R" & RHOLE
Exit Do
End If
Loop While RHOLE>=RAD
If RHOLE < Stepover Then
CODE "Y" & YPOS & " X" & XPOSA+RHOLE & " R" & RHOLE/2
CODE "Y" & YPOS & " X" & XPOSA-RHOLE & " R" & RHOLE
CODE "X" & XPOSA+RHOLE & " Y" & YPOS & " R" & RHOLE
End If
If RampDis > 0 Then
If RHOLE >RampDis Then
If GetUserLED (1004) Then
CODE "Y" & Ypos+RampDis & " X" & XPOSA+RHOLE-RampDis & " R" & RampDis
Else
CODE "Y" & Ypos-RampDis & " X" & XPOSA+RHOLE-RampDis & " R" & RampDis
End If
Else
If GetUserLED (1004) Then
CODE "Y" & Ypos+RHOLE/2 & " X" & XPOSA+RHOLE-RHOLE/2 & " R" & RHOLE/2
Else
CODE "Y" & Ypos-RHOLE/2 & " X" & XPOSA+RHOLE-RHOLE/2 & " R" & RHOLE/2
End If
End If
End If
CODE "G00 Z" & Zsecu
Nc=Nc+1
RAD=0
Loop While DEPTHPASSA > DEPTH
' *********************REM trou B*****************
CODE "(MSG, DEPART TROU B)"
CODE "G00 Z" & Zsecu
Nc = 1
RAD=0
Stepover =(Abs(per_stepover))/100*ToolDia
Passcounter= 1
RTOOL = ToolDia / 2
RHOLE = ((Trou / 2)- RTOOL)
Counter = 1
'CODE "G00 G43 H" & Tool & " Z" & Zsecu
Do
DEPTHPASSB = (NC*DEPTHper)
If DEPTHPASSB<DEPTH Then
DEPTHpassB=DEPTH
End If
CODE "(MSG, TROU B)"
CODE "X" & XPOSB & " Y" & YPOS
CODE "G01 Z" & nFmt(DEPTHPASSB,4) & " F" & FEEDP
nc1=0
RAD = Stepover
Do
If RHOLE < Stepover Then Exit Do
XENDPOINT = nFmt(XPOSB+RAD,4)
RADCIRCLE = nFmt(RAD-STEPOVER/2,4)
'Advance the Cut
If nc1=0 Then
If GetUserLED (1004) Then
CODE "G3 Y" & YPOS & " X" & XENDPOINT & " R" & RADCIRCLE & " F" & FEEDC
Else
CODE "G2 Y" & YPOS & " X" & XENDPOINT & " R" & RADCIRCLE & " F" & FEEDC
End If
Else
CODE "Y" & YPOS & " X" & XENDPOINT & " R" & RADCIRCLE
End If
nc1=1
XENDPOINT = nFmt( XPOSB-RAD,4)
RAD = nFmt(RAD,4)
'Clean out the other side of the cut
CODE"Y" & YPOS & " X" & XENDPOINT & " R" & RAD
RAD = RAD+Stepover
If RHOLE <= Rad Then
RADCIRCLE= nFmt(( Abs((XPOSB-XENDPOINT))+RHOLE )/2 ,4) ' Need to have a round HERE
CODE "Y" & YPOS & " X" & XPOSB+RHOLE & " R" & RADCIRCLE
CODE "Y" & YPOS & " X" & XPOSB-RHOLE & " R" & RHOLE
CODE "X" & XPOSB+RHOLE & " Y" & YPOS & " R" & RHOLE
Exit Do
End If
Loop While RHOLE>=RAD
If RHOLE < Stepover Then
CODE "Y" & YPOS & " X" & XPOSB+RHOLE & " R" & RHOLE/2
CODE "Y" & YPOS & " X" & XPOSB-RHOLE & " R" & RHOLE
CODE "X" & XPOSB+RHOLE & " Y" & YPOS & " R" & RHOLE
End If
If RampDis > 0 Then
If RHOLE >RampDis Then
If GetUserLED (1004) Then
CODE "Y" & Ypos+RampDis & " X" & XPOSB+RHOLE-RampDis & " R" & RampDis
Else
CODE "Y" & Ypos-RampDis & " X" & XPOSB+RHOLE-RampDis & " R" & RampDis
End If
Else
If GetUserLED (1004) Then
CODE "Y" & Ypos+RHOLE/2 & " X" & XPOSB+RHOLE-RHOLE/2 & " R" & RHOLE/2
Else
CODE "Y" & Ypos-RHOLE/2 & " X" & XPOSB+RHOLE-RHOLE/2 & " R" & RHOLE/2
End If
End If
End If
CODE "G00 Z" & Zsecu
Nc=Nc+1
RAD=0
Loop While DEPTHPASSB > DEPTH
'***************DECOUPE ETRIER***************
CODE "(MSG, DEPART DECOUPE )"
XDEPARTa = (LarP/2) ' LARGEUR PLAQUE/2
XDEPART =XDEPARTa '0' centre plaque en x
YDEPART =0' '**********
CODE "G0 Z" & Zsecu
CODE "G0 X" & 0
CODE "G0 Y" & YDEPART
CODE "(MSG, 1111111111111)"
Nc = 1
Counter = 1
CODE "G00 Z" & Zsecu
CODE "(MSG, 2222222222222)"
Do
DEPTHPASS = (NC*DEPTHper) ' BOUCLE Z
If DEPTHPASS<DEPTH Then
Depthpass=Depth
End If
CODE "G1 Z" & nFmt(DEPTHPASS,2) & " F" & FEEDP
code "f" & FEEDC
CODE "G1 X" & LarE ')1 VA A DROITE X++
CODE "G1 Y" & LonE '2 VA EN HAUT Y++
CODE "(MSG, 33333)"
CODE "G1 X" & 0 '3 VA AGAUCHE X--
CODE "G1 Y" & YDEPART '4VA EN BAS Y--
CODE "(MSG, 4444444444444)"
CODE "G00 Z" & Zsecu
Nc=Nc+1
Loop While DEPTHPASS > DEPTH
CODE"M800" 'compteur piece faite
CODE "M99"
'********************************** FIN PROGRAMME ETRIER
CODE"G0Z20"
CODE"M5 M9"
CODE"M30"
CloseTeachFile()
Call LoadTeachFile()
End Sub
Main
le probleme est dans le 92 y mais je trouve pas
Merci pour votre aide
WF- très actif
- Messages : 259
Points : 370
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy
Re: MACH3 WIZAR NESTING LE RETOUR
Salut,
Sur le screenset Nesting de Brian, il est bien précisé que le le programme qui est lancé par le Wizard
à virer je pense.
Le M99, c'est l'équivalent du End Sub (ou End Function) du basic, mais en Gcode. (autrement dit, c'est la fin du sous-programme, qui renvoi au programme principal)
Le M30 remet à 0 les décalages du G92, c'est peut être pour ça que ton Y n'est pas incrémenté.
Tu peux le vérifier sur l'écran MDI (manuel)
- met ta visu X à 0
- dans la ligne de commande, tape un G92 X20 > l'affichage du X passe à 20.00 au lieu de 0.00 (aucun mouvement n'est effectué)
- dans la ligne de commande, tape un M30 > l'affichage du X repasse à 0.00 ; le décalage du G92 à été annulé par le M30
sous programme
http://www.metabricoleur.com/t2008-appeler-un-sous-programme-dans-mach3#83870
++
David
Sur le screenset Nesting de Brian, il est bien précisé que le le programme qui est lancé par le Wizard
... et dans ton programme tu à un M30 à la findoit utiliser un M99 à la place du M30 en fin de programme.
![Wink](https://2img.net/i/fa/i/smiles/icon_wink.gif)
1) To run a nested file, the file to be nested must end with M99
so replace the M30 in your file to be nested with M99
If the file has no M30, simply place an M99 at its end.
Le M99, c'est l'équivalent du End Sub (ou End Function) du basic, mais en Gcode. (autrement dit, c'est la fin du sous-programme, qui renvoi au programme principal)
Le M30 remet à 0 les décalages du G92, c'est peut être pour ça que ton Y n'est pas incrémenté.
Tu peux le vérifier sur l'écran MDI (manuel)
- met ta visu X à 0
- dans la ligne de commande, tape un G92 X20 > l'affichage du X passe à 20.00 au lieu de 0.00 (aucun mouvement n'est effectué)
- dans la ligne de commande, tape un M30 > l'affichage du X repasse à 0.00 ; le décalage du G92 à été annulé par le M30
sous programme
http://www.metabricoleur.com/t2008-appeler-un-sous-programme-dans-mach3#83870
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: MACH3 WIZAR NESTING LE RETOUR
Bonjour à Tous Bonjour Mr David
j'ai fait une erreur dans mon envoi j ai mis le programme simple piece avec un M30 à la fin
mais dans mon fichier set c est un M99
quand je lance mon programme il fonctionne sur le chemin d outils
on voit les pièce cote à cote
sur la visu X en coordonnés machine le X se déplace bien de la valeur de (G92 Xinc) l incrément X
mais sur la visu Y en coordonnées machine le y reste sur la 1ere rangée
quand je teste le bouton en pas a pas la boucle du X s'exécute normalement
mais quand j arrive sur le Y il reprend le passage sur le x et il ne s incrément pas
j'ai fait une erreur dans mon envoi j ai mis le programme simple piece avec un M30 à la fin
mais dans mon fichier set c est un M99
quand je lance mon programme il fonctionne sur le chemin d outils
on voit les pièce cote à cote
sur la visu X en coordonnés machine le X se déplace bien de la valeur de (G92 Xinc) l incrément X
mais sur la visu Y en coordonnées machine le y reste sur la 1ere rangée
quand je teste le bouton en pas a pas la boucle du X s'exécute normalement
mais quand j arrive sur le Y il reprend le passage sur le x et il ne s incrément pas
- Code:
File = Filename()
XTimes = GetoemDRO (1050)
YTimes = GetoemDRO (1051)
XInc = GetoemDRO (1052)
YInc = GetoemDRO (1053)
CurX = GetoemDRO(800)
CurY = GetoemDRO(801)
CurZ = GetoemDRO(802)
SafeZ = GetoemDRO(1130)'GetSafeZ()
OpenTeachFile( "Nested.tap" )
For Y = 1 To YTimes Step 1 'For y = 1 To YTimes Step 1
For X = 1 To XTimes Step 1 ' For x = 1 To XTimes Step 1
If X > 1 Then ' If (x > 1) Then
code "G92 X0"
End If
code "M98(" & "-" & File & ")"
code "G0 Z" & SafeZ
If X < Xtimes Then
code "G0 X" & XInc & " Y0"
Else
code "G0 X0 Y0"
End If
Next
code "G92 X" & (Xinc * (Xtimes - 1)) ' code "G92 X" & (Xinc * (Xtimes - 1))
If Y < Ytimes Then
code "G0 X0"& "Y" & YInc
code "G92 Y0"
Else
code "G92 Y" & (Yinc * (Ytimes - 1))
code "G0 X0 Y0"
End If
Next
Code "M30"
CloseTeachFile ()
Call LoadTeachFile()
WF- très actif
- Messages : 259
Points : 370
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy
MACH3 WIZAR NESTING LE RETOUR SUITE
Bonjour à tous et à DH42
donc j ai fait des essais sur la machine
1° le code de la pièce est Nickel pas de problème même en changeant les cotes et les outils
le problème provient bien du G92 il refuse de décaler le Y
j ai modifier les N° des visu qui etait (0) (1) (2) par 800 801 802 pour xyz et
remplace getdro par getoemdro
pour voir si le probleme est là à priori non
j ai mis aussi les meme n° de visu et intitule dans le wizard nesting et sur mon bouton idem meme probleme
j ai fait aussi un essai avec en remplacant tous G92 par G52 idem
je pense que le probleme est dans la partie y du code
en tous merci pour votre aide
donc j ai fait des essais sur la machine
1° le code de la pièce est Nickel pas de problème même en changeant les cotes et les outils
le problème provient bien du G92 il refuse de décaler le Y
- Code:
File = Filename()
XTimes = GetOEMDRO(1317) '(1050)
YTimes = GetOEMDRO (1319 ) '(1051)
XInc = GetOEMDRO(1318) '(1052)
YInc = GetOEMDRO(1320) '(1053)
CurX = GetOEMDRO(800)
CurY = GetOEMDRO(801)
CurZ = GetOEMDRO(802)
SafeZ = GetSafeZ()
OpenTeachFile( "Nested.tap" )
For y = 1 To YTimes Step 1
For x = 1 To XTimes Step 1
If (x > 1) Then
code "G92 X0"
End If
code "M98(" & "-" & File & ")"
code "G0 Z" & SafeZ
If x < Xtimes Then
code "G0 X" & XInc & " Y0"
Else
code "G0 X0 Y0"
End If
Next
code "G92 X" & (Xinc * (Xtimes - 1))
If y < Ytimes Then
code "G0 X0 Y" & YInc
code "G92 Y0"
Else
code "G92 Y" & (Yinc * (Ytimes - 1))
code "G0 X0 Y0"
End If
Next
code "M30"
CloseTeachFile()
Call LoadTeachFile()
j ai modifier les N° des visu qui etait (0) (1) (2) par 800 801 802 pour xyz et
remplace getdro par getoemdro
pour voir si le probleme est là à priori non
j ai mis aussi les meme n° de visu et intitule dans le wizard nesting et sur mon bouton idem meme probleme
j ai fait aussi un essai avec en remplacant tous G92 par G52 idem
je pense que le probleme est dans la partie y du code
- Code:
If y < Ytimes Then
code "G0 X0 Y" & YInc
code "G92 Y0"
Else
code "G92 Y" & (Yinc * (Ytimes - 1))
code "G0 X0 Y0"
End If
Next
code "M30"
en tous merci pour votre aide
WF- très actif
- Messages : 259
Points : 370
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy
MACH3 WIZAR NESTING LE RETOUR eurêka peu être
Bonjour à Tous & à DH42
je crois que j ai trouvé j aimerais vos avis des que je peux j'irai tester sur machine
voila le code du bouton multi piece
au fur et à mesures
donc je pense que ça marche
merci pour votre Aide précieuse
à bientot
je crois que j ai trouvé j aimerais vos avis des que je peux j'irai tester sur machine
voila le code du bouton multi piece
- Code:
File = Filename()
XTimes = GetOEMDRO (1317) '(1050) NB DE FOIS EN X
YTimes = GetOEMDRO (1319) '(1051) NB DE FOIS EN Y
XInc = GetOEMDRO (1318) '(1052) INCREMENT EN X
YInc = GetOEMDRO (1320) '(1053) INCREMENT EN Y
CurX = GetOEMDRO(800)
CurY = GetOEMDRO(801)
CurZ = GetOEMDRO(802)
SafeZ = GetOEMDRO(1130) 'GetSafeZ()
CODE "G92.1" 'EFFACE LES DECALAGES EXISTANT
OpenTeachFile( "Nested.tap" )
For y = 1 To YTimes Step 1 ' POUR Y=1 JUQU'A Y FOIS NIVEAU 1
For x = 1 To XTimes Step 1 ' POUR X=1 JUQU'A X FOIS NIVEAU 1
If (x > 1) Then ' SI X EST SUPERIEUR A 1 ALORS
code "G92 X0 " ' DECALAGE X=0
End If ' FIN DU SI
code "M98(" & "-" & File & ")" ' APPEL LE FICHIER ETRIER
code "G0 Z" & SafeZ ' VA EN Z SECU
If x < Xtimes Then 'SI X EST INFERIEUR A XFOIS ALORS
code "G0 X" & XInc & " Y0" ' X= INCREMENT EN X ET Y=0
Else 'AUTREMENT
code "G0 X0 Y0" ' X=0 ET Y=0
End If ' FIN DU SI
Next ' PROCHAIN
code "G92 X" & (Xinc * (Xtimes - 1)) ' DECALAGE X= INCREMENT EN X* NB DE FOIS EN X -UNE FOIS
If y < Ytimes Then ' SI Y EST INFERIEUR A YFOIS ALORS
code "G0 Y" & YInc & "X0" ' Y=INCREMENT EN Y ET X=0
code "G92 Y"& -YInc ' code "G92 Y0" ' DECALAGE Y=0
Else ' AUTREMENT
code "G92 Y" & (Yinc * (Ytimes - 1)) ' DECALAGE Y= INCREMENT EN Y* NB DE FOIS EN Y -UNE FOIS
code "G0 X0 Y0" ' VA EN X=0 ET Y=0
End If ' FIN DU SI
Next ' PROCHAIN
code "M30" ' FIN DU PROGRAMME
CloseTeachFile() ' FERME LE FICHIER "Nested.tap"
Call LoadTeachFile() ' CHAGE LE FICHIER "Nested.tap"
au fur et à mesures
donc je pense que ça marche
merci pour votre Aide précieuse
à bientot
WF- très actif
- Messages : 259
Points : 370
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy
Re: MACH3 WIZAR NESTING LE RETOUR
j ai fait aussi un essai avec en remplacant tous G92 par G52 idem
La différence est subtile
quand tu fais par exemple un G92 X10, tu lui dit que la position actuelle du X doit désormais avoir la coordonnée 10 (c'est équivalent à taper 10 dans la visu X, sauf que ce n'est pas persistant)
pour le G52, au contraire tu lui dit ou se trouve le 0 par rapport à la coordonnée actuelle, par exemple G52 X10 lui dit que le 0 en X est a +10 par rapport à la position actuelle (donc en fait, que tu te trouve à -10)
il ne faut surtout pas mixer des G52 et des G92 dans le même Gcode car ils utilisent les mêmes variables internes, donc bonjours la pagaille en cas de mix !!
le G92 se remet à 0 avec G92.1, mais par contre il n'y a rien pour le G52 (si ce n'est le M30 de fin), donc pour le RàZ il faut faire un G52 x0 y0 z0
++
David
_________________
Traduction Française de CamBam et de sa documentation.
le nesting le retour et MACH3 ROTATION 90° GCODE et le nesting le retour
BONSOIR à TOUS ET à DH42 MON MAITRE
1° je cherche unsujet pour la rotation des axes du gcode
en clair le X devient Y et l Y le X je l aideja vue mais je ne le trouve pas
2° j ai tester aujourd hui mon fichier Nesting ça marche j essairai de vous mettre une video la semaine prochaine
merci bonne soirée
1° je cherche unsujet pour la rotation des axes du gcode
en clair le X devient Y et l Y le X je l aideja vue mais je ne le trouve pas
2° j ai tester aujourd hui mon fichier Nesting ça marche j essairai de vous mettre une video la semaine prochaine
merci bonne soirée
WF- très actif
- Messages : 259
Points : 370
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy
Re: MACH3 WIZAR NESTING LE RETOUR
Salut ![Wink](https://2img.net/i/fa/i/smiles/icon_wink.gif)
Ce que tu demande ce n'est pas une rotation d'axe , mais une permutation d'axe![Wink](https://2img.net/i/fa/i/smiles/icon_wink.gif)
SwapAxis
Sub SwapAxis(FirstAxis As Integer, SecondAxis As Integer)
This function swaps the STEP and DIR pins for the two specified axes. This has precisely the same effect as changing the pin settings in Config->Ports&Pins. Note that no other axis parameters or settings are changed. If the two specified axes have different acceleration and velocity settings, unreliable operation will likely result. Note also that if you exit Mach3 while the swap is in effect, the swapped pins will be written to the XML configuration file, and the swap will still be in effect the next time you start Mach3. It is illegal to perform two consecutive swaps, without first executing a ResetAxisSwap().
Doing so will likely result in incorrect operation.
Arguments:
FirstAxis in an Integer value that specifies the first axis to swap. 0=X, 1=Y, 2=Z, etc.
SecondAxis in an Integer value that specifies the second axis to swap. 0=X, 1=Y, 2=Z, etc.
Return Value:
None
Example:
Xaxis = 0
Yaxis = 1
Code “G0 X0 Y0”
‘ Cut a 45 degree diagonal line from lower right to upper left
Code “G1 X-1 Y1”
Code “G0 X0 Y0”
‘ Now swap X and Y axes
SwapAxis(Xaxis, Yaxis)
‘ Cut a 45 degree diagonal line from upper left to lower right
Code “G1 X-1 Y1”
Code “G0 X0 Y0”
See also:
ResetAxisSwap()
-------------------------
et si tu veux les rotations d'axe (rotation du repère)
http://www.metabricoleur.com/t5298p135-projet-achat-fraiseuse-cnc-grand-format-pour-fabrication-enseignes#131422
++
David
![Wink](https://2img.net/i/fa/i/smiles/icon_wink.gif)
1° je cherche un sujet pour la rotation des axes du gcode en clair le X devient Y et l Y le X je l ai deja vue mais je ne le trouve pas
Ce que tu demande ce n'est pas une rotation d'axe , mais une permutation d'axe
![Wink](https://2img.net/i/fa/i/smiles/icon_wink.gif)
SwapAxis
Sub SwapAxis(FirstAxis As Integer, SecondAxis As Integer)
This function swaps the STEP and DIR pins for the two specified axes. This has precisely the same effect as changing the pin settings in Config->Ports&Pins. Note that no other axis parameters or settings are changed. If the two specified axes have different acceleration and velocity settings, unreliable operation will likely result. Note also that if you exit Mach3 while the swap is in effect, the swapped pins will be written to the XML configuration file, and the swap will still be in effect the next time you start Mach3. It is illegal to perform two consecutive swaps, without first executing a ResetAxisSwap().
Doing so will likely result in incorrect operation.
Arguments:
FirstAxis in an Integer value that specifies the first axis to swap. 0=X, 1=Y, 2=Z, etc.
SecondAxis in an Integer value that specifies the second axis to swap. 0=X, 1=Y, 2=Z, etc.
Return Value:
None
Example:
Xaxis = 0
Yaxis = 1
Code “G0 X0 Y0”
‘ Cut a 45 degree diagonal line from lower right to upper left
Code “G1 X-1 Y1”
Code “G0 X0 Y0”
‘ Now swap X and Y axes
SwapAxis(Xaxis, Yaxis)
‘ Cut a 45 degree diagonal line from upper left to lower right
Code “G1 X-1 Y1”
Code “G0 X0 Y0”
See also:
ResetAxisSwap()
-------------------------
et si tu veux les rotations d'axe (rotation du repère)
http://www.metabricoleur.com/t5298p135-projet-achat-fraiseuse-cnc-grand-format-pour-fabrication-enseignes#131422
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: MACH3 WIZAR NESTING LE RETOUR
Re
a) Après un test de SwapAxis(), si on ferme puis ré-ouvre Mach3, les axes retrouvent leur config d'origine. ( = ResetAxisSwap() )
b) le SwapAxis() intervertit réellement les n° de pin du Dir et du Step des axes dans le Ports&pins/motor outputs, ce qui veux dire que ça ne fonctionnera que sur les cartes d'axe ou il est possible de définir les n° de pin pour les moteurs, autrement dit, sur les cartes Chinoises courantes ou l'assignation des n° de pins moteur est codé en dur dans le plugin, ça ne fonctionnera pas car la carte ignore totalement les valeurs données dans le ports&pins (XHC, NVEM/NVUM, BitSensor USB), donc que tu les change à la main dasn le ports&pins ou via SwapAxis() c'est mort avec ce type de carte. (le seul moyen d'intervertir les axes sur de telles cartes, c'est de modifier les branchements moteurs sur la carte elle même)
++
David
a) Après un test de SwapAxis(), si on ferme puis ré-ouvre Mach3, les axes retrouvent leur config d'origine. ( = ResetAxisSwap() )
b) le SwapAxis() intervertit réellement les n° de pin du Dir et du Step des axes dans le Ports&pins/motor outputs, ce qui veux dire que ça ne fonctionnera que sur les cartes d'axe ou il est possible de définir les n° de pin pour les moteurs, autrement dit, sur les cartes Chinoises courantes ou l'assignation des n° de pins moteur est codé en dur dans le plugin, ça ne fonctionnera pas car la carte ignore totalement les valeurs données dans le ports&pins (XHC, NVEM/NVUM, BitSensor USB), donc que tu les change à la main dasn le ports&pins ou via SwapAxis() c'est mort avec ce type de carte. (le seul moyen d'intervertir les axes sur de telles cartes, c'est de modifier les branchements moteurs sur la carte elle même)
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: MACH3 WIZAR NESTING LE RETOUR
bonsoir à tous et à dh42
qui vient de me faire découvrir la rotation de pièce sur l écran MDI de mach3
comme promis voila la vidéo du Nesting ou multipose et ça fonctionne tester sur la cnc avec carte xhc
la simulation mach3 est bizarre mais sur l écran diagnostique les valeurs sont bonne et les pièces sont décalées en X et Y
https://youtu.be/5R6B9wqhyGU
le code et plus haut avec l écran 1024wf5
le code de la Macro du compteur de pièce pour avoir une valeur juste il faut incrémenter de o.5 par pièce bizarre mais ça marche
merci encore pour votre aide
qui vient de me faire découvrir la rotation de pièce sur l écran MDI de mach3
comme promis voila la vidéo du Nesting ou multipose et ça fonctionne tester sur la cnc avec carte xhc
la simulation mach3 est bizarre mais sur l écran diagnostique les valeurs sont bonne et les pièces sont décalées en X et Y
https://youtu.be/5R6B9wqhyGU
le code et plus haut avec l écran 1024wf5
le code de la Macro du compteur de pièce pour avoir une valeur juste il faut incrémenter de o.5 par pièce bizarre mais ça marche
- Code:
counter = getuserdro(1321) 'lit la dro du compteur
sleep (300)
counter =counter+0.5 ' ajoute une pièce
sleep (300)
SetUserDRO (1321, counter) 'affiche le nombre de pièce
merci encore pour votre aide
WF- très actif
- Messages : 259
Points : 370
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy
Re: MACH3 WIZAR NESTING LE RETOUR
Salut,
Oui, la simu du G92 G52 n'est pas du tout au point sur Mach3, et c'est pire si il y a des sous programmes !
++
David
la simulation mach3 est bizarre mais sur l écran diagnostique les valeurs sont bonne et les pièces sont décalées en X et Y
Oui, la simu du G92 G52 n'est pas du tout au point sur Mach3, et c'est pire si il y a des sous programmes !
++
David
_________________
Traduction Française de CamBam et de sa documentation.
![-](https://2img.net/s/t/12/07/17/i_tabs_less.gif)
» Mach3 Wizard Nesting
» Nesting Pas D arret de la Spindle
» Ou poster un sujet traitant de Mach3, des règlafes VFD Huanyang et d'une carte CNC USB compatible Mach3
» Ponceuse Festool ETS 125 au ralenti... panne ?
» FESTOOLL TS 55 REBQ neuve, pb de couteau diviseur d'origine
» Nesting Pas D arret de la Spindle
» Ou poster un sujet traitant de Mach3, des règlafes VFD Huanyang et d'une carte CNC USB compatible Mach3
» Ponceuse Festool ETS 125 au ralenti... panne ?
» FESTOOLL TS 55 REBQ neuve, pb de couteau diviseur d'origine
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum