abracadabraPDF › Forums › PDF – Général › Calcul filetages › Répondre à : Calcul filetages

bonjour,
la page PG Beug, pourquoi aucune idée §
Tout le monde aura remarqué (lol) qu’avec cette expression régulière :
var filetageRegEx=/^(W|(BSF)|(PG)|(NPT))[ ]*(\d?["]?[ ]*(\d[/]\d+)?)[ ]*-[ ]*\w*[ ]*(\d{1,2}[.,]\d{1,3})$/;
il n’est possible d’indiquer qu’un seul chiffre pour le diamètre. pour qu’il soit possible d’en indiquer 2, il faut écrire :
var filetageRegEx=/^(W|(BSF)|(PG)|(NPT))[ ]*(\d{1,2}["]?[ ]*(\d[/]\d+)?)[ ]*-[ ]*\w*[ ]*(\d{1,2}[.,]\d{1,3})$/;
et comme je viens de m’apercevoir de la possibilité d’une décimale, l’expression régulière devient :
var filetageRegEx=/^(W|(BSF)|(PG)|(NPT))[ ]*(\d{1,2}[.]?\d?["]?[ ]*(\d[/]\d+)?)[ ]*-[ ]*\w*[ ]*(\d{1,2}[.,]\d{1,3})$/;
Dans mon fichier de retour j’ai mis en fonction une parie du script ce qui permet de ne l’écrire qu’une seule fois dans le fichier et juste d’appeler cette fonction avec le menu déroulant.
// Script de document
function filetages() {
for (var i=0; i<event.target.numItems; i++) {
if (event.changeEx==event.target.getItemAt(i,true)) break;
}
var lesValeurs=event.target.getItemAt(i,false);
//
var vis="";
var pas="";
var filetageRegEx=/^M[ ]*(\d{1,2})[ ]*-[ ]*\w*[ ]*(\d{1,2}[.,]\d{1,3})$/;
if (filetageRegEx.test(lesValeurs)) {
var visPas=lesValeurs.replace(filetageRegEx,"$1-$2".replace(/,/g,"."));
var vis=visPas.split("-")[0];
var pas=visPas.split("-")[1];
} else {
var filetageRegEx=/^(W|(BSF)|(PG)|(NPT))[ ]*(\d{1,2}[.]?\d?["]?[ ]*(\d[/]\d+)?)[ ]*-[ ]*\w*[ ]*(\d{1,2}[.,]\d{1,3})$/;
if (filetageRegEx.test(lesValeurs)) {
var visPas=lesValeurs.replace("\""," ").replace(/[ ]+/g," ").replace(filetageRegEx,"$5-$7".replace(/,/g,"."));
var laVis=visPas.split("-")[0].split(/[ ]/);
if (laVis.length==1) {
var vis=(Number(laVis[0].split("/")[0])/Number(laVis[0].split("/")[1]))*25.4;
} else {
if (laVis[1]) var vis=(Number(laVis[0])+(Number(laVis[1].split("/")[0])/Number(laVis[1].split("/")[1])))*25.4;
else var vis=Number(laVis[0])*25.4;
}
var pas=visPas.split("-")[1];
} else {
var filetageRegEx=/^UN(C|F)[ ]*(\d{1,2}["]?[ ]*(\d[/]\d+)?)[ ]*-[ ]*(\d{1,2})[ ]*-[ ]*\w*[ ]*(\d{1,2}[.,]\d{1,3})$/;
if (filetageRegEx.test(lesValeurs)) {
var visPas=lesValeurs.replace("\""," ").replace(/[ ]+/g," ").replace(filetageRegEx,"$2-$4-$5".replace(/,/g,"."));
var laVis=visPas.split("-")[0].split(/[ ]/);
if (Number(visPas.split("-")[1])>=28 && /[^"]/.test(lesValeurs) && Number(visPas.split("-")[0])<=12) {
var UN=[1.524,1.854,2.184,2.515,2.845,3.175,3.505,"-",4.166,"-",4.826,"-",5,486];
var vis=UN[Number(visPas.split("-")[0])];
} else if (laVis.length==1) {
var vis=(Number(laVis[0].split("/")[0])/Number(laVis[0].split("/")[1]))*25.4;
} else {
var vis=(Number(laVis[0])+(Number(laVis[1].split("/")[0])/Number(laVis[1].split("/")[1])))*25.4;
}
var pas=visPas.split("-")[2];
} else {
var filetageRegEx=/^G[ ]*(\d{1,2}["]?[ ]*(\d[/]\d+)?)[ ]*-[ ]*\w*[ ]*(\d{1,2}[.,]\d{1,3})$/;
if (filetageRegEx.test(lesValeurs)) {
var visPas=lesValeurs.replace("\""," ").replace(/[ ]+/g," ").replace(filetageRegEx,"$1-$3".replace(/,/g,"."));
var laVis=visPas.split("-")[0].split(/[ ]/);
var filetageGaz=[["1/16",7.723],["1/8",9.728],["1/4",13.157],["3/8",16.662],["1/2",20.955],["5/8",22.911],["3/4",26.441],["7/8",30.201],["1",33.249],["1 1/8",37.897],["1 1/4",41.91],["1 1/2",47.803],["1 3/4",53.746],["2",59.614],["2 1/4",65.71],["2 1/2",75.184],["2 3/4",81.534],["3",87.884],["3 1/2",100.33],["4",125.73],["4 1/2",125.73],["5",138.43],["5 1/2",151.13],["6",163,83]];
if (laVis.length>1 && laVis[1]) var filetage=laVis[0]+" "+laVis[1];
else var filetage=laVis[0];
for (var j=0; j<filetageGaz.length; j++) {
if (filetageGaz[j][0]==filetage) {
var vis=filetageGaz[j][1];
break;
}
}
if (j==filetageGaz.length) app.alert("Filetage incorrect",3);
else var pas=visPas.split("-")[1];
} else app.alert("Filetage incorrect",3);
}
}
}
return [vis, pas]
}
// Script de touches personnalisé
if (!event.willCommit) {
var visETpas=filetages();
try {
/*
console.println("vis : "+vis);
console.println("pas : "+pas);
this.getField("Text5").value=vis;
this.getField("Text6").value=pas;
*/
this.getField("FiltagePGR").value=visETpas[0];
this.getField("PasPGconv").value=visETpas[1];
} catch(e) {
app.alert("Filetage incorrect",3);
}
}
@+
😎