L’utilisation d’un script pour contrôler plus précisément l’importation de données réseau à partir de fichiers SIG ou de couches SIG précédemment chargées est une fonction avancée.
Les scripts doivent être uniquement utilisés par des utilisateurs expérimentés ayant une certaine expérience de la programmation avec un langage de script.
Les scripts d’importation peuvent être écrits à l’aide de VBScript. Pour en savoir plus sur ce que vous pouvez faire dans VBScript, consultez le didacticiel VBScript ou la page de référence VBScript sur Internet. N’oubliez pas que VBScript n’est pas la même chose que Visual Basic, Visual Basic.NET, VBScript.NET ou Visual Basic For Applications.
Vous pouvez utiliser toutes les fonctionnalités normales disponibles dans VBScript pour manipuler les données avant l’importation.
Remarque : Le composant VBScript n’est plus installé dans le cadre de l’installation d’InfoWorks WS Pro. Il est installé avec Windows 10 et 11. À l’avenir, ce composant Microsoft pourrait devenir optionnel, mais vous pouvez l’activer à l’aide des fonctionnalités en option de Windows.
Présentation des scripts
Le script contient un certain nombre de sous-programmes publics qui prennent la forme suivante :
OnBegin<tablename>
OnEnd<tablename>
OnBeginRecord<tablename>
OnEndRecord<tablename>
Ils sont intitulés comme suit :
-
OnBegin<tablename> : avant l’importation de la table ;
-
OnEnd<tablename> : après l’importation de la table ;
-
OnBeginRecord<tablename> : avant le traitement de chaque enregistrement. Plus précisément, il s’agit des noms des sous-programmes après la lecture des données, mais avant toute forme de traitement. Dans ce cas, le traitement correspond à l’affectation normale des données d’importation aux champs InfoWorks WS Pro en fonction du mappage des champs configuré dans le centre d’importation de données ouvertes ;
-
OnEndRecord<tablename> : après l’affectation normale des données d’importation aux champs InfoWorks WS Pro, mais avant que les données ne soient écrites dans la base de données.
Le script est exécuté à l’aide de l’Active Scripting Host. InfoWorks WS Pro parcourt la liste des sous-programmes à la recherche des sous-programmes publics décrits ci-dessus. En plus de ces sous-programmes publics, vous pouvez :
- définir les variables globales utilisées par le code ;
- définir d’autres sous-programmes appelés par les sous-programmes publics répertoriés ci-dessus. Les sous-programmes supplémentaires doivent être déclarés comme étant privés.
Noms de tables
Les noms de tables sont les noms qui apparaissent dans la liste Table dans laquelle importer les données du centre d’importation de données ouvertes, mais sans aucune espace. Par exemple
- Node
- Conduite
- FixedHead
- TransferNode
- Réservoir
La méthode utilisée après l’importation de chaque enregistrement pour la table TransferNode est OnEndRecordTransferNode.
Utilisation des sous-programmes publics
-
OnBegin <tablename> : l’objectif principal du sous-programme OnBegin est d’initialiser les valeurs dans les variables globales de script qui sont utilisées ultérieurement dans l’enregistrement. Vous pouvez également décider, en fonction de certains critères, d’abandonner l’importation.
-
OnEnd<tablename>.
-
OnBeginRecord<tablename> et OnEndRecord<tablename> : il y a peu de différences entre OnBeginRecord et OnEndRecord, sauf :
- si vous savez que vous allez abandonner un enregistrement, il vaut mieux travailler dans OnBeginRecord. Cela permet d’accélérer le processus d’importation ;
- si, à l’aide du script, vous définissez un champ qui est également défini par le mappage de champ normal, vous devez le faire dans OnEndRecord. Sinon, le champ sera remplacé par l’affectation normale.
Propriétés et méthodes InfoWorks WS Pro
Il existe un certain nombre de méthodes et de propriétés définies par InfoWorks WS Pro et pouvant être appelées par le script.
Lors de l’écriture du script, les propriétés et les méthodes décrites ci-dessous doivent être précédées de Importer. (par exemple Importer.MsgBox("Hello")).
Propriétés
-
boolean Abandonedand boolean TableAbandoned – Abandoned et TableAbandoned sont quasiment identiques. Si vous définissez ces propriétés sur True, le traitement de la table est interrompue. Si vous définissez l’une d’entre elles dans OnBegin, la table n’est pas traitée. Si vous définissez l’un d’entre elles dans OnBeginRecord, l’enregistrement n’est pas traité et aucun autre enregistrement de la table n’est traité. Si vous définissez l’un d’entre elles dans OnEndRecord, l’enregistrement est traité, mais aucun autre enregistrement de la table n’est traité. Ces propriétés sont définies sur False avant le traitement de chaque table d’importation.
-
boolean WriteRecord : si cette propriété est définie sur False, cet enregistrement n’est pas écrit dans la base de données, mais l’importation globale de la table continue. WriteRecord ne sert qu’à des fins utiles dans OnBeginRecord et OnEndRecord. Si cette propriété est définie sur False dans OnBeginRecord, aucun traitement supplémentaire n’est effectué pour cet enregistrement et OnEndRecord n’est pas appelé. Si cette propriété est définie sur False dans OnEndRecord, l’enregistrement n’est pas écrit dans la base de données. Cette propriété est définie sur True au début de chaque enregistrement.
-
boolean DeleteRecord : permet de supprimer des objets. Si cette propriété est définie sur True, elle est interprétée comme une demande de suppression, car l’objet peut ne pas exister dans InfoWorks WS Pro. Lors de la mise à jour en fonction de l’ID de ressource, l’ID de ressource des objets de la source de données externe et la table InfoWorks WS Pro sont comparés, sinon l’ID d’objet est utilisé. La valeur de la propriété DeleteRecord remplace celle de la propriété WriteRecord.
Méthodes
-
void MsgBox(BSTR text) – MsgBox affiche la chaîne dans une boîte de message. N’utilisez pas cette méthode si vous avez beaucoup d’enregistrements. Vous ne pouvez pas arrêter le script avant la fin du traitement.
-
void OutputMessage(BSTR text, VARIANT messageType) : OutputMessage enregistre le message dans la fenêtre de sortie, qui comporte aussi des erreurs et des avertissements.
- text (requis) : texte à enregistrer dans la fenêtre de sortie.
- messageType (facultatif) : les paramètres valides sont les suivants :
- E : message d’erreur précédé de la mention « Erreur : » et comportant l’incrément du nombre d’erreurs de traitement
- W : message d’avertissement précédé de la mention « Avertissement : » et comportant l’incrément du nombre d’erreurs d’avertissement
- I : message d’information, précédé de la mention « Info : ».
-
VARIANT Field(BSTR fieldName) : extrait la valeur du champ de la base de données source, de la couche SIG ou du fichier CSV. La variable fieldName est le nom du champ source externe. Aucune conversion d’unité n’est effectuée.
Méthodes d’affectation
-
Field(BSTR fieldName) = VARIANT newValue : définit la valeur dans InfoWorks WS Pro. Dans ce cas, fieldName correspond au nom du champ InfoWorks WS Pro. Les valeurs sont toujours traitées comme s’il s’agissait d’unités natives InfoWorks WS Pro.