C3D Kernel  102057
Классы | Определения типов | Перечисления | Функции | Переменные
Базовые функции и типы данных
Геометрические ограничения трёхмерных объектов
Граф связей класса Базовые функции и типы данных:

Классы

struct  GCM_vec3d
 Координаты 3D-вектора. Подробнее...
struct  GCM_point
 Координаты точки 3D пространства. Подробнее...
struct  GCM_g_record
 Структура полей данных, представляющих геометрический объект Подробнее...
struct  GCM_extra_param
 Дополнительный параметр для функций типа #GCM_dependent_func. Подробнее...
struct  GCM_diagnostic_pars
 Диагностические характеристики системы ограничений. Подробнее...

Определения типов

typedef MtGeomSolverGCM_system
 Система геометрических ограничений.
typedef MtObjectId GCM_object
 Дескриптор геометрического объекта, зарегистрированного в контексте решателя.
typedef GCM_object GCM_geom
 Дескриптор геометрического объекта, зарегистрированного в контексте решателя.
typedef GCM_object GCM_constraint
 Дескриптор ограничения, зарегистрированного в решателе.
typedef GCM_object GCM_pattern
 Дескриптор паттерна, зарегистрированного в решателе.
typedef bool(* GCM_dependent_func )(MbPlacement3D gPlaces[], size_t gPlacesSize, GCM_extra_param exPar)
typedef GCM_dependent_func GCM_dependent_geom_func
 Alternative typename of #GCM_dependent_func.

Перечисления

enum  GCM_g_type {
  GCM_NULL_GTYPE = 0, GCM_POINT, GCM_LINE, GCM_PLANE,
  GCM_CYLINDER, GCM_CONE, GCM_SPHERE, GCM_TORUS,
  GCM_CIRCLE, GCM_LCS, GCM_MARKER, GCM_SPLINE,
  GCM_VECTOR, GCM_UNKNOWN_GTYPE, GCM_LAST_GTYPE
}
 Словарь типов геометрических примитивов. Подробнее...
enum  GCM_c_type {
  GCM_UNKNOWN = -1, GCM_COINCIDENT = 0, GCM_PARALLEL = 1, GCM_PERPENDICULAR = 2,
  GCM_TANGENT = 3, GCM_CONCENTRIC = 4, GCM_DISTANCE = 5, GCM_ANGLE = 6,
  GCM_IN_PLACE = 7, GCM_TRANSMITTION = 9, GCM_CAM_MECHANISM = 10, GCM_SYMMETRIC = 11,
  GCM_DEPENDENT = 14, GCM_PATTERNED = 15, GCM_LINEAR_PATTERN = 16, GCM_ANGULAR_PATTERN = 17,
  GCM_RADIUS = 18, GCM_LAST_CTYPE
}
 Словарь типов ограничения. Подробнее...
enum  GCM_alignment {
  GCM_MIN_ALIGNMENT = -1, GCM_OPPOSITE = -1, GCM_CLOSEST = 0, GCM_COORIENTED = 1,
  GCM_ALIGNED = 1, GCM_NO_ALIGNMENT = 2, GCM_ALIGNED_0 = 1, GCM_ALIGNED_1 = 3,
  GCM_ALIGNED_2 = 4, GCM_ALIGNED_3 = 5, GCM_REVERSE_0 = -1, GCM_REVERSE_1 = 6,
  GCM_REVERSE_2 = 7, GCM_REVERSE_3 = 8, GCM_ROTATED = 9, GCM_MAX_ALIGNMENT
}
 Варианты выравнивания направлений. Подробнее...
enum  GCM_angle_type { GCM_NONE_ANGLE = 0, GCM_2D_ANGLE = 1, GCM_3D_ANGLE = 2, GCM_PLANAR_ANGLE = GCM_2D_ANGLE }
 Вариант углового размера. Подробнее...
enum  GCM_tan_choice { GCM_TAN_NONE = 0x00, GCM_TAN_POINT = 0x01, GCM_TAN_LINE = 0x02, GCM_TAN_CIRCLE = 0x04 }
 Варианты касания поверхностей или кривых. Подробнее...
enum  GCM_result {
  GCM_RESULT_None = 0, GCM_RESULT_Ok = 1, GCM_RESULT_Satisfied = GCM_RESULT_Ok, GCM_RESULT_Overconstrained = 2,
  GCM_RESULT_MatedFixation = 3, GCM_RESULT_DraggingFailed = 4, GCM_RESULT_Not_Satisfied = 5, GCM_RESULT_Unsolvable = 6,
  GCM_RESULT_Error = 8, GCM_RESULT_InappropriateAlignment = 9, GCM_RESULT_InappropriateArgument = 10, GCM_RESULT_IncompatibleArguments = 3001,
  GCM_RESULT_InconsistentAngleType, GCM_RESULT_InconsistentAlignment, GCM_RESULT_Duplicated, mtResCode_CyclicDependence,
  mtResCode_InvalidDependenceForOutGeom, mtResCode_InvalidDependenceForOutGeoms, mtResCode_InvalidDependenceForFixGeom, GCM_RESULT_InvalidArguments,
  mtResCode_UnsupportedTangencyChoice, mtResCode_IsNoPossibleForCircTanChoice, mtResCode_CoaxialMtGearTransmissionIsNotAvalable, mtResCode_NoSeparatedSolutionForCamGear,
  mtResCode_CyclicDependenceForTwoOrMoreCamGears, mtResCode_InconsistentFollowerAxis, GCM_RESULT_InconsistentPlanarAngle, GCM_RESULT_ItsNotDrivingDimension,
  GCM_RESULT_InternalError, GCM_RESULT_Last_
}
 Коды ошибок 3d-решателя. Подробнее...
