Если вы заинтересовались темой исключительно из практических соображений, то читаем дальше, если же, кроме этих соображений, вас также интересует содержимое "под капотом", а первую часть вы пропустили, то она здесь.
В первой части статьи мы определили два сакральных числа:
6 - число вариаций значений общего свойства для любого компонента - компонента определения блока или компонента пространства модели (в т.ч. блока);
36 - число вариаций значений общего свойства компонента блока, размещенного в пространстве модели.
Задача заключается в том, чтобы установить нужное значение общего свойства компонента блока в пространстве модели, т.е. во вхождении блока, используя правила приоритетов.
Окончательное значение общего свойства компонента блока в пространстве модели
Для определения окончательного значения общего свойства компонента в пространстве модели в зависимости от установок компонента и блока в целом создадим тесовый блок с тестовым копонентом:
- В качестве компонента блока в Редакторе блока рисуем графический
примитив, например прямоугольник или квадрат.
Элементарным тестовым юнитом является один компонент в блоке, и таких юнитов требуется 6, по числу вариаций значений общего свойства компонента блока в определении блока. Упрощая, создадим один блок с шестью одинаковыми компонентами, каждый из которых соответствует одной вариации установки значения общего свойства (имея ввиду, что это один компонент с шестью вариациями значений общего свойства). - Для каждого компонента блока устанавливаем уникальную вариацию - комбинацию одного из трех ссылочных режимов ("ПоСлою", "ПоБлоку", "Значение") и ссылки на один из двух слоев (слой "0" или "Блок").
- Вставляя блок в чертеж шесть раз (по числу вариаций значений общего свойства компонента (вхождения блока) в пространстве модели), получим 36 вариаций значений общего свойства компонента блока, размещенного в пространстве модели.
В результате мы получим по существу один и тот же компонент с 36-ю различными вариациями общего свойства, которые можем представить в формате таблицы или матрицы.
Создание тестового блока и вхождений в пространство моделей
В качестве общего свойства блока используем наиболее наглядное свойство "Цвет", и определим цвета иллюстрирующие различные значения общего свойства "Цвет" во время первоначальной настройки определения блока и впоследствии в зависимости от условий применения блока.
Задание тестовых значений общего свойства "Цвет"
- цвет темы IDE по умолчанию черно-белый (белый в пространстве модели, черный в редакторе блоков);
У нас нет задачи оценивать вариативность значений общего свойства в зависимости от вариативности его доступных константных значений, поэтому определим минимально необходимый набор цветов:
Слои: По умолчанию цвет слоя "0" определяется темой IDE, но в целях отличия от цвета темы назначим слою "0" красный цвет.
Именованному пользовательскому слою "Компонент" назначим голубой цвет, слою "Блок" - желтый;
Цвета: В качестве константного допустимого значения свойства "Цвет" для компонента блока зададим зеленый цвет, а для вхождения блока - фиолетовый.
Определение тестового блока
Тестовый блок содержит две группы квадратов по три в каждой. В каждой группе общее свойство "Цвет" каждого квадрата определяет один из трех ссылочных режимов свойства: первый квадрат - "ПоСлою", второй - "ПоБлоку", третий "Значение" (зеленый цвет).
Первая группа размещена на дефолтном слое "0". Вторая - на пользовательском именованном слое "Компонент".
Думаю, интуитивно понятно, что если в определении блока назначено конкретное значение, то этот элемент ничто не может смутить впоследствии, но... оставим для красоты. Кроме полного стакана, на прикроватной тумбочке должен стоять и пустой, на тот случай, если пить не захочется :))
Вхождения тестового блока
Вхождения тестового блока в пространство модели также состоят из двух групп по три блока в каждой. Первая группа размещена на дефолтном слое "0". Вторая - на пользовательском именованном слое "Блок". В каждой группе общее свойство "Цвет" каждого блока принимает одно из трех значений: первый блок - "ПоСлою", второй - "ПоБлоку", третьему назначен фиолетовый цвет.
Окончательно получаем вот такую магию и красоту:
Отдельно матрицу приоритетов можно взять здесь
Формулирование правил приоритетов
Каждый столбец матрицы приоритетов соответствует одной вариации компонента блока в определении блока.
Каждая строка матрицы приоритетов соответствует одной вариации вхождения блока в пространстве модели.
Каждый элемент матрицы приоритетов соответствует одной вариации компонента блока во вхождении блока пространстве модели, и иллюстрирует значение общего свойства в зависимости от источника наследования этого значения в различных условиях вхождения блока в пространстве модели.
Правила приоритетов тесно связано с понятием устойчивости вариации. Собственно, первые обеспечивают второе, а второе иллюстрирует первое.
** Понятие устойчивости вариации раскрывается в части 1 данной статьи.
К полностью устойчивым вариациям относятся:
- все вариации ссылочного режима "Значение" общего свойства компонента блока (столбцы 3 и 6 матрицы приоритетов);
- вариации ссылочного режима "ПоСлою", при условии задания в определении блока в качестве ссылочного значения свойства "Слой" именованного пользовательского слоя, например "Компонент" (столбец 4).
Отсюда первое правило:
Правило 1. Общее свойство компонента блока при вхождении блока в пространстве модели наследует экземпляр общего свойства от компонента блока в определении блока либо для всех вариаций ссылочного режима "Значение", либо для вариаций режима "ПоСлою", в случае размещения компонента блока на именованном пользовательском слое в определении блока. В пространстве модели изменения ссылочного режима или ссылочного значения игнорируются.
Говоря человеческим языком, зеленый цвет, установленный для компонента блока в определении блока, не изменится ни за что, и никогда. Аналогично ведет себя голубой цвет, выбранный по слою в определении блока, поскольку это не дефолтный слой "0".
К частично устойчивым вариациям относятся:
- вариации ссылочного режима "ПоСлою", при условии задания в определении блока в качестве ссылочного значения свойства "Слой" дефолтного слоя "0" (столбец 1).
Правило 2. Для вариаций режима "ПоСлою", при размещении компонента блока на дефолтном слое "0" в определении блока, общее свойство компонента блока при вхождении блока в пространстве модели наследует экземпляр общего свойства от слоя (именованного пользовательского или дефолтного), на котором это вхождение размещено.
В пространстве модели изменения ссылочного режима игнорируются, изменения ссылочного значения учитываются.
Иначе говоря, задав в определении блока режим "ПоСлою" и, в качестве значения, дефолтный слой "0", вы сможете оперировать значения общего свойства во вхождении блока в пространстве модели, перемещая блок со слоя на слой.
Остальные вариации являются неустойчивыми:
** и, соответственно, самыми управляемыми во вхождении блока в пространстве модели.
- к таковым относятся вариации ссылочного режима "ПоБлоку", заданного в определении блока (столбцы 2 и 5).
Правило 3. Д ля вариаций режима "ПоБлоку", установленного в определении блока, общее свойство компонента блока при вхождении блока в пространстве модели наследует экземпляр общего свойства от вхождения блока в пространстве модели в соответствии со ссылочным режимом и ссылочными значениями вхождения блока.
Или проще - устанавливая в определении блока режим "ПоБлоку" для компонента блока, вы полностью передаете управление общим свойством компонента блока во вхождении блока в пространстве модели это самому вхождению блока. Управление осуществляется заданием ссылочного режима и ссылочных значений, включая значение свойства "Слой" для вхождения блока.
---------------------------------------------------------------
А далее... Сохраните матрицу приоритетов отсюда и будет вам щастье :))