Hello Guest it is April 25, 2024, 11:40:32 PM

Author Topic: macro correction  (Read 1204 times)

0 Members and 1 Guest are viewing this topic.

macro correction
« on: September 15, 2022, 02:51:17 AM »
Good morning
i tried to put two macros in one button
, but it gives me back some errors, I state that I am not capable of it my competence in VB is almost nothing :-[, is there a person who can help me to correct it?
I thank
I am attaching macros:
' CENTRO ASSE X INTERNO ESTERNO
Sub Main

Speak (" CENTRO ASSE x ") 'Avviso Vocale
 Begin Dialog SelectCentering 240,80,140,225,"CENTRO ASSE X"
 Picture 5, 65, 130, 130, "c:\mach3\addons\centri_scan_sondaggi\bitmaps\CENTRO ASSE X.BMP"
   OKButton 15,203,50,14
   CancelButton 70,203,50,14
   GroupBox 5,10,130,50,"CENTRO ASSE X",.GroupBox1
   OptionGroup .OptionGroup1
   OptionButton 10,24,120,8,"-A-  CENTRO ASSE X INTERNO",.OptionButton1
   OptionButton 10,38,120,8,"-B-  CENTRO ASSE X ESTERNO",.OptionButton2

  End Dialog
  Dim Dlg1 As SelectCentering
  Button = Dialog (Dlg1)
  If Button = 0 Then Exit Sub
  Selected  = Dlg1.OptionGroup1

  'centro asse x INTERNO @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  If Selected = 0 Then
Speak ("centro  interno ASSE x") 'Avviso Vocale

Dim F1 As Double
Dim F2 As Double
Dim F3 As Double
Dim A As Double
Dim A1 As Double
Dim A2 As Double
Dim B As Double
Dim B1 As Double
Dim B2 As Double
Dim C As Double
Dim D As Double
Dim D1 As Double
Dim D2 As Double
Dim E As Double
Dim E1 As Double
Dim E2 As Double
Dim F As Double
F1= GETOEMDRO(1111) ' leggi F di Spostamento
F2= GETOEMDRO(1014) ' leggi F di Avvicinamento
F3= GETOEMDRO(1003) ' leggi F di Accosto
F4= GETOEMDRO(1000) ' leggi diametro probe
   Begin Dialog ButtonSample 280,270,100,30,"START SCANSIONE"
   OKButton 10,8,40,14
   CancelButton 50,8,40,14
   End Dialog
   Dim Dlg1 As ButtonSample
   Button = Dialog (Dlg1)
   If Button = 0 Then
   MsgBox "SCANSIONE CANCELLATA!"
   Speak ("scansione cancellata") 'Avviso Vocale
   Exit Sub
   End If
   SetOEMDRO(1181,0)
   Speak ("dro azzerati")
   Sleep (500) ' pausa di 2 secondi
' TROVA CENTRO IN X
SETDRO(0,0) 'Azzera X
SETDRO(1,0) 'Azzera Y
code "g31x200" & "f" & F2 'muove verso x+
While isMoving()
Sleep (100) 
  Wend
A1= GETOEMDRO(800) ' legge il valore di X
A2= A1-2
code "g1x"& A2 & "f" & F2
code "g31x200" & "f" & F3 'muove verso x+
While isMoving()
Sleep (100) 
  Wend
A= GETOEMDRO(800) ' legge il valore di X
code "g1x0" & "F" & F1 'torna a X0
While isMoving()
Sleep (100) 
  Wend
code "g31x-200" & "f" & F2 'muove verso x+
While isMoving()
Sleep (100) 
  Wend
B1= GETOEMDRO(800) ' legge il valore di X
B2= B1+2
code "g1x" & B2 & "f" & F2
code "g31x-200" & "f" & F3 'muove verso x+
While isMoving()
Sleep (100) 
  Wend
B= GETOEMDRO(800) ' legge il valore di X
C= ((A+B)/2) ' trova la metà in X
code "g1 X" & C & "f" & F1 ' va alla metà in X
While isMoving()
Sleep (100) 
  Wend
Call SetUserDro (1181, A1 + A + F4)
E3= GetUserLED (1011)
If E3 = 0 Then
Speak ("centro  interno completato") 'Avviso Vocale
SETDRO(1,0) 'Azzera Y
SetDRO(0,0) 'Azzera X
Else
G= GETOEMDRO(1049) ' leggi offset X
G1= GETOEMDRO(1050) ' leggi offset Y
G2= GETOEMDRO(800) ' leggi coord X
G3= GETOEMDRO(801) ' leggi coord Y
G4= (G2)+(G) ' nuova coordonata in X
G5= (G3)+ (G1) ' nuova coordonata in Y
Code "G1 X" & G4 & "Y" & G5 & "F500" 
While isMoving()
Sleep (100) 
  Wend
SETDRO(1,0) 'Azzera Y
SetDRO(0,0) 'Azzera X
End If

End If

   
'centro asse x ESTERNO selected @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
      If Selected = 1 Then
  Speak ("centro  esterno ASSE x") 'Avviso Vocale     
Dim A As Double
Dim A1 As Double
Dim A2 As Double
Dim A3 As Double
Dim A4 As Double
Dim A5 As Double
Dim A6 As Double
Dim A7 As Double
Dim A9 As Double
Dim B As Double
Dim B1 As Double
Dim B2 As Double
Dim B3 As Double
Dim B4 As Double
Dim B5 As Double
Dim B6 As Double
Dim B7 As Double
Dim F As Double
F1= GETOEMDRO(1111) ' leggi F di Spostamento
F2= GETOEMDRO(1014) ' leggi F di Avvicinamento
F3= GETOEMDRO(1003) ' leggi F di Accosto
F4= GETOEMDRO(1000) ' leggi DIAMETRO PROBE

   Speak ("centro asse x pieno") 'Avviso Vocale
   Begin Dialog ButtonSample 280,270,100,30,"START SCANSIONE"
   OKButton 10,8,40,14
   CancelButton 50,8,40,14
   End Dialog
   Dim Dlg1 As ButtonSample
   Button = Dialog (Dlg1)
   If Button = 0 Then
   MsgBox "SCANSIONE CANCELLATA!"
   Speak ("scansione cancellata") 'Avviso Vocale
   Exit Sub
   End If
   Sleep (500) ' pausa di 2 secondi
   SetOEMDRO(1181,0)   
   Speak ("dro azzerati") 'Avviso Vocale
   Sleep (500) ' pausa di 2 secondi
Speak ("inserire lunghezza asse x") 'Avviso Vocale
A=InputBox("INSERIRE LA LUNGHEZZA IN Y")
   Speak ("confermare centro asse x pieno") 'Avviso Vocal 
   Tasto = MsgBox("CENTRO PIENO ASSE X" ,1+64, "CONFERMARE")
   If Tasto <> 1 Then
       Exit Sub
End If
A1=((A/2)+12)
SETDRO(0,0) ' azzera Z
code "g31z-50" & "f" & F2 'muove verso z-
While isMoving()
Sleep (100) 
  Wend
SETDRO(2,0) ' azzera Z
code "g1z3" & "f" & F1 'muove verso z+
While isMoving()
Sleep (100) 
  Wend
' TROVA CENTRO IN Y
SETDRO(0,0) 'Azzera Y
code "g1x-" & A1 & "f" & F1 'muove verso y-
While isMoving()
Sleep (100) 
  Wend
code "g1z-6" & "f" & F1 ' muove verso z-
While isMoving()
Sleep (100) 
  Wend
code "g31x200" & "F" & F2
While isMoving()
Sleep (100) 
  Wend
B1= GETOEMDRO(800) ' legge il valore di X
B2 = B1-2
code "g1x"& B2 & "f" & F2
While isMoving()
Sleep (100) 
  Wend
code "g31x200" & "f" & F3 'muove verso y+
While isMoving()
Sleep (100) 
  Wend
B3= GETOEMDRO(800) ' legge il valore di y
code "g1z4" & "f" & F1 ' alza in z
While isMoving()
Sleep (100) 
  Wend
code "g1x0" & "f" & F1 ' torna a y0
While isMoving()
Sleep (100) 
  Wend
code "g1x+" & A1 & "f" & F1 'muove verso y-
While isMoving()
Sleep (100) 
  Wend
code "g1z-6" & "f" & F1 ' muove verso z-
While isMoving()
Wend
code "g31x-200" & "F" & F2
While isMoving()
Sleep (100) 
  Wend
B4= GETOEMDRO(800) ' legge il valore di X
B5 = B4+2
code "g1x"& B5 & "f" & F2
While isMoving()
Sleep (100) 
  Wend
code "g31x-200" & "f" & F3 'muove verso y+
While isMoving()
Sleep (100) 
  Wend
B6= GETOEMDRO(800) ' legge il valore di y
code "g1z4" & "f" & F1 ' alza in z
B7= ((B3+B6)/2) ' trova la metà di Y

code "g1 x" & B7 & "f" & F1 ' va alla metà in x
While isMoving()
Sleep (100) 
  Wend
SETDRO(0,0) 'Azzera x
While isMoving()
Sleep (100) 
  Wend
Call SetUserDro (1181, B6+B6 -F4 )
E3= GetUserLED (1011)
If E3 = 0 Then
Speak ("centro asse x pieno completato") 'Avviso Vocale
SETDRO(1,0) 'Azzera Y
SetDRO(0,0) 'Azzera X
Else
G= GETOEMDRO(1049) ' leggi offset X
G1= GETOEMDRO(1050) ' leggi offset Y
G2= GETOEMDRO(800) ' leggi coord X
G3= GETOEMDRO(801) ' leggi coord Y
G4= (G2)+(G) ' nuova coordonata in X
G5= (G3)+ (G1) ' nuova coordonata in Y
Code "G1 x" & G5 & "F500" 
While isMoving()
Sleep (100) 
  Wend
SETDRO(0,0) 'Azzera x

End If
End Sub

Offline TPS

*
  •  2,505 2,505
    • View Profile
Re: macro correction
« Reply #1 on: September 15, 2022, 06:00:20 AM »
Code: [Select]
' CENTRO ASSE X INTERNO ESTERNO
Sub Main
Dim A As Double
Dim A1 As Double
Dim A2 As Double
Dim A3 As Double
Dim A4 As Double
Dim A5 As Double
Dim A6 As Double
Dim A7 As Double
Dim A9 As Double
Dim B As Double
Dim B1 As Double
Dim B2 As Double
Dim B3 As Double
Dim B4 As Double
Dim B5 As Double
Dim B6 As Double
Dim B7 As Double
Dim F As Double

Speak (" CENTRO ASSE x ") 'Avviso Vocale
Begin Dialog SelectCentering 240,80,140,225,"CENTRO ASSE X"
Picture 5, 65, 130, 130, "c:\mach3\addons\centri_scan_sondaggi\bitmaps\CENTRO ASSE X.BMP"
OKButton 15,203,50,14
CancelButton 70,203,50,14
GroupBox 5,10,130,50,"CENTRO ASSE X",.GroupBox1
OptionGroup .OptionGroup1
OptionButton 10,24,120,8,"-A-  CENTRO ASSE X INTERNO",.OptionButton1
OptionButton 10,38,120,8,"-B-  CENTRO ASSE X ESTERNO",.OptionButton2
End Dialog
Dim Dlg1 As SelectCentering
Button = Dialog (Dlg1)
 
If Button = 0 Then Exit Sub

Selected  = Dlg1.OptionGroup1

'centro asse x INTERNO @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
If Selected = 0 Then
Speak ("centro  interno ASSE x") 'Avviso Vocale

F1= GETOEMDRO(1111) ' leggi F di Spostamento
F2= GETOEMDRO(1014) ' leggi F di Avvicinamento
F3= GETOEMDRO(1003) ' leggi F di Accosto
F4= GETOEMDRO(1000) ' leggi diametro probe
   
Begin Dialog ButtonSample 280,270,100,30,"START SCANSIONE"
OKButton 10,8,40,14
CancelButton 50,8,40,14
End Dialog
Dim Dlg2 As ButtonSample
Button = Dialog (Dlg2)
   
If Button = 0 Then
MsgBox "SCANSIONE CANCELLATA!"
Speak ("scansione cancellata") 'Avviso Vocale
Exit Sub
End If

SetOEMDRO(1181,0)
Speak ("dro azzerati")
Sleep (500) ' pausa di 2 secondi
' TROVA CENTRO IN X
SETDRO(0,0) 'Azzera X
SETDRO(1,0) 'Azzera Y
code "g31x200" & "f" & F2 'muove verso x+
While isMoving()
Sleep (100)
Wend
A1= GETOEMDRO(800) ' legge il valore di X
A2= A1-2
code "g1x"& A2 & "f" & F2
code "g31x200" & "f" & F3 'muove verso x+
While isMoving()
Sleep (100)
Wend
A= GETOEMDRO(800) ' legge il valore di X
code "g1x0" & "F" & F1 'torna a X0
While isMoving()
Sleep (100)
Wend
code "g31x-200" & "f" & F2 'muove verso x+
While isMoving()
Sleep (100)
Wend
B1= GETOEMDRO(800) ' legge il valore di X
B2= B1+2
code "g1x" & B2 & "f" & F2
code "g31x-200" & "f" & F3 'muove verso x+
While isMoving()
Sleep (100)
Wend
B= GETOEMDRO(800) ' legge il valore di X
C= ((A+B)/2) ' trova la metà in X
code "g1 X" & C & "f" & F1 ' va alla metà in X
While isMoving()
Sleep (100)
Wend
Call SetUserDro (1181, A1 + A + F4)
E3= GetUserLED (1011)
If E3 = 0 Then
Speak ("centro  interno completato") 'Avviso Vocale
SETDRO(1,0) 'Azzera Y
SetDRO(0,0) 'Azzera X
Else
G= GETOEMDRO(1049) ' leggi offset X
G1= GETOEMDRO(1050) ' leggi offset Y
G2= GETOEMDRO(800) ' leggi coord X
G3= GETOEMDRO(801) ' leggi coord Y
G4= (G2)+(G) ' nuova coordonata in X
G5= (G3)+ (G1) ' nuova coordonata in Y
Code "G1 X" & G4 & "Y" & G5 & "F500"
While isMoving()
Sleep (100)
Wend
SETDRO(1,0) 'Azzera Y
SetDRO(0,0) 'Azzera X
End If
End If

   
'centro asse x ESTERNO selected @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    If Selected = 1 Then
Speak ("centro  esterno ASSE x") 'Avviso Vocale     
F1= GETOEMDRO(1111) ' leggi F di Spostamento
F2= GETOEMDRO(1014) ' leggi F di Avvicinamento
F3= GETOEMDRO(1003) ' leggi F di Accosto
F4= GETOEMDRO(1000) ' leggi DIAMETRO PROBE

Speak ("centro asse x pieno") 'Avviso Vocale
Begin Dialog ButtonSample1 280,270,100,30,"START SCANSIONE"
OKButton 10,8,40,14
CancelButton 50,8,40,14
End Dialog
Dim Dlg3 As ButtonSample1
Button = Dialog (Dlg3)
If Button = 0 Then
MsgBox "SCANSIONE CANCELLATA!"
Speak ("scansione cancellata") 'Avviso Vocale
Exit Sub
End If
Sleep (500) ' pausa di 2 secondi
SetOEMDRO(1181,0)   
Speak ("dro azzerati") 'Avviso Vocale
Sleep (500) ' pausa di 2 secondi
Speak ("inserire lunghezza asse x") 'Avviso Vocale
A=InputBox("INSERIRE LA LUNGHEZZA IN Y")
Speak ("confermare centro asse x pieno") 'Avviso Vocal
Tasto = MsgBox("CENTRO PIENO ASSE X" ,1+64, "CONFERMARE")
If Tasto <> 1 Then
Exit Sub
End If
A1=((A/2)+12)
SETDRO(0,0) ' azzera Z
code "g31z-50" & "f" & F2 'muove verso z-
While isMoving()
Sleep (100)
Wend
SETDRO(2,0) ' azzera Z
code "g1z3" & "f" & F1 'muove verso z+
While isMoving()
Sleep (100)
Wend
' TROVA CENTRO IN Y
SETDRO(0,0) 'Azzera Y
code "g1x-" & A1 & "f" & F1 'muove verso y-
While isMoving()
Sleep (100)
Wend
code "g1z-6" & "f" & F1 ' muove verso z-
While isMoving()
Sleep (100)
Wend
code "g31x200" & "F" & F2
While isMoving()
Sleep (100)
Wend
B1= GETOEMDRO(800) ' legge il valore di X
B2 = B1-2
code "g1x"& B2 & "f" & F2
While isMoving()
Sleep (100)
Wend
code "g31x200" & "f" & F3 'muove verso y+
While isMoving()
Sleep (100)
Wend
B3= GETOEMDRO(800) ' legge il valore di y
code "g1z4" & "f" & F1 ' alza in z
While isMoving()
Sleep (100)
Wend
code "g1x0" & "f" & F1 ' torna a y0
While isMoving()
Sleep (100)
Wend
code "g1x+" & A1 & "f" & F1 'muove verso y-
While isMoving()
Sleep (100)
Wend
code "g1z-6" & "f" & F1 ' muove verso z-
While isMoving()
Wend
code "g31x-200" & "F" & F2
While isMoving()
Sleep (100)
Wend
B4= GETOEMDRO(800) ' legge il valore di X
B5 = B4+2
code "g1x"& B5 & "f" & F2
While isMoving()
Sleep (100)
Wend
code "g31x-200" & "f" & F3 'muove verso y+
While isMoving()
Sleep (100)
Wend
B6= GETOEMDRO(800) ' legge il valore di y
code "g1z4" & "f" & F1 ' alza in z
B7= ((B3+B6)/2) ' trova la metà di Y
code "g1 x" & B7 & "f" & F1 ' va alla metà in x
While isMoving()
Sleep (100)
Wend
SETDRO(0,0) 'Azzera x
While isMoving()
Sleep (100)
Wend
Call SetUserDro (1181, B6+B6 -F4 )
E3= GetUserLED (1011)
If E3 = 0 Then
Speak ("centro asse x pieno completato") 'Avviso Vocale
SETDRO(1,0) 'Azzera Y
SetDRO(0,0) 'Azzera X
Else
G= GETOEMDRO(1049) ' leggi offset X
G1= GETOEMDRO(1050) ' leggi offset Y
G2= GETOEMDRO(800) ' leggi coord X
G3= GETOEMDRO(801) ' leggi coord Y
G4= (G2)+(G) ' nuova coordonata in X
G5= (G3)+ (G1) ' nuova coordonata in Y
Code "G1 x" & G5 & "F500"
While isMoving()
Sleep (100)
Wend
SETDRO(0,0) 'Azzera x
End If
End If
End Sub



anything is possible, just try to do it.
if you find some mistakes, in my bad bavarian english,they are yours.
Re: macro correction
« Reply #2 on: September 15, 2022, 08:29:55 AM »
TPS the fix works perfectly, thanks for the help offered (once again !! ;)), but as already said in the programming I am very scarce.
Greetings