Lorsque l’on manipule des modèles de grande taille ou plusieurs modèles à la fois, il peut être fastidieux d’effectuer des tâches répétitives, telles que modifier des objets à l’aide de règles globales, importer ou générer des nouveaux formats ou encore vérifier des modèles. De telles opérations peuvent être automatisées à l’aide de scripts.
Pour ce faire vous pouvez lire et modifier n’importe quel objet PowerAMC en utilisant les langages de script tel que :
- Java ;
- VBScript ;
- C# ;
- etc.
Le script suivant illustre la syntaxe de base en VBScript que nous avons appliquée à la manipulation des modèles et objets du premier niveau.
Dim var ' Déclaration d'une variable locale var = 1 ' Affectation d'une valeur pour un type simple Set var = ActiveModel ' Affectation d'une valeur pour un objet. ActiveModel est une propriété globale PowerAMC If not var is Nothing Then ' Condition sur un objet, testant pour savoir s'il est 'null' Dim objt ' Déclaration d'une autre variable locale Dim objt1 For Each objt In ActiveModel.Children ' Boucle sur la collection d'objets enfant DescribeObject objt ' Appel de procédure avec objt comme paramètre (sans parenthèses). La procédure est définie ci-dessous. Next Else output "Il n'y a pas de modèle actif" ' Output est une procédure PowerAMC qui écrit du texte dans la fenêtre Résultats End If ' Ceci est une procédure - un méthode qui ne renvoie pas de valeur Sub DescribeObject(objt) Dim desc ' Déclaration de variable dans la procédure desc = ComputeObjectLabel(objt) ' Appel de fonction avec objt comme paramètre (avec parenthèses). La fonction est définie ci-dessous. ' On récupère la valeur renvoyée par la fonction dans la variable desc output desc ' Affiche la description de l'objet dans le résultat End Sub ' Ceci est une fonction - une méthode qui renvoie une valeur Function ComputeObjectLabel(objt) Dim label ' Déclaration d'une variable locale pour stocker le libellé de l'objet label = "" ' Initialisation de la variable de libellé avec une valeur par défaut If objt is nothing then label = "Aucun objet" ElseIf objt.IsShortcut() then ' IsShortcut est une fonction PowerAMC disponible sur les objets label = objt.Name & " (shortcut)" ' Concaténation de deux chaînes Else On Error Goto 0 ' Désactive l'abandon d'exécution de script sur erreur label = objt.Name ' Assigne la propriété Nom de l'objet à la variable locale On Error Resume Next ' Réactive l'exécution de script en cas d'erreur End If ComputeObjectLabel = label ' La valeur est renvoyée en affectant une variable implicite avec le même nom que la fonction End Function