## Опция выравнивания GCM_alignment Тип ограничения (GCM_c\_type) является основной характеристикой ограничения, достаточной что бы сказать удовлетворяет ли положение объектов данному типу ограничения или нет, однако участие в ограничении ориентируемых объектов, таких, как плоскость или прямая, допускают разные исполнения одного и того же типа GCM_c\_type. Например, если взять две грани тела, лежащие в одной плоскости, мы можем сказать, что они удовлетворяют ограничению совпадения (GCM_COINCIDENT), однако это утверждение допускает два варианта совпадения, когда нормальные вектора граней смотрят в одну сторону или направлены в разные стороны. На рисунках 1, 2 показаны альтернативные варианты выравнивания двух тел с помощью ограничения GCM_COINCIDENT, связывающего пару цветных граней: ![image](../../pictures/S.6.11.1.png){width="50%"} Рис. 1 ![image](../../pictures/S.6.11.2.png){width="50%"} Рис. 2 По умолчанию решатель выполняет совпадение, оставляя ориентацию геометрических объектов как можно ближе к исходному состоянию (см. [Начальное приближение](./Terms_and_Definitions.md)). Поэтому выбор из двух вариантов выполняется автоматически по принципу минимального поворота. Но если требуется, можно заказать определенную взаимную ориентацию векторов. Для этого в методах **GCM_AddBinConstraint**, GCM_AddDistance, GCM_AddConstraint предусмотрена опция выравнивания GCM_alignment, значения которой приведены в таблице. [GCM_alignment](./GCM_alignment_option.md) дополняет тип ограничения 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 допускает не единственный вариант исполнения ограничения.