Wprowadzenie do programowania skryptów
1. Konfiguracja środowiska do tworzenia skryptów
Korzystanie ze skryptów to bardziej zaawansowany sposób interakcji z OghmaNano. Zamiast korzystać z graficznego interfejsu użytkownika, można użyć preferowanego języka programowania do komunikacji z OghmaNano. Dzięki temu można sterować symulacjami w znacznie bardziej efektywny sposób niż tylko za pomocą graficznego interfejsu. Poniżej przedstawiam przykłady użycia MATLAB i Pythona do sterowania OghmaNano, ale można użyć dowolnego języka, który obsługuje odczyt i zapis danych w formacie JSON. Perl i Java to dwa języki, które przychodzą mi do głowy.
Zanim zaczniesz pisać skrypty dla OghmaNano, musisz poinformować system, gdzie zainstalowano OghmaNano. Domyślnie OghmaNano jest instalowany w folderze C:\Program Files x86\OghmaNano. W tym folderze znajdują się dwa pliki wykonywalne: oghma.exe, który odpowiada za graficzny interfejs użytkownika, oraz oghma_core.exe. Możesz uruchomić oghma_core.exe z wiersza poleceń bez uruchamiania oghma.exe. Wystarczy przejść do folderu zawierającego folder sim.oghma i uruchomić oghma_core.exe. Można to zrobić z wiersza poleceń systemu Windows, z poziomu MATLAB-a, Pythona lub dowolnego innego języka skryptowego. Jednak zanim to zrobisz w systemie Windows, musisz dodać ścieżkę C:\Program Files x86\OghmaNano do zmiennej środowiskowej PATH, aby system Windows wiedział, gdzie zainstalowano OghmaNano. Przykład, jak to zrobić w nowoczesnej wersji systemu Windows, znajduje się pod adresem https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14).
Wygląda na to, że w każdej nowej wersji systemu Windows opcje konfiguracyjne są rozmieszczone w inny sposób, więc być może trzeba będzie znaleźć instrukcje dotyczące konkretnej wersji systemu Windows, której się używa.
2. Dodatkowe wskazówki dotyczące tworzenia skryptów.
sim.json w postaci drzewa, po którym można się poruszać.Wyobraź sobie interfejs graficzny jako uporządkowany program do przeglądania danych w formacie JSON.
Przydatnym modelem mentalnym podczas tworzenia skryptów dla OghmaNano jest traktowanie całego interfejsu graficznego jako uporządkowanego przeglądarki i edytora dla bazowego pliku sim.json. Każdy element interfejsu, suwak, tabela i okno dialogowe ostatecznie odczytuje dane z tego pliku i zapisuje je w nim. Nie istnieje oddzielny „stan interfejsu graficznego” – plik JSON stanowi ten stan. W sekcji „Automatyzacja” na wstążce narzędzi, narzędzie „Eksplorator JSON” (rycina ??) umożliwia bezpośredni przegląd pliku sim.json w postaci hierarchicznej struktury drzewa. Jest to często najszybszy sposób na zrozumienie, gdzie dany parametr jest zdefiniowany w pliku JSON, oraz na potwierdzenie, że akcja w interfejsie graficznym zapisuje dane w oczekiwanym polu.
Sprawdzanie obiektów za pomocą funkcji kopiuj i wklej.
Kolejną przydatną techniką jest wykorzystanie mechanizmu kopiowania i wklejania w całym interfejsie graficznym. Kiedy kopiujesz obiekt – na przykład, klikając prawym przyciskiem myszy i kopiując warstwę w edytorze warstw lub kopiując wybrany obiekt w widoku 3D – OghmaNano może umieścić podstawową strukturę JSON, odpowiedzialną za generowanie danego obiektu, bezpośrednio w schowku.
Jeśli wkleisz zawartość schowka do edytora tekstu (Notatnik, Notepad++, VS Code itp.), możesz sprawdzić dokładny blok JSON, który służy do zdefiniowania danego obiektu lub wpisu w tabeli. Dzięki temu uzyskasz bezpośredni i jednoznaczny wgląd w sposób, w jaki obiekt jest reprezentowany wewnętrznie, co często jest najszybszą metodą identyfikacji odpowiednich kluczy do wykorzystania w skryptach.
W wielu menu kontekstowych dostępne są również opcje takie jak „Kopiuj JSON”, „Kopiuj ścieżkę JSON” lub „Kopiuj ścieżkę zapisaną w skrypcie”. Te polecenia ujawniają dokładną lokalizację obiektu w hierarchii JSON, co znacznie ułatwia znalezienie i modyfikację odpowiedniego elementu w skryptach.
Jeśli naprawdę nie wiesz, co robić: skorzystaj z narzędzia do porównywania plików.
Jeśli nie jesteś pewien, w jaki sposób dany element interfejsu graficznego użytkownika (GUI) jest powiązany z plikiem sim.json, prostą i skuteczną metodą debugowania jest użycie narzędzia do porównywania plików.
- Utwórz kopię zapasową pliku symulacji, na przykład skopiuj plik
sim.jsondosim.back. - Zmień jeden parametr w interfejsie graficznym.
- Porównaj zmodyfikowany plik
sim.jsonz kopią zapasową, korzystając z narzędzia do porównywania plików, takiego jak KDiff3. - Wynik porównania plików pokaże dokładnie, która linia (lub blok) w pliku JSON uległa zmianie, co pozwoli zrozumieć, jak dany element interfejsu graficznego jest reprezentowany wewnętrznie.
Często jest to najszybszy sposób na przypisanie elementu interfejsu użytkownika do określonego pola JSON, zwłaszcza w przypadku rozbudowanych struktur parametrów.
Wykorzystanie identyfikatorów obiektów do lokalizowania wpisów w sim.json.
Większość elementów strukturalnych w OghmaNano – takich jak warstwy, kształty, skanowanie parametrów i inne hierarchiczne obiekty – otrzymuje unikalny identyfikator (ID), który zazwyczaj stanowi losowy ciąg szesnastkowy o długości około 16 znaków.
Identyfikator obiektu jest często wyświetlany bezpośrednio w interfejsie graficznym. Na przykład, na rysunku ?? identyfikator jest widoczny w lewym dolnym rogu okna edytora obiektu. Ten sam identyfikator pojawia się również w odpowiednim wpisie w pliku sim.json.
Te identyfikatory są niezwykle przydatne podczas przeglądania rozbudowanych lub głęboko zagnieżdżonych struktur JSON. Wyszukując ciąg znaków identyfikatora w sim.json, można natychmiast zlokalizować konkretny obiekt powiązany z danym elementem interfejsu użytkownika, nawet jeśli otaczająca go hierarchia jest złożona.