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

Классы

struct  GcPrecision
 Фиксированные точности решения задач двумерной параметризации и иные константы Подробнее...
struct  GCE_vec2d
 Координаты вектора. Подробнее...
struct  GCE_vecNd
 Координаты вектора n-й размерности. Подробнее...
struct  GCE_point
 Координаты точки на плоскости. Подробнее...
struct  GCE_point_dof
 Степень свободы точки. Подробнее...
struct  GCE_line
 Координаты прямой на плоскости. Подробнее...
struct  GCE_circle
 Координаты окружности. Подробнее...
struct  GCE_ellipse
 Координаты эллипса. Подробнее...
struct  GCE_spline
 Координаты и характеристики сплайна. Подробнее...
struct  GCE_dim_pars
 Параметры размерного ограничения. Подробнее...
struct  GCE_adim_pars
 Параметры углового размерного ограничения. Структура данных передает настройки для создания угловых размеров. Помимо общих настроек, передаваемых через структуру GCE_dim_pars, здесь добавлен флаг типа угла и множитель пересчета угла в переменную.
. Подробнее...
struct  GCE_ldim_pars
 Параметры линейного размерного ограничения. dirAngle - значение угла в радианах, задающее направление ориентируемых размеров. Пока используется только для GCE_AddDirectedDistance2P.
. Подробнее...
struct  GCE_dragging_point
 Контрольная точка драггинга. GCE_dragging_point::geom - Дескриптор геометрического объекта, выбранного для воздействия с помощью функции драггинга ( GCE_PrepareDraggingPoint).
GCE_dragging_point::point - Дескриптор контрольной точки геометрического объекта драггинга. Подробнее...
struct  GCE_diagnostic_pars
 Диагностические характеристики системы ограничений. Подробнее...

Макросы

#define FB_NULL_GEOM   0

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

typedef int8 sign_t
 Определения
typedef void * GCE_system
 Система геометрических ограничений.
typedef size_t geom_item
 Дескриптор геометрического объекта, зарегистрированного в контексте решателя.
typedef size_t constraint_item
 Дескриптор ограничения, зарегистрированного в решателе.
typedef size_t var_item
 Дескриптор переменной, зарегистрированной в решателе.
typedef query_geom_type point_type
 Тип запрашиваемой точки (используется, как подмножество значений query_geom_type).
typedef coord_name coord_type

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

enum  GcConstraintStatus { tcs_Unknown = 0, tcs_WellConstrained = 1, tcs_UnderConstrained, tcs_OverConstrained }
 Состояние определенности системы геометрических ограничений Подробнее...
enum  GcConState {
  cst_None = 0, cst_Satisfied, cst_Redundant, cst_Overconstraining,
  cst_Not_Satisfied, cst_Unsolvable
}
 Состояние решения отдельного ограничения Подробнее...
enum  geom_type {
  GCE_ANY_GEOM, GCE_POINT, GCE_LINE, GCE_CIRCLE,
  GCE_ELLIPSE, GCE_SPLINE, GCE_PARAMETRIC_CURVE, GCE_BOUNDED_CURVE,
  GCE_LINE_SEGMENT, GCE_ARC, GCE_ELLIPSE_ARC, GCE_SET
}
 Словарь типов геометрических примитивов. Подробнее...
enum  query_geom_type {
  GCE_FIRST_PTYPE = 0, GCE_IMPROPER_POINT = 0, GCE_FIRST_END, GCE_SECOND_END,
  GCE_CENTRE, GCE_PROPER_POINT, GCE_Q1, GCE_Q2,
  GCE_Q3, GCE_Q4, GCE_LOCATION_POINT, GCE_LAST_PTYPE,
  GCE_DIRECTION, GCE_ORIENTATION
}
 Варианты контрольных точек, запрашиваемых у геометрического объекта. Это перечисление применяется для запроса дескриптора характерных точке объекта, таких как центр окружности, концевая точка кривой и т.д... Подробнее...
enum  coord_name {
  GCE_X, GCE_Y, GCE_ACRD, GCE_DCRD,
  GCE_RADIUS, GCE_MAJOR_RADIUS, GCE_MINOR_RADIUS, GCE_NULL_CRD
}
 Перечисление координат геометрических объектов. Подробнее...
enum  constraint_type {
  GCE_FIX_GEOM, GCE_HORIZONTAL, GCE_VERTICAL, GCE_LENGTH,
  GCE_COINCIDENT, GCE_EQUAL_LENGTH, GCE_EQUAL_RADIUS, GCE_PARALLEL,
  GCE_PERPENDICULAR, GCE_TANGENT, GCE_COLINEAR, GCE_ALIGN_2P,
  GCE_CURVATURE_EQUALITY, GCE_ANGLE_BISECTOR, GCE_MIDDLE_POINT, GCE_COLINEAR_3P,
  GCE_SYMMETRIC, GCE_DISTANCE, GCE_RADIUS_DIM, GCE_DIAMETER,
  GCE_ANGLE, GCE_ANGLE_OX, GCE_CONSTRAINTS_COUNT, GCE_UNKNOWN_CON = GCE_CONSTRAINTS_COUNT
}
 Идентификатор типа 2D ограничения. Подробнее...
enum  GCE_result {
  GCE_RESULT_None = 0, GCE_RESULT_Ok = 1, GCE_RESULT_Satisfied = 1, GCE_RESULT_Not_Satisfied = 2,
  GCE_RESULT_Overconstrained = 3, GCE_RESULT_InvalidGeometry = 4, GCE_RESULT_MovingOfFixedGeom = 5, GCE_RESULT_Unregistered = 6,
  GCE_RESULT_SystemError = 7, GCE_RESULT_NullSystem = 8, GCE_RESULT_CircleCantStretched = 9, GCE_RESULT_SingularMatrix = 10,
  GCE_RESULT_DegenerateScalingFactor = 11, GCE_RESULT_InvalidDimensionTransform = 12
}
 Диагностические коды выполнения функций геометрического решателя. Подробнее...
enum  GCE_bisec_variant { GCE_BISEC_CLOSEST = 0, GCE_BISEC_MINUS = 1, GCE_BISEC_PLUS = 2 }
 Вариант решения биссектрисы для двух прямых. Подробнее...

Функции

bool GCE_CollectLinearDependedConstrains (GCE_system, SArray< constraint_item > &ldepCons)
 Собрать линейно зависимые и избыточные ограничения
bool GCE_CheckPointSatisfaction (GCE_system gSys, geom_item pnt, point_type cp, double px, double py)
 Проверка: Останется ли система удовлетворенной, если изменить координаты точки. Функция работает корректно, если на момент её вызова система ограничений решена. При проверке не происходит пробного перерешивания системы, а оценивается лишь удовлетворенность смежных ограничений при новом параметре (px,py). Функция может быть применена для оценки области значений(окрестность некоторой погрешности) точки, в которой система остается удовлетворенной.
GcConState GCE_GetConstraintState (GCE_system, constraint_item gc_item)
 Выдать состояние ограничения
GcConstraintStatus GCE_GetConstraintStatus (GCE_system gSys)
 Выдать состояние системы ограничений
GCE_result GCE_CheckSatisfaction (GCE_system gSys, VERSION c3dVer)
 Проверить, удовлетворена ли система ограничений.
ptrdiff_t GCE_GetCoordinateDOF (GCE_system, geom_coord<> crd)
 Выдать степень свободы отдельной координаты (переменной). Функция возвращает степень свободы координаты; Если возвращается значение < 0, то вычислить степень свободы не удалось.
bool GCE_GetOutVarCoordinates (GCE_system gcContext, const SArray< var_item > &in_coords, const SArray< constraint_item > &drvCons, SArray< var_item > &outCoords)
constraint_item GCE_FixCoordinate (GCE_system gSys, geom_item g, coord_name crd)
 Задать фиксацию координаты параметрического объекта
constraint_item GCE_FormCirDimension (GCE_system gcContext, geom_item cir, GCE_dim_pars dPars, bool diam)
 Задать ограничение "Радиальный размер".
void GCE_ResetMovingMode (GCE_system)
 Отменить режим драггинга
GCE_system GCE_CreateSystem ()
 Создать пустую систему ограничений.
void GCE_ClearSystem (GCE_system gSys)
 Сделать систему ограничений пустой.
void GCE_RemoveSystem (GCE_system gSys)
 Удалить систему ограничений.
geom_item GCE_AddPoint (GCE_system gSys, GCE_point pVal)
 Добавить в систему ограничений точку.
geom_item GCE_AddLine (GCE_system gSys, const GCE_line &lVal)
 Добавить в систему ограничений прямую.
geom_item GCE_AddLineSeg (GCE_system gSys, geom_item p[2])
 Добавить в систему ограничений отрезок прямой, заданный парой концевых точек.
geom_item GCE_AddCircle (GCE_system gSys, const GCE_circle &cVal)
 Добавить в систему ограничений окружность.
geom_item GCE_AddEllipse (GCE_system gSys, const GCE_ellipse &eVal)
 Добавить в систему ограничений эллипс.
geom_item GCE_AddSpline (GCE_system gSys, const GCE_spline &spl)
 Добавить в систему ограничений сплайн (NURBS)
geom_item GCE_AddParametricCurve (GCE_system gSys, const MbCurve &crv)
 Добавить в систему ограничений параметрическую кривую.
geom_item GCE_AddBoundedCurve (GCE_system gSys, geom_item curve, geom_item p[2])
 Добавить в систему граничную кривую, ограниченную парой точек.
var_item GCE_AddVariable (GCE_system gSys, double val)
 Добавить в систему ограничений переменную.
geom_type GCE_GeomType (GCE_system gSys, geom_item g)
 Тип геометрического объекта.
geom_type GCE_BaseCurveType (GCE_system gSys, geom_item crv)
 Тип геометрической кривой.
bool GCE_RemoveVariable (GCE_system gSys, var_item var)
 Удалить переменную из системы ограничений.
bool GCE_RemoveGeom (GCE_system gSys, geom_item g)
 Удалить геометрический объект из системы ограничений.
bool GCE_RemoveConstraint (GCE_system gSys, constraint_item con)
 Удалить ограничение из системы.
geom_item GCE_PointOf (GCE_system gSys, geom_item g, point_type pnt)
 Запросить дескриптор контрольной точки объекта.
geom_item GCE_SplinePoint (GCE_system gSys, geom_item spl, size_t pntIdx)
 Дескриптор контрольной точки сплайна по индексу.
GCE_vec2d GCE_GetVectorValue (GCE_system gSys, geom_item g, query_geom_type vType)
 Получить текущие координаты вектора.
GCE_point GCE_GetPointXY (GCE_system gSys, geom_item g, point_type pName=GCE_PROPER_POINT)
 Получить текущие координаты точки.
double GCE_GetCoordValue (GCE_system gSys, geom_item g, coord_name cName)
 Получить текущее значение координаты геометрического объекта.
double GCE_GetVarValue (GCE_system gSys, var_item var)
 Получить текущее значение переменной.
bool GCE_SetPointXY (GCE_system gSys, geom_item g, point_type pName, GCE_point xyVal)
 Задать текущие координаты точки.
bool GCE_SetCoordValue (GCE_system gSys, geom_item g, coord_name cName, double crdVal)
 Задать текущее значение координаты геометрического объекта.
bool GCE_SetVarValue (GCE_system gSys, var_item var, double val)
 Задать текущее значение переменной.
bool GCE_FreezeGeom (GCE_system gSys, geom_item g)
 Заморозить геометрический объект.
bool GCE_IsConstrainedGeom (GCE_system gSys, geom_item g)
 Функция отвечает на вопрос: Связан ли геометрический объект ограничениями?
bool GCE_IsSatisfied (GCE_system gSys, constraint_item cItem)
 Выполнить проверку удовлетворенности ограничения.
std::vector< geom_itemGCE_DiagnoseGeometry (GCE_system gcSys)
ptrdiff_t GCE_GetPointDOF (GCE_system gSys, geom_item g, point_type cp, double &dofDir)
 Вычислить степень свободы точки.
GCE_point_dof GCE_PointDOF (GCE_system gSys, geom_item pnt)
 Вычислить степень свободы точки.
constraint_item GCE_AddUnaryConstraint (GCE_system gSys, constraint_type cType, geom_item geom)
 Задать ограничение для одного объекта (унарное ограничение).
constraint_item GCE_AddCoincidence (GCE_system gSys, geom_item p[2])
 Задать ограничение "Совпадение".
constraint_item GCE_AddPointOnPercent (GCE_system gSys, geom_item curve, geom_item pnt[3], double k)
 Ограничение "Точка на участке кривой по коэффициенту его параметрической длины".
constraint_item GCE_AddPointByMetricPercent (GCE_system gSys, geom_item curve, geom_item pnt[3], double k)
 Ограничение "Точка на участке кривой по коэффициенту его длины".
constraint_item GCE_AddFixCurvePoint (GCE_system gSys, geom_item curve, geom_item pnt)
 Задать ограничение "Фиксация положения точки, лежащей на кривой".
constraint_item GCE_AddPointOnParEllipse (GCE_system gSys, geom_item pnt, geom_item ellipse, double t)
 Задать ограничение "Точка на параметрическом эллипсе".
constraint_item GCE_AddParPointOnCurve (GCE_system gSys, geom_item pnt, geom_item curve, var_item t)
 Задать ограничение "Точка на кривой по параметру".
constraint_item GCE_AddAlignPoints (GCE_system gSys, geom_item p[2], double ang)
 Задать ограничение "Выравнивание точек вдоль заданного направления".
constraint_item GCE_AddAngle (GCE_system gSys, geom_item l1, geom_item l2, const GCE_adim_pars &dPars)
 Задать ограничение "Угловой размер между двумя прямыми".
constraint_item GCE_AddAngleBisector (GCE_system gSys, geom_item l1, geom_item l2, geom_item bl, GCE_bisec_variant variant)
 Задать ограничение "Биссектриса".
constraint_item GCE_AddAngle4P (GCE_system gSys, geom_item fPair[2], geom_item sPair[2], const GCE_adim_pars &dPars)
 Задать угловой размер для четырех точек.
constraint_item GCE_AddColinear (GCE_system gSys, geom_item g[2])
 Задать ограничение "Коллинеарность".
constraint_item GCE_AddColinear3Points (GCE_system gcSys, geom_item pnt[3])
 Задать ограничение "Коллинеарность трех точек".
constraint_item GCE_AddEqualLength (GCE_system gSys, geom_item ls1, geom_item ls2)
 Задать ограничение "Равенство длин" для отрезков.
constraint_item GCE_AddEqualRadius (GCE_system gSys, geom_item c1, geom_item c2)
 Задать ограничение "Равенство радиусов" для двух окружностей (дуг)
constraint_item GCE_AddEqualCurvature (GCE_system gSys, geom_item curves[2], var_item tPars[2])
 Задать ограничение "Равенство кривизны двух кривых в заданных точках".
constraint_item GCE_AddRadiusDimension (GCE_system gSys, geom_item cir, GCE_dim_pars dPar)
 Задать ограничение "Радиусный размер".
constraint_item GCE_AddDiameter (GCE_system gSys, geom_item cir, GCE_dim_pars dPar)
 Задать ограничение "Диаметральный размер".
constraint_item GCE_FixVariable (GCE_system gSys, var_item var)
 Задать ограничение "Управляющий параметр" или "Фиксация переменной".
constraint_item GCE_FixGeom (GCE_system gSys, geom_item g)
 Задать ограничение "Фиксация геометрического объекта".
constraint_item GCE_FixLength (GCE_system gSys, geom_item ls)
 Задать ограничение "Фиксированная длина отрезка".
constraint_item GCE_FixRadius (GCE_system gSys, geom_item circ, coord_name cName=GCE_RADIUS)
 Задать ограничение "Фиксированный радиус".
constraint_item GCE_FixSplineDerivative (GCE_system gSys, geom_item spline, double par, uint derOrder, GCE_vec2d *fixVal=NULL)
 Задать ограничение "Зафиксировать производную сплайна в заданной точке".
constraint_item GCE_AddMiddlePoint (GCE_system gcSys, geom_item pnt[3])
 Задать ограничение "Средняя точка".
constraint_item GCE_AddParallel (GCE_system gSys, geom_item g[2])
 Задать ограничение "Параллельность".
constraint_item GCE_AddPerpendicular (GCE_system gSys, geom_item g[2])
 Задать ограничение "Перпендикулярность".
constraint_item GCE_AddSymmetry (GCE_system gSys, geom_item g[2], geom_item lObj)
 Задать ограничение "Симметрия относительно линейного объекта".
constraint_item GCE_AddTangent (GCE_system gSys, geom_item g[2], var_item tPar[2])
 Задать ограничение "Касание двух кривых".
constraint_item GCE_AddDistance (GCE_system gSys, geom_item g[2], const GCE_ldim_pars &dPars)
 Задать размерное ограничение "Расстояние между объектами".
constraint_item GCE_AddDistance2P (GCE_system gSys, geom_item p[2], const GCE_dim_pars &dPars)
 Задать ограничение "Расстояние между точками".
constraint_item GCE_AddDistancePLs (GCE_system gSys, geom_item p[3], const GCE_dim_pars &dPars)
 Задать ограничение "Расстояние от точки до отрезка".
constraint_item GCE_AddDirectedDistance (GCE_system gSys, geom_item p[2], const GCE_ldim_pars &dPars)
 Задать ограничение "Ориентированное расстояние между точками".
constraint_item GCE_AddLinearEquation (GCE_system gSys, const double *a, const var_item *v, size_t n, double c)
 Задать линейное уравнение.
GCE_result GCE_ChangeDrivingDimension (GCE_system gSys, constraint_item dItem, double dVal)
 Изменить значение управляющего размера.
GCE_result GCE_DeviateDimension (GCE_system gSys, constraint_item dItem, double delta)
 Отклонить ограничение от точки решения.
GCE_result GCE_DeviationTest (GCE_system gSys, constraint_item dItem, double delta)
 Тест избыточности ограничения, основанный на отклонении его от точки решения.
double GCE_DimensionParameter (GCE_system gSys, constraint_item dItem)
 Текущее значение размерного параметра. Функция выдает текущее значение размерного параметра ограничения. Если ограничение не размерное, то функция вернет GCE_UNDEFINED_DBL. Для управляющих размеров будет выдано значение управляющего параметра, которое было задано при создании размера или последним вызовом GCE_ChangeDrivingDimension.
GCE_result GCE_Evaluate (GCE_system gSys)
 Вычислить систему ограничений.
GCE_result GCE_PrepareMovingOfPoint (GCE_system gSys, geom_item obj, point_type pntId, GCE_point curXY)
 Инициализировать режим драггинга контрольной точки объекта.
GCE_result GCE_PrepareDraggingPoint (GCE_system gSys, GCE_dragging_point drgPnt, GCE_point curXY)
 Инициализировать режим драггинга контрольной точки объекта.
GCE_result GCE_PrepareDraggingPoint (GCE_system gSys, const std::vector< GCE_dragging_point > &cPntArr, GCE_point curXY)
 Инициализировать режим драггинга контрольной точки множества объектов.
GCE_result GCE_PrepareMovingGeoms (GCE_system gSys, std::vector< geom_item > &geoms, GCE_point curXY)
 Инициализировать режим перетаскивания множества объектов. Система ограничений.
GCE_result GCE_MovePoint (GCE_system gcSys, GCE_point curXY)
 Переместить точку драггинга.
GCE_result GCE_Transform (GCE_system gSys, const MbMatrix &mat)
bool GCE_SetJournal (GCE_system gSys, const char *fName)
 Включить журналирование и назначить файл для записи журнала вызовов API.
geom_item GCE_AddRigidSet (GCE_system gSys, const std::vector< geom_item > &geoms)
bool GCE_DeviateDimension (GCE_system gSys, constraint_item dItem, double delta, GCE_result &errCode)
 Устаревшая функция. Вызов будет удален в одной из следующих версий. Рекомендуется использовать новую функцию: GCE_DeviateDimension( GCE_system gSys, constraint_item dItem, double delta )
bool GCE_DeviationTest (GCE_system gSys, constraint_item dItem, double delta, GCE_result &errCode)
 Устаревшая функция. Вызов будет удален в одной из следующих версий. Рекомендуется использовать новую функцию: GCE_DeviationTest( GCE_system gSys, constraint_item dItem, double delta )
geom_item GCE_AddSpline (GCE_system gSys, const MbPolyCurve &crv)
 Устаревшая функция. Вызов будет удален в одной из следующих версий.
geom_item GCE_AddPoint (GCE_system gSys, GCE_point pVal, int)
GCE_system GCE_CreateSystem (void *)
constraint_item GCE_AddDirectedDistance2P (GCE_system gSys, geom_item p[2], const GCE_ldim_pars &dPars)
constraint_item GCE_AddAlignPoints (GCE_system gSys, geom_item p[2], bool hor)
constraint_item GCE_AddFixedLength (GCE_system, geom_item)
constraint_item GCE_AddFixVariable (GCE_system, var_item)
constraint_item GCE_AddIncidence (GCE_system, geom_item, geom_item)
 Задать ограничение "Точка на кривой".
GCE_result GCE_PrepareMovingOfPoint (GCE_system gSys, const std::vector< geom_point > &cPntArr, GCE_point curXY)
constraint_item GCE_AddEquation (GCE_system gSys, ItAlgebraicConstraint &iEqu, size_t varsCount, const var_item *varsVector)
 Задать ограничение, реализуемое на стороне клиента
bool GCE_IsAdjacentConstraint (GCE_system gSys, geom_item g, constraint_item c)
 Определить смежные ли это ограничение и геометрический объект
MbCartPoint GCE_GetPoint (GCE_system gSys, geom_item g, point_type pName=GCE_PROPER_POINT)
 Получить текущие координаты точки
bool OK (GCE_result resCode)
 Вернет 'true' в случае успешного результата.

Переменные

const size_t GCE_NULL = SYS_MAX_T
 Неопределенное значение дескриптора или пустого объекта.
const geom_item GCE_NULL_G = GCE_NULL
 Неопределенное значение дескриптора типа geom_item.
const var_item GCE_NULL_V = GCE_NULL
 Неопределенное значение дескриптора типа var_item.
const constraint_item GCE_NULL_C = GCE_NULL
 Неопределенное значение дескриптора типа constraint_item.
const double GCE_UNDEFINED_DBL = 1e+300
 Не определенное значение числа double.

Типы

typedef int8 sign_t

число из дисткретного множества {-1,0,1}

typedef void* GCE_system

GCE_system является типом данных, который обозначает систему ограничений, которая создается с помощью вызова GCE_CreateSystem. Реально, этот тип является указателем на внутреннюю структуру данных, где содержится система ограничений и различные рабочие данные, определяющие её внутреннее состояние. Время жизни системы ограничений заканчивается только, когда к ней будет применен вызов API GCE_RemoveSystem, после чего значение GCE_system становится недействительным.


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

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

О состоянии ничего не известно.

tcs_WellConstrained 

Полностью определенная система - не имеет степеней свобод.

tcs_UnderConstrained 

Недоопределенная система - имеются степени свободы.

tcs_OverConstrained 

Переопределенная система - система ограничений несовместна (есть противоречия).

enum GcConState

cst_None - Нет данных. Код обычно показывает, что к решению этого ограничения не приступали или требуется перерешать еще раз после изменения системы ограничений.
cst_Satisfied - Ограничение решено. Означает, что ограничение решалось, и в текущий момент оно удовлетворено, даже если другие ограничения системы могут быть не решены.
cst_Redundant - Избыточное ограничение. Ограничение не участвует в вычислениях, хотя удовлетворено, - является избыточным, т.е. удаление такого ограничения из системы не изменит её множество решений, а наличие не противоречит решению.
cst_Overconstraining - Ограничение переопределяет систему. Ограничение делает систему уравнений несовместной, т.е. имеющей пустое множество решений. Что бы система решалась, нужно это ограничение удалить.
cst_Not_Satisfied - Ограничение не решено. Причина ошибки не известна. Например, теоретически существует решение системы, но решатель не смог его найти.
cst_Unsolvable - Ограничение не разрешимо. Такая ситуация возникает, если ограничение вышло из области допустимых значений. Например, линейный размер нулевой длины, не дифференцируем. Решатель не может найти решение, где это ограничение могло бы быть удовлетворено, или такое решение не существует.

Внимание:
ИДЕНТИФИКАТОРЫ НЕ МЕНЯТЬ!!! Значение идентификаторов могут записываться в файл.
Элементы перечислений:
cst_None 

Нет данных

cst_Satisfied 

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

cst_Redundant 

Ограничение решено, но является избыточным

cst_Overconstraining 

Ограничение не решено и является избыточным

cst_Not_Satisfied 

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

cst_Unsolvable 

Ограничение не разрешимо

enum geom_type
Элементы перечислений:
GCE_ANY_GEOM 

Неизвестный тип.

GCE_POINT 

Точка на плоскости.

GCE_LINE 

Прямая на плоскости.

GCE_CIRCLE 

Окружность на плоскости.

GCE_ELLIPSE 

Эллипс на плоскости.

GCE_SPLINE 

Сплайн на плоскости.

GCE_PARAMETRIC_CURVE 

Параметрическая кривая на плоскости.

GCE_BOUNDED_CURVE 

Ограниченная двумя точками, кривая.

GCE_LINE_SEGMENT 

Отрезок прямой.

GCE_ARC 

Отрезок окружности.

GCE_ELLIPSE_ARC 

Отрезок эллипса.

GCE_SET 

Подмножество геометрических объектов.

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

Значение начинающее последовательность вариантов.

GCE_IMPROPER_POINT 

Точка, не принадлежащая объекту.

GCE_FIRST_END 

Первый конец ограниченной кривой.

GCE_SECOND_END 

Второй конец ограниченной кривой.

GCE_CENTRE 

Центр окружности (дуги) или эллипса.

GCE_PROPER_POINT 

Собственно точка.

GCE_Q1 

Квадрантная точка эллипса (3 часа).

GCE_Q2 

Квадрантная точка эллипса (12 часов).

GCE_Q3 

Квадрантная точка эллипса (6 часов).

GCE_Q4 

Квадрантная точка эллипса (9 часов).

GCE_LOCATION_POINT 

Точка размещения геометрического объекта.

GCE_LAST_PTYPE 

Значение завершающее последовательность вариантов.

GCE_DIRECTION 

Направляющий вектор эллипса (направление "большой" полуоси ).

Единичный вектор ориентации: Нормаль прямой, направление "большой" полуоси эллипса.

enum coord_name
Элементы перечислений:
GCE_Y 

Координаты точки или вектора.

GCE_ACRD 

Угол нормали прямой, угол наклона эллипса.

GCE_DCRD 

Координата смещения прямой, расстояние от начала координат до прямой.

GCE_RADIUS 

Радиус окружности.

GCE_MAJOR_RADIUS 

"Главная" полуось эллипса.

GCE_MINOR_RADIUS 

"Малая" полуось эллипса.

GCE_NULL_CRD 

Пустая (несуществующая) координата.

Внимание:
На самом деле решатель поддерживает другие ограничения, кроме перечисленных. См. вызовы API в 'gce_api.h'
Элементы перечислений:
GCE_HORIZONTAL 

Горизонтальность прямой или отрезка.

GCE_VERTICAL 

Вертикальность прямой или отрезка.

GCE_LENGTH 

Фиксация длины отрезка.

GCE_COINCIDENT 

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

GCE_EQUAL_LENGTH 

Равенство длин пары отрезков.

GCE_EQUAL_RADIUS 

Равенство радиусов пары окружностей.

GCE_PARALLEL 

Параллельность пары прямых или отрезков.

GCE_PERPENDICULAR 

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

GCE_TANGENT 

Касание пары кривых.

GCE_COLINEAR 

Коллинеарность пары прямых или отрезков.

GCE_ALIGN_2P 

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

GCE_CURVATURE_EQUALITY 

Равенство кривизны кривых в точках.

GCE_ANGLE_BISECTOR 

Биссектриса угла.

GCE_MIDDLE_POINT 

Средняя точка.

GCE_COLINEAR_3P 

Коллинеарность тройки точек.

GCE_SYMMETRIC 

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

GCE_CONSTRAINTS_COUNT 

Количество типов.

GCE_UNKNOWN_CON 

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

enum GCE_result
Элементы перечислений:
GCE_RESULT_None 

Нет результата (пустое сообщение).

GCE_RESULT_Ok 

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

GCE_RESULT_Satisfied 

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

GCE_RESULT_Not_Satisfied 

Система ограничений не решена.

GCE_RESULT_Overconstrained 

Переопределенная (несовместная) система ограничений.

GCE_RESULT_InvalidGeometry 

Решение привело в нарушению геометрии.

GCE_RESULT_MovingOfFixedGeom 

Попытка перемещения фиксированного объекта.

GCE_RESULT_Unregistered 

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

GCE_RESULT_SystemError 

Внутренняя системная ошибка.

GCE_RESULT_NullSystem 

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

GCE_RESULT_CircleCantStretched 

Окружность не может быть масштабирована с разными коэффициентами по осям (растяжение).

GCE_RESULT_SingularMatrix 

Прислали вырожденную матрицу трансформации.

GCE_RESULT_DegenerateScalingFactor 

Вырожденный коэффициент масштабирования.

GCE_RESULT_InvalidDimensionTransform 

Неудачное преобразование размера.

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

Неопределенное направление (ближайшее решение).

GCE_BISEC_MINUS 

Биссектриса вдоль суммы направлений прямых/отрезков.

GCE_BISEC_PLUS 

Биссектриса вдоль разности нормалей прямых/отрезков.


Функции

GcConState GCE_GetConstraintState ( GCE_system  ,
constraint_item  gc_item 
)
Аргументы:
gc_item- ограничение пользователя
Возвращает:
Статус ограничения
Заметки:
Правильный результат гарантирован только после того, как система была решена. Когда функция выдает переопределенность для конкретного ограничения, то это не означает, что именно оно является проблемным. Переопределенность всегда охватывает множество ограничений, решатель "случайно" выбирает в качестве проблемного одно из них.
GcConstraintStatus GCE_GetConstraintStatus ( GCE_system  gSys)
Аргументы:
gSysКонтекст решателя
Возвращает:
Статус ограничения
Заметки:
Сложность выполнения функции эквивалентна запросам GCE_GetCoordinateDOF(), GCE_GetPointDOF()
GCE_result GCE_CheckSatisfaction ( GCE_system  gSys,
VERSION  c3dVer 
)

For internal use only!

Аргументы:
gSys- Контекст решателя.
c3dVer- Версия ядра c3d.
Возвращает:
Код результата вычислений.
bool GCE_GetOutVarCoordinates ( GCE_system  gcContext,
const SArray< var_item > &  in_coords,
const SArray< constraint_item > &  drvCons,
SArray< var_item > &  outCoords 
)

Выдать координаты переменных геометрической модели, значения которых не зависят от изменения входных переменных in_coords;

constraint_item GCE_FormCirDimension ( GCE_system  gcContext,
geom_item  cir,
GCE_dim_pars  dPars,
bool  diam 
)
Аргументы:
cir- окружность или дуга
diam- признак диаметрального размера
GCE_system GCE_CreateSystem ( )

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

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

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

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

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

Аргументы:
[in]gSys- Система ограничений.
См. также:
GCE_ClearSystem
geom_item GCE_AddPoint ( GCE_system  gSys,
GCE_point  pVal 
)
Аргументы:
[in]gSys- Система ограничений.
[in]pVal- Координаты точки.
Возвращает:
Дескриптор зарегистрированной точки.
geom_item GCE_AddLine ( GCE_system  gSys,
const GCE_line lVal 
)
Аргументы:
[in]gSys- Система ограничений.
[in]lVal- Координаты прямой.
Возвращает:
Дескриптор зарегистрированной прямой.
geom_item GCE_AddLineSeg ( GCE_system  gSys,
geom_item  p[2] 
)
Аргументы:
[in]gSys- Система ограничений.
[in]p- Дескрипторы конечных точек отрезка.
Возвращает:
Дескриптор зарегистрированного отрезка.

Для отрезка, созданного через данный вызов, действительны все типы ограничений, которые применимы для прямой, создаваемой вызовом GCE_AddLine.

geom_item GCE_AddCircle ( GCE_system  gSys,
const GCE_circle cVal 
)
Аргументы:
[in]gSys- Система ограничений.
[in]cVal- Координаты окружности.
Возвращает:
Дескриптор зарегистрированной окружности.
geom_item GCE_AddEllipse ( GCE_system  gSys,
const GCE_ellipse eVal 
)
Аргументы:
[in]gSysСистема ограничений.
[in]eValКоординаты эллипса.
Возвращает:
Дескриптор зарегистрированного эллипса.
geom_item GCE_AddSpline ( GCE_system  gSys,
const GCE_spline spl 
)
Аргументы:
[in]gSys- Система ограничений.
[in]spl- Координаты сплайна.
Возвращает:
Дескриптор зарегистрированного сплайна.
geom_item GCE_AddParametricCurve ( GCE_system  gSys,
const MbCurve crv 
)
Аргументы:
[in]gSys- Система ограничений.
[in]crv- Математическое описание параметрической кривой.
Возвращает:
Дескриптор зарегистрированной параметрической кривой.
Внимание:
Время жизни экземпляра класса crv опирается на счетчик ссылок, т.е. решатель его увеличивает при добавлении параметрической кривой и декрементирует при удалении кривой из решателя.
geom_item GCE_AddBoundedCurve ( GCE_system  gSys,
geom_item  curve,
geom_item  p[2] 
)
Аргументы:
[in]gSys- Система ограничений.
[in]crv- Дескриптор базовой геометрической кривой. Базовой кривой может быть только кривая одного из следующих типов: прямая, окружность, эллипс, сплайн или параметрическая кривая.
[in]p- Пара дескрипторов начальной и конечной точек участка кривой.
Возвращает:
Дескриптор зарегистрированной ограниченной кривой.
var_item GCE_AddVariable ( GCE_system  gSys,
double  val 
)
Аргументы:
[in]gSys- Система ограничений.
[in]val- Начальное значение переменной.
Возвращает:
Дескриптор зарегистрированной переменной.
geom_type GCE_GeomType ( GCE_system  gSys,
geom_item  g 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор геометрического объекта.
Возвращает:
Тип геометрического объекта.
geom_type GCE_BaseCurveType ( GCE_system  gSys,
geom_item  crv 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор кривой.
Возвращает:
Тип геометрического объекта.

The function returns geometric type of a curve 'crv' or type of a base curve if 'crv' has type GCE_BOUNDED_CURVE.

bool GCE_RemoveVariable ( GCE_system  gSys,
var_item  var 
)
Аргументы:
[in]gSys- Система ограничений.
[in]var- Дескриптор переменной.
Возвращает:
true, если переменная var действительно удалена.
bool GCE_RemoveGeom ( GCE_system  gSys,
geom_item  g 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор геометрического объекта.
Возвращает:
true, если геометрический объект g действительно удален.
bool GCE_RemoveConstraint ( GCE_system  gSys,
constraint_item  con 
)
Аргументы:
[in]gSys- Система ограничений.
[in]con- Дескриптор ограничения.
Возвращает:
true, если ограничение con действительно удалено.
geom_item GCE_PointOf ( GCE_system  gSys,
geom_item  g,
point_type  pnt 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор объекта.
[in]pnt- Имя контрольной точки объекта.
Возвращает:
Дескриптор контрольной точки объекта.

Дескриптор, полученный по значению этой функции, имеет автоматическое время жизни, т.е. нет необходимости вызывать для него метод GCE_RemoveGeom.

geom_item GCE_SplinePoint ( GCE_system  gSys,
geom_item  spl,
size_t  pntIdx 
)
Аргументы:
[in]gSys- Система ограничений.
[in]spl- Дескриптор сплайна.
[in]pntIdx- Индекс контрольной точки.
Возвращает:
Дескриптор контрольной точки сплайна.

Дескриптор, полученный по значению этой функции, имеет автоматическое время жизни, т.е. нет необходимости вызывать для него метод GCE_RemoveGeom.

GCE_vec2d GCE_GetVectorValue ( GCE_system  gSys,
geom_item  g,
query_geom_type  vType 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор вектора или иного геометрического объекта.
[in]vType- Идентификатор вектора, принадлежащего объекту (в настоящий момент равен или GCE_DIRECTION, или GCE_ORIENTATION). GCE_DIRECTION возвращает направляющую прямой, отрезка или главной полуоси эллипса.
Возвращает:
Координаты вектора.
GCE_point GCE_GetPointXY ( GCE_system  gSys,
geom_item  g,
point_type  pName = GCE_PROPER_POINT 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор точки или иного геометрического объекта.
[in]pName- Идентификатор точки, принадлежащей объекту.
Возвращает:
Координаты точки.
double GCE_GetCoordValue ( GCE_system  gSys,
geom_item  g,
coord_name  cName 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор объекта.
[in]cName- Обозначение параметра объекта.
Возвращает:
Координаты точки.

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

double GCE_GetVarValue ( GCE_system  gSys,
var_item  var 
)
Аргументы:
[in]gSys- Система ограничений.
[in]var- Дескриптор переменной.
Возвращает:
Значение переменной.
bool GCE_SetPointXY ( GCE_system  gSys,
geom_item  g,
point_type  pName,
GCE_point  xyVal 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор точки или иного геометрического объекта.
[in]pName- Идентификатор точки, принадлежащей объекту.
[in]xyVal- Новое значение координат точки.
Возвращает:
true, если операция выполнена успешно.

Метод присваивает точке или контрольной точке объекта g c атрибутом pName новое состояние координат (параметр xyVal). Следует учитывать, что вызов GCE_SetPointXY не решает системы ограничений, а только меняет состояние геометрического объекта. При этом система ограничений может стать неудовлетворенной. Состояние точки, присвоенное вызовом GCE_SetPointXY не обязано сохранятся после вызова GCE_Evaluate, если точка не фиксированная или не замороженная.

bool GCE_SetCoordValue ( GCE_system  gSys,
geom_item  g,
coord_name  cName,
double  crdVal 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор объекта.
[in]cName- Обозначение параметра объекта.
[in]crdVal- Новое значение координаты.
Возвращает:
true, если операция выполнена успешно.

Метод присваивает координате объекта g c атрибутом cName новое значение. Следует учитывать, что вызов GCE_SetCoordValue не решает системы ограничений, а только меняет состояние геометрического объекта. При этом система ограничений может стать неудовлетворенной. Состояние координаты, присвоенное этим методом не обязано сохранятся после вызова GCE_Evaluate, если точка не фиксированная или не замороженная.

bool GCE_SetVarValue ( GCE_system  gSys,
var_item  var,
double  val 
)
Аргументы:
[in]gSys- Система ограничений.
[in]var- Дескриптор переменной.
[in]val- Новое значение переменной.
Возвращает:
true, если операция выполнена успешно.
bool GCE_FreezeGeom ( GCE_system  gSys,
geom_item  g 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Геометрический объект.
Возвращает:
true, если операция выполнена успешно.

Функция лишает объект всей степени свободы. Отдельно можно заметить, что функция GCE_IsConstrainedGeom для замороженного объекта вернет false, если объект не был связан другими ограничениями. Т.е. заморозка не считается ограничением.
Решатель не может менять замороженную геометрию, но её может поменять клиентское приложение методами GCE_SetCoordValue или GCE_SetPointXY. Замороженные объекты следует рассматривать в качестве независимых входных параметров системы ограничений.

Заметки:
В CAD-системе КОМПАС-3D эта команда применяется для фиксации проекционной геометрии в ассоциативных чертежах или в эскизах с проекциями трехмерных объектов.
bool GCE_IsConstrainedGeom ( GCE_system  gSys,
geom_item  g 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор геометрического объекта.
Возвращает:
true, если для объекта g задано хотя бы одно ограничение.
См. также:
GCE_RemoveGeom, GCE_RemoveConstraint
bool GCE_IsSatisfied ( GCE_system  gSys,
constraint_item  cItem 
)
Аргументы:
[in]gSys- Система ограничений.
[in]cItem- Дескриптор ограничения.
Возвращает:
true, если ограничение удовлетворено.
std::vector<geom_item> GCE_DiagnoseGeometry ( GCE_system  gcSys)

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

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

Аргументы:
[in]gcSys- Система ограничений.
Возвращает:
Вектор индексов объектов с вырожденной геометрией.
ptrdiff_t GCE_GetPointDOF ( GCE_system  gSys,
geom_item  g,
point_type  cp,
double &  dofDir 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор геометрического объекта.
[in]cp- Код контрольной точки объекта g.
[out]dofDir-Угловое направление свободы перемещения точки в радианах.
Возвращает:
Функция возвращает степень свободы точки; Если возвращается значение < 0, то вычислить степень свободы не удалось.

Данная функция возвращает степень свободы точки и может принимать одно из следующих значений:
(-1) - Означает, что функция не определила степень свободы;
0 - Означает, что точка неподвижна в системе ограничений;
1 - Означает, что точка имеет свободу перемещения вдоль некоторой траектории, причем через параметр dofDir возвращается направление тангенциального вектора перемещения точки;
2 - Означает, что точка имеет свободу перемещения в некоторой 2D-области.
Если направление перемещения определить не удалось, то dofDir принимает значение < 0.

GCE_point_dof GCE_PointDOF ( GCE_system  gSys,
geom_item  pnt 
)
Аргументы:
[in]gSys- Система ограничений.
[in]pnt- Дескриптор точки.
[out]dofDir-Угловое направление свободы перемещения точки в радианах.
Возвращает:
Функция возвращает структуру GCE_point_dof, которая описывает степень свободы точки, её целочисленное значение и вектор перемещения; Если возвращается значение dof < 0, то вычислить степень свободы не удалось.

Данная функция возвращает степень свободы точки и может принимать одно из следующих значений:
dof = (-1) - Означает, что функция не определила степень свободы;
dof = 0 - Означает, что точка неподвижна в системе ограничений;
dof = 1 - Означает, что точка имеет свободу перемещения вдоль некоторой траектории, причем через параметр "dir" (в структуре GCE_point_dof ) возвращается направление тангенциального вектора перемещения точки;
dof = 2 - Означает, что точка имеет свободу перемещения в некоторой 2D-области.
Если направление перемещения определить не удалось, то "dof" принимает значение < 0.

constraint_item GCE_AddUnaryConstraint ( GCE_system  gSys,
constraint_type  cType,
geom_item  geom 
)
Аргументы:
[in]gSys- Система ограничений.
[in]cType- Значение одного из следующих типов ограничений: GCE_FIX_GEOM; GCE_VERTICAL; GCE_HORIZONTAL; GCE_ANGLE_OX; GCE_LENGTH.
[in]g- Дескриптор геометрического объекта.
Возвращает:
Дескриптор нового ограничения.

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

constraint_item GCE_AddCoincidence ( GCE_system  gSys,
geom_item  p[2] 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескрипторы пары геометрических объектов.

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

Внимание:
В текущей версии решателя применение этого ограничения возможно только для двух точек либо для точки и кривой. На будущее планируется расширить его применения для других типов.
constraint_item GCE_AddPointOnPercent ( GCE_system  gSys,
geom_item  curve,
geom_item  pnt[3],
double  k 
)
Аргументы:
[in]gSys- Система ограничений.
[in]curve- Дескриптор кривой.
[in]pnt- Дескрипторы точек: две крайние точки участка и точка между.
[in]k- Долевой коэффициент от параметрической длины участка.
Возвращает:
Дескриптор нового ограничения.

Предполагается, что для кривой curve и точек pnt[0], pnt[1], обеспечивается инцидентность другими ограничениями, зарегистрированными в решателе, или эти точки априори принадлежат кривой. Для точки pnt[2] инцидентность с кривой задавать не требуется, т.к. данное ограничение уже обеспечивает это. Если pnt[0] = pnt[1] = GCE_NULL_G, то участок кривой, для которого исчисляется процент k, совпадает со всей параметрической областью кривой. Например, для окружности параметрическая область равна интервалу [-PI ... PI]. Область значений k из интервала от 0 до 1 отображается на параметрическую область участка кривой, соответственно k = 0 прикрепит точку pnt[2] к началу участка, а k = 1.0 к концу участка.

constraint_item GCE_AddPointByMetricPercent ( GCE_system  gSys,
geom_item  curve,
geom_item  pnt[3],
double  k 
)
Аргументы:
[in]gSys- Система ограничений.
[in]curve- Дескриптор кривой.
[in]pnt- Дескрипторы точек: две крайние и точка между ними.
[in]k- Значение доли от метрической длины между заданными точками.
Возвращает:
Дескриптор нового ограничения.

Метод создает в системе ограничение, задающее положение точки на участке кривой, заданное коэффициентом от его длины. Предполагается, что для кривой curve и точек pnt[0], pnt[1], обеспечивается инцидентность другими, зарегистрированными в решателе, ограничениями или эти точки априори принадлежат кривой. Если pnt[0] = pnt[1] = GCE_NULL_G, то участок кривой, для которого исчисляется процент k, совпадает со всей параметрической областью кривой. Например, для окружности параметрическая область равна интервалу [-PI ... PI]. Если k = 0, то ограничение прикрепит точку pnt[2] к началу участка, если k = 1.0, то ограничение прикрепит точку pnt[2] к концу участка.

constraint_item GCE_AddFixCurvePoint ( GCE_system  gSys,
geom_item  curve,
geom_item  pnt 
)
Аргументы:
[in]gSys- Система ограничений.
[in]curve- Дескриптор кривой.
[in]pnt- Дескрипторы точки.
Возвращает:
Дескриптор нового ограничения.

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

Внимание:
В Cad-системе КОМПАС данная функция применяется только для фиксации концов участка (bounded curve) параметрической кривой, полученной проецированием из 3D-модели. Для таких ограничений, как "средняя точка" рекомендуется применять более нативную функцию GCE_AddMiddlePoint.
constraint_item GCE_AddPointOnParEllipse ( GCE_system  gSys,
geom_item  pnt,
geom_item  ellipse,
double  t 
)
Аргументы:
[in]gSys- Система ограничений.
[in]pnt- Дескриптор точки.
[in]ellipse- Дескриптор эллипса.
[in]tЗначение параметра на эллипсе из области [-PI,PI].
Возвращает:
Дескриптор нового ограничения.

Данная функция действительна только для кривых, относящихся типу "эллипс", функция создает ограничение, обеспечивающее совпадение точки pnt с точкой эллипса, заданной параметром t из параметрической области эллипса, равной интервалу [-PI,PI].

constraint_item GCE_AddParPointOnCurve ( GCE_system  gSys,
geom_item  pnt,
geom_item  curve,
var_item  t 
)
Аргументы:
[in]gSys- Система ограничений.
[in]pnt- Дескриптор точки.
[in]curve- Дескриптор кривой.
[in]t- Дескриптор параметра кривой.
Возвращает:
Дескриптор нового ограничения.

Функция отличается от GCE_AddCoincidence тем, что позволяет связать точку с параметрической кривой через значение параметра и управлять её положением на кривой через этот параметр. Ограничение доступно для следующих типов кривой: GCE_ELLIPSE, GCE_SPLINE, GCE_PARAMETRIC_CURVE и GCE_BOUNDED_CURVE, основанной на кривой одного из перечисленных типов.

constraint_item GCE_AddAlignPoints ( GCE_system  gSys,
geom_item  p[2],
double  ang 
)
Аргументы:
[in]gSys- Система ограничений.
[in]p- Дескрипторы пары точек.
[in]ang- Угол, задающий направление выравнивания, радианы.
Возвращает:
Дескриптор нового ограничения.
constraint_item GCE_AddAngle ( GCE_system  gSys,
geom_item  l1,
geom_item  l2,
const GCE_adim_pars dPars 
)
Аргументы:
[in]gSys- Система ограничений.
[in]l1- Дескриптор первого линейного геометрического объекта.
[in]l2- Дескриптор второго линейного геометрического объекта.
[in]dPars- Параметры углового размера (подробности см.GCE_adim_pars).
Возвращает:
Дескриптор нового ограничения.

Угловой размер для пары линейных геометрических объектов. Аргументами ограничения могут быть объекты, принадлежащие типам: "прямая", "отрезок" или "Bounded curve", основанной на прямой.

constraint_item GCE_AddAngleBisector ( GCE_system  gSys,
geom_item  l1,
geom_item  l2,
geom_item  bl,
GCE_bisec_variant  variant 
)
Аргументы:
[in]gSysСистема ограничений.
[in]blотрезок, биссектриса между двумя прямыми.
[in]l1,l2прямые или отрезки, между которыми устанавливается биссектриса.
[in]variantвариант решения для биссектрисы.
Возвращает:
дескриптор нового ограничения.
constraint_item GCE_AddAngle4P ( GCE_system  gSys,
geom_item  fPair[2],
geom_item  sPair[2],
const GCE_adim_pars dPars 
)

Конструируется угловой размер для двух отрезков с точками p1-p2, p3-p4.

Аргументы:
[in]gSys- Система ограничений.
[in]fPair- Первая пара точек (первый отрезок).

\param[in] fPair - Вторая пара точек (второй отрезок).

Аргументы:
[in]dPars- Параметры углового размера (подробности см.GCE_adim_pars).
Возвращает:
Дескриптор нового ограничения.
constraint_item GCE_AddColinear ( GCE_system  gSys,
geom_item  g[2] 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескрипторы пары линейных объектов.
Возвращает:
Дескриптор нового ограничения.

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

constraint_item GCE_AddColinear3Points ( GCE_system  gcSys,
geom_item  pnt[3] 
)

Задать для трех точек отношение, такое что точки лежат на одной прямой.

Аргументы:
[in]gSys- Система ограничений.
[in]pnt- Тройка точек, лежащих на одной прямой.
Возвращает:
Дескриптор нового ограничения.
constraint_item GCE_AddEqualLength ( GCE_system  gSys,
geom_item  ls1,
geom_item  ls2 
)
Аргументы:
[in]gSys- Система ограничений.
[in]ls1- Дескриптор первого отрезка.
[in]ls2- Дескриптор второго отрезка.
Возвращает:
Дескриптор нового ограничения.

Ограничение применимо для отрезков или участков прямых, созданных с помощью функции GCE_AddBoundedCurve или GCE_AddLineSeg.

constraint_item GCE_AddEqualRadius ( GCE_system  gSys,
geom_item  c1,
geom_item  c2 
)
Аргументы:
[in]gSys- Система ограничений.
[in]c1- Дескриптор первой окружности.
[in]c2- Дескриптор второй окружности.
Возвращает:
Дескриптор нового ограничения.
constraint_item GCE_AddEqualCurvature ( GCE_system  gSys,
geom_item  curves[2],
var_item  tPars[2] 
)
Аргументы:
[in]gSys- Система ограничений.
[in]curves- Дескрипторы пары кривых.
[in]tPars- Дескрипторы параметров параметрических кривых, в которых должно выполняется равенство кривизны.
Возвращает:
Дескриптор нового ограничения.
Заметки:
Если тип кривой GCE_CIRCLE или GCE_BOUNDED_CURVE, базовой кривой которой является окружность, то соответствующее этой кривой значение tPars[i] может равняться GCE_NULL_V, т.к. кривизна окружности одинакова во всех её точках.
constraint_item GCE_AddRadiusDimension ( GCE_system  gSys,
geom_item  cir,
GCE_dim_pars  dPar 
)
Аргументы:
[in]gSys- Система ограничений.
[in]cir- Дескриптор окружности.
[in]dPar- Параметры линейного размера (подробности см.GCE_dim_pars).
Возвращает:
Дескриптор радиусного ограничения.
constraint_item GCE_AddDiameter ( GCE_system  gSys,
geom_item  cir,
GCE_dim_pars  dPar 
)
Аргументы:
[in]gSys- Система ограничений.
[in]cir- Дескриптор окружности.
[in]dPar- Параметры линейного размера (подробности см.GCE_dim_pars).
Возвращает:
Дескриптор диаметрального ограничения.
constraint_item GCE_FixVariable ( GCE_system  gSys,
var_item  var 
)
Аргументы:
[in]gSys- Система ограничений.
[in]var- Дескриптор переменной.
Возвращает:
Дескриптор нового ограничения.
Заметки:
Созданное с помощью этой функции, ограничение может управляться через вызов GCE_ChangeDrivingDimension.
constraint_item GCE_FixGeom ( GCE_system  gSys,
geom_item  g 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескриптор геометрического объекта.
Возвращает:
Дескриптор нового ограничения.
constraint_item GCE_FixLength ( GCE_system  gSys,
geom_item  ls 
)
Аргументы:
[in]gSys- Система ограничений.
[in]ls- Дескриптор отрезка.
Возвращает:
Дескриптор нового ограничения.

Ограничение применимо пока только для отрезков.

constraint_item GCE_FixRadius ( GCE_system  gSys,
geom_item  circ,
coord_name  cName = GCE_RADIUS 
)

Ограничение применимо для фиксации радиуса окружности или полуоси эллипса.

Аргументы:
[in]gSys- Система ограничений.
[in]circ- Дескриптор окружности или эллипса.
[in]cName-Тип фиксируемой координаты. Может быть радиус, большая или малая полуось эллипса.
Возвращает:
Дескриптор нового ограничения.
constraint_item GCE_FixSplineDerivative ( GCE_system  gSys,
geom_item  spline,
double  par,
uint  derOrder,
GCE_vec2d fixVal = NULL 
)
Аргументы:
[in]gSys- Система ограничений.
[in]spline- Дескриптор сплайна.
[in]par- Значение параметра, в котором надо зафиксировать производную. \
[in]derOrder- Порядок производной, которую надо зафиксировать.
[in]fixVal- Значение, к которому надо приравнять производную.
Возвращает:
Дескриптор нового ограничения.

Точка фиксации задается через значение параметра, соответствующего ей.
Порядок фиксируемой производной может равняться 0 (фиксация точки), 1, 2 или 3.
Если fixVal равен NULL, будет зафиксировано текущее значение производной, иначе фиксируемой производной будет присвоено значение fixVal.

constraint_item GCE_AddMiddlePoint ( GCE_system  gcSys,
geom_item  pnt[3] 
)
Аргументы:
[in]gSys- Система ограничений.
[in]pnt- Дескрипторы трех точек.
Возвращает:
Дескриптор нового ограничения.

Для заданных трех точек плоскости, задать отношение, связывающее тройку точек, так, что третья точка лежит на середине отрезка между pnt[0] и pnt[1].

constraint_item GCE_AddParallel ( GCE_system  gSys,
geom_item  g[2] 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескрипторы пары линейных объектов.
Возвращает:
Дескриптор нового ограничения.

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

constraint_item GCE_AddPerpendicular ( GCE_system  gSys,
geom_item  g[2] 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескрипторы пары линейных объектов.
Возвращает:
Дескриптор нового ограничения.

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

constraint_item GCE_AddSymmetry ( GCE_system  gSys,
geom_item  g[2],
geom_item  lObj 
)
Аргументы:
[in]gSys- Система ограничений. gSys -
[in]g- Дескрипторы пары симметричных объектов. g -
[in]lObj- Дескриптор оси симметрии. lObj -
Возвращает:
Дескриптор нового ограничения.
Внимание:
В настоящий момент данное ограничение применимо только для симметрии точек.
constraint_item GCE_AddTangent ( GCE_system  gSys,
geom_item  g[2],
var_item  tPar[2] 
)
Аргументы:
[in]gSysСистема ограничений.
[in]gДескрипторы пары кривых или прямых.
[in]tParДескрипторы параметров касания для параметрических кривых.
Возвращает:
Дескриптор нового ограничения.
Вспомогательные параметры касания
Дескрипторы переменных tPar[0] и tPar[1] задают вспомогательные значения, параметризующие точку касания на первой и второй кривой. Одна или обе tPar могут быть равными GCE_NULL_V, если соответствующая кривая не является сплайном или параметрической кривой, либо пользователь согласен, что точка касания будет локализована автоматически по ближайшему решению.

tPar[0] или tPar[1] могут быть равными GCE_NULL_V, если параметры касания не предусмотрены или кривые не имеют параметрического представления. Параметрическое представление имеют пока только два типа: GCE_SPLINE и GCE_PARAMETRIC_CURVE.

constraint_item GCE_AddDistance ( GCE_system  gSys,
geom_item  g[2],
const GCE_ldim_pars dPars 
)
Аргументы:
[in]gSys- Система ограничений.
[in]g- Дескрипторы пары геометрических объектов.
[in]dPars- Параметры линейного размера (подробности см.GCE_ldim_pars).
Возвращает:
Дескриптор нового ограничения.

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

constraint_item GCE_AddDistance2P ( GCE_system  gSys,
geom_item  p[2],
const GCE_dim_pars dPars 
)
Аргументы:
[in]gSys- Система ограничений.
[in]p- Дескрипторы пары точек.
[in]dPars- Параметры размерного ограничения.
Возвращает:
Дескриптор нового ограничения.
constraint_item GCE_AddDistancePLs ( GCE_system  gSys,
geom_item  p[3],
const GCE_dim_pars dPars 
)
Аргументы:
[in]gSys- Система ограничений.
[in]p- Дескрипторы тройки точек.
[in]dPars- Параметры размерного ограничения.
Возвращает:
Дескриптор нового ограничения.

Линейный размер от точки p1 до отрезка <p0,p2>. Размер чувствителен к знаку величины размера.

constraint_item GCE_AddDirectedDistance ( GCE_system  gSys,
geom_item  p[2],
const GCE_ldim_pars dPars 
)
Аргументы:
[in]gSys- Система ограничений.
[in]p- Дескрипторы пары точек.
[in]dPars- Параметры размерного ограничения.
Возвращает:
Дескриптор нового ограничения.

Параметр dPars.dirAngle задает направление размера в радианах. Управляя dPars.dirAngle, можно задать вертикальный или горизонтальный размеры. Так размер параметром dPars.dirAngle = 0 создаст "горизонтальный размер", а dPars.dirAngle, равный PI/2 радиан будет соответствовать "вертикальному" размеру.

constraint_item GCE_AddLinearEquation ( GCE_system  gSys,
const double *  a,
const var_item v,
size_t  n,
double  c 
)
Аргументы:
[in]gSys- Система ограничений.
[in]a- Вектор коэффициентов линейного уравнения.
[in]v- Дескрипторы переменных уравнения.
[in]n- Количество переменных.
[in]c- Коэффициент без переменной.
Возвращает:
Дескриптор нового ограничения.

Задать линейное уравнение в виде a1*v1 + a2*v2 + .. + an*vn + c = 0.

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

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

GCE_result GCE_DeviateDimension ( GCE_system  gSys,
constraint_item  dItem,
double  delta 
)
Аргументы:
[in]dItem- Дескриптор геометрического ограничения.
[in]delta- Величина отклонения.
Возвращает:
errCode - Результат решения системы ограничений.

Функция применяется для диагностики избыточности ограничения, основанной на отклонении области решений ограничения. Работает только для размерных ограничений и некоторых типов геометрических ограничений, таких как "Выравнивание точек", "Горизонтальность" и т.д. Применимость к тому или иному типу не задокументирована и определяется опытным путем. Если было возвращено значение GCE_RESULT_None, то ограничение не отклонялось.

GCE_result GCE_DeviationTest ( GCE_system  gSys,
constraint_item  dItem,
double  delta 
)
Аргументы:
[in]dItem- Дескриптор геометрического ограничения.
[in]delta- Величина отклонения.
Возвращает:
- Результат решения системы ограничений.

Функция применяется для диагностики избыточности ограничения, основанной на отклонении области решений ограничения. Работает только для размерных ограничений и некоторых типов геометрических ограничений, таких как "Выравнивание точек", "Горизонтальность" и т.д. Применимость к тому или иному типу (кроме размерных) не задокументирована и определяется опытным путем. Если было возвращено значение GCE_RESULT_None, то ограничение не отклонялось.

Заметки:
В отличии от GCE_DeviateDimension не меняется состояние системы ограничений.
GCE_result GCE_Evaluate ( GCE_system  gSys)
Аргументы:
[in]gSys- Система ограничений.
Возвращает:
Код результата вычислений.

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

GCE_result GCE_PrepareMovingOfPoint ( GCE_system  gSys,
geom_item  obj,
point_type  pntId,
GCE_point  curXY 
)
Аргументы:
[in]gSysСистема ограничений.
[in]objГеометрический объект.
[in]pntIdОбозначение передвигаемой контрольной точки объекта.
[in]curXYКоординаты курсора, куда следует перемещаемая точка.
Возвращает:
Код ошибки.
GCE_result GCE_PrepareDraggingPoint ( GCE_system  gSys,
GCE_dragging_point  drgPnt,
GCE_point  curXY 
)
Аргументы:
[in]gSys- Система ограничений.
[in]drgPnt- Контрольная точка объекта.
[in]curXY- Координаты точки драггинга.
Возвращает:
Код ошибки.
GCE_result GCE_PrepareDraggingPoint ( GCE_system  gSys,
const std::vector< GCE_dragging_point > &  cPntArr,
GCE_point  curXY 
)

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

Аргументы:
[in]gSys- Система ограничений.
[in]cPntArr- Множество геометрически одинаковых контрольных точек.
[in]curXY- Координаты точки драггинга.
Возвращает:
Код ошибки.
GCE_result GCE_PrepareMovingGeoms ( GCE_system  gSys,
std::vector< geom_item > &  geoms,
GCE_point  curXY 
)
Аргументы:
geoms- Множество геометрических объектов.
curXY- Координаты точки драггинга.
GCE_result GCE_MovePoint ( GCE_system  gcSys,
GCE_point  curXY 
)
Аргументы:
[in]gcSys- Система ограничений.
[in]curXY- Текущие координаты курсора.
Возвращает:
Код ошибки.

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

GCE_result GCE_Transform ( GCE_system  gSys,
const MbMatrix mat 
)

brief Трансформировать геометрию системы ограничений согласно заданной матрице.

Аргументы:
[in]gSys- Система ограничений.
[in]mat- Матрица преобразования.
Возвращает:
Код ошибки.
bool GCE_SetJournal ( GCE_system  gSys,
const char *  fName 
)
Аргументы:
[in]gSys- Система ограничений.
[in]fName- Имя файла назначения с полным путем.
Возвращает:
true, if journalling has been successfully switched on.
geom_item GCE_AddSpline ( GCE_system  gSys,
const MbPolyCurve crv 
)
Внимание:
Время жизни экземпляра класса crv опирается на счетчик ссылок, т.е. решатель его увеличивает при добавлении кривой и декрементирует при удалении кривой из решателя.
geom_item GCE_AddPoint ( GCE_system  gSys,
GCE_point  pVal,
int   
) [inline]
Внимание:
Устаревшая функция. Вызов будет удален в одной из следующих версий.
GCE_system GCE_CreateSystem ( void *  )
Внимание:
Устаревшая функция. Вызов будет удален в одной из следующих версий.
constraint_item GCE_AddDirectedDistance2P ( GCE_system  gSys,
geom_item  p[2],
const GCE_ldim_pars dPars 
)
Внимание:
Устаревшая функция. Вызов будет удален в одной из следующих версий (2016).
constraint_item GCE_AddAlignPoints ( GCE_system  gSys,
geom_item  p[2],
bool  hor 
)
Внимание:
Устаревшая функция. Вызов будет удален в одной из следующих версий.
constraint_item GCE_AddFixedLength ( GCE_system  ,
geom_item   
)
Внимание:
Функция устарела. Вместо неё применять GCE_FixLength.
constraint_item GCE_AddFixVariable ( GCE_system  ,
var_item   
)
Внимание:
Функция устарела. Вместо неё применять GCE_FixVariable.
constraint_item GCE_AddIncidence ( GCE_system  ,
geom_item  ,
geom_item   
)
Внимание:
This call is deprecated. Call GCE_AddCoincidence instead.
GCE_result GCE_PrepareMovingOfPoint ( GCE_system  gSys,
const std::vector< geom_point > &  cPntArr,
GCE_point  curXY 
)
Внимание:
Устаревшая функция. Вызов будет удален в одной из следующих версий. Используйте #GCE_PrepareMovingOfPoint( GCE_system gSys, const std::vector<GCE_dragging_point> & cPntArr, GCE_point curXY ) взамен.
constraint_item GCE_AddEquation ( GCE_system  gSys,
ItAlgebraicConstraint iEqu,
size_t  varsCount,
const var_item varsVector 
)
Аргументы:
gSysконтекст решателя
iEquинтерфейс уравнения, заданного пользователем
varsCountколичество переменных
varsVectorвектор переменных
Возвращает:
дескриптор нового ограничения
MbCartPoint GCE_GetPoint ( GCE_system  gSys,
geom_item  g,
point_type  pName = GCE_PROPER_POINT 
)
Аргументы:
gSysконтекст решателя
gдескриптор точки или иного геометрического объекта
pNameидентификатор точки, принадлежащей объекту
Возвращает:
координаты точки
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы