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

Функции

MbResultType Line (const MbCartPoint3D &point1, const MbCartPoint3D &point2, MbCurve3D *&result)
 Создать прямую.
MbResultType Segment (const MbCartPoint3D &point1, const MbCartPoint3D &point2, MbCurve3D *&result)
 Создать отрезок прямой.
MbResultType Arc (const MbCartPoint3D &centre, const SArray< MbCartPoint3D > &points, bool curveClosed, double angle, double &a, double &b, MbCurve3D *&result)
 Создать эллипс (окружность) или его дугу.
MbResultType SplineCurve (const SArray< MbCartPoint3D > &pointList, bool curveClosed, MbeSpaceType curveType, MbCurve3D *&result)
 Создать кривую, проходящую по набору точек.
MbResultType NurbsCurve (const SArray< MbCartPoint3D > &pointList, const SArray< double > &weightList, size_t degree, const SArray< double > &knotList, bool curveClosed, MbCurve3D *&result)
 Создать NURBS-кривую.
MbResultType NurbsCopy (const MbCurve3D &curve, MbCurve3D *&result)
 Создать копию кривой в виде NURBS.
MbResultType RegularPolygon (const MbCartPoint3D &centre, const MbCartPoint3D &point, const MbVector3D &axisZ, size_t vertexCount, bool describe, MbCurve3D *&result)
 Создать правильный многоугольник, вписанный в окружность.
MbResultType SpiralCurve (const MbPlacement3D &place, double radius, double step, double angle, MbCurve &lawCurve, bool spiralAxis, MbCurve3D *&result)
 Создать спираль.
MbResultType SpiralCurve (const MbCartPoint3D &point0, const MbCartPoint3D &point1, const MbCartPoint3D &point2, double radius, double step, double angle, MbCurve *lawCurve, bool spiralAxis, MbCurve3D *&result)
 Создать спираль.
MbResultType CreateContour (MbCurve3D &curve, MbContour3D *&result)
 Создать составную кривую (контур).
MbCurve3DDuplicateCurve (const MbCurve3D &curve, VERSION version=Math::DefaultMathVersion())
 Создать копию кривой.
MbResultType AddCurveToContour (MbCurve3D &curve, MbCurve3D &contour, bool toEnd)
 Добавить кривую в составную кривую (контур).
MbResultType PlaneCurve (const MbPlacement3D &place, const MbCurve &curve, MbCurve3D *&result)
 Построить кривую в пространстве по двумерной кривой.
MbResultType SurfaceCurve (const MbSurface &surface, const MbCurve &curve, MbCurve3D *&result)
 Построить кривую на поверхности по двумерной кривой.
MbResultType CurveOnSurface (const MbCurve3D &curve, const MbSurface &surf, bool sameSurf, bool extSurf, MbCurve3D *&result, bool strictOnSurface=false)
 Создать поверхностную кривую, если пространственная кривая лежит на поверхности.
bool IsCurveOnSurface (const MbCurve3D &curve, const MbSurface &surf, bool ext, bool strictOnSurface=false)
 Лежит ли кривая на поверхности.
MbResultType CreateContours (RPArray< MbCurve3D > &curves, double metricEps, RPArray< MbContour3D > &result, bool onlySmoothConnected=false, VERSION version=Math::DefaultMathVersion())
 Создать массив контуров по массиву кривых.
MbResultType CreateContours (RPArray< MbCurve3D > &curves, double metricAcc, bool onlySmoothConnected=false, VERSION version=Math::DefaultMathVersion())
 Создать контуры по набору кривых с удалением вырожденных.
MbResultType WireFrame (const MbCurve3D &curve, const MbName &curveName, SimpleName mainName, MbWireFrame *&result)
 Создать именованный трехмерный каркас.
MbResultType WireFrame (const RPArray< MbCurve3D > &curves, const RPArray< MbName > &curveNames, SimpleName mainName, MbWireFrame *&result)
 Создать именованный трехмерный каркас.
MbResultType CreatePolyArcCurve3D (const MbCurve3D &curve, MbCurve3D *&result, double &eps, double minRad=Math::minRadius, double maxRad=Math::maxRadius)
 Аппроксимировать контур дугами и отрезками.
bool GetSpaceCurve (const MbItem &item, bool keepPlacement, SPtr< MbCurve3D > &curve0, std::vector< SPtr< MbCurve3D > > *curves=NULL)
 Получить или создать пространственную кривую.
MbResultType EvolutionSection (const MbSweptData &generCurves, const MbCurve3D &guideCurve, double guideParam, const EvolutionValues &params, MbSweptData &result, VERSION version=Math::DefaultMathVersion(), double angleEpsilon=ANGLE_EPSILON)
 Создать сечение кинематического тело для заданного параметра на направляющей.
bool IsLikeStraightLine (const MbCurve &curve, double eps)
 Является ли кривая прямолинейной независимо от ее параметризации.
bool CheckJoinedParams (const MbCurve3D &curve, SArray< double > &params, bool isAscending)
 Проверить параметры кривой для построения тела соединения.
MbCurve3DCreateJoinedCurve (const RPArray< MbCurveEdge > &edges, const SArray< bool > &orients, const MbMatrix3D &matr, MbResultType &res)
 Построить кривую по множеству рёбер.
MbCurve3DTrimClosedSpine (const MbCurve3D &curve, double t)
 Создать усеченную замкнутую кривую на копии кривой.
MbResultType CalculatePipePoints (const MbCartPoint3D &origin1, const MbVector3D &direction1, double length1, double radius1, const MbCartPoint3D &origin2, const MbVector3D &direction2, double length2, double radius2, MbCartPoint3D &result1, MbCartPoint3D &result2)
 Рассчитать вершины ломаной.
MbResultType OffsetPlaneCurve (const MbCurve3D &curve, double d, MbCurve3D *&result)
 Создать эквидистантную кривую.
MbResultType OffsetCurve (const MbCurve3D &initCurve, const MbVector3D &offsetVect, const bool useFillet, const bool keepRadius, const bool bluntAngle, const bool fromBeg, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать эквидистантную кривую.
MbResultType OffsetCurve (const MbCurve3D &curve, const MbFace &face, const MbAxis3D &dirAxis, double dist, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать эквидистантную кривую.
MbResultType CurveProjection (const MbSurface &surface, const MbCurve3D &curve, MbVector3D *direction, bool createExact, bool truncateByBounds, RPArray< MbCurve3D > &result, VERSION version=Math::DefaultMathVersion())
 Создать проекцию кривой на поверхность.
MbResultType CurveByTwoProjections (const MbPlacement3D &place1, const MbCurve &curve1, const MbPlacement3D &place2, const MbCurve &curve2, RPArray< MbCurve3D > &result, VERSION version=Math::DefaultMathVersion())
 Создать пространственную кривую по двум плоским проекциям.
MbResultType ProjectionCurve (const MbCurve3D &curve, const RPArray< MbFace > &faces, const MbVector3D *dir, const bool createExact, const bool truncateByBounds, const MbSNameMaker &snMaker, RPArray< MbCurve3D > &result, SArray< uintptr_t > *resultIndices)
 Создать проекционную кривую по нормали или по направлению.
MbResultType ProjectionCurve (const MbWireFrame &wireFrame, const bool sameWireFrame, const MbSolid &solid, const bool same, const SArray< size_t > &faceIndices, const MbVector3D *dir, const bool createExact, const bool truncateByBounds, const MbSNameMaker &snMaker, MbWireFrame *&resFrame)
 Создать проекционный проволочный каркас по нормали или по направлению.
bool EliminateProjectionCurveOverlay (RPArray< MbCurve3D > &curves, SArray< uintptr_t > *indices)
 Устранить наложение сегментов проекционной кривой.
MbResultType IntersectionCurve (const MbSurface &surface1, const MbSurface &surface2, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать кривые пересечения двух поверхностей.
MbResultType IntersectionCurve (MbFace &face1, MbFace &face2, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать кривые пересечения двух граней.
MbResultType IntersectionCurve (const MbSolid &solid1, const SArray< size_t > &faceIndices1, const MbSolid &solid2, const SArray< size_t > &faceIndices2, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать кривые пересечения граней двух оболочек.
MbResultType IntersectionCurve (const MbSolid &solid1, const SArray< size_t > &faceIndices1, const bool same1, const MbSolid &solid2, const SArray< size_t > &faceIndices2, const bool same2, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать кривые пересечения граней двух оболочек.
MbResultType IntersectionCurve (const MbSurface &surface1, bool ext1, const MbCartPoint &uv1beg, const MbCartPoint &uv1end, const MbSurface &surface2, bool ext2, const MbCartPoint &uv2beg, const MbCartPoint &uv2end, const MbVector3D &dir, MbCurve *&result1, MbCurve *&result2, MbeCurveBuildType &label)
 Создать линию пересечения поверхностей.
MbResultType SpaceSplineThrough (const SArray< MbCartPoint3D > &points, MbeSplineParamType paramType, size_t degree, bool closed, RPArray< MbPntMatingData< MbVector3D > > &transitions, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать пространственный сплайн через точки и с сопряжениями.
MbResultType SpaceSplineBy (const SArray< MbCartPoint3D > &points, size_t degree, bool closed, const SArray< double > *weights, const SArray< double > *knots, MbPntMatingData< MbVector3D > *begData, MbPntMatingData< MbVector3D > *endData, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать пространственный сплайн по точкам и с сопряжениями.
MbResultType SurfaceSpline (const MbSurface &surface, bool throughPoints, SArray< MbCartPoint > &paramPnts, SArray< double > &paramWts, bool paramClosed, RPArray< MbPntMatingData< MbVector3D > > &spaceTransitions, const MbSNameMaker &snMaker, MbWireFrame *&result)
 Создать кривую на поверхности.
MbResultType IsoparametricCurve (const MbSurface &surface, double x, bool isU, const MbRect1D *yRange, MbCurve3D *&result)
 Создать изопараметрическую кривую.
MbResultType BridgeCurve (const MbCurve3D &curve1, double t1, bool sense1, const MbCurve3D &curve2, double t2, bool sense2, const MbSNameMaker &names, MbWireFrame *&result)
 Создать кривую - мостик, соединяющую кривые curve1 и curve2.
MbResultType ConnectingCurve (const MbCurve3D &curve1, bool isBegin1, double radius1, const MbCurve3D &curve2, bool isBegin2, double radius2, const MbSNameMaker &names, MbWireFrame *&result)
 Создать составную кривую плавного соединения концов двух кривых.
MbResultType ConnectingSpline (const MbCurve3D &curve1, double t1, MbeMatingType mating1, const MbCurve3D &curve2, double t2, MbeMatingType mating2, double tension1, double tension2, const MbSNameMaker &names, MbWireFrame *&result)
 Создать соединительную NURBS кривую для кривых curve1 и curve2.
MbResultType FilletCurve (const MbCurve3D &curve1, double &t1, double &w1, const MbCurve3D &curve2, double &t2, double &w2, double &radius, bool sense, bool &unchanged, const MbeConnectingType type, const MbSNameMaker &names, MbElementarySurface *&surface, MbWireFrame *&result)
 Создать кривую для плавного соединения (скругления) кривых.
MbResultType CreateContourFillets (const MbContour3D &contour, SArray< double > &radiuses, MbCurve3D *&result, const MbeConnectingType type)
 Создать кривую для плавного соединения (скругления) всех кривых контура.
MbCurve3DNurbsConic_1 (const MbCartPoint3D &mbPoint0, const MbCartPoint3D &mbPoint1, const MbCartPoint3D &mbPoint2, double fDiscr)
 Построить коническое сечение по двум точкам вершине и дискриминанту.
MbCurve3DNurbsConic_2 (std::vector< MbCartPoint3D > &vmbConicPoints, const MbCartPoint3D &mbVertex)
 Построить коническое сечение по трем точкам и вершине.
MbCurve3DNurbsConic_3 (const std::vector< MbCartPoint3D > &vmbConicPoints, MbVector3D &mbTangent1, MbVector3D &mbTangent2)
 Построить коническое сечение по трем точкам и двум наклонам.
MbCurve3DNurbsConic_4 (const MbCartPoint3D &mbPoint1, const MbCartPoint3D &mbPoint2, const MbVector3D &mbTangent1, const MbVector3D &mbTangent2, double fDiscr)
 Построить коническое сечение по двум точкам, двум наклонам и дискриминанту.
MbCurve3DNurbsConic_5 (const std::vector< MbCartPoint3D > &vmbConicPoints, MbVector3D &mbTangent1, size_t tanPntNb=1)
 Построить коническое сечение по четырем точкам и наклону.
MbCurve3DNurbsConic_6 (const std::vector< MbCartPoint3D > &vmbConicPoints)
 Построить коническое сечение по пяти точкам.
bool InitContour3D (MbContour3D &contour, bool closed, SArray< Polyline3DPoint > &initList, SArray< ptrdiff_t > &errorIndexes, double lengthEpsilon=Math::lengthEpsilon)
 Построить контур из отрезков по заданным точкам.
MbCreatorCreateFilletEdge (const MbCurve3D &curve1, double &t1, const MbCurve3D &curve2, double &t2, double &radius, bool sense, MbeConnectingType type, const MbSNameMaker &names, MbResultType &res, bool &unchanged, MbElementarySurface *&surface, MbEdge *&edge)
 Создание строителя скругления двух кривых.
MbCreatorCreateSplineEdge (const MbCurve3D &curve1, double t1, MbeMatingType mating1, const MbCurve3D &curve2, double t2, MbeMatingType mating2, double tension1, double tension2, const MbSNameMaker &names, MbResultType &res, MbEdge *&edge)
 Создание строителя сопряжения двух кривых сплайном.
MbCreatorCreateConnectingEdge (const MbCurve3D &curve1, bool isBegin1, double radius1, const MbCurve3D &curve2, bool isBegin2, double radius2, const MbSNameMaker &names, MbResultType &res, MbEdge *&edge)
 Создание строителя сопряжения концов двух кривых составной кривой плавного соединения.
MbCreatorCreateBridgeEdge (const MbCurve3D &curve1, double t1, bool sense1, const MbCurve3D &curve2, double t2, bool sense2, const MbSNameMaker &names, MbResultType &res, MbEdge *&edge)
 Cоздание строителя сопряжения двух кривых кубическим сплайном Эрмита (кривой-мостиком).
MbCreatorCreateFillet (MbFaceShell *solid, MbeCopyMode sameShell, SArray< MbEdgeFunction > &initCurves, RPArray< MbFace > &initBounds, const SmoothValues &parameters, const MbSNameMaker &names, MbResultType &res, MbFaceShell *&shell)
 Создать оболочку со cкруглением ребeр.
MbCreatorCreateSplineThrough (const SArray< MbCartPoint3D > &points, MbeSplineParamType paramType, size_t degree, bool closed, RPArray< MbPntMatingData< MbVector3D > > &transitions, const MbSNameMaker &snMaker, MbResultType &resType, MbCurve3D *&resCurve)
 Создать пространственный сплайн через точки и с сопряжениями.
MbCreatorCreateSplineBy (const SArray< MbCartPoint3D > &points, size_t degree, bool closed, const SArray< double > *weights, const SArray< double > *knots, MbPntMatingData< MbVector3D > *begData, MbPntMatingData< MbVector3D > *endData, const MbSNameMaker &snMaker, MbResultType &resType, MbCurve3D *&resCurve)
 Создать пространственный сплайн по точкам и сопряжениями.
MbCreatorCreateOffsetCurve (const MbCurve3D &initCurve, const MbVector3D &offsetVect, const bool useFillet, const bool keepRadius, const bool bluntAngle, const bool fromBeg, const MbSNameMaker &snMaker, MbResultType &resType, MbCurve3D *&resCurve)
 Создать офсетную кривую по трехмерной кривой и вектору направления.
MbCreatorCreateOffsetCurve (const MbCurve3D &curve, const MbFace &face, const MbAxis3D &dirAxis, double dist, const MbSNameMaker &snMaker, MbResultType &resType, RPArray< MbCurve3D > &resCurves)
 Создать офсетную кривую по поверхностной кривой и значению смещения.
MbCreatorCreateSurfaceSpline (const MbSurface &surface, bool throughPoints, SArray< MbCartPoint > &paramPnts, SArray< double > &paramWts, bool paramClosed, RPArray< MbPntMatingData< MbVector3D > > &spaceTransitions, const MbSNameMaker &snMaker, MbResultType &resType, RPArray< MbCurve3D > &resCurves)
 Создать кривую на поверхности.
MbCurve3DMakeCurve3D (const MbCurve &curve, const MbPlacement3D &)
 Cоздать пространственную кривую.
void ExtractCurvesDeleteFrame (MbWireFrame *&wireFrame, RPArray< MbCurve3D > &curves)
 Забрать кривые и удалить каркас, если он не используется.
void ExtractCurveDeleteFrame (MbWireFrame *&wireFrame, MbCurve3D *&curve)
 Забрать первую кривую и удалить каркас, если он пуст и не используется.
bool CreateWireFrame (MbWireFrame *&result, const RPArray< MbCurve3D > &curves, const MbSNameMaker &snMaker, MbCreator *creator=NULL)
 Создать каркас по множеству кривых.
bool CreateWireFrame (MbWireFrame *&result, const MbCurve3D &curve, const MbSNameMaker &snMaker, MbCreator *creator=NULL)
 Создать каркас по кривой.

Функции

MbResultType Line ( const MbCartPoint3D point1,
const MbCartPoint3D point2,
MbCurve3D *&  result 
)

Создать прямую по двум точкам.

Аргументы:
[in]point1- Первая точка.
[in]point2- Вторая точка.
[out]result- Прямая.
Возвращает:
Возвращает код результата операции.
MbResultType Segment ( const MbCartPoint3D point1,
const MbCartPoint3D point2,
MbCurve3D *&  result 
)

Создать отрезок прямой по двум точкам.

Аргументы:
[in]point1- Первая точка.
[in]point2- Вторая точка.
[out]result- Отрезок.
Возвращает:
Возвращает код результата операции.
MbResultType Arc ( const MbCartPoint3D centre,
const SArray< MbCartPoint3D > &  points,
bool  curveClosed,
double  angle,
double &  a,
double &  b,
MbCurve3D *&  result 
)

Создать эллипс (окружность) или его дугу.
Контейнер points может содержать 0, 2 элементов.

Аргументы:
[in]centre- Центр эллипса (окружности)
[in]points- Точки дуги.
[in]curveClosed- Замкнутость дуги.
[in]angle- Угол наклона.
[in,out]a- Длина большой полуоси.
[in,out]b- Длина малой полуоси.
[out]result- Эллипс (окружность) или его дуга.
Возвращает:
Возвращает код результата операции.
MbResultType SplineCurve ( const SArray< MbCartPoint3D > &  pointList,
bool  curveClosed,
MbeSpaceType  curveType,
MbCurve3D *&  result 
)

Создать кривую, проходящую по набору точек, следующего типа:
curveType == st_LineSegment3D - отрезок,
curveType == st_Arc3D - окружность или дуга,
curveType == st_Polyline3D - ломаная,
curveType == st_Bezier3D - кривая Безье,
curveType == st_CubicSpline3D - кубический сплайн,
curveType == st_Hermit3D - составной кубический сплайн Эрмита,
curveType == st_Nurbs3D - неоднородный рациональный B-сплайн четвертого порядка (кубический).

Аргументы:
[in]pointList- Набор точек.
[in]curveClosed- Замкнутость кривой.
[in]curveType- Тип кривой.
[out]result- Кривая.
Возвращает:
Возвращает код результата операции.
MbResultType NurbsCurve ( const SArray< MbCartPoint3D > &  pointList,
const SArray< double > &  weightList,
size_t  degree,
const SArray< double > &  knotList,
bool  curveClosed,
MbCurve3D *&  result 
)

Создать NURBS-кривую, построенную по набору контрольных точек.
Контейнер weightList может быть пустым.
Контейнер knotList может быть пустым.

Аргументы:
[in]pointList- Множество точек.
[in]weightList- Множество весов.
[in]degree- Порядок сплайна.
[in]knotList- Множество параметрических узлов (Узловой вектор).
[in]curveClosed- Замкнутость кривой.
[out]result- Сплайновая кривая.
Возвращает:
Возвращает код результата операции.
MbResultType NurbsCopy ( const MbCurve3D curve,
MbCurve3D *&  result 
)

Создать копию кривой в виде NURBS.

Аргументы:
[in]curve- Исходная кривая.
[out]result- Сплайновая копия кривой.
Возвращает:
Возвращает код результата операции.
MbResultType RegularPolygon ( const MbCartPoint3D centre,
const MbCartPoint3D point,
const MbVector3D axisZ,
size_t  vertexCount,
bool  describe,
MbCurve3D *&  result 
)

Создать правильный многоугольник, вписанный в окружность
(при describe == true описанного вокруг окружности) с центром centre и проходящей через point:

  • при vertexCount <= 1 строится окружность с центром centre и проходящая через point,
  • при vertexCount == 2 строится прямоугольник со сторонами, параллельными глобальным осям и противоположными вершинами в centre и point.
Аргументы:
[in]centre- Центр.
[in]point- Точка.
[in]axisZ- Ось Z для создания ЛСК кривой.
[in]vertexCount- Количество вершин.
[in]describe- Описанный вокруг окружности.
[out]result- Правильный многоугольник.
Возвращает:
Возвращает код результата операции.
MbResultType SpiralCurve ( const MbPlacement3D place,
double  radius,
double  step,
double  angle,
MbCurve lawCurve,
bool  spiralAxis,
MbCurve3D *&  result 
)

Создать спираль.
Если spiralAxis == true, то lawCurve - определяет плоскую ось спирали.
Если spiralAxis == false, то lawCurve - определяет закон изменения радиуса спирали.

Аргументы:
[in]place- Локальная система координат.
[in]radius- Радиус спирали.
[in]step- Шаг спирали.
[in]angle- Угол коничности спирали.
[in]lawCurve- Формообразующая кривая.
[in]spiralAxis- Выбор режима формообразования
[out]result- Спиральная кривая.
Возвращает:
Возвращает код результата операции.
MbResultType SpiralCurve ( const MbCartPoint3D point0,
const MbCartPoint3D point1,
const MbCartPoint3D point2,
double  radius,
double  step,
double  angle,
MbCurve lawCurve,
bool  spiralAxis,
MbCurve3D *&  result 
)

Создать спираль.
Если spiralAxis == true, то lawCurve - определяет плоскую ось спирали.
Если spiralAxis == false, то lawCurve - определяет закон изменения радиуса спирали.
Если lawCurve == NULL, то строится коническая спираль с углом конусности angle.

Аргументы:
[in]point0- Начало локальной системы координат (ЛСК).
[in]point1- Точка на оси Z ЛСК.
[in]point2- Точка на оси X ЛСК.
[in]radius- Радиус спирали.
[in]step- Шаг спирали.
[in]angle- Угол коничности спирали.
[in]lawCurve- Формообразующая кривая.
[in]spiralAxis- Выбор режима формообразования
[out]result- Спиральная кривая.
Возвращает:
Возвращает код результата операции.
MbResultType CreateContour ( MbCurve3D curve,
MbContour3D *&  result 
)

Создать составную кривую (контур) на базе исходной кривой.

Аргументы:
[in]curve- Исходная кривая.
[out]result- Контур на основе кривой.
Возвращает:
Возвращает код результата операции.
MbCurve3D* DuplicateCurve ( const MbCurve3D curve,
VERSION  version = Math::DefaultMathVersion() 
)

Создать копию кривой с разбивкой ломаной линии и заменой некоторых кривых.

Аргументы:
[in]curve- Исходная кривая.
[in]version- Версия исполнения.
Возвращает:
Возвращает модифицированную копию кривой, если получилось ее создать.
MbResultType AddCurveToContour ( MbCurve3D curve,
MbCurve3D contour,
bool  toEnd 
)

Добавить кривую curve в составную кривую (контур) contour.
Если toEnd == true, то добавить в конец.
Если toEnd == false, то добавить в начало.

Аргументы:
[in]curve- Добавляемая кривая
[in,out]contour- Модифицируемый контур.
[in]toEnd- Флаг места добавления кривой.
Возвращает:
Возвращает код результата операции.
MbResultType PlaneCurve ( const MbPlacement3D place,
const MbCurve curve,
MbCurve3D *&  result 
)

Построить кривую в пространстве по двумерной кривой сurve на плоскости place.
Построение выполняется на оригинале кривой.

Аргументы:
[in]place- Система координат плоскости.
[in]curve- Двумерная кривая
[out]result- Плоская кривая.
Возвращает:
Возвращает код результата операции.
MbResultType SurfaceCurve ( const MbSurface surface,
const MbCurve curve,
MbCurve3D *&  result 
)

Построить кривую на поверхности surface по двумерной кривой сurve.
Построение выполняется на оригиналах кривой и поверхности.

Аргументы:
[in]surface- Поверхность.
[in]curve- Двумерная кривая
[out]result- Поверхностная кривая.
Возвращает:
Возвращает код результата операции.
MbResultType CurveOnSurface ( const MbCurve3D curve,
const MbSurface surf,
bool  sameSurf,
bool  extSurf,
MbCurve3D *&  result,
bool  strictOnSurface = false 
)

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

Аргументы:
[in]curve- Пространственная кривая.
[in]surf- Поверхность.
[in]sameSurf- Использовать оригинал поверхности.
[in]extSurf- Искать на расширенной поверхности.
[in]strictOnSurface- Все точки кривой лежат на поверхности (true) или часть точек лежит на поверхности (false).
[out]result- Поверхностная кривая.
Возвращает:
Возвращает код результата операции.
bool IsCurveOnSurface ( const MbCurve3D curve,
const MbSurface surf,
bool  ext,
bool  strictOnSurface = false 
)

Проверить, лежит ли кривая полностью на поверхности.

Аргументы:
[in]curve- Пространственная кривая.
[in]surf- Поверхность.
[in]ext- Искать на расширенной поверхности.
[in]strictOnSurface- Все точки кривой лежат на поверхности (true) или часть точек лежит на поверхности (false).
Возвращает:
Возвращает true, если кривая лежит на поверхности.
MbResultType CreateContours ( RPArray< MbCurve3D > &  curves,
double  metricEps,
RPArray< MbContour3D > &  result,
bool  onlySmoothConnected = false,
VERSION  version = Math::DefaultMathVersion() 
)

Создать массив контуров по массиву кривых (на оригиналах кривых).

Аргументы:
[in]curves- Множество кривых.
[in]metricEps- Радиус захвата для стыковки кривых.
[out]result- Множество контуров.
[in]onlySmoothConnected- Добавлять в контур только гладко стыкующиеся сегменты.
[in]version- Версия исполнения.
Возвращает:
Возвращает код результата операции.
MbResultType CreateContours ( RPArray< MbCurve3D > &  curves,
double  metricAcc,
bool  onlySmoothConnected = false,
VERSION  version = Math::DefaultMathVersion() 
)

Создать контуры по набору кривых с удалением вырожденных (на оригиналах кривых).

Аргументы:
[in,out]curves- Множество кривых.
[in]metricAcc- Радиус захвата для стыковки кривых.
[in]onlySmoothConnected- Добавлять в контур только гладко стыкующиеся сегменты.
[in]version- Версия исполнения.
Возвращает:
Возвращает код результата операции.
MbResultType WireFrame ( const MbCurve3D curve,
const MbName curveName,
SimpleName  mainName,
MbWireFrame *&  result 
)

Создать именованный трехмерный каркас по кривой.

Аргументы:
[in]curve- Кривая.
[in]curveName- Имя кривой.
[in]mainName- Главное имя операции.
[out]result- Каркас.
Возвращает:
Возвращает код результата операции.
MbResultType WireFrame ( const RPArray< MbCurve3D > &  curves,
const RPArray< MbName > &  curveNames,
SimpleName  mainName,
MbWireFrame *&  result 
)

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

Аргументы:
[in]curves- Множество кривых.
[in]curveNames- Множество имен кривых.
[in]mainName- Главное имя операции.
[out]result- Каркас.
Возвращает:
Возвращает код результата операции.
MbResultType CreatePolyArcCurve3D ( const MbCurve3D curve,
MbCurve3D *&  result,
double &  eps,
double  minRad = Math::minRadius,
double  maxRad = Math::maxRadius 
)

Аппроксимировать контур дугами и отрезками.
Производится аппроксимация каждого из сегментов контура.

Аргументы:
[in]curve- Кривая или контур, которую надо аппроксимировать.
[out]result- Результат аппроксимации.
[in]eps- Ошибка аппроксимации.
[in]minRad- Минимально допустимый радиус окружностей, используемых для аппроксимации.
[in]maxRad- Максимально допустимый радиус окружностей, используемых для аппроксимации.
Возвращает:
- Возращает код результата операции.
bool GetSpaceCurve ( const MbItem item,
bool  keepPlacement,
SPtr< MbCurve3D > &  curve0,
std::vector< SPtr< MbCurve3D > > *  curves = NULL 
)

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

Аргументы:
[in]item- Модельный объект.
[in]keepPlacement- Сохранять несущую плоскость.
[out]curve0- Пространственная кривая.
[out]curves- Дополнительные пространственные кривые (могут быть в объекте MbPlaneInstance).
Возвращает:
- Возвращает успешность результата операции.
MbResultType EvolutionSection ( const MbSweptData generCurves,
const MbCurve3D guideCurve,
double  guideParam,
const EvolutionValues params,
MbSweptData result,
VERSION  version = Math::DefaultMathVersion(),
double  angleEpsilon = ANGLE_EPSILON 
)

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

Аргументы:
[in]generCurves- Множество плоских образующих.
[in]guideCurve- Направляющая кривая (или контур).
[in]guideParam- Параметр, заданный на направляющей кривой.
[in]angleEpsilon- Желаемая угловая точность параллельности касательных в точке стыка сегментов контура.
[out]result- Кривые сечения кинематического тела.
Возвращает:
Возвращает код результата операции.
bool IsLikeStraightLine ( const MbCurve curve,
double  eps 
)

Является ли кривая прямолинейной независимо от ее параметризации.

Аргументы:
[in]curve- Кривая.
[in]eps- Точность.
bool CheckJoinedParams ( const MbCurve3D curve,
SArray< double > &  params,
bool  isAscending 
)

Проверить параметры кривой и нормализовать параметры замкнутой кривой.

Аргументы:
[in]curve- Кривая.
[in,out]params- Множество параметров кривой.
[in]isAscending- Будет ли порядок параметров возрастающим.
Возвращает:
Возвращает true, если удалось нормализовать массив параметров.
Предупреждения:
Вспомогательная функция операции JoinShell.
MbCurve3D* CreateJoinedCurve ( const RPArray< MbCurveEdge > &  edges,
const SArray< bool > &  orients,
const MbMatrix3D matr,
MbResultType res 
)

Создать кривую для поверхности соединения по списку ребер.

Аргументы:
[in]edges- Набор ребер.
[in]orients- Ориентации ребер.
[in]matr- Матрица преобразования ребер.
[out]res- Результат операции.
Возвращает:
Возвращает указатель на кривую, если ее получилось создать, иначе возвращает ноль.
Предупреждения:
Вспомогательная функция операции JoinShell.
MbCurve3D* TrimClosedSpine ( const MbCurve3D curve,
double  t 
)

Выполнить построение копии замкнутой кривой с началом в точке, определяемой параметром t.

Аргументы:
[in]curve- Направляющая кривая.
[in]t- Параметр кривой.
Возвращает:
При удачной работе функция возвращает построенную копию кривой с началом в заданной точке, в противном случае функция возвращает ноль.
Предупреждения:
Вспомогательная функция операций EvolutionSolid и EvolutionResult.
MbResultType CalculatePipePoints ( const MbCartPoint3D origin1,
const MbVector3D direction1,
double  length1,
double  radius1,
const MbCartPoint3D origin2,
const MbVector3D direction2,
double  length2,
double  radius2,
MbCartPoint3D result1,
MbCartPoint3D result2 
)

Рассчитать вершины ломаной point1 и point2, соединяющей точки origin1 и origin2, сдвинутые в направлениях direction1 и direction2 на расстояния length1 и length2, которую можно скруглить радиусами radius1 и radius2.

Аргументы:
[in]origin1- Первая точка.
[in]direction1- Направление сдвига первой точки.
[in]length1- Величина сдвига первой точки.
[in]radius1- Радиус скругления для первой точки.
[in]origin2- Вторая точка.
[in]direction2- Направления сдвига для второй точки.
[in]length2- Величина сдвига для второй точки.
[in]radius2- Радиус скругления для второй точки.
[out]result1- Первая точка ломаной.
[out]result2- Вторая точка ломаной.
Возвращает:
Возвращает код результата операции.
MbResultType OffsetPlaneCurve ( const MbCurve3D curve,
double  d,
MbCurve3D *&  result 
)

Создать эквидистантную кривую по плоской кривой.

Аргументы:
[in]curve- Исходная кривая.
[in]d- Величина эквидистанты.
[out]result- Эквидистантная кривая.
Возвращает:
Возвращает код результата операции.
MbResultType OffsetCurve ( const MbCurve3D initCurve,
const MbVector3D offsetVect,
const bool  useFillet,
const bool  keepRadius,
const bool  bluntAngle,
const bool  fromBeg,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

Создать эквидистантную кривую по трехмерной кривой и вектору направления.

Аргументы:
[in]initCurve- Постранственная кривая, к которой строится эквидистантная.
[in]offsetVect- Вектор, задающий смещение в точке кривой.
[in]useFillet- Если true, то разрывы заполнять скруглением, иначе продолженными кривыми.
[in]keepRadius- Если true, то в существующих скруглениях сохранять радиусы.
[in]bluntAngle- Если true, то в притуплять острые углы.
[in]fromBeg- Вектор смещения привязан к началу.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType OffsetCurve ( const MbCurve3D curve,
const MbFace face,
const MbAxis3D dirAxis,
double  dist,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

Создать эквидистантную кривую по поверхностной кривой и значению смещения.

Аргументы:
[in]curve- Кривая на поверхности грани face.
[in]face- Грань, на которой строится эквидистанта.
[in]dirAxis- Направление смещения с точкой приложения.
[in]dist- Величина смещения.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType CurveProjection ( const MbSurface surface,
const MbCurve3D curve,
MbVector3D direction,
bool  createExact,
bool  truncateByBounds,
RPArray< MbCurve3D > &  result,
VERSION  version = Math::DefaultMathVersion() 
)

Создать проекцию кривой curve на поверхность surface (направление проецирования direction может быть NULL).

Аргументы:
[in]surface- Поверхность для проецирования.
[in]curve- Проецируемая кривая.
[in]direction- Направление проецирования (если не указано то проецирование по нормали).
[in]createExact- Создавать проекционную кривую при необходимости.
[in]truncateByBounds- Усекать границами поверхности.
[in]version- Версия исполнения.
[out]result- Множество кривых на поверхности.
Возвращает:
Возвращает код результата операции.
MbResultType CurveByTwoProjections ( const MbPlacement3D place1,
const MbCurve curve1,
const MbPlacement3D place2,
const MbCurve curve2,
RPArray< MbCurve3D > &  result,
VERSION  version = Math::DefaultMathVersion() 
)

Создать пространственную кривую по двум плоским проекциям.

Аргументы:
[in]place1- Локальная система координат 1.
[in]curve1- Двумерная кривая 1.
[in]place2- Локальная система координат 2.
[in]curve2- Двумерная кривая 2.
[out]result- Множество трехмерных кривых.
Возвращает:
Возвращает код результата операции.
MbResultType ProjectionCurve ( const MbCurve3D curve,
const RPArray< MbFace > &  faces,
const MbVector3D dir,
const bool  createExact,
const bool  truncateByBounds,
const MbSNameMaker snMaker,
RPArray< MbCurve3D > &  result,
SArray< uintptr_t > *  resultIndices 
)

Создать проекционную кривую по нормали или по направлению.
Если проекция на конструктивную плоскость (плоскость без границ), то создать на ее основе грань и прислать, а за ее удалением следит приславший.

Аргументы:
[in]curve- Проецируемая кривая.
[in]faces- Связный набор граней.
[in]dir- Вектор направления (если его нет, проекция по нормали).
[in]createExact- Создавать проекционную кривую при необходимости.
[in]truncateByBounds- Усечь границами.
[in]snMaker- Именователь с версией.
[out]result- Проекционные кривые.
[out]resultIndices- Индексы соответствия (номера граней в исходном массиве).
Возвращает:
Возвращает код результата операции.
MbResultType ProjectionCurve ( const MbWireFrame wireFrame,
const bool  sameWireFrame,
const MbSolid solid,
const bool  same,
const SArray< size_t > &  faceIndices,
const MbVector3D dir,
const bool  createExact,
const bool  truncateByBounds,
const MbSNameMaker snMaker,
MbWireFrame *&  resFrame 
)

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

Аргументы:
[in]wireFrame- Проецируемый проволочный каркас.
[in]sameWireFrame- Использовать тот же экземпляр проволочного каркаса, или создать копию.
[in]solid- Тело.
[in]same- Использовать ли тот же экземпляр журнала тела или создать копию.
[in]faceIndices- Номера граней в первой оболочке.
[in]dir- Вектор направления (если его нет, проекция по нормали).
[in]createExact- Создавать проекционную кривую при необходимости.
[in]truncateByBounds- Усечь границами.
[in]snMaker- Именователь с версией.
[out]resFrame- Результирующий проволочный каркас, в котором в атрибутах ребер лежат имена соответствующих граней.
Возвращает:
Возвращает код результата операции.
bool EliminateProjectionCurveOverlay ( RPArray< MbCurve3D > &  curves,
SArray< uintptr_t > *  indices 
)

Устранить наложение сегментов проекционной кривой (вспомогательная функция для функции ProjectionCurve).

Аргументы:
[in,out]curves- Множество кривых.
[in,out]indices- Множество индексов, синхронный с массивом кривых.
Возвращает:
Возвращает true, если что-то изменилось в наборе кривых.
MbResultType IntersectionCurve ( const MbSurface surface1,
const MbSurface surface2,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

Создать кривые пересечения двух поверхностей. Результат - массив кривых пересечения поверхностей.

Аргументы:
[in]surface1- Первая поверхность.
[in]surface2- Вторая поверхность.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
Предупреждения:
Лучше использовать IntersectionCurve на гранях, т.к. границы поверхностей могут бы неточные,
что приведет к неточному положению концов кривых пересечения в результате операции.
В гранях же границы поверхности точные, т.к. хранятся в виде кривых пересечения, а не виде двумерных кривых.
MbResultType IntersectionCurve ( MbFace face1,
MbFace face2,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

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

Аргументы:
[in]face1- Первая грань оболочки.
[in]face2- Вторая грани оболочки.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType IntersectionCurve ( const MbSolid solid1,
const SArray< size_t > &  faceIndices1,
const MbSolid solid2,
const SArray< size_t > &  faceIndices2,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

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

Аргументы:
[in]solid1- Первая оболочка.
[in]faceIndices1- Номера граней в первой оболочке.
[in]solid2- Вторая оболочка.
[in]faceIndices2- Номера граней во второй оболочке.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType IntersectionCurve ( const MbSolid solid1,
const SArray< size_t > &  faceIndices1,
const bool  same1,
const MbSolid solid2,
const SArray< size_t > &  faceIndices2,
const bool  same2,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

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

Аргументы:
[in]solid1- Первая оболочка.
[in]faceIndices1- Номера граней в первой оболочке.
[in]same1- Использовать ли тот же журнал построителей первого тела или сделать копию.
[in]solid2- Вторая оболочка.
[in]faceIndices2- Номера граней во второй оболочке.
[in]same2- Использовать ли тот же самый журнал построителей второго тела или сделать копию.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType IntersectionCurve ( const MbSurface surface1,
bool  ext1,
const MbCartPoint uv1beg,
const MbCartPoint uv1end,
const MbSurface surface2,
bool  ext2,
const MbCartPoint uv2beg,
const MbCartPoint uv2end,
const MbVector3D dir,
MbCurve *&  result1,
MbCurve *&  result2,
MbeCurveBuildType label 
)

Создать линию пересечения поверхностей surf1 и surf2 по известным началу и концу линии пересечения.

Аргументы:
[in]surface1- Первая поверхность.
[in]ext1- На расширенной первой поверхности.
[in]uv1beg- Начальная точка на первой поверхности.
[in]uv1end- Конечная точка на первой поверхности.
[in]surface2- Вторая поверхность.
[in]ext2- На расширенной второй поверхности.
[in]uv2beg- Начальная точка на второй поверхности.
[in]uv2end- Конечная точка на второй поверхности.
[in]dir- Начальное направление создания линии пересечения.
[out]result1- Двумерная кривая на первой поверхности.
[out]result2- Двумерная кривая на второй поверхности.
[out]label- Тип полученной кривой пересечения.
Возвращает:
Возвращает код результата операции.
MbResultType SpaceSplineThrough ( const SArray< MbCartPoint3D > &  points,
MbeSplineParamType  paramType,
size_t  degree,
bool  closed,
RPArray< MbPntMatingData< MbVector3D > > &  transitions,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

Создать пространственный сплайн через точки и с сопряжениями.
Примечания:
Если есть сопряжения, то количество сопряжений должно быть равно количеству точек.
Отсутствующие сопряжения должны быть представлены нулевыми указателями в массиве

Аргументы:
[in]points- Точки.
[in]paramType- Тип параметризации.
[in]degree- Порядок сплайна.
[in]closed- Замкнутость сплайна.
[in]transitions- Заданные сопряжения.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType SpaceSplineBy ( const SArray< MbCartPoint3D > &  points,
size_t  degree,
bool  closed,
const SArray< double > *  weights,
const SArray< double > *  knots,
MbPntMatingData< MbVector3D > *  begData,
MbPntMatingData< MbVector3D > *  endData,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

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

Аргументы:
[in]points- Множество точек.
[in]degree- Порядок сплайна.
[in]closed- Строить замкнутый сплайн.
[in]weights- Множество весов точек.
[in]knots- Узловой вектор сплайна.
[in]begData- Сопряжение в начале.
[in]endData- Сопряжение в конце.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType SurfaceSpline ( const MbSurface surface,
bool  throughPoints,
SArray< MbCartPoint > &  paramPnts,
SArray< double > &  paramWts,
bool  paramClosed,
RPArray< MbPntMatingData< MbVector3D > > &  spaceTransitions,
const MbSNameMaker snMaker,
MbWireFrame *&  result 
)

Создать кривую на поверхности.
Примечания:
1. Если есть сопряжения, то количество сопряжений должно быть равно количеству точек.
Отсутствующие сопряжения должны быть представлены нулевыми указателями в массиве
2. Если сплайн строится через точки, то сопряжения могуть быть заданы произвольно.
2. Если сплайн строится по полюсам и он незамкнут, то сопряжения могут быть только на концах.
3. Если сплайн строится по полюсам и он замкнут, то сопряжения должны отсутствовать.
4. Множество весов должен быть пуст или синхронизирован с массивом точек по количеству (с опцией throughPoints веса игнорируются).

Аргументы:
[in]surface- Поверхность.
[in]throughPoints- Провести сплайн через точки.
[in]paramPnts- Множество параметрических точек.
[in]paramWts- Множество весов параметрических точек.
[in]paramClosed- Строить замкнутый параметрический сплайн.
[in]spaceTransitions- Сопряжения в точках.
[in]snMaker- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType IsoparametricCurve ( const MbSurface surface,
double  x,
bool  isU,
const MbRect1D yRange,
MbCurve3D *&  result 
)

Создать изопараметрическую кривую на поверхности surface.

Аргументы:
[in]surface- Поверхность.
[in]x- Значение по первому параметру.
[in]isU- Первый параметр есть U.
[in]yRange- Диапазон по второму параметру (если не задан, используются параметрические границы поверхности).
[out]result- Изопараметрическая кривая.
Возвращает:
Возвращает код результата операции.
MbResultType BridgeCurve ( const MbCurve3D curve1,
double  t1,
bool  sense1,
const MbCurve3D curve2,
double  t2,
bool  sense2,
const MbSNameMaker names,
MbWireFrame *&  result 
)

Создать кривую - мостик, соединяющую кривые curve1 и curve2 кубическим сплайном Эрмита.

Аргументы:
[in]curve1- Сопрягаемая кривая 1.
[in]t1- Параметр точки на сопрягаемой кривой 1.
[in]sense1- Начало мостика совпадает с направлением кривой curve1 (true).
[in]curve2- Сопрягаемая кривая 2.
[in]t2- Параметр точки на сопрягаемой кривой 2.
[in]sense2- Конец мостика совпадает с направлением кривой curve2 (true).
[in]names- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType ConnectingCurve ( const MbCurve3D curve1,
bool  isBegin1,
double  radius1,
const MbCurve3D curve2,
bool  isBegin2,
double  radius2,
const MbSNameMaker names,
MbWireFrame *&  result 
)

Создать составную кривую плавного соединения концов двух кривых.
Полученная кривая состоит из трёхмерной дуги радиуса radius1, отрезка (в определенных случаях отрезок отсутствует), трёхмерной дуги радиуса radius2.

Аргументы:
[in]curve1- Соединяемая кривая 1.
[in]isBegin1- Начало соединяемой кривой 1 (true).
[in]radius1- Радиус сопряжения у соединяемой кривой 1.
[in]curve2- Соединяемая кривая 2.
[in]isBegin2- Начало соединяемой кривой 2 (true).
[in]radius2- Радиус сопряжения у соединяемой кривой 2.
[in]names- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType ConnectingSpline ( const MbCurve3D curve1,
double  t1,
MbeMatingType  mating1,
const MbCurve3D curve2,
double  t2,
MbeMatingType  mating2,
double  tension1,
double  tension2,
const MbSNameMaker names,
MbWireFrame *&  result 
)

Создать соединительную NURBS кривую для кривых curve1 и curve2.
t1 и t2 - параметры кривых curve1 и curve2, в точках которых начинается и заканчивается соединение.

Аргументы:
[in]curve1- Соединяемая кривая 1.
[in]t1- Параметр точки на кривой 1.
[in]mating1- Тип соединения кривой 1.
[in]curve2- Соединяемая кривая 2.
[in]t2- Параметр точки на кривой 2.
[in]mating2- Тип соединения кривой 2.
[in]tension1- Параметр "натяжение" соединительной кривой на стыке с кривой 1 ( 0<= tension1 <=1).
[in]tension2- Параметр "натяжение" соединительной кривой на стыке с кривой 2( 0<= tension2 <=1).
[in]names- Именователь кривых каркаса.
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType FilletCurve ( const MbCurve3D curve1,
double &  t1,
double &  w1,
const MbCurve3D curve2,
double &  t2,
double &  w2,
double &  radius,
bool  sense,
bool &  unchanged,
const MbeConnectingType  type,
const MbSNameMaker names,
MbElementarySurface *&  surface,
MbWireFrame *&  result 
)

Создать кривую для плавного соединения (скругления) кривых.
Для плавного сопряжения кривых curve1 и curve2 строится кривая filletCurve.
При входе t1 и t2 - начальные приближения, определяющие сектор построения скругления, w1 и w2 - не используются.
При входе type - тип скругления (обычное или на поверхности).
На выходе t1 и t2 - будут равны параметрам касания кривых curve1 и curve2 с кривой filletCurve.
На выходе t1 и w1 - определяют параметры сохраняемого участка при обрезке кривой curve1.
На выходе t2 и w2 - определяют параметры сохраняемого участка при обрезке кривой curve2.
Параметр radius - радиус дуги или цилиндра.
Если радиус radius не задан (равен нулю), то он вычисляется из условия, что начало кривой сопряжения будет находится в точке с параметором t1, t1 и t2 - параметры кривых curve1 и curve2, в соответствующих точках которых начинается и заканчивается скругление.
Параметр sense - прямое или обратное направление кривой скругления.
Кривая filletCurve - это кривая сопряжения, дуга (когда surface == NULL) или кривая на поверхности цилиндра surface.
Поверхность surface - это цилиндрическая поверхность, на которой строится кривая сопряжения в общем случае. Поверхность surface нельзя удалять, на этой поверхности построена кривая сопряжения filletCurve, при удалении filletCurve удалится surface, если не был дополнительно выполнен surface->AddRef().

Аргументы:
[in]curve1- Соединяемая кривая 1.
in/out]t1 - Параметр точки на кривой 1 соединения с кривой соединения.
[out]w1- Параметр края на кривой 1.
[in]curve2- Соединяемая кривая 2.
in/out]t2 - Параметр точки на кривой 2 соединения с кривой соединения.
[out]w2- Параметр края на кривой 2.
in/out]radius - Радиус дуги или цилиндра.
[in]sense- Прямое (true) или обратное (false) направление кривой скругления.
[out]unchanged- Не изменился радиус соединения (true) или изменился (false).
[in]type- Тип скругления.
[in]names- Именователь кривых каркаса.
[out]surface- Поверхность, на которой базируется соединительная кривая, (может быть NULL).
[out]result- Каркас с построенными кривыми.
Возвращает:
Возвращает код результата операции.
MbResultType CreateContourFillets ( const MbContour3D contour,
SArray< double > &  radiuses,
MbCurve3D *&  result,
const MbeConnectingType  type 
)

Создать кривую для плавного соединения (скругления) всех кривых контура contour.
type - тип скругления (обычное или на поверхности).
radiuses - радиусы скругления, i-й радиус соответствует стыку i-го и i+1-го сегмента.
Если две кривых в контуре гладко стыкуются, в этом стыке скругление не делается, радиус игнорируется.

Аргументы:
[in]contour- Исходный контур.
[in]radiuses- Множество радиусов скругления.
[out]result- Контур со скруглениями. Имя сегмента скругления - Hash32SN() имен исходных сегменов.
[in]type- Тип выполняемых скруглений.
Возвращает:
Возвращает код результата операции.
MbCurve3D* NurbsConic_1 ( const MbCartPoint3D mbPoint0,
const MbCartPoint3D mbPoint1,
const MbCartPoint3D mbPoint2,
double  fDiscr 
)

Построение конического сечения в виде NURBS-кривой 3-го порядка по двум точкам, которые задают начало и конец кривой, вершине инженерного треугольника и дискриминанту, который используется для определения третьей точки кривой.

Аргументы:
[in]mbPoint0- Координаты начала коники.
[in]mbPoint1- Координаты вершины угла, в который надо вписать конику.
[in]mbPoint2- Координаты конца коники.
[in]fDiscr- Дискриминант < 1, если задать дискриминант >= 1, то он автоматически будет сброшен до значения 0.99999999.
Возвращает:
Указатель на построенную кривую
NULL, если не удалось построить конику для заданных параметров.
MbCurve3D* NurbsConic_2 ( std::vector< MbCartPoint3D > &  vmbConicPoints,
const MbCartPoint3D mbVertex 
)

Построение конического сечения в виде NURBS-кривой 3-го порядка по трем точкам: началу, концу и средней точке кривой, а также вершине угла, в который должна быть вписана коника.

Аргументы:
[in]vmbConicPoints- Контейнер точек коники: начало, средняя точка, конец; точек должно быть 3.
[in]mbVertex- Координаты вершины угла, в который надо вписать конику.
Возвращает:
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.
MbCurve3D* NurbsConic_3 ( const std::vector< MbCartPoint3D > &  vmbConicPoints,
MbVector3D mbTangent1,
MbVector3D mbTangent2 
)

Построение конического сечения в виде NURBS-кривой 3-го порядка по 3-ем точкам, которые задают начало, конец и среднюю точку кривой и двум наклонам, выходящим из начальной и конечной точек.

Аргументы:
[in]vmbConicPoints- Контейнер точек коники: начало, средняя точка, конец; точек должно быть 3.
[in]mbTangent1- Наклон в начале кривой.
[in]mbTangent2- Наклон в конце кривой.
Возвращает:
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.
MbCurve3D* NurbsConic_4 ( const MbCartPoint3D mbPoint1,
const MbCartPoint3D mbPoint2,
const MbVector3D mbTangent1,
const MbVector3D mbTangent2,
double  fDiscr 
)

Построение конического сечения в виде NURBS-кривой 3-го порядка по 2-ум точкам, которые задают начало и конец кривой, двум наклонам, выходящим из этих точек и дискриминанту.

Аргументы:
[in]mbPoint1- Координаты начала коники.
[in]mbPoint2- Координаты конца коники.
[in]mbTangent1- Наклон в начале коники.
[in]mbTangent2- Наклон в конце коники.
[in]fDiscr- Дискриминант < 1, если задать дискриминант >= 1, то он автоматически будет сброшен до значения 0.99999999.
Возвращает:
Указатель на построенную кривую
NULL, если не удалось построить конику для заданных параметров.
MbCurve3D* NurbsConic_5 ( const std::vector< MbCartPoint3D > &  vmbConicPoints,
MbVector3D mbTangent1,
size_t  tanPntNb = 1 
)

Построение конического сечения в виде NURBS-кривой 3-го порядка по 4-ем точкам и наклону в первой из них.
Путем подставления начальных точек в общее уравнение коники Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0 и касательной к ней в начальной точке (x1, y1): (2Ax1 + By1 + D)(x - x1) + (2Cy1 + Bx1 + E)(y - y1) = 0 получим СЛАУ. Решив СЛАУ относительно параметров A,B,C,D,E, найдем искомую конику.

Аргументы:
[in]vmbConicPoints- Контейнер точек коники: первая точка начальная, последняя - конечная; точек должно быть 4.
[in]mbTangent1- Наклон в точке коники.
[in]tanPntNb- Номер точке, в которой задан наклон.
Возвращает:
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.
MbCurve3D* NurbsConic_6 ( const std::vector< MbCartPoint3D > &  vmbConicPoints)

Построение конического сечения в виде NURBS-кривой 3-го порядка по 5-ти точкам.
Путем подставления начальных точек в общее уравнение коники Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0 получим СЛАУ. Решив СЛАУ относительно параметров A,B,C,D,E, найдем искомую конику.

Аргументы:
[in]vmbConicPoints- Контейнер точек коники: первая точка начальная, последняя - конечная; точек должно быть 5.
Возвращает:
Указатель на построенную кривую
NULL, если не удалось постороить конику для заданных параметров.
bool InitContour3D ( MbContour3D contour,
bool  closed,
SArray< Polyline3DPoint > &  initList,
SArray< ptrdiff_t > &  errorIndexes,
double  lengthEpsilon = Math::lengthEpsilon 
)

Вершины сочленения скругляются. Каждой вершине соответствует радиус скругления.
Eсли две вершины совпадают, то одна из них и соответствующий ей радиус удаляются.

Аргументы:
[out]contour- Контур.
[in]closed- Флаг замкнутости контура.
[in]initList- Множество точек полилинии.
[out]errorIndexes- Множество индексов сегментов, сочленение которых со следующим прошло с ошибками.
[in]lengthEpsilon- Погрешность построения элементов полилинии.
Возвращает:
true, если сегментов больше нуля.
MbCreator* CreateFilletEdge ( const MbCurve3D curve1,
double &  t1,
const MbCurve3D curve2,
double &  t2,
double &  radius,
bool  sense,
MbeConnectingType  type,
const MbSNameMaker names,
MbResultType res,
bool &  unchanged,
MbElementarySurface *&  surface,
MbEdge *&  edge 
)

Создание строителя скругления двух кривых.

Аргументы:
[in]curve1- Кривая 1.
[in]curve2- Кривая 2.
Возвращает:
Возвращает строитель.
MbCreator* CreateSplineEdge ( const MbCurve3D curve1,
double  t1,
MbeMatingType  mating1,
const MbCurve3D curve2,
double  t2,
MbeMatingType  mating2,
double  tension1,
double  tension2,
const MbSNameMaker names,
MbResultType res,
MbEdge *&  edge 
)

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

Аргументы:
[in]curve1- Кривая 1.
[in]curve2- Кривая 2.
Возвращает:
Возвращает строитель.
MbCreator* CreateConnectingEdge ( const MbCurve3D curve1,
bool  isBegin1,
double  radius1,
const MbCurve3D curve2,
bool  isBegin2,
double  radius2,
const MbSNameMaker names,
MbResultType res,
MbEdge *&  edge 
)

Создание строителя сопряжения концов двух кривых составной кривой плавного соединения.

Аргументы:
[in]curve1- Кривая 1.
[in]curve2- Кривая 2.
Возвращает:
Возвращает строитель.
MbCreator* CreateBridgeEdge ( const MbCurve3D curve1,
double  t1,
bool  sense1,
const MbCurve3D curve2,
double  t2,
bool  sense2,
const MbSNameMaker names,
MbResultType res,
MbEdge *&  edge 
)

Cоздание строителя сопряжения двух кривых кубическим сплайном Эрмита (кривой-мостиком).

Аргументы:
[in]curve1- Кривая 1.
[in]curve2- Кривая 2.
Возвращает:
Возвращает строитель.
MbCreator* CreateFillet ( MbFaceShell solid,
MbeCopyMode  sameShell,
SArray< MbEdgeFunction > &  initCurves,
RPArray< MbFace > &  initBounds,
const SmoothValues parameters,
const MbSNameMaker names,
MbResultType res,
MbFaceShell *&  shell 
)

Для указанной оболочки построить оболочку, в которой выполнено cкругление рёбер переменным радиусом.
Одновременно с построением оболочки функция создаёт её строитель.

Аргументы:
[in]solid- Исходная оболочка.
[in]sameShell- Способ копирования граней исходной оболочки.
[in]initCurves- Обрабатываемые рёбра исходной оболочки и значения переменного радиуса.
[in]initBounds- Грани исходной оболочки для обрезки cкругления или фаски.
[in]parameters- Параметры обработки рёбер.
[in]names- Именователь операции.
[out]res- Код результата операции.
[out]shell- Построенный набор граней.
Возвращает:
Возвращает строитель, если операция была выполнена успешно.
MbCreator* CreateSplineThrough ( const SArray< MbCartPoint3D > &  points,
MbeSplineParamType  paramType,
size_t  degree,
bool  closed,
RPArray< MbPntMatingData< MbVector3D > > &  transitions,
const MbSNameMaker snMaker,
MbResultType resType,
MbCurve3D *&  resCurve 
)

Создать пространственный сплайн через точки и с сопряжениями Если есть сопряжения, то количество сопряжений д.б. равно количеству точек. Отсутствующие сопряжения должны быть представлены нулевыми указателями в массиве.

Возвращает:
Возвращает строитель.
MbCreator* CreateSplineBy ( const SArray< MbCartPoint3D > &  points,
size_t  degree,
bool  closed,
const SArray< double > *  weights,
const SArray< double > *  knots,
MbPntMatingData< MbVector3D > *  begData,
MbPntMatingData< MbVector3D > *  endData,
const MbSNameMaker snMaker,
MbResultType resType,
MbCurve3D *&  resCurve 
)

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

Возвращает:
Возвращает строитель.
MbCreator* CreateOffsetCurve ( const MbCurve3D initCurve,
const MbVector3D offsetVect,
const bool  useFillet,
const bool  keepRadius,
const bool  bluntAngle,
const bool  fromBeg,
const MbSNameMaker snMaker,
MbResultType resType,
MbCurve3D *&  resCurve 
)

Создать офсетную кривую по трехмерной кривой и вектору направления.

Аргументы:
[in]initCurve- Постранственная кривая, к которой строится эквидистантная.
[in]offsetVect- Вектор, задающий смещение в точке кривой.
[in]useFillet- Если true, то разрывы заполнять скруглением, иначе продолженными кривыми.
[in]keepRadius- Если true, то в существующих скруглениях сохранять радиусы.
[in]fromBeg- Вектор смещения привязан к началу.
[in]snMaker- Именователь кривых каркаса.
[out]resType- Код результата операции
[out]resCurve- Эквидистантная кривая.
Возвращает:
Возвращает строитель.
MbCreator* CreateOffsetCurve ( const MbCurve3D curve,
const MbFace face,
const MbAxis3D dirAxis,
double  dist,
const MbSNameMaker snMaker,
MbResultType resType,
RPArray< MbCurve3D > &  resCurves 
)

Создать офсетную кривую по поверхностной кривой и значению смещения.

Аргументы:
[in]curve- Кривая на поверхности грани face.
[in]face- Грань, на которой строится эквидистанта.
[in]dirAxis- Направление смещения с точкой приложения.
[in]dist- Величина смещения.
[in]snMaker- Именователь кривых каркаса.
[out]resType- Код результата операции
[out]resCurves- Множество эквидистантных кривых.
Возвращает:
Возвращает строитель.
MbCreator* CreateSurfaceSpline ( const MbSurface surface,
bool  throughPoints,
SArray< MbCartPoint > &  paramPnts,
SArray< double > &  paramWts,
bool  paramClosed,
RPArray< MbPntMatingData< MbVector3D > > &  spaceTransitions,
const MbSNameMaker snMaker,
MbResultType resType,
RPArray< MbCurve3D > &  resCurves 
)

Создать кривую на поверхности.
Примечания:
1. Если есть сопряжения, то количество сопряжений д.б. равно количеству точек.
Отсутствующие сопряжения должны быть представлены нулевыми указателями в массиве
2. Если сплайн строится через точки, то сопряжения могуть быть заданы произвольно.
2. Если сплайн строится по полюсам и он незамкнут, то сопряжения могут быть только на концах.
3. Если сплайн строится по полюсам и он замкнут, то сопряжения должны отсутствовать.
4. Множество весов д.б. пуст или синхронизирован с массивом точек по количеству (с опцией throughPoints веса игнорируются).

Аргументы:
[in]surface- Поверхность.
[in]throughPoints- Провести сплайн через точки.
[in]paramPnts- Множество параметрических точкек.
[in]paramWts- Множество весов параметрических точек.
[in]paramClosed- Строить замкнутый параметрический сплайн.
[in]spaceTransitions- Сопряжения в точках.
[in]snMaker- Именователь кривых каркаса.
[out]resType- Код результата операции
[out]resCurves- Множество эквидистантных кривых.
Возвращает:
Возвращает строитель.
MbCurve3D* MakeCurve3D ( const MbCurve curve,
const MbPlacement3D  
)

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

void ExtractCurvesDeleteFrame ( MbWireFrame *&  wireFrame,
RPArray< MbCurve3D > &  curves 
) [inline]

Забрать кривые и удалить каркас, если он не используется.

Аргументы:
[in]wireFrame- Каркас, подлежащий удалению.
[out]curves- Кривые, полученные из каркаса.
void ExtractCurveDeleteFrame ( MbWireFrame *&  wireFrame,
MbCurve3D *&  curve 
) [inline]

Забрать первую кривую и удалить каркас, если он пуст и не используется.

Аргументы:
[in]wireFrame- Каркас, подлежащий удалению.
[out]curve- Кривая, полученная из каркаса.
bool CreateWireFrame ( MbWireFrame *&  result,
const RPArray< MbCurve3D > &  curves,
const MbSNameMaker snMaker,
MbCreator creator = NULL 
)

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

Аргументы:
[out]result- Каркас, подлежащий замене или построению.
[in]curves- Кривые для построения каркаса.
[in]snMaker- Именователь кривых каркаса.
[in]creator- Строитель каркаса.
Возвращает:
Возвращает true, если присланный каркас обновился, или был создан новый при отсутствии каркаса на входе.
bool CreateWireFrame ( MbWireFrame *&  result,
const MbCurve3D curve,
const MbSNameMaker snMaker,
MbCreator creator = NULL 
)

Создать или обновить каркас по кривой.

Аргументы:
[out]result- Каркас, подлежащий замене или построению.
[in]curve- Кривая для построения каркаса.
[in]snMaker- Именователь кривых каркаса.
[in]creator- Строитель каркаса.
Возвращает:
Возвращает true, если присланный каркас обновился, или был создан новый при отсутствии каркаса на входе.
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы