ПрагмаСофтСтудия 2.1

Общие сведения о дереве прорисовки

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

Обход дерева прорисовки происходит сверху вниз. Это значит, что графические примитивы, которые находятся в дереве ниже, будут перекрывать, затирать графику, созданную примитивами расположенными в дереве выше и прорисованными ранее.

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

Обход дерева прорисовки всегда начинается с обхода ветви проекта . Затем перебираются элементы одной из задач . Если текущий выделенный в дереве элемент находится в ветви проекта , то выполняется обход и прорисовки только ветви проекта. Если выделенный в дереве элемент находится в ветви одной из задач , то выполняется обход и прорисовка сначала ветви проекта, а затем ветви данной задачи. Это даёт возможность расположить в ветви проекта общий для всех задач блок подготовки или обработки данных, а также единую для всех задач статическую или динамическую прорисовку.

Каждой задаче назначается свой собственный монитор для прорисовки в процессе моделирования. Это даёт возможность обходить и прорисовывать в ходе моделирования одновременно несколько ветвей задач с выводом графики на несколько мониторов. При этом для каждой ветви задачи будет заново пройдена ветвь проекта .

При обходе дерева прорисовки, какие бы функции или вычислительные узлы не были бы вызваны, и сколько бы они в свою очередь не вызвали других функций и узлов, всё равно, в конечном итоге поток выполнения всегда возвращается в дерево прорисовки и на нём завершается. Проиллюстрируем сказанное, показав возможное взаимодействие дерева прорисовки с функциями вычисления и прорисовки , а так же вычислительными узлами .

Опишем показанное на рисунке по шагам.

-

Для того, чтобы выполнить обработку и прорисовку проекта, поток выполнения начинает обход дерева прорисовки. Происходит ветвление на всю глубину дерева с проверкой каждого элемента в каждой его ветви.

-

В ходе ветвления встречается вызов функции прорисовки 1, и поток выполнения переходит в функцию прорисовки 1. В ней перебираются элементы, и встречается вызов функции вычисления 2 или формула, содержащая её вызов, и поток переходит в функцию вычисления 2. После достижения конца функции 2, поток возвращается в функцию 1, а по её завершении в дерево прорисовки к формуле, следующей за вызовом функции 1.

-

Левая или правая часть формулы содержит вызов функции прорисовки 2. Поток выполнения переходит в неё, и после её завершения возвращается назад в формулу для продолжения её вычисления.

-

После захода в группу 1, поток выполнения встречает вызов узла вычисления 1 и переходит в него. В узле 1 встречается вызов функции 3, а в ней, в свою очередь, вызов функции 2. После завершения функции вычисления 2, поток возвращается в функцию вычисления 3, а от туда в вычислительный узел 1 и дерево прорисовки.

-

Внутри группы 1 поток выполнения встречает группу 2, а в ней вызов узла вычисления 2. После выполнения узла 2, поток возвращается в дерево прорисовки к элементу следующему за вызовом узла 2.

-

После выхода из групп 2 и 1, поток выполнения встречает вызов узла вычисления 3. Поток переходит в него, а от туда в узел 1. После обработки узлов 1 и 3, поток возвращается в дерево прорисовки.

-

Поток выполнения завершает работу с отображением полученной графики в окне САПР.

Всегда перед началом обхода дерева прорисовки происходит удаление содержимого слоя маски. Также для всех групп, которые расположены в корне ветви проекта или ветви задачи , и режим прорисовки которых установлен в значение Повторение маски, на самом деле будет действовать режим Без маски. Для получения большей информации о режимах прорисовки смотрите статью Управление прорисовкой.

 

 

Авионика и Софт

forum.aviosoft.ru

 

сборка: 706