enum  GCM_dependency { GCM_NO_DEPENDENCY = 0, GCM_1ST_DEPENDENT = 2, GCM_2ND_DEPENDENT = 1 }
 Характер зависимости пары тел (geoms) Подробнее...
enum  GCM_scale { GCM_NO_SCALE = 0, GCM_RIGID = 1, GCM_LINEAR_SCALE = 2 }
 Тип связи между элементами в паттерне. Подробнее...

Функции

GCM_system GCM_CreateSystem ()
 Создать пустую систему ограничений.
void GCM_ClearSystem (GCM_system gSys)
 Сделать систему ограничений пустой.
void GCM_RemoveSystem (GCM_system gSys)
 Удалить систему ограничений.
bool GCM_ReadSystem (GCM_system gSys, reader &in)
 Читать систему ограничений из потока
bool GCM_WriteSystem (GCM_system gSys, writer &out)
 Запись системы ограничений в поток
GCM_g_record GCM_NullGeom ()
 Выдать запись пустого геометрического объекта.
GCM_g_record GCM_Point (const MbCartPoint3D &)
 Выдать запись точки из типа MbCartPoint3D в типе GCM_g_record.
GCM_g_record GCM_Line (const MbCartPoint3D &org, const MbVector3D &axisZ)
 Запись прямой, заданной её точкой и направляющим вектором.
GCM_g_record GCM_Plane (const MbCartPoint3D &org, const MbVector3D &axisZ)
 Запись плоскости, заданной точкой и нормалью.
GCM_g_record GCM_Cone (const MbCartPoint3D &centre, const MbVector3D &axis, double radiusA, double radiusB)
 Получить запись конуса по заданному набору параметров.
GCM_g_record GCM_Cylinder (const MbCartPoint3D &centre, const MbVector3D &axis, double radius)
 Получить запись цилиндра по заданному набору параметров.
GCM_g_record GCM_Circle (const MbCartPoint3D &centre, const MbVector3D &axis, double radius)
 Получить запись окружности, заданной набором параметров.
GCM_g_record GCM_Torus (const MbCartPoint3D &centre, const MbVector3D &axis, double majorR, double minorR)
GCM_g_record GCM_Sphere (const MbCartPoint3D &centre, double radius)
 Получить запись данных о сфере, заданной центром и радиусом.
GCM_g_record GCM_SolidLCS (const MbCartPoint3D &org, const MbVector3D &axisZ=MbVector3D::zAxis, const MbVector3D &axisX=MbVector3D::xAxis)
 Получить запись данных твердого тела, заданной началом координат и осями Z, X.
GCM_g_record GCM_SolidLCS (const MbPlacement3D &)
 Получить запись данных системы координат твердого тела.
GCM_geom GCM_AddPoint (GCM_system gSys, const MbCartPoint3D &pVal)
 Добавить в систему ограничений точку.
GCM_geom GCM_AddGeom (GCM_system gSys, const GCM_g_record &gRec)
 Добавить в систему ограничений геометрический объект.
GCM_geom GCM_AddGeom (GCM_system gSys, GCM_g_type gType, const MbMatrix3D &gMat, double radiusA, double radiusB)
 Добавить в систему ограничений геометрический объект.
GCM_geom GCM_SubGeom (GCM_system gSys, GCM_geom sol, const GCM_g_record &gRec)
 Добавить в подсистему твердого тела (кластера) подчиненный геометрический объект.
GCM_geom GCM_Parent (GCM_system gSys, GCM_geom subGeom)
 Выдать кластер (тело), в который включен данный геометрический объект.
GCM_g_type GCM_GeomType (GCM_system gSys, GCM_geom g)
 Тип геометрического объекта.
void GCM_RemoveGeom (GCM_system gSys, GCM_geom g)
 Удалить геометрический объект из системы ограничений.
GCM_constraint GCM_AddBinConstraint (GCM_system gSys, GCM_c_type cType, GCM_geom g1, GCM_geom g2, GCM_alignment aVal=GCM_CLOSEST, GCM_tan_choice tVar=GCM_TAN_POINT)
 Задать бинарное ограничение для пары геометрических объектов.
GCM_constraint GCM_AddDistance (GCM_system gSys, GCM_geom g1, GCM_geom g2, double dVal, GCM_alignment aVal=GCM_CLOSEST)
 Задать ограничение, устанавливающее расстояние между парой геометрических объектов.
GCM_constraint GCM_AddAngle (GCM_system gSys, GCM_geom g1, GCM_geom g2, GCM_geom axis, double dVal)
 Задать ограничение, устанавливающее угол между двумя геометрическими объектами.
GCM_constraint GCM_AddAngle (GCM_system gSys, GCM_geom g1, GCM_geom g2, double dVal)
GCM_constraint GCM_FixRadius (GCM_system gSys, GCM_geom g1)
 Задать ограничение, устанавливающее радиус геометрического объекта.
GCM_constraint GCM_AddPlanarAngle (GCM_system gSys, GCM_geom g1, GCM_geom g2, GCM_geom axis, double dVal)
 Задать управляющий планарный угол между двумя геометрическими объектами.
GCM_constraint GCM_AddSymmeric (GCM_system gSys, GCM_geom g1, GCM_geom g2, GCM_geom plane, GCM_alignment aVal=GCM_NO_ALIGNMENT)
GCM_pattern GCM_AddLinearPattern (GCM_system gSys, GCM_geom g1, GCM_geom g2)
 Задать линейный паттерн.
GCM_pattern GCM_AddAngularPattern (GCM_system gSys, GCM_geom g1, GCM_geom g2)
 Задать угловой паттерн.
GCM_constraint GCM_AddGeomToPattern (GCM_system gSys, GCM_pattern ptrn, GCM_geom geom, double position, GCM_alignment align=GCM_NO_ALIGNMENT, GCM_scale scale=GCM_RIGID)
 Добавить геометрический объект в паттерн.
GCM_constraint GCM_AddConstraint (GCM_system gSys, const GCM_c_record &cRec)
 Задать ограничение.
GCM_geom GCM_SetDependent (GCM_system gSys, GCM_constraint con, GCM_geom g)
void GCM_RemoveConstraint (GCM_system gSys, GCM_constraint con)
 Удалить ограничение из системы.
GCM_constraint GCM_FixGeom_ (GCM_system gSys, GCM_geom g)
void GCM_FixGeom (GCM_system gSys, GCM_geom g)
 Сделать геометрический объект неподвижным.
void GCM_FreeGeom (GCM_system gSys, GCM_geom g)
 Освободить объект, зафиксированный методом GCM_FixGeom.
bool GCM_IsFixed (GCM_system gSys, GCM_geom g)
 Вернет true, если геометрический объект был зафиксирован методом GCM_FixGeom.
GCM_result GCM_Evaluate (GCM_system gSys)
 Вычислить систему ограничений.
GCM_result GCM_EvaluationResult (GCM_system gSys, GCM_constraint cItem)
 Получить код результата вычисления ограничения.
bool GCM_IsSatisfied (GCM_system gSys, GCM_constraint cItem)
 Выполнить проверку удовлетворенности ограничения.
MbPlacement3D GCM_Placement (GCM_system gSys, GCM_geom g)
 Выдать текущее положение (решение) геометрического объекта.
double GCM_Radius (GCM_system gSys, GCM_geom g)
 Выдать текущее значение радиуса геометрического объекта.
GCM_result GCM_ChangeDrivingDimension (GCM_system gSys, GCM_constraint dItem, double dVal)
 Изменить значение управляющего размера.
void GCM_SetPlacement (GCM_system gSys, GCM_geom g, const MbPlacement3D &place)
 Задать текущее положение геометрического объекта. Эта функция только придает объекту новое состояние без переоценки системы ограничений. Вызов GCM_Evaluate может поменять заданное состояние, если имеются не удовлетворенные ограничения.
bool GCM_SetJournal (GCM_system gSys, const char *fName)
 Включить журналирование и назначить файл для записи журнала вызовов API.

Переменные

const GCM_object GCM_NULL = _GCM_NULL
 Дескриптор пустого объекта или ограничения.
const GCM_geom GCM_GROUND = _GCM_GROUND
 Дескриптор неподвижного подмножества объектов, заданных в глобальной системой координат.

Перечисления

enum GCM_g_type
Элементы перечислений:
GCM_NULL_GTYPE 

Пустой геометрический объект.

GCM_POINT 

Точка.

GCM_LINE 

Прямая.

GCM_PLANE 

Плоскость.

GCM_CYLINDER 

Цилиндр.

GCM_CONE 

Конус.

GCM_SPHERE 

Сферическая поверхность.

GCM_TORUS 

Тороидальная поверхность.

GCM_CIRCLE 

Окружность.

GCM_LCS 

Система координат.

GCM_MARKER 

Точка и пара ортонормированных векторов.

GCM_SPLINE 

Сплайновая кривая.

