Pb scripts "auto tool setting" pour Mach3
2 participants
Page 1 sur 1
Pb scripts "auto tool setting" pour Mach3
Bonjour, j'ai installé ces scripts "automated tool setting"sous Mach3 (voir pièce jointe). Je trouve que c'est très pratique mais j'ai un problème sur l'un d'eux (CENTER_INTERNAL_SCRIPT_REV13.txt): tout fonctionne jusqu'au moment de l'affichage du diamètre . j'ai une erreur sur la ligne 145 type mismatch.
VarSpanDia = Format((CDbl(VarSpanX) + CDbl(VarSpanY))/2,"##0.000") 'CALCULATE MM DIAMETER
Si je mets un rem devant cette ligne c'est la suivante qui m'envoie le même message. si je mets un rem devant cette ligne aussi le programme fonctionne jusqu'au bout mais pas d'affichage du diamètre. J'ai beau chercher quelles sont les données qui ne sont pas du bon type mais je ne vois pas... Si quelqu'un caler en vbscript peut m'aider...
Dans les 4 scripts pour le palpage en X et Y même en initialisant la variable VarProbeDia à une valeur entière par exemple :6 le programme au démarrage demande le diamètre de l'outil et affiche la variable sous la forme 6,000. Le programme ne fonctionne pas si il y a une virgule dans ce nombre! Donc obligé d'effacer la virgule et ce qui suit. Je pense qu'il s'agit d'un problème avec les paramètres régionaux mais je ne sais pas le résoudre...Encore une fois j'ai besoin d'aide...
Merci d'avoir pris la peine de me lire et j'espère avoir de vos nouvelles.
Bonne journée
VarSpanDia = Format((CDbl(VarSpanX) + CDbl(VarSpanY))/2,"##0.000") 'CALCULATE MM DIAMETER
Si je mets un rem devant cette ligne c'est la suivante qui m'envoie le même message. si je mets un rem devant cette ligne aussi le programme fonctionne jusqu'au bout mais pas d'affichage du diamètre. J'ai beau chercher quelles sont les données qui ne sont pas du bon type mais je ne vois pas... Si quelqu'un caler en vbscript peut m'aider...
Dans les 4 scripts pour le palpage en X et Y même en initialisant la variable VarProbeDia à une valeur entière par exemple :6 le programme au démarrage demande le diamètre de l'outil et affiche la variable sous la forme 6,000. Le programme ne fonctionne pas si il y a une virgule dans ce nombre! Donc obligé d'effacer la virgule et ce qui suit. Je pense qu'il s'agit d'un problème avec les paramètres régionaux mais je ne sais pas le résoudre...Encore une fois j'ai besoin d'aide...
Merci d'avoir pris la peine de me lire et j'espère avoir de vos nouvelles.
Bonne journée
- Fichiers joints
leotti- je prends du galon
- Messages : 86
Points : 210
Date d'inscription : 14/02/2012
Age : 63
Localisation : essonne
Pb presque résolu
re bonjour, désolé de vous avoir dérangé mais en fait la réponse était dans la question.
Aide toi le Ciel t'aidera .Enfin, un certain nombre de tutos sur le Vbscript et Mach3 t'aideront.
Effectivement il s'agissait bien des paramètres régionaux et en modifiant le séparateur décimal de windows en point au lieu de la virgule ça fonctionne. Scripts écrits par un américain! Par contre si quelqu'un sait comment le modifier pour qu'il marche avec les paramètres Français, je suis preneur ou bien un petit bout de code pour changer les paramètres juste pour exécuter le script, ça serait aussi bien.
Merci d'avance et encore mes excuses si vous avez déjà commencé à chercher.
Bonne journée
Aide toi le Ciel t'aidera .Enfin, un certain nombre de tutos sur le Vbscript et Mach3 t'aideront.
Effectivement il s'agissait bien des paramètres régionaux et en modifiant le séparateur décimal de windows en point au lieu de la virgule ça fonctionne. Scripts écrits par un américain! Par contre si quelqu'un sait comment le modifier pour qu'il marche avec les paramètres Français, je suis preneur ou bien un petit bout de code pour changer les paramètres juste pour exécuter le script, ça serait aussi bien.
Merci d'avance et encore mes excuses si vous avez déjà commencé à chercher.
Bonne journée
leotti- je prends du galon
- Messages : 86
Points : 210
Date d'inscription : 14/02/2012
Age : 63
Localisation : essonne
Re: Pb scripts "auto tool setting" pour Mach3
Salut,
Oui, la fonction Format() qui sert à formater un nombre tient compte du réglage régional de Windows ... j'ai eu le même problème avec un code qui écrit des fichiers STL ; je me retrouvais avec des virgules dans le fichier, ce qui n'est pas accepté par le format STL ... L'américain n'y est pour rien !!
Pour ma part, j'avais crée ma propre fonction de formatage de nombres pour contourner ce problème ... mais c'était en Visual Basic, j'avais utilisé la fonctione "replace" qui permet de scanner une chaine de caractère et de remplacer certains caractères par d'autres (donc la , par le .) ... mais cette fonctione n'existe pas dans le Basic Cypress de Mach3 .. donc il faut te faire ta propre fonction replace ...
Je regarde si je peut te sortir un code qui marche sous Cypress ...
++
David
Oui, la fonction Format() qui sert à formater un nombre tient compte du réglage régional de Windows ... j'ai eu le même problème avec un code qui écrit des fichiers STL ; je me retrouvais avec des virgules dans le fichier, ce qui n'est pas accepté par le format STL ... L'américain n'y est pour rien !!
Pour ma part, j'avais crée ma propre fonction de formatage de nombres pour contourner ce problème ... mais c'était en Visual Basic, j'avais utilisé la fonctione "replace" qui permet de scanner une chaine de caractère et de remplacer certains caractères par d'autres (donc la , par le .) ... mais cette fonctione n'existe pas dans le Basic Cypress de Mach3 .. donc il faut te faire ta propre fonction replace ...
Je regarde si je peut te sortir un code qui marche sous Cypress ...
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: Pb scripts "auto tool setting" pour Mach3
Re
Voila une fonction qui permet de scanner le texte et de remplacer la , par un .
Donc, ajoute la fonction à la fin de ton code (c'est comme une sub, sauf qu'une fonction retourne une valeur)
Et dans le corps du programme, après la ligne
VarSpanDia = Format((CDbl(VarSpanX) + CDbl(VarSpanY))/2,"##0.000") 'CALCULATE MM DIAMETER
tu ajoute une ligne qui traitera VarSpanDia pour remplacer la virgule, donc, appel de la fonction en lui passant VarSpanDia ... et retour du résultat qui sera de nouveau stocké dans VarSpanDia.
VarSpanDia = RemComma(VarSpanDia)
++
David
Voila une fonction qui permet de scanner le texte et de remplacer la , par un .
- Code:
montext = "123,17" 'le texte à traiter
montext = RemComma(montext) 'appel de la fonction utilisateur RemComma()
MsgBox(montext) 'affichage du résultat
'....
'....
Function RemComma(tx) As String
ret = "" 'la variable texte modifiée qui sera retournée par la fonction
For n = 1 To Len(tx)-1 'scan du texte passé à la fonction caractère par caractère
ct = Mid(tx,n,1) 'retourne le caractère à la position n
If ct ="," Then ct ="." 'si le ctr est une virgule, le remplacer par un point
ret = ret & ct 'ajouter le caractère à la suite de la nouvelle variable texte
Next n ' caractère suivant
RemComma = ret 'retourner la variable modifiée
End Function
Donc, ajoute la fonction à la fin de ton code (c'est comme une sub, sauf qu'une fonction retourne une valeur)
Et dans le corps du programme, après la ligne
VarSpanDia = Format((CDbl(VarSpanX) + CDbl(VarSpanY))/2,"##0.000") 'CALCULATE MM DIAMETER
tu ajoute une ligne qui traitera VarSpanDia pour remplacer la virgule, donc, appel de la fonction en lui passant VarSpanDia ... et retour du résultat qui sera de nouveau stocké dans VarSpanDia.
VarSpanDia = RemComma(VarSpanDia)
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: Pb scripts "auto tool setting" pour Mach3
Merci d'avoir pris le temps de me répondre. Mais le problème n'est pas le format d'écriture de la variable Varspandia mais les variables varspanX et varspanY qui sont retournées signées avec une virgule. Je pense que lorsque la commande Format s'exécute elle cherche des types numériques doubles CDbl et dans la cellule il y a un nombre avec une virgule qui pour elle doit être reconnu comme un type String d'ou le type mismatch.
Ce n'est pas la seule ligne ou cela se produit, donc l'idéal serait de modifier le paramètre régional de windows de "," en "." en dynamique le temps de l'exécution du script. J'ai trouvé un code mais ça ne marche pas avec le vbscript de Mach3.
Je te le mets ci dessous:
Option Explicit
Private Declare Function GetLocaleInfoA Lib "kernel32" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Declare Function SetLocaleInfoA Lib "kernel32" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
Public Sub ForceSystemDecimalToPeriod()
' We MUST use the ANSI API version so it's an ANSI character that's used for the actual decimal character.
Const LOCALE_SDECIMAL As Long = &HE&
Const LOCALE_SGROUPING As Long = &H10&
Const Eng_LCID As Long = 1033&
Dim s As String
'
s = String$(GetLocaleInfoA(Eng_LCID, LOCALE_SDECIMAL, vbNullString, 0&), 0)
GetLocaleInfoA Eng_LCID, LOCALE_SDECIMAL, s, Len(s)
If RTrimNull(s) <> "." Then
SetLocaleInfoA Eng_LCID, LOCALE_SDECIMAL, "."
SetLocaleInfoA Eng_LCID, LOCALE_SGROUPING, ","
End If
End Sub
Public Function RTrimNull(s As String) As String
RTrimNull = s
Do
If Right$(RTrimNull, 1&) <> vbNullChar Then Exit Do
RTrimNull = Left$(RTrimNull, Len(RTrimNull) - 1&)
Loop
End Function
Si ça te donne une idée...
Bonne soirée
Ce n'est pas la seule ligne ou cela se produit, donc l'idéal serait de modifier le paramètre régional de windows de "," en "." en dynamique le temps de l'exécution du script. J'ai trouvé un code mais ça ne marche pas avec le vbscript de Mach3.
Je te le mets ci dessous:
Option Explicit
Private Declare Function GetLocaleInfoA Lib "kernel32" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Declare Function SetLocaleInfoA Lib "kernel32" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
Public Sub ForceSystemDecimalToPeriod()
' We MUST use the ANSI API version so it's an ANSI character that's used for the actual decimal character.
Const LOCALE_SDECIMAL As Long = &HE&
Const LOCALE_SGROUPING As Long = &H10&
Const Eng_LCID As Long = 1033&
Dim s As String
'
s = String$(GetLocaleInfoA(Eng_LCID, LOCALE_SDECIMAL, vbNullString, 0&), 0)
GetLocaleInfoA Eng_LCID, LOCALE_SDECIMAL, s, Len(s)
If RTrimNull(s) <> "." Then
SetLocaleInfoA Eng_LCID, LOCALE_SDECIMAL, "."
SetLocaleInfoA Eng_LCID, LOCALE_SGROUPING, ","
End If
End Sub
Public Function RTrimNull(s As String) As String
RTrimNull = s
Do
If Right$(RTrimNull, 1&) <> vbNullChar Then Exit Do
RTrimNull = Left$(RTrimNull, Len(RTrimNull) - 1&)
Loop
End Function
Si ça te donne une idée...
Bonne soirée
leotti- je prends du galon
- Messages : 86
Points : 210
Date d'inscription : 14/02/2012
Age : 63
Localisation : essonne
Re: Pb scripts "auto tool setting" pour Mach3
Merci d'avoir pris le temps de me répondre. Mais le problème n'est pas le format d'écriture de la variable Varspandia mais les variables varspanX et varspanY qui sont retournées signées avec une virgule. Je pense que lorsque la commande Format s'exécute elle cherche des types numériques doubles CDbl et dans la cellule il y a un nombre avec une virgule qui pour elle doit être reconnu comme un type String d'ou le type mismatch.
Par "cellule", tu veux parler de la DRO du screenset ?
J'ai toujours utilisé Windows avec le point décimal, donc je ne sais pas trop comment réagit Mach3 avec les virgules.
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: Pb scripts "auto tool setting" pour Mach3
Mais le problème n'est pas le format d'écriture de la variable Varspandia mais les variables varspanX et varspanY qui sont retournées signées avec une virgule.
Ok, il doit falloir faire la modif plus loin, dans Sub RunXCenter, c'est la que la variable est définie.
...
...
Select Case GetParam("Units") 'SET INFORMATION FOR STATUS LINE DISPLAY
Case 0 'MM
VarSpanX = Format(VarProbeDia+(VarGageThick*2)+(VarXPosPosition-VarXNegPosition),"##0.000") 'CALC SPAN
VarSpanX = RemComma(VarSpanX )
Case 1 'INCH
VarSpanX = Format(VarProbeDia+(VarGageThick*2)+(VarXPosPosition-VarXNegPosition),"##0.0000") 'CALC SPAN
End Select
même chose pour le Y dans Sub RunYCenter
en gros il faut que tu traites toutes les variables qui utilisent la commande Format()
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: Pb scripts "auto tool setting" pour Mach3
une version modifiée qui intègre ma fonction et traite tous les Format()
dis moi si ça marche ...
++
David
dis moi si ça marche ...
++
David
- Fichiers joints
_________________
Traduction Française de CamBam et de sa documentation.
Re: Pb scripts "auto tool setting" pour Mach3
Merci David, ça marche mais le problème c'est qu'il faut rajouter une ligne pour chaque variable au risque d'en oublier et je ne te cache pas que je trouve ça assez fastidieux, surtout que j'ai plusieurs scripts écrits par le même concepteur. L'idéal serait donc d'avoir une fonction qui change la virgule en point directement dans windows. En attaquant la base de registres, peut-être?
Je te mets l'adresse du site ou j'ai trouvé ces scripts qui me conviennent parfaitement.
https://www.youtube.com/watch?v=MQ9XT30s-PU, tu pourras si tu le veux juger par toi-même.
En plus, je crois que ça pourrait en intéresser certains sur le forum, non?
Je te remercie encore pour ton aide et la rapidité à laquelle tu réponds aux questions.
Bonne journée
A te lire
Léo
Je te mets l'adresse du site ou j'ai trouvé ces scripts qui me conviennent parfaitement.
https://www.youtube.com/watch?v=MQ9XT30s-PU, tu pourras si tu le veux juger par toi-même.
En plus, je crois que ça pourrait en intéresser certains sur le forum, non?
Je te remercie encore pour ton aide et la rapidité à laquelle tu réponds aux questions.
Bonne journée
A te lire
Léo
leotti- je prends du galon
- Messages : 86
Points : 210
Date d'inscription : 14/02/2012
Age : 63
Localisation : essonne
Re: Pb scripts "auto tool setting" pour Mach3
C'est un peu étrange la manière dont il s'y prend, si la valeur doit être affichée dans une DRO, il n'y a pas besoin de formater la valeur, il suffit de formater la DRO elle même, on peut définir le nb de décimales directement et donc se contenter de travailler avec des nombres, sans en passer par un formatage (et donc une conversion en texte). Les DRO peuvent être éditées avec MachScreen.
++
David
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: Pb scripts "auto tool setting" pour Mach3
Bonsoir, les valeurs ne sont pas affichées dans les DRO mais dans la barre de status comme messages.
leotti- je prends du galon
- Messages : 86
Points : 210
Date d'inscription : 14/02/2012
Age : 63
Localisation : essonne
Sujets similaires
» Sonde sous MACH3 – « Auto Tool Zero Setter » - « XYZ Probe »
» Auto Tool Zéro
» recherche scripts pour formes obloniques droits et en cercle
» tool setter (palpeur d' outil pour cnc - expérimental - )
» Avance auto pour fraiseuse HBM32
» Auto Tool Zéro
» recherche scripts pour formes obloniques droits et en cercle
» tool setter (palpeur d' outil pour cnc - expérimental - )
» Avance auto pour fraiseuse HBM32
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum