Головна Приклади Знімки екрана Інструкція користувача Логотип Bluesky. YouTube ☰
OghmaNano Мультифізична платформа для моделювання оптоелектронних пристроїв і фотонних систем. ЗАВАНТАЖИТИ Короткий посібник зі швидкого старту

Вступ до програмування сценаріїв

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. Додаткові поради щодо створення сценаріїв.

OghmaNano JSON Explorer showing the simulation data structure as a tree of JSON objects
JSON Explorer – це інструмент, який відображає структуру даних sim.json у вигляді дерева, що дозволяє зручно переглядати її.

Уявіть собі графічний інтерфейс як структурований переглядач JSON.

Корисна концептуальна модель під час створення сценаріїв для OghmaNano полягає в тому, щоб розглядати весь графічний інтерфейс як структурований переглядач і редактор для базового файлу sim.json. Кожен віджет, повзунок, таблиця та діалогове вікно зрештою зчитує дані з цього файлу та записує їх у нього. Немає окремого «стану графічного інтерфейсу» – JSON є станом. На стрічці «Автоматизація» інструмент «JSON Explorer» (рис. ??) дозволяє переглядати файл sim.json безпосередньо у вигляді ієрархічного дерева. Це часто є найшвидшим способом зрозуміти, де саме в JSON «розташований» певний параметр, і переконатися, що дія в графічному інтерфейсі записує дані в потрібне поле.

Перевірка об’єктів за допомогою функції «копіювати та вставити».

Ще одна корисна техніка полягає в тому, щоб використовувати можливості копіювання та вставлення в усьому графічному інтерфейсі. Коли ви копіюєте об’єкт – наприклад, клацаєте правою кнопкою миші та копіюєте шар у редакторі шарів або копіюєте вибраний об’єкт у тривимірному вікні – OghmaNano може безпосередньо розмістити базову структуру JSON, яка відповідає за створення цього об’єкта, у буфер обміну.

Якщо ви скопіюєте вміст буфера обміну та вставите його в простий текстовий редактор (Блокнот, Notepad++, VS Code тощо), ви зможете переглянути точний блок JSON, який використовується для визначення цього об’єкта або запису в таблиці. Це дає змогу отримати прямий і однозначний огляд внутрішнього представлення об’єкта, і часто є найшвидшим способом визначення відповідних ключів для створення сценаріїв.

У багатьох контекстних меню також є такі опції, як «Копіювати JSON», «Копіювати шлях JSON» або «Копіювати шлях, визначений у скрипті». Ці команди показують точне розташування об’єкта в ієрархії JSON, що значно полегшує пошук і редагування відповідного елемента в скриптах.

Якщо ви зовсім застрягли: скористайтеся інструментом для порівняння файлів.

Якщо ви не впевнені, як певний елемент графічного інтерфейсу користувача пов’язаний із файлом sim.json, простим і ефективним способом налагодження є використання інструменту для порівняння файлів.

  1. Створіть резервну копію файлу моделювання, наприклад, скопіюйте файл sim.json у файл sim.back.
  2. Змініть один параметр у графічному інтерфейсі користувача.
  3. Порівняйте змінений файл sim.json зі своєю резервною копією за допомогою інструмента порівняння, наприклад, KDiff3.
  4. Результат порівняння покаже, яка саме лінія (або блок) у файлі JSON була змінена, і розкриє, як цей елемент графічного інтерфейсу представлено всередині системи.

Зазвичай, це найшвидший спосіб зіставити елемент інтерфейсу користувача з певним полем JSON, особливо у великих ієрархіях параметрів.

Використання ідентифікаторів об’єктів для пошуку записів у sim.json.

OghmaNano object editor showing the object ID displayed at the bottom of the window
Редактор об’єктів, у якому відображається унікальний ідентифікатор об’єкта в нижній частині вікна. Це вікно було відкрито шляхом клацання правою кнопкою миші на верхньому контакті пристрою та вибору опції «Заголовок об’єкта».

Більшість структурованих об’єктів у OghmaNano – таких як шари, фігури, параметричні сканування та інші ієрархічні об’єкти – мають унікальний ідентифікатор (ID), який зазвичай являє собою випадковий шістнадцятковий рядок, що містить приблизно 16 символів.

Ідентифікатор об’єкта часто відображається безпосередньо в графічному інтерфейсі користувача. Наприклад, на рисунку ?? ідентифікатор показано в лівому нижньому куті вікна редактора об’єкта. Цей самий ідентифікатор також міститься у відповідному записі у файлі sim.json.

Ці ідентифікатори надзвичайно корисні під час навігації у великих або глибоко вкладених структурах JSON. За допомогою пошуку рядка ідентифікатора в sim.json можна швидко знайти точний об’єкт, пов’язаний із певним елементом графічного інтерфейсу, навіть якщо навколишня ієрархія є складною.