Donnez vie à vos documents numériques !
 

Script qui fonctionne de façon isolée

abracadabraPDF Forums PDF – Général Script qui fonctionne de façon isolée

  • Créateur
    Sujet
  • #74736
    michel c.
    Participant

    Bonjour, en dehors du boulot je fais un peu de menuiserie (agencement).

    Je suis en train de concocter un script qui me permet de dimensionner les différentes pièces qui composent plusieurs tiroirs.

    J’aimerais exécuter tous les calculs via le bouton Calculer qui appelle le script Calc mais les lignes de code permettant d’obtenir les dimensions des façades (lignes 141 à 161) ne fonctionnent pas et ceci sans aucune erreur à la console

    Lorsque j’exécute ces mêmes lignes via un autre bouton (facades) qui appelle le script du même nom cela fonctionne…

    Je n’y comprend rien…

    Attachments:
    You must be logged in to view attached files.
Affichage de 17 réponses de 1 à 17 (sur un total de 17)
  • Auteur
    Réponses
  • #74738
    bebarth
    Maître des clés

    bonjour,
    Après une première lecture rapide je remarque qu’il y a 2 fois la fonction “Calc()” en lignes 1 et 71.
    Je n’ai pas vérifié si elles sont exactement identiques, mais peut-être que la seconde qui annule la première ne permet pas l’exécution de certains calculs…

    @+
    😎

    #74739
    michel c.
    Participant

    Merci beaucoup, l’erreur venait de là. Erreur de copier/coller qui m’avait échappée

    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    #74741
    michel c.
    Participant

    Dans ce même document, j’aimerais que pour le cas ou les caissons n’ont aucune dimension, aucun calcul ne soit fait.

    pour éviter d’avoir des inscriptions du style ×× ou 0××

    Merci

    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
    #74743
    Merlin
    Maître des clés

    Bonjour

     

    Il te faut emballer les calculs dans une condition qui vérifie si les champs à calculer ne sont pas vides. Exemple :

    //calculs cotés caisson
    if (this.getField(“A.3.”+i).value != “” &&this.getField(“A.2.”+i).value != “” && this.getField(“A.7.”+i).value != “”) {
    this.getField(“Caiss.1.”+i).value =
    this.getField(“A.3.”+i).value + “×”+
    this.getField(“A.2.”+i).value + “×”+
    this.getField(“A.7.”+i).value;
    }

    #74748
    bebarth
    Maître des clés

    bonjour,
    Tu pourrais placer en script de format de tous les champs “Caiss” et “Tiroir” :
    if (/(××)|(0×)|(NaN)/.test(event.value)) event.value="–";

    Pour éviter de modifier tous ces champs manuellement, tu peux lancer ce script :
    for (var i=0; i<this.numFields; i++) {
    if (/^(Tiroir)|(Caiss)[.]\d[.]\d$/.test(this.getNthFieldName(i))) {
    this.getField(this.getNthFieldName(i)).setAction("Format","if (/(××)|(0×)|(NaN)/.test(event.value)) event.value=\"–\";");
    }
    }

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    #74749
    michel c.
    Participant

    Merci, je viens de tout modifier, ça fonctionne. J’ai du mettre un else à la suite de chaque condition pour cela.

    J’ai une autre question mais qui est un peu plus ardue… :

    j’aimerais que les résultats soient synthétisés dans un tableau (page 3) pour les dimensions des différentes pièces des tiroirs.

    Les dimensions inscrites dans les champs Tiroir.a.b sont sous la forme : dimension1×dimension2×épaisseur×quantité

    J’aimerais que dans mon tableau de synthèse, les différentes épaisseurs pour chacune des pièces des tiroirs apparaissent par ordre croissant dans les champs Synthese.0.n et que pour chaque épaisseur soient inscrits dimension1×dimension2×quantité.

    Dans l’idéal j’aimerais que les dimensions 1 et 2 permutent si la dimension2 est supérieure à la dimension1.

    L’autre difficulté est d’ajouter les différentes quantités si plusieurs dimensions sont identiques.

    Je l’ai fait manuellement pour les pièces d’épaisseur 5mm

    Pour expliquer un peu la raison de ce besoin c’est que je dois saisir les dimensions de chaque pièce dans un logiciel de calepinage pour optimiser mes découpes dans un panneau de dimension donné.

    Ce logiciel exige que la 1ère dimension saisie soit la plus grande. De plus la saisie de plusieurs pièces identiques est possible car pour chaque pièce on peut saisir la quantité voulue.

    Merci

    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
    #74755
    Merlin
    Maître des clés

    Je ne sais pas ce qu’est un logiciel de calepinage mais j’image qu’en entrée il prend un fichier de type tableur (CSV ou Excel).

    Donc cette manip me paraitrait plus simple à effectuer dans un tableur, après avoir exporté les données.

    #74756
    michel c.
    Participant

    Un logiciel de calepinage est un programme dans lequel tu indique les dimensions de tes panneaux de bois (des planches dont tu disposes) et dans lequel tu indiques ensuite les dimensions et quantité des pièces que tu désires.

    Tu spécifie si le sens du fil (des fibres de bois) est vertical, horizontal ou sans importance, l’épaisseur de ta lame de scie (trait de coupe) ainsi que la marge voulue au bord du panneau (les bords ont parfois des défauts).

    Le logiciel va ensuite arranger tes différentes pièces sur tes panneaux bruts afin de minimiser les pertes et pour avoir comme chutes des morceaux de dimensions intéressantes. (voir document joint)

    Il y a effectivement un bouton pour importer les fiches de débit. Je vais me pencher dessus pour tester la forme voulue.

    Par contre je ne sais pas du tout comment m’y prendre pour générer un csv à partir de mon formulaire

    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
    #74761
    Merlin
    Maître des clés
    1. Je n’imaginais même pas que de tels logiciels existaient, impressionnant !
    2. Avec Acrobat c’est facile mais avec PDF XChange je ne sais pas non plus…
      Ce qui devrait fonctionner avec n’importe quel logiciel c’est d’aplatir la page et de copier-coller les données dans un tableur.
    #74762
    michel c.
    Participant

    J’arrive à exporter avec PdfX-Change, j’ai préparé le tableau qu’il faut, il me reste le plus difficile : après avoir choisi l’essence dans la liste déroulante, j’aimerais qu’en cliquant sur générer le débit chaque pièce de cette essence puisse s’inscrire dans le tableau.

    Dans la colonne 1 sont spécifiées des références a ; b ; c …..aa ; ab….

    Dans la colonne 2 : Piece 1 ; Piece2….

    Colonne 3 la quantité (pour les pièces dont les longueurs et largeurs sont identiques)

    Colonne 4 : La plus grande des 2 premières données des champs Tiroir.a.b

    Colonne 5 : La plus petite des 2 premières données des champs Tiroir.a.b

    Colonne 6 : L’épaisseur : l’avant dernière donnée des champs Tiroir.a.b

    Colonne 7 : L’essence sélectionnée

    Colonne 8 : Le sens du fil (je l’inscrirais manuellement)

    Je vais chercher mais je crains que cela dépasse un peu mes compétences…

    Attachments:
    You must be logged in to view attached files.
    #74764
    Merlin
    Maître des clés

    En tout cas ça dépasse les miennes.

    Moi en matière d’essence j’utilise surtout du SP98 😉

    #74765
    bebarth
    Maître des clés

    bonsoir,
    Je ne comprends pas bien ce qu’il faut indiquer dans les colonnes 1 et 2…
    Ce qui va compliquer c’est qu’il n’y a pas de logique de numérotation pour les champs “essence” et “Ep” ! Il aurait été plus simple qu’il y en ait une en fonction de l’indice des champs…

    @+
    😎

    #74766
    michel c.
    Participant

    Je pensais à un script de ce type :

    function debit() {

    var ess = this.getField("ChoixEss").value;
    var essenceFond = this.getField("essence.17").value;
    var essenceCote = this.getField("essence.19").value;
    var essenceAvant = this.getField("essence.20").value;
    var essenceArrier = this.getField("essence.21").value;
    var essenceFacades = this.getField("essence.24").value;
    var numPiece = 0;

    if (ChoixEss = essenceFond) {

    if (this.getField("Tiroir.1.1").value != "") {
    var D1=this.getField("Tiroir.1.1").value.split("×");
    var P1 = (D1[0]);
    var P2 = (D1[1]);
    var P3 = (D1[2]);
    var P4 = (D1[3]);
    this.getField("Reference.1").value = "a";
    this.getField("Designation.1").value = "Fond Caisson1";
    this.getField("Nombre.1").value = P4;
    this.getField("Longueur.1").value = P1;
    this.getField("Largeur.1").value = P2;
    this.getField("Epaisseur.1").value = P3;
    this.getField("Essence.1").value = ChoixEss;
    }

    if (this.getField("Tiroir.1.2").value != "") {
    var D1=this.getField("Tiroir.1.2").value.split("×");
    var P1 = (D1[0]);
    var P2 = (D1[1]);
    var P3 = (D1[2]);
    var P4 = (D1[3]);
    this.getField("Reference.2").value = "b";
    this.getField("Designation.2").value = "Fond Caisson2";
    this.getField("Nombre.2").value = P4;
    this.getField("Longueur.2").value = P1;
    this.getField("Largeur.2").value = P2;
    this.getField("Epaisseur.2").value = P3;
    this.getField("Essence.2").value = ChoixEss;
    }

    }

    }

    Il faudrait juste que j’apporte une modif pour que dans le champ Longueur.a soit inscrite la plus grande valeur entre P1 et P2 et que dans le champ Largeur.a soit inscrite la plus petite valeur entre P1 et P2

    Je l’ai testé pour les 2 premières colonnes de la 1ère ligne des tiroirs. Compléter ce script pour toutes les pièces des tiroirs risque d’être long.

    Je vais avoir un script à rallonge et je pense que je vais rencontrer des problèmes si j’ai un nombre de caisson <10…

    Qu’en pensez vous ?

    Attachments:
    You must be logged in to view attached files.
    #74768
    michel c.
    Participant

    Je pense avoir réussi. Il y avait sûrement plus simple avec une autre numérotation des champs mais je ne voulais pas me refaire tous les calculs…

    Le script est long mais ça a l’air de marcher.

    Enfin ça fonctionne si il y a 10 caissons….Il va falloir que je trouve un truc s’il y a moins de 10 caissons…

    • Cette réponse a été modifiée le il y a 4 semaines et 1 jour par michel c..
    • Cette réponse a été modifiée le il y a 4 semaines et 1 jour par michel c..
    Attachments:
    You must be logged in to view attached files.
    #74773
    bebarth
    Maître des clés

    bonjour,

    Je pense avoir réussi. Il y avait sûrement plus simple avec une autre numérotation des champs mais je ne voulais pas me refaire tous les calculs… Le script est long mais ça a l’air de marcher. Enfin ça fonctionne si il y a 10 caissons….Il va falloir que je trouve un truc s’il y a moins de 10 caissons…

    Si je peux me permettre, j’aurais quelques recommandations à te donner avant de te lancer dans des calculs, surtout lorsqu’il y a autant de champs… et malheureusement, lorsqu’on “commence” à programmer (durant quelques années), on doit souvent recommencer la nomination des champs, même si c’est un travail fastidieux…

    Je croyais avoir compris que les quantités de formats identiques s’ajoutaient ! Ça n’a pas l’air d’être le cas dans ton tableau.

    @+
    😎

     

    #74776
    michel c.
    Participant

    Tu as parfaitement raison, pour les quantités identiques, ce n’est plus un problème depuis que Merlin m’a suggéré d’exporter les données, je n’ai pour le coup aucune saisie à faire.

    Par contre il y a plus grave, je me suis un peu embrouillé je pense avec toutes ces données et je crois avoir relevé quelques erreurs. Je suis en train de réfléchir à une autre façon de nommer les champs.

    #74779
    Merlin
    Maître des clés

    Pour info la version d’essai de Qoppa PDF Studio permet de renommer plusieurs champs de formulaire à la fois, des centaines si besoin.

    Comme cette version d’essai ajoute des filigranes l’astuce c’est de faire ça dans une copie du document PDF et ensuite de ramener les champs renommés dans le document original par copier-coller en ouvrant les 2 PDF avec Acrobat, ou avec PDF Expert.

    Je n’ai pas testé avec ce dernier mais il n’y a aucune raison que ça ne fonctionne pas.

Affichage de 17 réponses de 1 à 17 (sur un total de 17)
  • Vous devez être connecté pour répondre à ce sujet.