Опция выравнивания GCM_alignment

Тип ограничения (GCM_c_type) является основной характеристикой ограничения, достаточной что бы сказать удовлетворяет ли положение объектов данному типу ограничения или нет, однако участие в ограничении ориентируемых объектов, таких, как плоскость или прямая, допускают разные исполнения одного и того же типа GCM_c_type. Например, если взять две грани тела, лежащие в одной плоскости, мы можем сказать, что они удовлетворяют ограничению совпадения (GCM_COINCIDENT), однако это утверждение допускает два варианта совпадения, когда нормальные вектора граней смотрят в одну сторону или направлены в разные стороны. На рисунках 1, 2 показаны альтернативные варианты выравнивания двух тел с помощью ограничения GCM_COINCIDENT, связывающего пару цветных граней:

image{width=»50%»}

Рис. 1

image{width=»50%»}

Рис. 2

По умолчанию решатель выполняет совпадение, оставляя ориентацию геометрических объектов как можно ближе к исходному состоянию (см. Начальное приближение). Поэтому выбор из двух вариантов выполняется автоматически по принципу минимального поворота. Но если требуется, можно заказать определенную взаимную ориентацию векторов. Для этого в методах GCM_AddBinConstraint, GCM_AddDistance, GCM_AddConstraint предусмотрена опция выравнивания GCM_alignment, значения которой приведены в таблице.

GCM_alignment дополняет тип ограничения GCM_c_type условием, исключающим всякую неоднозначность при выборе решения для ограничения. Значения GCM_COORIENTED и GCM_OPPOSITE действуют на такие ограничения, которые подразумевают параллельность векторов Z своих аргументов. Например перпендикулярность плоскости и прямой подразумевают параллельность нормального вектора плоскости и прямой. Или пример совпадения двух плоскостей, который делает нормали граней cонаправленными (Рис. 1) либо противонаправленными (Рис. 2). Другие значения опции выравнивания действуют в более сложных случаях, совместно с такими ограничениями, как касание, линейные или угловые паттерны, где выбирать приходится из более чем 2 решений. Например касание двух тороидов по окружности предусматривает восемь решений, которые кроме сонаправленности векторов, различаются по стороне касания относительно осей Z, размещению одного тора снаружи или внутри другого.

Таблица 1 - Значения опции выравнивания GCM_alignment.

Имя

Значение

GCM_NO_ALIGNMENT

Неопределенная ориентации. Значение GCM_NO_ALIGNMENT применяется в тех случаях, когда ограничение не чувствительно к ориентации геометрических объектов (например, совпадение двух точек) или ориентацию объектов требуется оставить свободной. Например, в угловых или линейных паттернах, если указать GCM_NO_ALIGNMENT, то ориентация «образца» никак не будет влиять на «экземпляр копирования».

GCM_CLOSEST

Решение выбирается автоматически, как можно ближе к стартовому положению геометрических объектов.

GCM_COORIENTED

Задает сонаправленность векторов Z аргументов ограничения.

GCM_OPPOSITE

Задает противонаправленность векторов Z аргументов ограничения.

GCM_ALIGNED_0 GCM_ALIGNED_1 GCM_ALIGNED_2 GCM_ALIGNED_3

Варианты решения ограничений с сонаправленными векторами Z аргументов ограничения (подварианты GCM_COORIENTED).

GCM_REVERSE_0 GCM_REVERSE_1 GCM_REVERSE_2 GCM_REVERSE_3

Варианты решения ограничений с противонаправленными векторами Z аргументов ограничения (подварианты GCM_OPPOSITE).

GCM_ALIGNED

Создает одинаковую ориентацию ЛСК объектов (сонаправленность по „Z“ и по „X“) для таких ограничений, как GCM_SYMMETRIC и GCM. Т.е. ограничения симметрия, угловые и линейные паттерны с данной опцией будут ориентировать «экземпляр копирования» также, как и «образец» при том, что их позиционирование будет подчиняться соответствующим законам копирования.

GCM_ROTATED

Действует для ограничения GCM_PATTERNED в случае углового паттерна GCM_ANGULAR_PATTERN. Означает, что ЛСК «образца копирования» и «экземпляра» полностью совмещаются поворотом вокруг оси паттерна.

GCM_ALIGN_WITH_AXIAL_GEOM

Применяется в качестве дополнительной опции угловых и линейных петтернов в функциях GCM_AddLinearPattern, GCM_AddAngularPattern.

Подводя итог, можно сказать, что GCM_alignment является дополнительным условием в тех ситуациях, когда GCM_c_type допускает не единственный вариант исполнения ограничения.