Ядро Rocs

Загалом, кожен сеанс Rocs є проєктом: під час запуску Rocs створюється порожній проєкт; якщо завантажуєтеся якийсь проєкт, він стає поточним. Сам проєкт складається з документів графів, скриптів або алгоритмів та журналу.

Документи графів

Документ графу відтворює вміст полотна у редакторі графів. У ньому містяться дані щодо визначених користувачем типів вузлів та ребер, їхніх властивостей, а також щодо вже створених вузлів і ребер. Тобто, Rocs вважає набір усіх вузлів і ребер документа графів (необов’язково з’єднаних) самим графом. Доступ до усіх елементів документа графу можна отримати за допомогою рушія обробки скриптів та загального об’єкта Document.

Типи ребер

Іноді, граф може складатися із ребер різних типів (наприклад, незорієнтований граф плюс ребра дерева, обчислені за допомогою алгоритму пошуку у ширину), які слід обробляти і показувати у різний спосіб. Для цього, окрім типового типу ребер, ви можете визначити довільні інші типи ребер. Кожен тип ребер має власне візуальне представлення, динамічні властивості, а також може бути орієнтованим або незорієнтованим. У інтерфейсі написання скриптів передбачено зручні методи для доступу до ребер певних типів.

Типи вузлів

Аналогічно до типів ребер ви можете визначити різні типи вершити графу (наприклад, надати певним вершинам особливі ролі). У кожного типу вершин (вузлів) передбачено власне представлення та динамічні властивості.

Властивості

Кожен елемент (вершини або ребра) може мати властивості. Ці властивості має бути визначено у відповідному типі вершин або ребер. Властивості ідентифікуються за назвами і можуть містити будь-які значення. Доступ до властивостей виконується за назвами. Для створення або внесення змін до наявних властивостей слід використовувати бічну панель Типи елементів. Для відкриття діалогового вікна властивостей слід використовувати кнопку Властивості.

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

var nodes = Document.nodes()
for (var i = 0; i < nodes.length; ++i){
    nodes[i].weight = i;
}
for (var i = 0; i < nodes.length; ++i){
    Console.log("weight of node " + i + ": " + nodes[i].weight);
}