## Диагностические коды решения В таблице ниже перечислены коды, сообщающие результат вычисления или выполнения функции API компонента GCM. Данные значения являются результатом таких вызовов, как **GCM_Evaluate**, **GCM_EvaluationResult**, **GCM_SolveReposition**. Таблица 1 - Значения перечислительного типа GCM_result | Результирующие коды выполнения функций API решателя | | |:---|:---| | **GCM_RESULT_None** | **Нет результата.** Для вызова **GCM_EvaluationResult** это означает, что ограничение ни разу не вычислялось. | | **GCM_RESULT_Ok** | **Успешно выполнено.** Результат успешного выполнения операции или успешного вычисления ограничений. | | **GCM_RESULT_ItsNotDrivingDimension** | **Размер не управляющий.** Неудачная попытка вызова **GCM_ChangeDrivingDimension**, для ограничения, не являющегося управляющим размером. | | **GCM_RESULT_Unregistered** | **Дескриптор объекта или ограничения не действителен.** Ситуация: Обращение к вызову API с дескриптором, не принадлежащем системе ограничений. | | **GCM_RESULT_Aborted** | Вычисления прерваны по запросу пользователя. | | **GCM_RESULT_InternalError** **GCM_RESULT_Error** | **Программная ошибка** (не математическая). Предусмотрена для ситуаций, связанных с некорректным завершением. операции или некорректными данными. | | Результаты вычисления системы ограничений | | | **GCM_RESULT_Satisfied** | **Ограничение или система ограничений удовлетворены**. | | **GCM_RESULT_Overconstrained** | **Ограничение переопределяет модель.** Ошибка выявляется в ситуациях, когда имеются противоречащие ограничения (несовместная система ограничений) в переопределенной системе ограничений. | | **GCM_RESULT_Unsolvable** | **Не решаемые ограничения.** Ошибка выявляется в различных случаях, когда решение не возможно. Обычно это связано с тем, что есть набор ограничений, которые не могут быть удовлетворены одновременно (несовместная система ограничений), или когда размер вышел из области допустимых значений. | | **GCM_RESULT_Not_Satisfied** | **Ограничение не удовлетворено.** Код ошибки возвращается в ситуациях, когда не удалось решить ограничения. Возможные причины неудачи: - Размер вышел за пределы значений, допускающих существование решения; - Положения фиксированных или замороженных объектов вышли за область, допускающую существования решения. - В редких случаях -- плохое начальное приближение. Удовлетворение ограничений требует значительные изменение параметрических координат; - Сильные взаимные влияния. Например, заданы такие условия, что изменение угла на один градус приводит к смещению объекта на значительные расстояние. - В редких случаях -- численная неустойчивость, обусловленная большим разбросом порядка вычисляемых координат. Например в геометрической модели одновременно встречаются микроскопические объекты (1e-3) и крупные объекты (1e+6). - В общем случае -- иные ситуации, когда решение не существует или не может быть найдено. | | **GCM_RESULT_MatedFixation** | **Задано геометрическое ограничение между фиксированными или замороженными объектами**. | | **GCM_RESULT_InvalidArguments** | **Аргументы ограничения не определены.** Ситуация некорректно определенного ограничения, когда его аргументы пустые (дескриптор аргумента = GCM_NULL). | | **GCM_RESULT_IncompatibleArguments** | **Несовместимые аргументы для данного типа ограничения.** Ситуация некорректно определенного ограничения, когда его аргументы не совместимы друг другу или данное сочетание аргументов не поддерживается. Например, попытка задать совпадение для плоскости и цилиндра. | | **GCM_RESULT_InappropriateArgument** | **Тип аргумента не подходит для данного ограничения.** Ситуация некорректно определенного ограничения, когда один из его аргументов не подходит к данному типу ограничения. Например, попытка задать параллельность для точек или сфер очевидно лишена смысла. | | **GCM_RESULT_Duplicated** | **Ограничение дублирует имеющееся.** Код сообщает, что в системе ограничений находятся два одинаковых ограничения. В принципе данная ситуация не мешает вычислению ограничений. | | GCM_RESULT_DraggingFailed | | | GCM_RESULT_InappropriateAlignment | | | GCM_RESULT_InconsistentAngleType | | | GCM_RESULT_InconsistentAlignment | | | mtResCode_UnsupportedTangencyChoice | | | mtResCode_IsNoPossibleForCircTanChoice | | | GCM_RESULT_InconsistentPlanarAngle | | | Диагностические ситуации для ограничения GCM_DEPENDED | | | GCM_RESULT_DependentConstraintUnsolved | | | GCM_RESULT_CyclicDependence | | | GCM_RESULT_MultiDependedGeom | | | GCM_RESULT_OverconstrainingDependedGeoms | | | mtResCode_InvalidDependenceForFixGeom | | | Диагностические коды для механических передач | | | mtResCode_CoaxialMtGearTransmissionIsNotAvalable | | | mtResCode_NoSeparatedSolutionForCamGear | | | mtResCode_CyclicDependenceForTwoOrMoreCamGears | | | mtResCode_InconsistentFollowerAxis | |