Вкратце о Rocs

Каждый сеанс Rocs — это проект: при открытии Rocs создаётся пустой проект, а при загрузке уже существующего проекта он становится текущим проектом. Таким образом, проект состоит из документов с графами, сценариев и алгоритмов и журнала.

Документы с графами

Документ с графами представляет собой содержимое области редактирования в редакторе графов. Он содержит информацию об указанных пользователем типах вершин и рёбер, их свойствах, а также об уже созданных вершинах и рёбрах. Это значит, что Rocs распознаёт набор всех вершин и рёбер документа для формирования (не обязательно связанного) графа. Всё, что относится к документу, доступно обработчику сценариев через глобальный объект Document.

Типы рёбер

В некоторых сценариях графы состоят из разных типов рёбер (например, ненаправленный граф плюс рёбра дерева, вычисленные с помощью алгоритма поиска в ширину), которые должны обрабатываться и отображаться по-разному. Для этого, помимо стандартного типа ребра, возможно указать произвольные другие типы рёбер. Каждый тип рёбер имеет своё визуальное представление, динамические свойства и может быть либо направленным, либо ненаправленным. Интерфейс сценариев предоставляет удобные методы для доступа только к рёбрам определённых типов.

Типы вершин

Аналогично типам рёбер, возможно указать различные типы вершин графа (например, чтобы присвоить некоторым вершинам особые роли). Каждый тип вершины имеет своё визуальное представление и динамические свойства.

Свойства

Каждый (вершина или ребро) элемент может иметь свойства. Эти свойства должны быть указаны в соответствующем типе ребра или вершины. Свойства идентифицируются и доступны по именам и могут содержать любое значение. Чтобы создать новое или изменить существующее свойство, воспользуйтесь боковой панелью Типы элементов и кнопкой Свойства для открытия диалога свойств.

Обработчик сценариев также возможно использовать для доступа к уже указанным свойствам и изменения их значений. В следующем примере предполагается, что свойство «вес» присвоено типу ребра по умолчанию.

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("вес вершины " + i + ": " + nodes[i].weight);
}