Introduction à la programmation de scripts
1. Configuration de votre environnement de développement de scripts
L’utilisation de scripts offre une méthode plus performante pour interagir avec OghmaNano. Au lieu d’utiliser l’interface graphique, vous pouvez utiliser votre langage de programmation préféré pour interagir avec OghmaNano. Cela vous donne la possibilité de contrôler les simulations de manière beaucoup plus efficace qu’en utilisant uniquement l’interface graphique. Ci-dessous, je donne des exemples d’utilisation de MATLAB et de Python pour contrôler OghmaNano, mais vous pouvez utiliser n’importe quel langage doté d’une fonction de lecture/écriture JSON. Pearl et Java sont deux langages qui me viennent à l’esprit.
Avant de commencer à créer des scripts pour OghmaNano, vous devez indiquer à Windows où OghmaNano est installé. Par défaut, OghmaNano est installé dans le dossier C:\Program files x86\OghmaNano. Dans ce dossier, vous trouverez deux fichiers exécutables Windows, dont l’un s’appelle… oghma.exeil s’agit de l’interface graphique, et un deuxième fichier .exe, appelé oghma_core.exeVous pouvez exécuter. oghma_core.exe depuis la ligne de commande, sans oghma.exeIl vous suffit de vous rendre dans un répertoire qui contient un sim.oghma dossier et appel oghma_core.exeCela peut être fait à partir de l’invite de commandes Windows, de MATLAB, de Python ou de tout autre langage de script. Cependant, avant de pouvoir le faire sous Windows, vous devez ajouter le chemin d’accès C:\Program Files x86\OghmaNano à la variable d’environnement Windows, afin que Windows sache où OghmaNano est installé. Un exemple de la manière de procéder sur une version récente de Windows est donné dans le lien. https://docs.microsoft.com/fr-fr/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14)
Il semble que chaque nouvelle version de Windows modifie l’emplacement des options de configuration. Il est donc possible que vous deviez rechercher les instructions spécifiques à votre version de Windows.
2. Autres conseils sur la rédaction de scripts.
sim.json sous la forme d’un arbre navigable.Considérez l’interface graphique comme un visualiseur JSON structuré.
Un modèle mental utile lors de la création de scripts OghmaNano consiste à considérer l’ensemble de l’interface graphique comme un visualiseur et un éditeur structurés du fichier sim.json sous-jacent. Chaque widget, curseur, tableau et boîte de dialogue lit et écrit en fin de compte dans ce fichier. Il n’existe pas d’« état » distinct pour l’interface graphique ; le fichier JSON constitue l’état. Dans le ruban d’automatisation, l’explorateur JSON (figure ??) vous permet de parcourir directement le fichier sim.json sous forme d’arborescence hiérarchique. C’est souvent le moyen le plus rapide de comprendre où se trouve un paramètre dans le fichier JSON et de vérifier qu’une action de l’interface graphique écrit bien dans le champ attendu.
Examiner des objets en utilisant la fonction copier-coller.
Une autre technique utile consiste à exploiter le fonctionnement de la fonction copier-coller dans l’ensemble de l’interface graphique. Lorsque vous copiez un objet – par exemple, en faisant un clic droit et en copiant une couche dans l’éditeur de couches, ou en copiant un objet sélectionné dans la vue 3D – OghmaNano peut placer la structure JSON sous-jacente responsable de la génération de cet objet directement dans le presse-papiers.
Si vous copiez-collez le contenu de cette zone de presse-papiers dans un éditeur de texte brut (Bloc-notes, Notepad++, VS Code, etc.), vous pouvez examiner le bloc JSON exact utilisé pour définir cet objet ou cette entrée de table. Cela vous offre une vue directe et sans ambiguïté de la manière dont l’objet est représenté en interne, et c’est souvent le moyen le plus rapide d’identifier les clés pertinentes pour la programmation.
De nombreux menus contextuels proposent également des options telles que « Copier le JSON », « Copier le chemin JSON » ou « Copier le chemin défini dans un script ». Ces commandes permettent de déterminer l’emplacement exact d’un objet dans la hiérarchie JSON, ce qui facilite grandement la recherche et la modification de l’entrée correspondante dans les scripts.
Si vous êtes vraiment bloqué : utilisez un outil de comparaison de fichiers.
Si vous n’êtes pas sûr de la manière dont un élément d’interface graphique spécifique est associé au fichier sim.json, une méthode de débogage simple et efficace consiste à utiliser un outil de comparaison de fichiers.
- Faites une copie de sauvegarde de votre fichier de simulation, par exemple :
sim.json→sim.back. - Modifiez un seul paramètre dans l’interface graphique.
- Comparez le fichier
sim.jsonmodifié avec votre sauvegarde à l’aide d’un outil de comparaison de fichiers, tel que KDiff3. - La sortie de la commande « diff » vous indiquera précisément quelle ligne (ou quel bloc) du fichier JSON a été modifiée, ce qui vous permettra de comprendre comment cet élément de l’interface graphique est représenté en interne.
Il s’agit souvent du moyen le plus rapide d’associer un élément d’interface utilisateur à un champ JSON spécifique, en particulier dans les arborescences de paramètres volumineuses.
Utiliser les identifiants d’objet pour localiser les entrées dans sim.json.
La plupart des objets structurés dans OghmaNano – tels que les calques, les formes, les analyses de paramètres et autres entités hiérarchiques – se voient attribuer un identifiant unique (ID), généralement une chaîne hexadécimale aléatoire d’environ 16 caractères.
L’identifiant de l’objet est souvent affiché directement dans l’interface graphique. Par exemple, dans la figure ??, l’identifiant apparaît dans le coin inférieur gauche de la fenêtre de l’éditeur d’objets. Le même identifiant figure également dans l’entrée correspondante du fichier sim.json.
Ces identifiants sont extrêmement utiles pour parcourir des structures JSON volumineuses ou complexes. En effectuant une recherche de la chaîne d’identifiant dans sim.json, vous pouvez immédiatement localiser l’objet exact associé à un élément d’interface utilisateur donné, même lorsque la hiérarchie environnante est complexe.