C3D Toolkit  Kernel - 107186, Vision - 190715.107186
+ Граф связей класса Базовые функции и типы данных:

Классы

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

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

typedef bool(* GCM_abort) ()
 Query to interrupt calculations.
 
typedef MtGeomSolverGCM_system
 Система геометрических ограничений.
 
typedef MtObjectId GCM_object
 Дескриптор геометрического объекта, зарегистрированного в контексте решателя.
 
typedef GCM_object GCM_geom
 Дескриптор геометрического объекта, зарегистрированного в контексте решателя.
 
typedef GCM_object GCM_constraint
 Дескриптор ограничения, зарегистрированного в решателе.
 
typedef GCM_object GCM_pattern
 Дескриптор паттерна, зарегистрированного в решателе.
 
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
}
 Словарь типов геометрических примитивов. Подробнее...
 
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_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
}
 Словарь типов ограничения. Подробнее...
 
enum  GCM_alignment { ,
  GCM_OPPOSITE = -1, GCM_CLOSEST = 0, GCM_COORIENTED = 1, GCM_NO_ALIGNMENT = 2 ,
  GCM_ALIGNED = 1, GCM_ROTATED = 9, GCM_ALIGN_WITH_AXIAL_GEOM = 10
}
 Варианты выравнивания направлений. Подробнее...
 
enum  GCM_angle_type { GCM_NONE_ANGLE = 0, GCM_2D_ANGLE = 1, GCM_3D_ANGLE = 2 }
 Вариант углового размера. Подробнее...
 
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, GCM_RESULT_CyclicDependence,
  GCM_RESULT_MultiDependedGeom, GCM_RESULT_OverconstrainingDependedGeoms, GCM_RESULT_DependedGeomCantBeFixed, GCM_RESULT_InvalidArguments,
  mtResCode_UnsupportedTangencyChoice, mtResCode_IsNoPossibleForCircTanChoice, mtResCode_CoaxialMtGearTransmissionIsNotAvalable, mtResCode_NoSeparatedSolutionForCamGear,
  mtResCode_CyclicDependenceForTwoOrMoreCamGears, mtResCode_InconsistentFollowerAxis, GCM_RESULT_InconsistentPlanarAngle, GCM_RESULT_ItsNotDrivingDimension,
  GCM_RESULT_Unregistered , GCM_RESULT_Aborted
}
 Диагностические коды 3d-решателя. Подробнее...
 
enum  GCM_dependency { GCM_NO_DEPENDENCY = 0, GCM_1ST_DEPENDENT = 2, GCM_2ND_DEPENDENT = 1 }
 Характер зависимости пары тел (geoms) Подробнее...
 
enum  GCM_scale { , GCM_RIGID = 1, GCM_LINEAR_SCALE = 2 }
 Тип связи между элементами в паттерне. Подробнее...
 
enum  GCM_reposition { GCM_REPOSITION_FreeRotation, GCM_REPOSITION_FreeMoving, GCM_REPOSITION_Dragging, GCM_REPOSITION_Rotation }
 Режим поведения при манипулировании недоопределенной системой. Подробнее...
 

Функции

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)
 Запись системы ограничений в поток Подробнее...
 
void GCM_SetCallback (GCM_system gSys, GCM_abort cbFunc)
 Назначить функцию прерывания вычислений Подробнее...
 
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)
 Вернет true, если объект все еще действительный. Подробнее...
 
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_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_pattern GCM_AddLinearPattern (GCM_system gSys, GCM_geom g1, GCM_geom g2, GCM_alignment align=GCM_NO_ALIGNMENT)
 Задать линейный паттерн. Подробнее...
 
GCM_pattern GCM_AddAngularPattern (GCM_system gSys, GCM_geom smp, GCM_geom axial, GCM_alignment align=GCM_NO_ALIGNMENT)
 Задать угловой паттерн. Подробнее...
 
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)
 Задать ограничение. Подробнее...
 
void GCM_RemoveConstraint (GCM_system gSys, GCM_constraint con)
 Удалить ограничение из системы. Подробнее...
 
bool GCM_FreezeGeom (GCM_system gSys, GCM_geom g)
 Сделать геометрический объект неподвижным. Подробнее...
 
void GCM_FreeGeom (GCM_system gSys, GCM_geom g)
 Освободить объект, зафиксированный методом GCM_FreezeGeom. Подробнее...
 
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)
 Выдать текущее положение (решение) геометрического объекта.
 
MbCartPoint3D GCM_Origin (GCM_system gSys, GCM_geom g)
 Выдать начало СК геометрического объекта. Функция вернет координаты начала ЛСК объекта. Данный вызов может быть использован для любых типов геометрии. Например, для окружности данный вызов вернет ее центр, для плоскости - точку, лежащую на плоскости, для цилиндра - центр основания цилиндра и т.д.
 
double GCM_Radius (GCM_system gSys, GCM_geom g)
 Текущее значение радиуса геометрического объекта.
 
double GCM_RadiusA (GCM_system gSys, GCM_geom g)
 Текущее значение "большого" радиуса тора или конуса.
 
double GCM_RadiusB (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 может поменять заданное состояние, если имеются не удовлетворенные ограничения.
 
GCM_result GCM_PrepareReposition (GCM_system gSys, GCM_geom movGeom, const MbPlacement3D &projPlane, const MbCartPoint3D &curPnt)
 Инициализировать режим перетаскивания объектов в плоскости экрана. Система ограничений. Подробнее...
 
GCM_result GCM_PrepareReposition (GCM_system gSys, GCM_geom rotGeom, const MbCartPoint3D &org, const MbVector3D &axis)
 Инициализировать режим вращения компонента вокруг фиксированной оси.
 
void GCM_FinishReposition (GCM_system gSys)
 Завершить режим "перетаскивания".
 
GCM_geom GCM_GetMovingGeom (GCM_system gSys)
 Выдать объект манипуляции, с которым работает решатель, находясь в режиме вращения/перемещения объектом (драггинг).
 
GCM_result GCM_SolveReposition (GCM_system gSys, GCM_geom g, const MbPlacement3D &newPos, GCM_reposition movType)
 Решить систему для произвольного изменения положения одного тела. Подробнее...
 
GCM_result GCM_SolveReposition (GCM_system gSys, const MbCartPoint3D &curPos)
 Решить систему сопряжений для новой позиции курсора в режиме драггинга. Система ограничений. Подробнее...
 
GCM_result GCM_SolveReposition (GCM_system gSys, double alpha)
 Решить систему в режиме драггинга с одно-параметрическим управлением. Подробнее...
 
bool GCM_SetJournal (GCM_system gSys, const char *fName)
 Включить журналирование и назначить файл для записи журнала вызовов API. Подробнее...
 

Переменные

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

Подробное описание

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

◆ GCM_g_type

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 

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

◆ GCM_c_type

enum GCM_c_type

Словарь типов ограничения.

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

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

GCM_COINCIDENT 

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

GCM_PARALLEL 

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

GCM_PERPENDICULAR 

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

GCM_TANGENT 

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

GCM_CONCENTRIC 

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

GCM_DISTANCE 

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

GCM_ANGLE 

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

GCM_TRANSMITTION 

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

GCM_CAM_MECHANISM 

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

GCM_SYMMETRIC 

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

GCM_DEPENDENT 

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

GCM_PATTERNED 

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

GCM_LINEAR_PATTERN 

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

GCM_ANGULAR_PATTERN 

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

GCM_RADIUS 

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

◆ GCM_alignment

Варианты выравнивания направлений.

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

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

GCM_CLOSEST 

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

GCM_COORIENTED 

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

GCM_NO_ALIGNMENT 

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

GCM_ALIGNED 

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

GCM_ROTATED 

Ротационное (вращательной) выравнивание элементов паттерна.

GCM_ALIGN_WITH_AXIAL_GEOM 

Выровнить с объектом, задающим ось.

◆ GCM_angle_type

Вариант углового размера.

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

Неопределен

GCM_2D_ANGLE 

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

GCM_3D_ANGLE 

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

◆ GCM_tan_choice

Варианты касания поверхностей или кривых.

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

Не выбрано.

GCM_TAN_POINT 

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

GCM_TAN_LINE 

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

GCM_TAN_CIRCLE 

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

◆ GCM_result

enum GCM_result

Диагностические коды 3d-решателя.

GCM_result перечисляет значения, возвращаемые вызовами API компонента GCM, включая диагностические коды решения геометрических ограничений. Значения данного типа возвращаются такими функциями, как GCM_Evaluate и GCM_EvaluationResult. Значения этого перечисления могут быть использованы для постоянного хранения данных приложения и останутся неизменными в следующих версиях.

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

Код неопределенного результата или состояния.

GCM_RESULT_Ok 

Успешный результат вызова API компонента GCM.

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 

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

GCM_RESULT_CyclicDependence 

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

GCM_RESULT_MultiDependedGeom 

Объект является зависимым от двух и более ограничений 'GCM_DEPENDED'.

GCM_RESULT_OverconstrainingDependedGeoms 

Избыточное ограничение между зависимыми объектами.

GCM_RESULT_DependedGeomCantBeFixed 

Зависимый аргумент ограничения 'GCM_DEPENDED' не может быть зафиксирован.

GCM_RESULT_InvalidArguments 

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

mtResCode_UnsupportedTangencyChoice 

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

mtResCode_IsNoPossibleForCircTanChoice 

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

mtResCode_CoaxialMtGearTransmissionIsNotAvalable 

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

mtResCode_NoSeparatedSolutionForCamGear 

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

mtResCode_CyclicDependenceForTwoOrMoreCamGears 

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

mtResCode_InconsistentFollowerAxis 

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

GCM_RESULT_InconsistentPlanarAngle 

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

GCM_RESULT_ItsNotDrivingDimension 

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

GCM_RESULT_Unregistered 

Обращение к недействительному объекту.

GCM_RESULT_Aborted 

Процесс вычислений был прерван по запросу приложения.

◆ GCM_dependency

Характер зависимости пары тел (geoms)

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

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

GCM_1ST_DEPENDENT 

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

GCM_2ND_DEPENDENT 

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

◆ GCM_scale

enum GCM_scale

Тип связи между элементами в паттерне.

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

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

GCM_LINEAR_SCALE 

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

◆ GCM_reposition

Режим поведения при манипулировании недоопределенной системой.

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

Произвольная репозиция с преимуществом вращения.

GCM_REPOSITION_FreeMoving 

Произвольная репозиция с преимуществом перемещения.

GCM_REPOSITION_Dragging 

Перетаскивание в плоскости "экрана".

GCM_REPOSITION_Rotation 

Вращение вокруг неподвижной оси.

Перенос только для одного твердого тела. Этот режим был задуман для процессов вставки нового тела в сборку САПР.

Функции

◆ GCM_CreateSystem()

GCM_system GCM_CreateSystem ( )

Создать пустую систему ограничений.

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

Возвращает
Дескриптор системы ограничений.

◆ GCM_ClearSystem()

void GCM_ClearSystem ( GCM_system  gSys)

Сделать систему ограничений пустой.

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

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

◆ GCM_RemoveSystem()

void GCM_RemoveSystem ( GCM_system  gSys)

Удалить систему ограничений.

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

Аргументы
[in]gSys- Система ограничений.
См. также
GCM_ClearSystem

◆ GCM_ReadSystem()

bool GCM_ReadSystem ( GCM_system  gSys,
reader in 
)

Читать систему ограничений из потока

Аргументы
[in]gSys- Система ограничений.
[in]in- Поток для чтения.

◆ GCM_WriteSystem()

bool GCM_WriteSystem ( GCM_system  gSys,
writer out 
)

Запись системы ограничений в поток

Аргументы
[in]gSys- Система ограничений.
[in]out- Поток для записи.

◆ GCM_SetCallback()

void GCM_SetCallback ( GCM_system  gSys,
GCM_abort  cbFunc 
)

Назначить функцию прерывания вычислений

Аргументы
[in]gSys- Система ограничений.
[in]cbFunc- Функция обратного вызова для прерывания операций.

◆ GCM_Cone()

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_Cylinder()

GCM_g_record GCM_Cylinder ( const MbCartPoint3D centre,
const MbVector3D axis,
double  radius 
)

Получить запись цилиндра по заданному набору параметров.

Аргументы
[in]centre- Центр окружности-основания цилиндра.
[in]axis- Направляющий вектор оси цилиндра.
[in]radius- Радиус основания цилиндра.
Возвращает
Запись цилиндра.

◆ GCM_Circle()

GCM_g_record GCM_Circle ( const MbCartPoint3D centre,
const MbVector3D axis,
double  radius 
)

Получить запись окружности, заданной набором параметров.

Аргументы
[in]centre- Центр окружности.
[in]axis- Направляющий вектор оси окружности.
[in]radius- Радиус окружности.
Возвращает
Запись данных об окружности.

◆ GCM_Torus()

GCM_g_record GCM_Torus ( const MbCartPoint3D centre,
const MbVector3D axis,
double  majorR,
double  minorR 
)

Получить запись тороида по заданному набору параметров.

Аргументы
[in]centre- Центр тора.
[in]axis- Направляющий вектор оси вращения.
[in]majorR- "Большой" радиус тора - радиус окружности, описывающей вращение центра сечения.
[in]minorR- Радиус окружности вращения ("малый" радиус).

Таким образом предполагается, что тор это воображаемая поверхность вращения, образованная вращением окружности с радиусом minorR, лежащей в одной плоскости с осью вращения и центром, расположенном на расстоянии majorR от оси тора.

◆ GCM_Sphere()

GCM_g_record GCM_Sphere ( const MbCartPoint3D centre,
double  radius 
)

Получить запись данных о сфере, заданной центром и радиусом.

Аргументы
[in]centre- Центр сферы.
[in]radius- Радиус сферы.
Возвращает
Запись данных о сфере.

◆ GCM_SolidLCS() [1/2]

GCM_g_record GCM_SolidLCS ( const MbCartPoint3D org,
const MbVector3D axisZ = MbVector3D::zAxis,
const MbVector3D axisX = MbVector3D::xAxis 
)

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

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

◆ GCM_SolidLCS() [2/2]

GCM_g_record GCM_SolidLCS ( const MbPlacement3D )

Получить запись данных системы координат твердого тела.

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

◆ GCM_AddPoint()

GCM_geom GCM_AddPoint ( GCM_system  gSys,
const MbCartPoint3D pVal 
)

Добавить в систему ограничений точку.

Аргументы
[in]gSys- Система ограничений.
[in]pVal- Координаты точки.
Возвращает
Дескриптор зарегистрированной точки.

◆ GCM_AddGeom() [1/2]

GCM_geom GCM_AddGeom ( GCM_system  gSys,
const GCM_g_record gRec 
)

Добавить в систему ограничений геометрический объект.

Аргументы
[in]gSys- Система ограничений.
[in]gRec- Запись геометрического объекта.
Возвращает
Дескриптор зарегистрированного объекта.

◆ GCM_AddGeom() [2/2]

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_SubGeom()

GCM_geom GCM_SubGeom ( GCM_system  gSys,
GCM_geom  sol,
const GCM_g_record gRec 
)

Добавить в подсистему твердого тела (кластера) подчиненный геометрический объект.

Аргументы
[in]gSys- Система ограничений.
[in]sol- Твердое тело или кластер.
[in]gRec- Запись геометрического подчиненного объекта, заданного в ЛСК тела.
Возвращает
Дескриптор подчиненного объекта из подмножества тела.

◆ GCM_Parent()

GCM_geom GCM_Parent ( GCM_system  gSys,
GCM_geom  subGeom 
)

Выдать кластер (тело), в который включен данный геометрический объект.

Аргументы
[in]gSys- Система ограничений.
[in]subGeom- Геометрический объект, принадлежащий кластеру.
Возвращает
Дескриптор кластера, которому принадлежит данный геометрический объект.

◆ GCM_GeomType()

GCM_g_type GCM_GeomType ( GCM_system  gSys,
GCM_geom  g 
)

Тип геометрического объекта.

Аргументы
[in]gSys- Система ограничений.


Аргументы
[in]g- Дескриптор геометрического объекта.
Возвращает
Геометрический тип объекта.

◆ GCM_RemoveGeom()

void GCM_RemoveGeom ( GCM_system  gSys,
GCM_geom  g 
)

Удалить геометрический объект из системы ограничений.

Аргументы
gSys- Система ограничений.
g- Дескриптор геометрического объекта.

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

◆ GCM_AddBinConstraint()

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 
)

Вернет true, если объект все еще действительный.

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

Аргументы
[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_AddDistance()

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_AddAngle()

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_FixRadius()

GCM_constraint GCM_FixRadius ( GCM_system  gSys,
GCM_geom  g1 
)

Задать ограничение, устанавливающее радиус геометрического объекта.

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

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

◆ GCM_AddPlanarAngle()

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

Задать управляющий планарный угол между двумя геометрическими объектами.

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

◆ GCM_AddLinearPattern()

GCM_pattern GCM_AddLinearPattern ( GCM_system  gSys,
GCM_geom  g1,
GCM_geom  g2,
GCM_alignment  align = GCM_NO_ALIGNMENT 
)

Задать линейный паттерн.

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

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

◆ GCM_AddAngularPattern()

GCM_pattern GCM_AddAngularPattern ( GCM_system  gSys,
GCM_geom  smp,
GCM_geom  axial,
GCM_alignment  align = GCM_NO_ALIGNMENT 
)

Задать угловой паттерн.

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

Порядок удаления
Чтобы удалить Угловой Паттерн целиком нужно воспользоваться функцией GCM_RemoveConstraint. При этом не требуется удалять ограничения, созданные при добавлении новых элементов в паттерн с помощью GCM_AddGeomToPattern: они будут удалены автоматически.
Аргументы
[in]gSys- Система ограничений.
[in]smp- Дескриптор образца.
[in]axial- Дескриптор оси вращения углового паттерна.
[in]align- Опция выравнивания образца относительно направляющей оси. Если задана опция GCM_ALIGN_WITH_AXIAL_GEOM, то образец 'smp' будет лежать в плоскости XY направляющего обекта (оси вращения), и если направляющий объект имеет радиус (например, это окружность), то расстояние от объектов Углового Паттерна до оси вращения будет равно радиусу направляющего объекта (например, радиусу окружности).
Возвращает
Дескриптор нового ограничения c типом GCM_ANGULAR_PATTERN.

◆ GCM_AddGeomToPattern()

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_scale.

\par      Порядок удаления.
             Чтобы удалить копию из паттерна используйте функцию #GCM_RemoveConstraint. Если 
             же вам надо удалить паттерн целиком, то вам не требуется удалять каждую копию из 
             паттерна, просто удалите паттерн.
Аргументы
[in]gSys- Система ограничений.
[in]ptrn- Дескриптор паттерна, в который добавляем копию.
[in]geom- Дескриптор добавляемого геометрического объекта (копии).
[in]position- Переменная, задающая положение добавляемой копии в паттерне (расстояние или угол).
[in]align- Опция, задающая выравнивание копии по отношению к образцу.
[in]scale- Тип масштабирования элемента паттерна.
\return  Дескриптор нового ограничения c типом GCM_PATTERNED.

◆ GCM_AddConstraint()

GCM_constraint GCM_AddConstraint ( GCM_system  gSys,
const GCM_c_record cRec 
)

Задать ограничение.

Аргументы
[in]gSys- Система ограничений.
[in]cRec- Унифицированная запись ограничения.
Возвращает
Дескриптор нового ограничения.

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

◆ GCM_RemoveConstraint()

void GCM_RemoveConstraint ( GCM_system  gSys,
GCM_constraint  con 
)

Удалить ограничение из системы.

Аргументы
[in]gSys- Система ограничений.
[in]con- Дескриптор ограничения.

◆ GCM_FreezeGeom()

bool GCM_FreezeGeom ( GCM_system  gSys,
GCM_geom  g 
)

Сделать геометрический объект неподвижным.

Аргументы
[in]gSys- Система ограничений.
[in]g- Дескриптор геометрического объекта.

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

Заметки
На будущее планируется, что данная функция будет возвращать дескриптор ограничения.
См. также
GCM_FreeGeom

◆ GCM_FreeGeom()

void GCM_FreeGeom ( GCM_system  gSys,
GCM_geom  g 
)

Освободить объект, зафиксированный методом GCM_FreezeGeom.

См. также
GCM_FreezeGeom

◆ GCM_Evaluate()

GCM_result GCM_Evaluate ( GCM_system  gSys)

Вычислить систему ограничений.

Аргументы
[in]gSys- Система ограничений.
Возвращает
Код результата вычислений.

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

◆ GCM_EvaluationResult()

GCM_result GCM_EvaluationResult ( GCM_system  gSys,
GCM_constraint  cItem 
)

Получить код результата вычисления ограничения.

Аргументы
[in]gSys- Система ограничений.
[in]cItem- Дескриптор ограничения, принадлежащего системе gSys.
Заметки
Если система еще не вычислялась, то функция вернет код GCM_RESULT_None.
Возвращает
Диагностический код хранящийся в системе после последней вызова GCM_Evaluate.

◆ GCM_IsSatisfied()

bool GCM_IsSatisfied ( GCM_system  gSys,
GCM_constraint  cItem 
)

Выполнить проверку удовлетворенности ограничения.

Аргументы
[in]gSys- Система ограничений.
[in]cItem- Дескриптор ограничения.
Возвращает
true, если ограничение удовлетворено.

◆ GCM_ChangeDrivingDimension()

GCM_result GCM_ChangeDrivingDimension ( GCM_system  gSys,
GCM_constraint  dItem,
double  dVal 
)

Изменить значение управляющего размера.

Аргументы
[in]gSys- Система ограничений.
[in]dItem- Дескриптор размерного ограничения.
[in]dVal- Требуемое значение размера.
Возвращает
Код результата операции.

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

◆ GCM_PrepareReposition()

GCM_result GCM_PrepareReposition ( GCM_system  gSys,
GCM_geom  movGeom,
const MbPlacement3D projPlane,
const MbCartPoint3D curPnt 
)

Инициализировать режим перетаскивания объектов в плоскости экрана. Система ограничений.

Аргументы
[in]movGeom- Компонент, деталь, которой манипулируют.
[in]projPlane- Плоскость экрана, заданная в ГСК сборки.
[in]curPnt- Точка, принадлежащая компоненту, которая проецируется на плоскость экрана в положение курсора, и за которую осуществляется 'перетаскивание'. curPnt задана в ЛСК геом.объекта movGeom.
Возвращает
Код результата.

Функция запускается однократно перед входом в режим перетаскивания компонент, который управляется (по движению мыши) через команду GCM_SolveReposition(GCM_system, const MbCartPoint3D &). Режим прекращается вызовом любой иной команды, кроме GCM_PrepareReposition. Также есть специальная функция для выхода из режима "перетаскивания" - GCM_FinishReposition, для явного сбрасывания режима перемещения.

◆ GCM_SolveReposition() [1/3]

GCM_result GCM_SolveReposition ( GCM_system  gSys,
GCM_geom  g,
const MbPlacement3D newPos,
GCM_reposition  movType 
)

Решить систему для произвольного изменения положения одного тела.

Аргументы
[in]gSys- Система ограничений.
[in]g- Тело, положение которого меняется.
[in]newPos- Новое пололожение тела.
[in]movType- Код желаемого поведения
Возвращает
Код результата.
Заметки
Эта функция не позволяет вывести систему сопряжений из состояния решаемости, кроме случаев, когда до вызова функции система уже находилась в нерешенном состоянии. Если новое положение 'newPos' не позволяет удовлетворять системе сопряжений, то новое положение тела окажется наиболее близким к newPos (при сохранении решаемости).

◆ GCM_SolveReposition() [2/3]

GCM_result GCM_SolveReposition ( GCM_system  gSys,
const MbCartPoint3D curPos 
)

Решить систему сопряжений для новой позиции курсора в режиме драггинга. Система ограничений.

Аргументы
[in]curPos- Текущее положение курсора в ГСК.
Возвращает
Код результата.

Процедура, управляющая режимом перетаскивания, который прекращается вызовом любой иной команды.

◆ GCM_SolveReposition() [3/3]

GCM_result GCM_SolveReposition ( GCM_system  gSys,
double  alpha 
)

Решить систему в режиме драггинга с одно-параметрическим управлением.

Аргументы
[in]gSys- Система ограничений.
[in]alpha- Управляющий параметр (зачастую задается в радианах).
Возвращает
Код результата.

Это функция, управляющая режимом динамического перепозиционирования (см. GCM_PrepareReposition), в котором положение тела управляется изменением одной координаты, например, угла вращения вокруг оси. Режим прекращается вызовом GCM_FinishReposition или любой иной командой, меняющей состояние решетеля, например, GCM_AddConstraint.

◆ GCM_SetJournal()

bool GCM_SetJournal ( GCM_system  gSys,
const char *  fName 
)

Включить журналирование и назначить файл для записи журнала вызовов API.

Аргументы
[in]gSys- Система ограничений.
[in]fName- Имя файла назначения с полным путем.
Возвращает
true, if journaling has been successfully switched on.
Внимание

Файл журнала будет записан только после завершения сеанса работы с системой ограничений, а именно сразу после вызова GCM_RemoveSystem. Добавление записей в журнал из параллельного кода не происходит.