Вступ до програмування сценаріїв
1. Налаштування середовища для написання сценаріїв
Використання скриптів пропонує більш ефективний спосіб взаємодії з OghmaNano. Замість використання графічного інтерфейсу користувача, ви можете використовувати улюблену мову програмування для взаємодії з OghmaNano. Це дає вам можливість керувати моделюванням набагато ефективніше, ніж це можливо лише за допомогою графічного інтерфейсу. Нижче я наводжу приклади використання MATLAB і Python для керування OghmaNano, але ви можете використовувати будь-яку мову, яка має модуль для читання/запису JSON-файлів. Perl і Java – це дві мови, які спадають на думку.
Перш ніж почати розробку сценаріїв для OghmaNano, вам потрібно вказати системі, де встановлено OghmaNano. За замовчуванням OghmaNano встановлюється в папку C:\Program files x86\OghmaNano. У цій папці ви знайдете два виконувані файли: oghma.exe, який є графічним інтерфейсом користувача, і oghma_core.exe. Ви можете запустити oghma_core.exe з командного рядка без oghma.exe. Для цього просто перейдіть до папки, що містить папку sim.oghma, і запустіть oghma_core.exe. Це можна зробити з командного рядка Windows, MATLAB, Python або будь-якої іншої мови програмування. Однак, перш ніж ви зможете зробити це в Windows, вам потрібно додати шлях C:\Program files x86\OghmaNano до системних змінних середовища, щоб Windows знала, де встановлено OghmaNano. Приклад того, як це зробити в сучасній версії Windows, наведено за посиланням https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14).
З кожною новою версією Windows розташування параметрів налаштування, здається, змінюється, тому вам, можливо, доведеться шукати інструкції саме для вашої версії Windows.
2. Додаткові поради щодо створення сценаріїв.
sim.json у вигляді дерева, що дозволяє зручно переглядати її.Уявіть собі графічний інтерфейс як структурований переглядач JSON.
Корисна концептуальна модель під час створення сценаріїв для OghmaNano полягає в тому, щоб розглядати весь графічний інтерфейс як структурований переглядач і редактор для базового файлу sim.json. Кожен віджет, повзунок, таблиця та діалогове вікно зрештою зчитує дані з цього файлу та записує їх у нього. Немає окремого «стану графічного інтерфейсу» – JSON є станом. На стрічці «Автоматизація» інструмент «JSON Explorer» (рис. ??) дозволяє переглядати файл sim.json безпосередньо у вигляді ієрархічного дерева. Це часто є найшвидшим способом зрозуміти, де саме в JSON «розташований» певний параметр, і переконатися, що дія в графічному інтерфейсі записує дані в потрібне поле.
Перевірка об’єктів за допомогою функції «копіювати та вставити».
Ще одна корисна техніка полягає в тому, щоб використовувати можливості копіювання та вставлення в усьому графічному інтерфейсі. Коли ви копіюєте об’єкт – наприклад, клацаєте правою кнопкою миші та копіюєте шар у редакторі шарів або копіюєте вибраний об’єкт у тривимірному вікні – OghmaNano може безпосередньо розмістити базову структуру JSON, яка відповідає за створення цього об’єкта, у буфер обміну.
Якщо ви скопіюєте вміст буфера обміну та вставите його в простий текстовий редактор (Блокнот, Notepad++, VS Code тощо), ви зможете переглянути точний блок JSON, який використовується для визначення цього об’єкта або запису в таблиці. Це дає змогу отримати прямий і однозначний огляд внутрішнього представлення об’єкта, і часто є найшвидшим способом визначення відповідних ключів для створення сценаріїв.
У багатьох контекстних меню також є такі опції, як «Копіювати JSON», «Копіювати шлях JSON» або «Копіювати шлях, визначений у скрипті». Ці команди показують точне розташування об’єкта в ієрархії JSON, що значно полегшує пошук і редагування відповідного елемента в скриптах.
Якщо ви зовсім застрягли: скористайтеся інструментом для порівняння файлів.
Якщо ви не впевнені, як певний елемент графічного інтерфейсу користувача пов’язаний із файлом sim.json, простим і ефективним способом налагодження є використання інструменту для порівняння файлів.
- Створіть резервну копію файлу моделювання, наприклад, скопіюйте файл
sim.jsonу файлsim.back. - Змініть один параметр у графічному інтерфейсі користувача.
- Порівняйте змінений файл
sim.jsonзі своєю резервною копією за допомогою інструмента порівняння, наприклад, KDiff3. - Результат порівняння покаже, яка саме лінія (або блок) у файлі JSON була змінена, і розкриє, як цей елемент графічного інтерфейсу представлено всередині системи.
Зазвичай, це найшвидший спосіб зіставити елемент інтерфейсу користувача з певним полем JSON, особливо у великих ієрархіях параметрів.
Використання ідентифікаторів об’єктів для пошуку записів у sim.json.
Більшість структурованих об’єктів у OghmaNano – таких як шари, фігури, параметричні сканування та інші ієрархічні об’єкти – мають унікальний ідентифікатор (ID), який зазвичай являє собою випадковий шістнадцятковий рядок, що містить приблизно 16 символів.
Ідентифікатор об’єкта часто відображається безпосередньо в графічному інтерфейсі користувача. Наприклад, на рисунку ?? ідентифікатор показано в лівому нижньому куті вікна редактора об’єкта. Цей самий ідентифікатор також міститься у відповідному записі у файлі sim.json.
Ці ідентифікатори надзвичайно корисні під час навігації у великих або глибоко вкладених структурах JSON. За допомогою пошуку рядка ідентифікатора в sim.json можна швидко знайти точний об’єкт, пов’язаний із певним елементом графічного інтерфейсу, навіть якщо навколишня ієрархія є складною.