-14%
Le deal à ne pas rater :
Apple MacBook Air (2020) 13,3″ Puce Apple M1 – RAM 8Go/SSD 256Go
799 € 930 €
Voir le deal
Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

MACH3 WIZAR NESTING LE RETOUR

2 participants

Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty MACH3 WIZAR NESTING LE RETOUR

Message  WF Mar 24 Aoû 2021 - 20:02

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
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
WF
très actif
très actif

Messages : 239
Points : 348
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty Re: MACH3 WIZAR NESTING LE RETOUR

Message  dh42 Mar 24 Aoû 2021 - 21:07

Salut,

Sur le screenset Nesting de Brian, il est bien précisé que le le programme qui est lancé par le Wizard
doit utiliser un M99 à la place du M30 en fin de programme.
... et dans ton programme tu à un M30 à la fin Wink à virer je pense.

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.
dh42
dh42
Admin
Admin

Messages : 25160
Points : 37876
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty Re: MACH3 WIZAR NESTING LE RETOUR

Message  WF Mer 25 Aoû 2021 - 12:29

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
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()
  
en tous cas merci pour votre aide
WF
WF
très actif
très actif

Messages : 239
Points : 348
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty MACH3 WIZAR NESTING LE RETOUR SUITE

Message  WF Dim 29 Aoû 2021 - 14:57

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  
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"
sur la photo on voit les different essai  sur la planche jaune pas de ligne de piece en Y  sur la planche grise se sont des essai avec g52 est des decalage bizarre
en tous merci pour votre aide
WF
WF
très actif
très actif

Messages : 239
Points : 348
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty MACH3 WIZAR NESTING LE RETOUR eurêka peu être

Message  WF Dim 29 Aoû 2021 - 19:50

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
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"
        
donc  pour simuler le g92  les valeur des cotes et du décalage  s affiche sur l'écran diagnostique  voir photo on voie les décalage en x et y des pièces
au fur et à mesures
donc je pense que ça marche
merci pour votre Aide précieuse
à bientot
WF
WF
très actif
très actif

Messages : 239
Points : 348
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty Re: MACH3 WIZAR NESTING LE RETOUR

Message  dh42 Dim 29 Aoû 2021 - 23:30

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.
dh42
dh42
Admin
Admin

Messages : 25160
Points : 37876
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty le nesting le retour et MACH3 ROTATION 90° GCODE et le nesting le retour

Message  WF Ven 3 Sep 2021 - 19:58

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
WF
WF
très actif
très actif

Messages : 239
Points : 348
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty Re: MACH3 WIZAR NESTING LE RETOUR

Message  dh42 Ven 3 Sep 2021 - 20:46

Salut Wink

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

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.
dh42
dh42
Admin
Admin

Messages : 25160
Points : 37876
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty Re: MACH3 WIZAR NESTING LE RETOUR

Message  dh42 Ven 3 Sep 2021 - 21:43

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

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25160
Points : 37876
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty Re: MACH3 WIZAR NESTING LE RETOUR

Message  WF Sam 4 Sep 2021 - 18:30

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
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
WF
très actif
très actif

Messages : 239
Points : 348
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty Re: MACH3 WIZAR NESTING LE RETOUR

Message  dh42 Sam 4 Sep 2021 - 18:55

Salut,

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.
dh42
dh42
Admin
Admin

Messages : 25160
Points : 37876
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

 MACH3 WIZAR NESTING LE RETOUR Empty Re: MACH3 WIZAR NESTING LE RETOUR

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum