Виды равенств характеристик кривых
C3D Solver поддерживает четыре вида равенств характеристик кривых: равенство длин GCE_AddEqualLength, равенство радиусов GCE_AddEqualRadius, равенство смещений эквидистантных кривых GCE_AddEqualOffset и равенство кривизны двух кривых в заданных точках GCE_AddEqualCurvature. Последовательно рассмотрим каждый из них.
Равенство длин двух кривых задается методом
constraint_item GCE_AddEqualLength(GCE_system gSys, geom_item curve1,
geom_item curve2);
Метод принимает систему ограничений gSys и пару кривых – curve1 и curve2, а возвращает дескриптор нового ограничения.
Равенство длин двух кривых можно накладывать на кривые, которые имеют концы (т.е. у них можно запросить GCE_FIRST_END и GCE_SECOND_END), либо являются замкнутыми. Поддерживается для любых комбинаций кривых, для которых поддерживается ограничение GCE_AddLength.
Равенство радиусов для двух кривых задается методом
constraint_item GCE_AddEqualRadius(GCE_system gSys, geom_item c1,
geom_item c2);
Метод принимает систему ограничений gSys и пару кривых – c1 и c2, а возвращает дескриптор нового ограничения.
Равенство радиусов для двух кривых можно накладывать на кривые, у которых можно запросить GCE_RADIUS.
Равенство смещений эквидистантных кривых задаётся методом
geom_item GCE_AddEqualOffset(GCE_system gSys, geom_item curve1,
geom_item curve2);
Метод принимает систему ограничений gSys и пару эквидистантных кривых – curve1 и curve2, а возвращает дескриптор нового ограничения.
Равенство смещений эквидистантных кривых можно накладывать на кривые, у которых можно запросить GCE_OFFSET.
Равенство кривизны двух кривых в заданных точках задается методом
constraint_item GCE_AddEqualCurvature(GCE_system gSys, geom_item curves[2],
var_item tPars[2]);
Метод принимает систему ограничений gSys, пару кривых curves и параметры параметрических кривых (если требуются), в которых должно выполняется равенство кривизны. Возвращает дескриптор нового ограничения.
Если тип кривой GCE_CIRCLE или GCE_BOUNDED_CURVE, базовой кривой которой является окружность, то соответствующее этой кривой значение tPars[i] должно равняться GCE_NULL_V, так как кривизна окружности одинакова во всех её точках. Если тип кривой GCE_LINE или GCE_LINE_SEGMENT, то равенство кривизны можно задать только в паре с GCE_SPLINE.