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