Contrôle 3D avec Mach3
2 participants
Page 1 sur 1
Contrôle 3D avec Mach3
Bonjour à tous
Je crée un autre sujet ici de façon a ne pas trop polluer le sujet sur la numérisation 3D
Il s’agit d'un projet d'écran de contrôle 3D sous Mach3
J'ai donc créé un nouvel écran avec MachScreenV1.53
Dans cette interface je vais développer la partie programmation car en français sur internet on ne trouve presque rien (a part le travail de David que je remercie au passages pour ces précieux conseils) et j’espère que cette expérience servira a ceux pour qui l'anglais donne des boutons
Tout d’abord, je vous présente 2 écrans de contrôle en images, afin que l'on puisse les détailler
L'écran "programme Run"
Dans L'écran "Prog Run" vous pourrez voir des modifications que j'avais faite progressivement en fonctions des besoins et en partant de l'interface en français de David
Comme par exemple l'ajout de boutons et leds préprogrammés dans MachScreen
En encore de visus appeler "dro"
Ici des visus permettant de voir la distance restant à parcourir (à gauche) ou encore
les décalages en G52 que j'utilise fréquemment (à droite)
Une petite Vidéo qui montre comment faire pour les manips simple sous machScreen
Dans la deuxième partie du poste je vais vous parler de créer soi même des "dro" des boutons avec de la programmation associé
L'écran "Contrôle 3D" qui pour l'instant ne comprend que la partie prise d'origines avec un palpeur 3D :
La programmation des deux boutons de palpage en X, en sachant que c'est quasiment la même chose pour le Y
Code du bouton du X en positif
Code du bouton du X en Négatif:
La vidéo de démonstration :
Ensuite le bouton de prise d'origine dans un cylindre:
La programmation du bouton:
Et la Vidéo de démonstration:
Je vous remet ici la première vidéo que j'avais fait pendant le développement
car sur la vidéo ci-dessus je montre presque que l'écran alors que dans celle-ci on voie se qui se passe sur la pièce.
Voila j'espère que cela pourra vous servir dans vos traveaux de programmation en VBScript pour Mach3
La suite du programme sera de créer une interface de mesure ainsi qu'un système de calibrage des axes par palpage.
@++ Eric
Je crée un autre sujet ici de façon a ne pas trop polluer le sujet sur la numérisation 3D
Il s’agit d'un projet d'écran de contrôle 3D sous Mach3
J'ai donc créé un nouvel écran avec MachScreenV1.53
Dans cette interface je vais développer la partie programmation car en français sur internet on ne trouve presque rien (a part le travail de David que je remercie au passages pour ces précieux conseils) et j’espère que cette expérience servira a ceux pour qui l'anglais donne des boutons
Tout d’abord, je vous présente 2 écrans de contrôle en images, afin que l'on puisse les détailler
L'écran "programme Run"
Dans L'écran "Prog Run" vous pourrez voir des modifications que j'avais faite progressivement en fonctions des besoins et en partant de l'interface en français de David
Comme par exemple l'ajout de boutons et leds préprogrammés dans MachScreen
En encore de visus appeler "dro"
Ici des visus permettant de voir la distance restant à parcourir (à gauche) ou encore
les décalages en G52 que j'utilise fréquemment (à droite)
Une petite Vidéo qui montre comment faire pour les manips simple sous machScreen
Dans la deuxième partie du poste je vais vous parler de créer soi même des "dro" des boutons avec de la programmation associé
L'écran "Contrôle 3D" qui pour l'instant ne comprend que la partie prise d'origines avec un palpeur 3D :
La programmation des deux boutons de palpage en X, en sachant que c'est quasiment la même chose pour le Y
Code du bouton du X en positif
- Code:
Sub Main
Rem palpeur OPXpl
If GetOEMLED(825)<>0 Then 'tester si contact pas déja actif
Code"(Le palpeur est déja actif)"
Else
Code "g4 p1000" 'pause
RSonde = GetUserDRO(1102) 'Rayon palpeur
Vavance_cour= GetOEMDRO(818) 'Enregistrer vitesse d'avance en cours
Vpalp=GetUserDRO (1101) 'vitesse de palpage
If Vpalp = 0 Then
Vpalp = 20
End If
Code "F"&Vpalp 'définir vitesse de palpage
'---------------------------------------------------------------------
SetUserLed(1501,0) ' Led(1500)et (L1501)
SetUserLed(1500,0)
XNew=GetOEMDRO(800)+150 'Déplacement en X+ de mm en dessus de la pos courante .
Code "G31 X"&XNew 'Lancer le palpage
While IsMoving() 'Attendre une détection
Sleep(10)
Wend
XNew= GetVar(2000) 'Lire la valeur du point de contact
Code "G0 X"&XNew 'Revenir si dépassement
While IsMoving() 'Attendre une détection
Sleep(10) 'Empècheur de tourner en rond
Wend
Call SetOEMDRO(800,-RSonde) 'Position Palpeur dans la visu X
Code "G4 P1000" 'Pause pour mise à jour affichage
Code "G0 G53 Z-1" 'Remonter à Z-1 en G53
Code"(L'axe X a été mis à Zéro)" 'Message
Code "F"&Vavance_cour 'Remettre l'avance initiale
SetUserLED(1501,1) 'Allumer la Led (L1501)
While IsMoving() 'Attendre une détection
Sleep(10)
Wend
End If
End Sub
Code du bouton du X en Négatif:
- Code:
Sub Main
Rem palpeur OPXm
If GetOEMLED(825)<>0 Then 'tester si contact pas déja actif
Code"(Le palpeur est déja actif)"
Else
Code "g4 p1000" 'pause
RSonde = GetUserDRO(1102) 'Rayon palpeur
Vavance_cour= GetOEMDRO(818) 'Enregistrer vitesse d'avance en cours
Vpalp=GetUserDRO (1101) 'vitesse de palpage
If Vpalp = 0 Then 'tester la valeur d'avance
Vpalp = 20 'si valeur=0 prendre la valeur 20
End If 'fin de test
Code "F"&Vpalp 'définir vitesse de palpage
'-----------------------------------------------------------------------------
SetUserLED(1501,0) ' Led(1500)et (1501)
SetUserLed(1500,0)
XNew=GetOEMDRO(800)-150 'Deplacement en X- 150 mm en dessous de la pos courante
Code "G31 X"&XNew 'lancer le palpage
While IsMoving() 'attendre une détection
Sleep(10)
Wend
XNew= GetVar(2000) 'lire la valeur du point de contact
Code "G0 X"&XNew 'Revenir si dépassement
While IsMoving() 'Attendre une détection
Sleep(10)
Wend
Call SetOEMDRO(800,RSonde) 'Position de la sonde dans la visu X
Code "G4 P1000" 'pause pour mise à jour affichage
Code "G0 G53 Z-1" 'Remonter en G53 à Z-1
Code"(L'axe Z a été mis à Zéro)" 'Message
Code "F"&Vavance_cour 'remettre l'avance initiale
SetUserLED(1500,1) 'Allumer la Led (L1500)
While IsMoving() 'attendre une détection
Sleep(10)
Wend
End If
End Sub
La vidéo de démonstration :
Ensuite le bouton de prise d'origine dans un cylindre:
La programmation du bouton:
- Code:
Sub Main
Rem palpeur OPXcercle
If GetOEMLED(825)<>0 Then 'tester si contact pas déja actif
Code"(Le palpeur est déja actif)"
Else
Code "g4 p250" 'pause
Rpalp = GetUserDRO(1102) ' Dro 1102 = rayon du palpeur
Vavance_cour= GetOEMDRO(818) 'vitesse d'avance en cours
Vpalp=GetUserDRO (1101) 'vitesse de palpage
If Vpalp = 0 Then
Vpalp = 20
End If
Code "F"&Vpalp 'définir vitesse de palpage
SetUserLED(1500,0) 'Raz Led
SetUserLED(1501,0)
SetUserLED(1502,0)
SetUserLED(1503,0)
'---------------------------------------------
'Raz OPX
Call SetOEMDRO(800,0)
Code "g4 p250"
'-----------------------------------------------------------------------------------------------
'Palpage en X+
'------------------------------------------------------------------------------------------------
CylDiam=GetUserDro(1103) 'Enregist. valeur du diam de l'alésage
MsgBox("Diam Alésage "&CylDiam) 'Message avec validation
AcPos=GetOEMDRO(800) 'enregist.point actuel en X (actuel position)
XpNew=GetOEMDRO(800)+CylDiam'Bouger en X+ de la variable CYDiam depuis le point actuel.
Code "G31 X"&XpNew 'lancer le palpage
While IsMoving() 'attendre une détection
Sleep(10)
Wend
Code "g4 p1000"
LgpalXp=GetVar(2000) 'Lecture de la position de palpage en X+
DistpalpXp=LgpalXp-AcPos'Distance palpage (variable de calcul)
Code "G0 X"&AcPos 'Retour position de depart
While IsMoving() ' Attendre fin du mouvement
Sleep(10)
Wend
SetUserLED(1501,1) 'Allumer la Led 1501
'--------------------------------------------------------------------------------------------
'Palpage en X-
'--------------------------------------------------------------------------------------------
XmNew=GetOEMDRO(800)-CylDiam 'distance palpage en X-
Code "G31 X"&XmNew 'lancer le palpage
While IsMoving() 'attendre une détection
Sleep(10)
Wend
Code "g4 p1000"
Lgpalpxm=GetVar(2000) 'Lecture de la position de palpageen X-
Positif=Lgpalpxm*2 'Variable de calcul pour passage en valeur positive
DistpalpXm=Lgpalpxm-Positif 'Distance palpage en variable de calcul
Code "G0 X"&AcPos 'retour pos depart
While IsMoving() ' attendre fin du mouvement
Sleep(10)
Wend
DistotX=DistpalpXp+DistpalpXm 'calcul de la distance total en X+ et X-
PosCentrX=DistotX/2 'Calcul de la position central en X
PPcx=LgpalXp-PosCentrX 'calcul du déplacement ver l'OP
Code "G0 X"&PPcx 'Déplacement sur l'Origine Programme OP en Y
While IsMoving() ' attendre fin du mouvement
Sleep(100)
Wend
Code "g4 p250"
Call SetOEMDRO(800,0) 'remise à 0 de la Dro en X
Code "g4 p250"
While IsMoving() ' attendre fin du mouvement
Sleep(100)
Wend
Code"(L'axe X a été mis à Zéro)"
Code "g4 p1000"
SetUserLED(1500,1)
'----------------------------------------------------------------
'Palpage en Y+
'----------------------------------------------------------------
While IsMoving() ' attendre fin du mouvement
Sleep(100)
Wend
'Raz OPY
Call SetOEMDRO(801,0)
Code "g4 p250"
While IsMoving() ' attendre fin du mouvement
Sleep(100)
Wend
'-----------------------------------------------------
'Palpage en Y+
CylDiam=GetUserDro(1103)'Enregist. valeur du diam de l'alésage
AcPosY=GetOEMDRO(801) 'enregist.point actuel en Y (actuel position)
YpNew=GetOEMDRO(801)+CylDiam'Bouger en Y+ de la variable CYDiam depuis le point actuel.
Code "G31 Y"&YpNew 'lancer le palpage
While IsMoving() 'attendre une détection
Sleep(10)
Wend
Code "g4 p250"
LgpalYp=GetVar(2001) 'Lecture de la position de palpage en Y+
DistpalpYp=LgpalYp-AcPosY 'Distance palpage (variable de calcul)
Code "G0 Y"&AcPosY 'retour pos depart en Y
While IsMoving() ' Attendre fin du mouvement
Sleep(10)
Wend
SetUserLED(1503,1) 'Allumer la Led 1503
'--------------------------------------------------------------------------------------
'Palpage en Y-
'--------------------------------------------------------------------------------------
YmNew=GetOEMDRO(801)-CylDiam 'Enregist. valeur du diam de l'alésage
Code "G31 Y"&YmNew 'lancer le palpage
While IsMoving() 'attendre une détection
Sleep(10)
Wend
Code "g4 p250"
LgpalpYm=GetVar(2001) 'Lecture de la position de palpage en Y-
'Code "(LgpalpYm position de palpage en x-)"
'MsgBox(LgpalpYm)
PositifY=LgpalpYm*2 'Variable de calcul pour passage en valeur positive
DistpalpYm=LgpalpYm-PositifY 'Distance palpage en variable de calcul
Code "G0 Y"&AcPosY 'retour point depart en Y
While IsMoving() ' attendre fin du mouvement
Sleep(10)
Wend
DistotY=DistpalpYp+DistpalpYm 'calcul de la distance total de palpage Y+et Y-
PosCentrY=DistotY/2 'Calcul de la position central en Y
PPcY=LgpalYp-PosCentrY 'calcul du déplacement ver l'OP
Code "G0 G53 Z-1"
Code "G0 Y"&PPcY 'Déplacement sur l'Origine Programme OP en Y
While IsMoving() ' attendre fin du mouvement
Sleep(100)
Wend
Code "g4 p250"
Call SetOEMDRO(801,0) 'Remise à 0 de la Dro Y
While IsMoving() ' attendre fin du mouvement
Sleep(100)
Wend
Code "g4 p250"
SetUserLED(1502,1) 'Allumer la Led 1502
Code"(L'axe Y a été mis à Zéro)"
Code "g4 p250"
Code "M0"
Code "F"&Vavance_cour 'remettre l'avance initiale
End If
End Sub
Et la Vidéo de démonstration:
Je vous remet ici la première vidéo que j'avais fait pendant le développement
car sur la vidéo ci-dessus je montre presque que l'écran alors que dans celle-ci on voie se qui se passe sur la pièce.
Voila j'espère que cela pourra vous servir dans vos traveaux de programmation en VBScript pour Mach3
La suite du programme sera de créer une interface de mesure ainsi qu'un système de calibrage des axes par palpage.
@++ Eric
_________________
Cordialement .::Zarkann::. .::Administrateur et Fondateur MB::.
Peux-tu partager ?
Bonjour Zarkann
Je suis nouveau dans le domaine de la programmation sur Mach3, ton sujet et à 100% ce que je cherche à faire mais n'étant pas très performant dans le codage aurais tu la gentillesse de partager ce développement soit ici soit sur mon email
Je t'en serais vraiment très reconnaissant et je pense que je pourrais ainsi commencer à pouvoir faire des projets comme celui-ci mais plus simple évidement !
brossden
Je suis nouveau dans le domaine de la programmation sur Mach3, ton sujet et à 100% ce que je cherche à faire mais n'étant pas très performant dans le codage aurais tu la gentillesse de partager ce développement soit ici soit sur mon email
Je t'en serais vraiment très reconnaissant et je pense que je pourrais ainsi commencer à pouvoir faire des projets comme celui-ci mais plus simple évidement !
brossden
Brossden- petit nouveau
- Messages : 1
Points : 1
Date d'inscription : 02/01/2016
Age : 70
Localisation : Irigny (69540)
Sujets similaires
» soucis avec mach3 ou mon PC ?
» Peut-on faire ça avec Mach3 ( ou avec Cambam ?? )
» Débuter avec le 4 ème axe ! avec Mach3
» Problème MPG avec Mach3
» Bizzareries mach3 avec G92
» Peut-on faire ça avec Mach3 ( ou avec Cambam ?? )
» Débuter avec le 4 ème axe ! avec Mach3
» Problème MPG avec Mach3
» Bizzareries mach3 avec G92
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum