## Управляющие размеры Управляющие размеры -- это размерные ограничения, которые задают расстояние или угол между двумя геометрическими объектами и тем самым наделяют геометрическую сцену числовыми параметрами, управляющими положением ее объектов. Варьируя параметры размеров, можно управлять состоянием модели или получать экземпляры параметрической модели в разном геометрическом исполнении. Управляющие размеры можно создать с помощью вызовов GCM_AddDistance, GCM_AddAngle и GCM_FixRadius. Основное предназначение управляющих размеров -- это управлять положением геометрических объектов с помощью числового параметра длины, радиуса или угла. Заметим, что ограничения паттернов, созданных методом **GCM_AddGeomToPattern**(), также относятся к управляющим размерам, поскольку элементы паттерна, характеризуются числовыми параметрами, задающими их линейные или угловые позиции. Функция ```cpp GCM_result GCM_ChangeDrivingDimension(GCM_system gSys, GCM_constraint dItem , double dVal) ``` позволяет менять значение любого размера **dItem** и тем самым управлять состояние параметрической модели. Входные параметры вызова: - **gSys** -- система ограничений параметрической модели; - **dItem** -- дескриптор размерного ограничения; - **dVal** -- новое значение размера, заданное в единицах длины для линейных размеров или в радианах для угловых размеров. Возвращаемые значения: - GCM_RESULT_Ok, если операция выполнена успешно; - GCM_RESULT_ItsNotDrivingDimension означает, что присланное ограничение не является управляющим размером или управляющим параметром, например, если ограничение -- вариационный размер; - GCM_RESULT_None или GCM_RESULT_Unregistered возвращаются, если присланные дескрипторы **gSys** или **dItem** не действительны. Следует учитывать, что данная функция не выполняет вычислений, а только подготавливает изменение управляющего размера. Чтобы изменение вступило в силу, необходимо вызвать **GCM_Evaluate**. Если требуется изменить одновременно два и более управляющих размеров, следует сначала сделать серию вызовов **GCM_ChangeDrivingDimension** на каждый из них, затем один раз вызвать **GCM_Evaluate**.