# Script

Exécute le code source JavaScript défini par l’utilisateur, qui est créé et modifié depuis la boîte de dialogue Boîte de dialogue Modifier le script. La fonction Script contient le code source JavaScript (qui peut être enregistré dans un fichier .js) qui définit son comportement. Le code source définit uniquement le comportement de la fonction Script en question. Par exemple, si un projet comporte plusieurs fonctions Script, une variable définie dans une fonction Script ne sera définie que pour cette fonction Script particulière, et non pour les autres.

Remarque :

- Les limites suivantes s’appliquent à la mémoire allouée par l’ensemble des fonctions de Script et des modules de script externes utilisés dans un projet :

  - Le nombre maximum d’octets alloués à la mémoire de script est de 4 Mo.
  - Le nombre maximum d’octets alloués à la pile est limité à 64 Ko.
- Pour éviter toute allocation de mémoire inutile, toutes les fonctions inutilisées doivent être supprimées du script (telles que celles de l’exemple de script par défaut). Par exemple, un script avec une fonction draw inutile, mais qui génère une chaîne de caractères et un tracé, utilise de la mémoire et des cycles du processeur.

- Le comportement d’une fonction de script dont la cellule a été désignée de manière à désactiver son exécution diffère de celle des autres fonctions de la feuille de calcul. En général, les autres fonctions de la feuille de calcul conservent la dernière valeur enregistrée après l’exécution de la fonction. Toutes les fonctions qui font référence à la fonction désactivée renvoient la dernière valeur enregistrée. Cependant, la fonction Script nécessitant l’exécution de sa méthode "run" interne, lors du chargement d’une fonction Script désactivée, elle affichera une structure de données Script, mais toute fonction Get y faisant référence renvoie #ERR, car la fonction Get attend le retour d’une valeur spécifique. Cette valeur n’est pas renvoyée, car la fonction Script ne s’est pas exécutée.

## Script – entrées

Contrairement aux fonctions de feuille de calcul In-Sight classiques, la fonction Script peut prendre une grande variété d’arguments en entrée (entre 1 et 100). Chaque argument doit être une référence à une cellule, une valeur littérale ou une expression qui génère l’un des types de valeur suivants :

- Un nombre
- Une chaîne de caractères
- Une image
- Un événement
- Un objet de forme (Shape)
- Une structure de données Binary
- Une structure de données telle que Blob, Edge, Histogram, ou Vision Data Access functions Patterns
- Une structure de données Object ou Array (renvoyée par une autre fonction Script)

Remarque :

- Si une plage de cellules est spécifiée en argument, elle est étendue aux références de chaque cellule distincte contenue dans la plage, et utilise donc autant d’arguments que la plage de cellules en contient.
- Lorsque l’argument d’une fonction Script est une référence à une autre cellule qui renvoie une structure de données Blob, Edges, Histogram, ou Patterns, l’objet transmis à la fonction Script n’est utilisable que jusqu’à ce que la méthode Run renvoie un résultat. La fonction Script peut renvoyer directement cet objet, et il est utilisable comme valeur de résultat de la cellule contenant la fonction Script. Cependant, si le script stocke cet objet en interne (dans sa méthode Draw, par exemple), après le retour de la méthode Run, l’objet est inutilisable et toute tentative d’appel de l’une de ses méthodes entraîne une erreur. Cela est également le cas si le script renvoie une structure de résultat, telle que la propriété d’un objet de script renvoyé par la méthode Run. Ainsi, aucune de ces propriétés ne sera utilisable par une fonction Get ou par d’autres fonctions Script, car les objets sous-jacents ne sont plus valides.

- Lorsque vous rédigez un script, ajouter du code pour valider les arguments en entrée peut aider à réduire les erreurs, comme le montre l’exemple ci-dessous :

                              function Tool()
      {
      }

      module.exports = Tool;

      function isNumber(n) {
         if (n === undefined || n == null || isNaN(parseFloat(n)) || !isFinite(n))
            return false;
         return true;
      }

      Tool.prototype.run = function(x, y){
         if (!isNumber(x) || !isNumber(y))
            throw new Error("Usage: Requires 2 numeric arguments");
         return +x + +y;
      }

Remarque : Pour accéder au paramètre width (largeur) ou height (hauteur) d’un objet Region dans un script, utilisez .w and .h.

>     Script.prototype.run = function (image, myRegion) {

> >     return {
> >         x: myRegion.x,
> >         y: myRegion.y,
> >         //width: myRegion.width,
> >         //height: myRegion.height,
> >         width: myRegion.w,
> >         height: myRegion.h,
> >         angle: myRegion.angle,
> >         curve: myRegion.curve
> >     };

>     }

## Script – Sorties

Renvoie | La fonction peut renvoyer une valeur de l’un des types suivants : Un nombre Vrai (1) ou faux (0) Une chaîne de caractères Une structure de données Binary Une structure de données Blob, Edge, Histogram, ou Patterns Un objet de forme (Shape) Un objet Une image null, undefined ou pas d’instruction « return » (même traitement qu’un objet vide). La fonction renvoie #ERR dans l’une des situations suivantes : Si le code source ne contient pas de méthode Run. Si l’une des valeurs en argument n’est pas d’un type pris en charge. Si le constructeur lève une exception. Remarque : La fonction GetErrorString peut être utilisée pour récupérer le message d’exception, si un tel message a été écrit dans le code source. Toutes les exceptions renvoient le même code d’erreur (20000005).

## Script Vision Data Access functions

La fonction Get permet d’accéder aux propriétés des objets renvoyés par une fonction Script.