enum GCM_c_type
Заметки:
Значения этого перечисления могут быть использованы для постоянного хранения и останутся неизменными в следующих версиях.
Элементы перечислений:
GCM_UNKNOWN 

Не определенный тип.

GCM_COINCIDENT 

Геометрическое совпадение.

GCM_PARALLEL 

Параллельность двух объектов, имеющих направление.

GCM_PERPENDICULAR 

Перпендикулярность двух объектов, имеющих направление.

GCM_TANGENT 

Касание двух поверхностей или кривых.

GCM_CONCENTRIC 

Концентричность двух объектов, имеющих ось или центр.

GCM_DISTANCE 

Линейное размер между объектами.

GCM_ANGLE 

Угловой размер между векторными объектами.

GCM_IN_PLACE 

Точное совпадение ЛСК двух плоскостей.

GCM_TRANSMITTION 

Механическая передача.

GCM_CAM_MECHANISM 

Кулачковый механизм.

GCM_SYMMETRIC 

Симметричность.

GCM_DEPENDENT 

Зависимый объект.

GCM_PATTERNED 

Элемент паттерна.

GCM_LINEAR_PATTERN 

Линейный паттерн.

GCM_ANGULAR_PATTERN 

Угловой паттерн.

GCM_RADIUS 

Радиальный размер.

Заметки:
Значения этого перечисления могут быть использованы для постоянного хранения и останутся неизменными в следующих версиях.
Элементы перечислений:
GCM_OPPOSITE 

Противонаправленные.

GCM_CLOSEST 

Ориентация согласно ближайшего решения.

GCM_COORIENTED 

Сонаправленные.

GCM_ALIGNED 

ЛСК с одинаковой ориентацией.

GCM_NO_ALIGNMENT 

Нет определенной ориентации.

Заметки:
Значения этого перечисления могут быть использованы для постоянного хранения данных приложения и останутся неизменными в следующих версиях.
Элементы перечислений:
GCM_NONE_ANGLE 

Неопределен

GCM_2D_ANGLE 

Угол для планарных соединений (0 .. 360 градусов)

GCM_3D_ANGLE 

Угол в пространстве (0 .. 180 градусов)

Заметки:
Значения этого перечисления могут быть использованы для постоянного хранения данных приложения и останутся неизменными в следующих версиях.
Элементы перечислений:
GCM_TAN_NONE 

Не выбрано.

GCM_TAN_POINT 

Касание в общем случае (контакт точкой).

GCM_TAN_LINE 

Касание по образующей прямой (например два цилиндра с параллельными осями).

GCM_TAN_CIRCLE 

Касание по окружности (например сфера в конусе).

enum GCM_result
Заметки:
Значения этого перечисления могут быть использованы для постоянного хранения данных приложения и останутся неизменными в следующих версиях.
Элементы перечислений:
GCM_RESULT_None 

Нет сообщений от решателя (нет реализованных решений, программа что-то не умеет решать ).

GCM_RESULT_Ok 

Успешный результат.

GCM_RESULT_Satisfied 

Ограничение решено.

GCM_RESULT_Overconstrained 

Ограничение переопределяет систему и противоречит другим условиям.

GCM_RESULT_MatedFixation 

Заданы ограничения для пары фиксированных объектов.

GCM_RESULT_DraggingFailed 

Неудачная попытка перемещения фиксированного объекта (равно, как объекта жестко-связанного с фиксированным).

GCM_RESULT_Not_Satisfied 

Ограничение(я) не решено (по неизвестным причинам).

GCM_RESULT_Unsolvable 

Ограничение(я) не разрешимо.

GCM_RESULT_Error 

Неизвестная ошибка, как правило, не связанная с процессом решения.

GCM_RESULT_InappropriateAlignment 

Опция выравнивания не подходит для данного типа ограничения.

GCM_RESULT_InappropriateArgument 

Геометрический тип аргумента не подходит для данного ограничения.

GCM_RESULT_IncompatibleArguments 

Несовместные типы аргументов ограничения.

GCM_RESULT_InconsistentAngleType 

Угловая опция несовместима со степенью свободы соединения (планарный тип угла применим только для соединения, оставляющего единственную степень свободы вращения).

GCM_RESULT_InconsistentAlignment 

Величина ориентации несовместна с другими сопряжениями.

GCM_RESULT_Duplicated 

Ограничение дублирует другое.

mtResCode_CyclicDependence 

Неразрешимая циклическая зависимость.

mtResCode_InvalidDependenceForOutGeom 

Задана входящая зависимость для выходного объекта черного ящика;.

mtResCode_InvalidDependenceForOutGeoms 

Задана зависимость между экземплярами массива (выходными);.

mtResCode_InvalidDependenceForFixGeom 

Задана зависимость между экз.массива и фиксированным компонентом;.

GCM_RESULT_InvalidArguments 

В ограничении не заданы аргументы (пустые аргументы).

mtResCode_UnsupportedTangencyChoice 

Для сопряжения касание - опция выбора по окружности или по образующей не поддреживается

mtResCode_IsNoPossibleForCircTanChoice 

Для данной пары поверхностей касание по окружности геометрически не возможно

mtResCode_CoaxialMtGearTransmissionIsNotAvalable 

Механическая передача вращения компонентов с совпадающими осями не поддерживается

mtResCode_NoSeparatedSolutionForCamGear 

В сборке присутствуют сопряжения (геометрические условия), создающие зависимость движения толкателя от движения кулачка, помимо самого кулачкового механизма

mtResCode_CyclicDependenceForTwoOrMoreCamGears 

Задана циклическая зависимость для двух или более кулачковых механизмов

mtResCode_InconsistentFollowerAxis 

Заданные сопряжения для толкателя не соответствую его оси движения

GCM_RESULT_InconsistentPlanarAngle 

Не соблюдаются условия планарного угла (векторы сторон угла должны быть перпендикулярны оси).

GCM_RESULT_ItsNotDrivingDimension 

Данное ограничение должно быть управляющим размерным.

Элементы перечислений:
GCM_NO_DEPENDENCY 

Нет односторонней зависимости.

GCM_1ST_DEPENDENT 

Первый объект зависит от другого(других).

GCM_2ND_DEPENDENT 

Второй объект зависит от другого(других).

enum GCM_scale
Элементы перечислений:
GCM_RIGID 

Шаг между элементами константен. Паттерн не масштабируется (не растягивается).

GCM_LINEAR_SCALE 

Шаг между элементами линейно масштабируется при растяжениях.


Функции

GCM_system GCM_CreateSystem ( )

Вызов создает пустую систему ограничений. Кроме того, в памяти создаются внутренние структуры данных геометрического решателя, обслуживающего систему ограничений. Функция возвращает специальный дескриптор, по которому система ограничений доступна для различных манипуляций: добавление или удаление геометрических объектов, ограничений, варьирование размеров, драггинг недоопределенных объектов и т.д.

Возвращает:
Дескриптор системы ограничений.
void GCM_ClearSystem ( GCM_system  gSys)

Данный метод делает систему ограничений пустой при этом дескриптор gSys остается действительным, т.е. можно осуществлять дальнейшую работу с системой ограничений.

Аргументы:
[in]gSys- Система ограничений.
См. также:
GCM_RemoveSystem
void GCM_RemoveSystem ( GCM_system  gSys)

Данный метод делает систему ограничений недействительной. Осуществляется освобождение ОЗУ от внутренних структур данных, обслуживающих систему ограничений.

Аргументы:
[in]gSys- Система ограничений.
См. также:
GCM_ClearSystem
bool GCM_ReadSystem ( GCM_system  gSys,
reader in 
)
Аргументы:
[in]gSys- Система ограничений.
[in]in- Поток для чтения.
bool GCM_WriteSystem ( GCM_system  gSys,
writer out 
)
Аргументы:
[in]gSys- Система ограничений.
[in]out- Поток для записи.
GCM_g_record GCM_Cone ( const MbCartPoint3D centre,
const MbVector3D axis,
double  radiusA,
double  radiusB 
)
Аргументы:
[in]centre- Центр окружности-основания конуса.
[in]axis- Направляющий вектор оси конуса.
[in]radiusA- Радиус основания конуса.
[in]radiusB- Радиус сечения конуса ("малый" радиус).
Возвращает:
Запись конуса.

Предполагается, что параметры конуса описывают воображаемый усеченный конус, высота которого всегда равна единице длины. При этом radiusA - это радиус основания конуса, а radiusB - радиус его сечения.

GCM_g_record GCM_Cylinder ( const MbCartPoint3D centre,
const MbVector3D axis,
double  radius 
)
Аргументы:
[in]centre- Центр окружности-основания цилиндра.
[in]axis- Направляющий вектор оси цилиндра.
[in]radius- Радиус основания цилиндра.
Возвращает:
Запись цилиндра.
GCM_g_record GCM_Circle ( const MbCartPoint3D centre,
const MbVector3D axis,
double  radius 
)
Аргументы:
[in]centre- Центр окружности.
[in]axis- Направляющий вектор оси окружности.
[in]radius- Радиус окружности.
Возвращает:
Запись данных об окружности.
GCM_g_record GCM_Sphere ( const MbCartPoint3D centre,
double  radius 
)
Аргументы:
[in]centre- Центр сферы.
[in]radius- Радиус сферы.
Возвращает:
Запись данных о сфере.
GCM_g_record GCM_SolidLCS ( const MbCartPoint3D org,
const MbVector3D axisZ = MbVector3D::zAxis,
const MbVector3D axisX = MbVector3D::xAxis 
)

Результат, который возвращает данная функция, используется для задания в системе ограничений твердого тела (кластера) с помощью вызовов GCM_AddGeom или GCM_SubGeom.

GCM_g_record GCM_SolidLCS ( const MbPlacement3D )

Результат, который возвращает данная функция, используется для задания в системе ограничений твердого тела (кластера) с помощью вызовов GCM_AddGeom или GCM_SubGeom.

GCM_geom GCM_AddPoint ( GCM_system  gSys,
const MbCartPoint3D pVal 
)
Аргументы:
[in]gSys- Система ограничений.
[in]pVal- Координаты точки.
Возвращает:
Дескриптор зарегистрированной точки.
GCM_geom GCM_AddGeom ( GCM_system  gSys,
const GCM_g_record gRec 
)
Аргументы:
[in]gSys- Система ограничений.
[in]gRec- Запись геометрического объекта.
Возвращает:
Дескриптор зарегистрированного объекта.
GCM_geom GCM_AddGeom ( GCM_system  gSys,
GCM_g_type  gType,
const MbMatrix3D gMat,
double  radiusA,
double  radiusB 
)
Аргументы:
[in]gSys- Система ограничений.
[in]gType- Тип геометрического объекта.
[in]gMat- Прямая матрица ЛСК объекта.
[in]radiusA- Радиус окружности, цилиндра, сферы, а также "мажорный" радиус конуса и тора.
[in]radiusB- "Минорный" радиус конуса или тора.
Возвращает:
Дескриптор зарегистрированного объекта.
GCM_geom GCM_SubGeom ( GCM_system  gSys,
GCM_geom  sol,
const GCM_g_record gRec 
)
Аргументы:
[in]gSys- Система ограничений.
[in]sol- Твердое тело или кластер.
[in]gRec- Запись геометрического подчиненного объекта, заданного в ЛСК тела.
Возвращает:
Дескриптор подчиненного объекта из подмножества тела.
GCM_geom GCM_Parent ( GCM_system  gSys,
GCM_geom  subGeom 
)
Аргументы:
[in]gSys- Система ограничений.
[in]subGeom- Геометрический объект, принадлежащий кластеру.
Возвращает:
Дескриптор кластера, которому принадлежит данный геометрический объект.
GCM_g_type GCM_GeomType ( GCM_system  gSys,
GCM_geom  g 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор геометрического объекта.
Возвращает:
Геометрический тип объекта.
void GCM_RemoveGeom ( GCM_system  gSys,
GCM_geom  g 
)
Аргументы:
gSys- Система ограничений.
g- Дескриптор геометрического объекта.

После применения этой функции дескриптор объекта становится недействительным. Надо заметить, что удаляемый геометрический объект может все еще участвовать в других объектах и ограничениях. В этом случае удаляемый объект, хотя и считается удаленным, фактически продолжает действовать до тех пор, пока другие объекты, связанные с ним, не будут удалены.

GCM_constraint GCM_AddBinConstraint ( GCM_system  gSys,
GCM_c_type  cType,
GCM_geom  g1,
GCM_geom  g2,
GCM_alignment  aVal = GCM_CLOSEST,
GCM_tan_choice  tVar = GCM_TAN_POINT 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g1- Дескриптор первого объекта.
[in]g2- Дескриптор второго объекта.
[in]aVal- Опция выравнивания.
[in]tVar- Вариант касания для ограничения c типом 'GCM_TANGENT'.
Возвращает:
Дескриптор нового ограничения.

Эта функция применяется для задания в системе бинарного ограничения любого типа кроме размерных, а именно ограничения следующих типов: GCM_COINCIDENT, GCM_PARALLEL, GCM_PERPENDICULAR, GCM_TANGENT, GCM_CONCENTRIC, GCM_IN_PLACE. В случае неудавшегося вызова, функция вернет дескриптор пустого объекта GCM_NULL.

GCM_constraint GCM_AddDistance ( GCM_system  gSys,
GCM_geom  g1,
GCM_geom  g2,
double  dVal,
GCM_alignment  aVal = GCM_CLOSEST 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g1- Дескриптор первого объекта.
[in]g2- Дескриптор второго объекта.
[in]dVal- Значение размера.
[in]aVal- Опция выравнивания.
Возвращает:
Дескриптор нового ограничения c типом GCM_DISTANCE.

Эта функция создает в системе размерное ограничение с типом GCM_DISTANCE, которое задает линейный размер между двумя геометрическими объектами. В случае неудачного вызова, функция вернет дескриптор пустого объекта GCM_NULL.

Заметки:
Значение dVal может быть знакопеременным для ориентируемых объектов.
GCM_constraint GCM_AddAngle ( GCM_system  gSys,
GCM_geom  g1,
GCM_geom  g2,
GCM_geom  axis,
double  dVal 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g1- Дескриптор первого объекта.
[in]g2- Дескриптор второго объекта.
[in]axis- Дескриптор объекта, задающего ось вращения угла. Может быть = GCM_NULL.
[in]dVal- Значение размера (радианы).
Возвращает:
Дескриптор нового ограничения c типом GCM_ANGLE.

Эта функция создает в системе размерное ограничение с типом GCM_ANGLE, которое задает угол между направлениями двух геометрических объектов. Если ось вращения axis задана (т.е. != GCM_NULL), то угол имеет планарный способ измерения (0 ... 2пи). В этом случае направления 'g1' и 'g2' обязаны лежать в плоскости с нормалью заданной осью axis (оба направления перпендикулярны оси). В случае неудавшегося вызова, функция вернет дескриптор пустого объекта GCM_NULL.

GCM_constraint GCM_FixRadius ( GCM_system  gSys,
GCM_geom  g1 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g1- Дескриптор геометрического объекта, обладающего ненулевым радиусом.
Возвращает:
Дескриптор нового ограничения c типом GCM_RADIUS.

Эта функция позволяет задать радиус геометрического объекта. Изменить величину радиуса можно с помощью функции GCM_ChangeDrivingDimension. Удаляется радиальный размер вызовом функции GCM_RemoveConstraint. В случае неудачного вызова, функция вернет дескриптор пустого объекта GCM_NULL.

GCM_constraint GCM_AddPlanarAngle ( GCM_system  gSys,
GCM_geom  g1,
GCM_geom  g2,
GCM_geom  axis,
double  dVal 
)

Функция аналогична вызову GCM_AddAngle, однако требует ось 'axis', задающую плоскость откладывания угла.

GCM_pattern GCM_AddLinearPattern ( GCM_system  gSys,
GCM_geom  g1,
GCM_geom  g2 
)

Ограничение "Линейный Паттерн" задаёт закон, согласно которому группа геометрических объектов, добавленных в этот паттерн с помощью функции GCM_AddGeomToPattern, располагается на заданной прямой. Кроме направляющей прямой, для создания Линейного Паттерна требуется задать геометрический объект, называемый образцом. Этот объект определяет начало координат (нулевую точку) направляющей прямой. Таким образом в системе координат направляющей прямой Линейного Паттерна образец всегда остаётся неподвижным относительно любых трансляций, поворотов и деформаций. Положение любого добавляемого в паттерн объекта (копии) определяется его положением на прямой, направленной вдоль заданной оси, началом координат которой является начало координат ЛСК образца.

Порядок удаления
Чтобы удалить Линейный Паттерн целиком нужно воспользоваться функцией GCM_RemoveConstraint. При этом не требуется удалять ограничения, созданные при добавлении новых элементов в паттерн с помощью функции GCM_AddGeomToPattern: они будут удалены автоматически.
Аргументы:
[in]gSys- Система ограничений.
[in]g1- Дескриптор образца.
[in]g2- Дескриптор направляющей оси линейного паттерна.
[in]scale- Тип масштабирования линейного паттерна (в настоящий момент можно создать Линейный Паттерн только с константными расстояниями между его элементами).
Возвращает:
Дескриптор нового ограничения c типом GCM_LINEAR_PATTERN.
GCM_pattern GCM_AddAngularPattern ( GCM_system  gSys,
GCM_geom  g1,
GCM_geom  g2 
)

Ограничение "Угловой Паттерн" задаёт закон, согласно которому группа геометрических объектов, добавленных в этот паттерн с помощью функции GCM_AddGeomToPattern, располагается на некоторой окружности. Окружность эта лежит в плоскости перпендикулярной заданной оси, а центр окружности лежит на этой оси. Кроме оси вращения для создания Углового Паттерна требуется задать геометрический объект, называемый образцом. Этот объект определяет нулевой угол и начальный радиус окружности. Таким образом положение любого добавляемого в паттерн объекта (копии) определяется вращением вокруг заданной оси, начиная от образца. При этом радиус окружности (расстояние от копии или образца до оси) не не является константой и может варьироваться (изменяться) в ходе решения.

Порядок удаления
Чтобы удалить Угловой Паттерн целиком нужно воспользоваться функцией GCM_RemoveConstraint. При этом не требуется удалять ограничения, созданные при добавлении новых элементов в паттерн с помощью GCM_AddGeomToPattern: они будут удалены автоматически.
Аргументы:
[in]gSys- Система ограничений.
[in]g1- Дескриптор образца.
[in]g2- Дескриптор оси вращения углового паттерна.
[in]scale- Тип масштабирования Углового Паттерна (в настоящий момент можно создать Угловой Паттерн только с константными углами между его элементами).
Возвращает:
Дескриптор нового ограничения c типом GCM_ANGULAR_PATTERN.
GCM_constraint GCM_AddGeomToPattern ( GCM_system  gSys,
GCM_pattern  ptrn,
GCM_geom  geom,
double  position,
GCM_alignment  align = GCM_NO_ALIGNMENT,
GCM_scale  scale = GCM_RIGID 
)

Объект, добавляемый в паттерн, назовём копией. Если копия добавляется в Линейный Паттерн, то требуется указать расстояние от копии до образца. Оно может быть положительным или отрицательным и определяется требуемым положением копии относительно образца с учётом направляющей оси. Так же можно опционально задать выравнивание ЛСК копии относительно ЛСК образца. Если копия добавляется в Угловой Паттерн, то требуется указать угол поворота копии относительно образца, вокруг оси вращения паттерна. Так же можно опционально задать выравнивание копии относительно образца. Возможны 2 типа выравнивания: GCM_ALIGNED - выравнивание ЛСК копии и образца и GCM_ROTATED - выравнивание ЛСК копии с ЛСК образца, повёрнутого вокруг оси вращения на тот же угол, что и копия.

Порядок удаления.
Чтобы удалить копию из паттерна используйте функцию GCM_RemoveConstraint. Если же вам надо удалить паттерн целиком, то вам не требуется удалять каждую копию из паттерна, просто удалите паттерн.
Аргументы:
[in]gSys- Система ограничений.
[in]ptrn- Дескриптор паттерна, в который добавляем копию.
[in]geom- Дескриптор добавляемого геометрического объекта (копии).
[in]position- Переменная, задающая положение добавляемой копии в паттерне (расстояние или угол).
[in]align- Опция, задающая выравнивание копии по отношению к образцу.
Возвращает:
Дескриптор нового ограничения c типом GCM_PATTERNED.
GCM_constraint GCM_AddConstraint ( GCM_system  gSys,
const GCM_c_record cRec 
)
Аргументы:
[in]gSys- Система ограничений.
[in]cRec- Унифицированная запись ограничения.
Возвращает:
Дескриптор нового ограничения.

Эта функция применяется только для автоматического тестирования решателя, поэтому подробно не документировалась.

void GCM_RemoveConstraint ( GCM_system  gSys,
GCM_constraint  con 
)
Аргументы:
[in]gSys- Система ограничений.
[in]con- Дескриптор ограничения.
void GCM_FixGeom ( GCM_system  gSys,
GCM_geom  g 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор геометрического объекта.

Эта функция делает объект неподвижным лишая его всех степеней свобод. Если геометрический объект является суб-объектом тела (кластера), то объект замораживается только в рамках кластера, однако в глобальной системе координат объект имеет такую же свободу как и кластер, которому он принадлежит.

Заметки:
На будущее планируется, что данная функция будет возвращать дескриптор ограничения.
См. также:
GCM_FreeGeom, GCM_IsFixed
void GCM_FreeGeom ( GCM_system  gSys,
GCM_geom  g 
)
См. также:
GCM_FixGeom, GCM_IsFixed
bool GCM_IsFixed ( GCM_system  gSys,
GCM_geom  g 
)
См. также:
GCM_FreeGeom, GCM_FixGeom
GCM_result GCM_Evaluate ( GCM_system  gSys)
Аргументы:
[in]gSys- Система ограничений.
Возвращает:
Код результата вычислений.

Функция решает задачу ограничений. Задача ограничений формулируется функциями API геометрического решателя; функции вида GCM_Add_XXXXXXX добавляют новые объекты, функции вида GCM_Change_XXXXXXX, GCM_Set_XXXXXXX изменяют состояние объектов. Таким образом, что бы все такие изменения вступили в силу, нужно вызвать метод GCM_Evaluate.
Алгоритмы GCM_Evaluate учитывают удовлетворенность систем ограничений; если все ограничения уже решены, то функция не тратит время на вычисления, а состояние геометрических объектов остается неизменным.

GCM_result GCM_EvaluationResult ( GCM_system  gSys,
GCM_constraint  cItem 
)
Аргументы:
[in]gSys- Система ограничений.
[in]cItem- Дескриптор ограничения, принадлежащего системе gSys.
Заметки:
Если система еще не вычислялась, то функция вернет код GCM_RESULT_None.
Возвращает:
Диагностический код хранящийся в системе после последней вызова GCM_Evaluate.
bool GCM_IsSatisfied ( GCM_system  gSys,
GCM_constraint  cItem 
)
Аргументы:
[in]gSys- Система ограничений.
[in]cItem- Дескриптор ограничения.
Возвращает:
true, если ограничение удовлетворено.
GCM_result GCM_ChangeDrivingDimension ( GCM_system  gSys,
GCM_constraint  dItem,
double  dVal 
)
Аргументы:
[in]gSys- Система ограничений.
[in]dItem- Дескриптор размерного ограничения.
[in]dVal- Требуемое значение размера.
Возвращает:
Код результата операции.

Функция применяется только для управляющих размеров. Если управляющий размер является угловым, то параметр dVal задается в радианах.
Следует учитывать, что настоящая функция не осуществляет вычислений, а только подготавливает изменение размера. Что бы изменения вступили в силу, необходимо вызвать функцию GCE_Evaluate.

bool GCM_SetJournal ( GCM_system  gSys,
const char *  fName 
)
Аргументы:
[in]gSys- Система ограничений.
[in]fName- Имя файла назначения с полным путем.
Возвращает:
true, if journaling has been successfully switched on.
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы