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

Классы

class  MbSurfDist
 Расстояние между точками на поверхности. Подробнее...
class  MbMinMaxSurfDists
struct  PrimitiveDifference
 Различия примитивов. Подробнее...
struct  NameDifference
 Различие в именовании двух примитивов. Подробнее...
class  CountDifference
 Различие в количестве. Подробнее...
class  PointDifference
 Различие точек. Подробнее...
class  VectorDifference
 Различие нормалей. Подробнее...
class  CompareItemsResult
 Результат сравнения двух объектов. Подробнее...
struct  MbIntersectionData
 Информация о пересечении двух тел. Подробнее...

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

enum  MbeSurfAxesMeasureRes {
  samr_SurfSurf_Failed = -3, samr_AxisSurf_Failed = -2, samr_AxisAxis_Failed = -1, samr_Undefined = 0,
  samr_AxisAxis_Coaxial, samr_AxisAxis_Parallel, samr_AxisAxis_Intersecting, samr_AxisAxis_Distant,
  samr_AxisSurf_Colinear, samr_AxisSurf_Parallel, samr_AxisSurf_Intersecting, samr_AxisSurf_Distant,
  samr_SurfSurf_Colinear, samr_SurfSurf_Parallel, samr_SurfSurf_Intersecting
}
enum  SolidMixUpMode {
  smm_FacesReorder = 1, smm_LoopsReorder = 2, smm_LoopsBegReset = 4, smm_EdgesRedirection = 8,
  smm_EdgesSection = 16
}
 Способы "перемешивания". Подробнее...

Функции

bool IsMultiShell (const MbFaceShell *shell, bool checkNesting=true)
 Проверить оболочку на предмет разделения на отдельные части.
size_t DetachShells (MbFaceShell &shell, RPArray< MbFaceShell > &parts, bool sort)
 Отделить части оболочки.
size_t CreateShells (MbFaceShell &shell, RPArray< MbFaceShell > &parts)
 Отделить части оболочки.
bool UnifyOwnComplanarFaces (MbFaceShell &shell, const MbSNameMaker &nameMaker, bool checkBaseSurfaces)
 Объединить компланарные грани.
bool CheckIdenticalBaseSufaces (MbFaceShell &shell)
 Найти и устранить общие поверхности-подложки в гранях.
void FacePropagate (MbeFacePropagation fp, RPArray< MbFace > &face_set, const MbVector3D &dir)
 Захватить грани одним из способов.
void MouldCavitySolids (RPArray< MbSolid > &solids, MbCartPoint3D *fixedPoint, double deltaX, double deltaY, double deltaZ)
 Масштабировать каверны литейной формы.
bool IsSolidsIntersection (const MbSolid &solid1, const MbSolid &solid2, const MbSNameMaker &snMaker)
 Проверить тела на пересечение.
bool IsSolidsIntersection (const MbSolid &solid1, const MbMatrix3D &matr1, const MbSolid &solid2, const MbMatrix3D &matr2, bool checkTangent, PArray< MbIntersectionData > &intData)
 Oпределить пересечение тел в сборке.
void GetDistanceToSurface (const MbPlacement3D &pl, const MbCurve *curve, const MbSurface *surf, double &lPlus, double &lMinus)
 Найти расстояния от контура на плоскости до поверхности.
void GetDistanceToCube (const MbSurface &surface, const MbVector3D &direction, const MbCurve &curve, const MbCube &cube, double &lPlus, double &lMinus, MbResultType &resType)
 Найти расстояния от контура на поверхности до габаритного куба оболочки.
void GetDistanceToCube (const MbSurface &surface, const MbVector3D &direction, const RPArray< MbCurve > &curves, const MbCube &cube, double &lPlus, double &lMinus, MbResultType &resType)
 Найти расстояния от набора кривых на поверхности до габаритного куба оболочки.
bool GetDistanceToCube (const MbPlacement3D &pl, const MbFaceShell *shell, double &dPlus, double &dMinus, bool findMax=true)
 Найти расстояния от плоскости до габаритного куба оболочки.
void GetRangeToCubeOrSurface (const MbCurve3D &curve, const MbVector3D &direction, const MbAxis3D &axis, const bool rotation, bool operationDirection, const MbCube *toCube, const MbSurface *toSurface, SweptValuesAndSides &params, MbResultType &resType)
 Найти расстояния/углы от контура до куба или до поверхности.
bool GetNearestSolid (const MbPlacement3D &pl, RPArray< MbContour > &c, MbSweptLayout::Direction direction, RPArray< MbSolid > &solids, size_t &nPlus, size_t &nMinus)
 Найти ближайшие тела при выдавливании с опцией "до ближайшего объекта".
bool GetNearestSolid (RPArray< MbCurve3D > &curves, const MbVector3D &direction, MbSweptLayout::Direction operationDirection, RPArray< MbSolid > &solids, size_t &nPlus, size_t &nMinus)
 Найти ближайшие тела при выдавливании с опцией "до ближайшего объекта".
MbResultType CheckNurbsShell (const NurbsSurfaceValues &params, const MbSolid &nsSolid, IProgressIndicator *progBar)
 Проверить оболочку или тело, состоящее из NURBS поверхностей.
bool AddTruncatingSketch (const MbPlacement3D &sketchPlace, RPArray< MbCurve > &sketchCurves, RPArray< MbSpaceItem > &items)
 Положить эскиз в массив усекающих объектов.
void AddTruncatingCurve (MbCurve3D &curve, RPArray< MbSpaceItem > &items)
 Положить кривую в массив усекающих объектов.
void CheckShellingFaces (const SweptValues &params, RPArray< MbFace > &faces)
 Проверить корректность вскрываемых граней для создания тонкостенного тела.
bool ProjectVectorOn (const MbVector3D &v3d, const MbSurface &surface, const MbCartPoint &p2d, MbVector &v2d)
 Вычислить компоненты проекции вектора, заданного в точке на поверхности.
MbSurfaceGetExtendedSurfaceCopy (MbCube &gabarit, const MbSurface &surf, VERSION version)
 Расширить поверхность для резки тела.
void CreateFaces (const MbPlacement3D &place, const MbContour &contour, const MbVector3D &der, bool sense, const MbSNameMaker &n, RPArray< MbFace > &initFaces, bool useAddCount=false)
 Построить набор граней с топологией призмы.
void GetAutoReference (MbFaceShell &shell, const MbPlacement3D &place, const MbContour &contour, ptrdiff_t index, RibValues::ExtrudeSide &side, MbCartPoint3D &origin, MbVector3D &dir3D)
 Оценить параметры выдавливания для ребра жёсткости.
MbCurveGetProjCurveOnSurface (const MbSurfaceIntersectionCurve &intersectCurve, bool first)
 Создать кривую в параметрах поверхности.
bool IsSameSpineDirection (const MbCurve3D &curve, VERSION srcVersion, VERSION dstVersion)
 Проверить неизменность вектора кинематической направляющий в разных версиях.
bool CalculateExtremeCurvatures (const MbSurface &surf, double &d_max, double &d_min, SArray< MbCartPoint > &maxPoints, SArray< MbCartPoint > &minPoints)
 Вычислить экстремали нормальной кривизны к поверхности.
bool FacesMaxMinCurvature (const RPArray< MbFace > &faces, double &d_max, double &d_min)
 Определить максимальную и минимальную нормальные кривизны для оболочки.
bool IsSpaceNear (const MbCurve3D &curv, const MbSurface &surf, bool surfExt, double mEps, double devSag=5.0 *Math::deviateSag)
 Определить, близка ли кривая к поверхности.
bool SurfaceFace (const MbSurface &surface, SPtr< MbFace > &face)
 Создать грань по произвольной поверхности.
MbGridSpaceGrid (const MbPlacement3D &place, const MbPlanarGrid &planarGrid)
 Создание трёхмерной сетки по двумерной сетке.
MbItemReplaceByInstance (MbItem *item, double ratioThreashhold=-1.0, bool makeCopy=false)
 Заменить элемент на вставку, если расстояние от начала координат до центра его габарита, превышает размер габаритного куба в заданное число раз Объект или его копия смещается на вектор из начала координат до центра габаритного куба объекта и размещается во вставке, обеспечивающей смещение на вектор противоположного направления. Обрабатываются только объекты, не являющиеся вставками. Нулевое или отрицательное значение параметра ratioThreashhold запрещает преобразование.Function processes objects of all types except for instances. Null or negative value of the ratioThreashhold parameter blocks the transformation.
MbResultType FloodFillResult (MbSolid &vessel, MbeCopyMode sameShell, const MbSweptData &bungData, const MbCartPoint3D &origin, const MbSNameMaker &names, MbSolid *&result)
 Построениe «залитого» объема, расположенного между внутренней поверхностью сосуда и ограничивающей поверхностью или телом.
void CalculatePolygon (const MbCurve &curve, const MbPlacement3D &plane, double sag, MbPolygon3D &polygon)
 Расчет полигона кривой.
MbResultType SmoothPhantom (const MbSolid &solid, RPArray< MbCurveEdge > &edges, const SmoothValues &params, RPArray< MbSurface > &result)
 Построить фантомные поверхности скругления/фаски.
MbResultType SmoothPhantom (const MbSolid &solid, SArray< MbEdgeFunction > &edges, const SmoothValues &params, RPArray< MbSurface > &result)
 Построить фантомные поверхности скругления/фаски.
MbResultType SmoothSequence (const MbSolid &solid, RPArray< MbCurveEdge > &edges, const SmoothValues &params, bool createSurfaces, RPArray< MbEdgeSequence > &sequences, RPArray< MbSurface > &result)
 Построить последовательности гладко стыкующихся рёбер.
MbResultType SmoothSequence (const MbSolid &solid, SArray< MbEdgeFunction > &edges, const SmoothValues &params, bool createSurfaces, RPArray< MbEdgeSequence > &sequences, RPArray< MbSurface > &result)
 Построить последовательности гладко стыкующихся рёбер.
bool TruncatDirection (const MbCurveEdge &truncatingEdge, MbPlacement3D &dirPlace)
 Определить фантомное направление усечения.
MbResultType SmoothPositionData (const MbSolid &solid, RPArray< MbCurveEdge > &edges, const SmoothValues &params, RPArray< MbPositionData > &result, double edgeParam=0.5, const MbCurveEdge *dimensionEdge=NULL)
 Построить опорные точки размеров операции скругления/фаски.
MbResultType SmoothPositionData (const MbSolid &solid, SArray< MbEdgeFunction > &edges, const SmoothValues &params, RPArray< MbPositionData > &result, double edgeParam=0.5, const MbCurveEdge *dimensionEdge=NULL)
 Построить опорные точки размеров операции скругления/фаски.
template<class Type >
SArray< Type > * CreateArray (size_t cnt, MbResultType &res)
 Создать массив.
template<class Type >
bool ReserveArray (SArray< Type > &arr, size_t n, MbResultType &res)
 Выделить в массиве память под n элементов.
template<class Type >
bool AddItem (SArray< Type > &arr, const Type &item, MbResultType &res)
 Добавить в массив элемент.
double LineLineNearestPoints (const MbLine3D &line1, const MbLine3D &line2, MbCartPoint3D &p1, MbCartPoint3D &p2)
 Определение расстояния между ближайшими точками p1 и p2 прямых line1 и line2.
double AreaSign (const MbCurve3D &curve, const MbAxis3D &axis, const MbVector3D &direction, bool rotation)
 Вычислить площадь проекции кривой на виртуальную координатную плоскость.
bool GetLineSegmentNURBSSurface (MbSurface &surf, RPArray< MbCurve3D > &segments)
 Построить характеристическую ломаную сплайновой поверхности.
double GetFilletRadiusDelta (const MbCurve3D &filletCurve, double radius, bool sense, double len, const MbCurve3D &curve1, double t1, const MbCurve3D &curve2, double t2)
 Определить изменение радиуса при перемещении средней точки кривой скругления.
double GetFilletRadiusDelta (const MbCurve3D &filletCurve, double radius, bool sense, double len)
 Определить изменение радиуса при перемещении средней точки кривой скругления.
void RadiusDimension3D (const MbSurface &surface, const MbCartPoint &surface_uv, MbPlaneCurve *&plane_curve)
 Построить окружность или дугу для радиального размера к поверхности.
void RadiusDimension3D (const MbSurface &surface, const MbCartPoint3D &point, MbPlaneCurve *&plane_curve)
 Построить окружность или дугу для радиального размера к поверхности.
void RadiusDimension3D (const MbSurface &surface, const MbPlacement3D &place, MbPlaneCurve *&plane_curve)
 Построить окружность или дугу для радиального размера к поверхности.
bool IsPosibleRadiusDimension3D (const MbSurface &surface)
 Можно ли построить окружность или дугу для радиального размера к поверхности.
MbeSurfAxesMeasureRes SurfAxesDistAngle (const MbSurface &surface1, bool sameSense1, const MbSurface &surface2, bool sameSense2, MbAxis3D &axis1, bool &exist1, MbAxis3D &axis2, bool &exist2, MbCartPoint3D &p1, MbCartPoint3D &p2, double &angle, double &distance, double angleEps=ANGLE_EPSILON)
 Расстояние между осями поверхностей.
MbeProcessState MinMaxDistances (const MbSurface &surface1, ptrdiff_t u1cnt, ptrdiff_t v1cnt, const MbVector3D *dir, const MbeSenseValue &orient, bool useEqualDistances, const MbSurface &surface2, ptrdiff_t &nMin, ptrdiff_t &nMax, MbMinMaxSurfDists &allResults, MbMinMaxSurfDists &minResults, MbMinMaxSurfDists &maxResults, IProgressIndicator *indicator=NULL)
 Экстремальные расстояния между поверхностями.
bool MaxDistance (const MbCartPoint3D &pnt, const MbCurve3D &curv, double &t, double &distance)
 Найти максимальное расстояние между точкой и кривой.
bool MaxDistance (const MbCurve3D &curv1, const MbCurve3D &curv2, double &t1, double &t2, double &distance)
 Найти максимальное расстояние между двумя кривыми.
bool MaxDistance (const MbCartPoint3D &pnt, const MbSurface &surf, MbCartPoint &uv, double &distance)
 Найти максимальное расстояние между точкой и поверхностью.
bool MaxDistance (const MbCurve3D &curv, const MbSurface &surf, double &t, MbCartPoint &uv, double &distance)
 Найти максимальное расстояние между кривой и поверхностью.
bool MaxDistance (const MbSurface &surf1, const MbSurface &surf2, MbCartPoint &uv1, MbCartPoint &uv2, double &distance)
 Найти максимальное расстояние между поверхностями.
bool MaxDistance (const MbAxis3D &axis, const MbCurve3D &curve, double &param, double &distance)
 Найти максимальное расстояние от оси до кривой.
void GetEpsilonBound (const MbCurve3D &crv, double t, MbCartPoint3D &pnt, double &eps, VERSION version)
 Вычислить погрешность точки на кривой.
bool IsIncidence (const MbCurve3D &crv1, int t1, const MbCurve3D &crv2, int t2, VERSION version)
 Проверить инцидентность двух вершин.
double GetNearCurveParam (const MbCurve3D &curve, const MbCartPoint3D &point, const MbVector3D &direct)
 Дать ближайший к лучу параметр кривой.
double GetNearCurveParam (const MbCurve3D &curve, const MbCartPoint3D &point, const MbVector3D &direct, bool setOnSide, bool &isBegin)
 Дать ближайший к лучу параметр кривой.
MbCurveGetFlatCurve (const MbCurve3D &curve3D, const MbMatrix3D &into, MbRect1D *pRgn=NULL, VERSION version=Math::DefaultMathVersion())
 Построить плоскую проекцию кривой.
MbCurveGetFlatProjection (const MbCurve3D &curve3D, const MbPlacement3D &place, VERSION version=Math::DefaultMathVersion())
 Получить плоскую проекцию кривой.
void SolidMixUp (MbSolid &solid, uint mixUpModes)
 Стрессовый тест тела.
void CompareSolids (const MbSolid &solid1, const MbSolid &solid2, CompareItemsResult &compareResult, bool compareMassInertia, bool checkSense)
 Сравнение двух тел.
bool CompareSolidsByNames (const MbSolid &before, const MbSolid &after, CompareItemsResult &compareResult)
 Сравнение двух тел по именам.
bool IsDegeneratedCurve (const MbCurve3D &curve, double eps)
 (lenEps - )
bool CheckShellClosure (const MbFaceShell &shell, bool checkChangedOnly=false)
 Проверка оболочки тела на замкнутость.
bool CheckSolidClosure (const MbSolid &solid)
 Проверка оболочки тела на замкнутость.
bool CheckBoundaryEdges (const RPArray< MbCurveEdge > &allEdges, RPArray< MbCurveEdge > *boundaryEdges)
 Поиск краевых ребер замкнутой оболочки.
bool CheckBadEdges (const RPArray< MbCurveEdge > &allEdges, RPArray< MbCurveEdge > *badEdges)
 Поиск некорректных ребер.
bool CheckInexactVertices (const RPArray< MbVertex > &vertArr, double mMaxAcc, RPArray< MbVertex > *inexactVerts)
 Поиск неточных вершин.
bool IsInexactEdge (const MbCurveEdge &edge, double mMaxAcc)
 Является ли кривая пересечения ребра неточной.
bool CheckInexactEdges (const RPArray< MbCurveEdge > &allEdges, double mMaxAcc, RPArray< MbCurveEdge > *inexactEdges)
 Поиск неточных ребер оценочно.
void CheckBadFaces (const MbFaceShell &shell, bool &areIdenticalBaseSurfaces, bool &areBadFacePointers)
 Проверка подложек и указаний на грани.
bool CheckLoopsInterposition (const MbFace &face)
 Проверка взаимного расположения циклов грани.
bool CheckLoopConnection (const MbSurface &surf, bool faceSense, const MbLoop &loop, double &lengthTolerance, double *paramTolerance, RPArray< MbOrientedEdge > *badConnectedEdges=NULL, RPArray< MbCurveEdge > *badVertexEdges=NULL)
 Проверка связности ребер цикла.
bool CheckLoopConnection (const MbFace &face, const MbLoop &loop, double &lengthTolerance, double *paramTolerance, RPArray< MbOrientedEdge > *badConnectedEdges=NULL, RPArray< MbCurveEdge > *badVertexEdges=NULL)
 Проверка связности ребер цикла.
bool FindLoopsSelfIntersections (const MbFace &face, const MbSNameMaker &nameMaker, bool checkInsideEdges, std::vector< std::pair< NumberPair, MbCartPoint3D > > *loopPnts)
 Найти циклы грани с самопересечениями.
bool CheckFacesConnection (const RPArray< MbFace > &faces)
 Проверка связности граней faces.
bool FindOverlappingSimilarFaces (const MbFaceShell &srcShell, const MbFaceShell &dstShell, bool sameNormals, std::vector< NumberPair > &simPairs)
 Найти в исходной оболочке "родительские" грани производной оболочки.
bool FindFacesEdgesCarriers (const std::vector< const MbCurveEdge * > &edges, const MbFaceShell &shell, bool sameNormals, std::vector< NumberPair > &efPairs)
 Найти на каких гранях исходной оболочки базируются ребра производной оболочки.
bool GetDepthToFace (const MbFace &face, const MbPlacement3D &place, HoleValues &pars, double &depth)
 Определить глубину отверстия "до указанной поверхности" при построении оболочки с отверстием.
bool LineTriangleIntersect (const MbFloatPoint3D &tri_v0, const MbFloatPoint3D &tri_v1, const MbFloatPoint3D &tri_v2, const MbFloatAxis3D &line, float epsilon, MbFloatPoint3D &crossPnt, float &tRes)
 Найти пересечение прямой линии и треугольника.
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, MbFloatPoint3D &crossPnt, float &tRes)
 Найти пересечение прямой линии и триангуляции.
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, const MbPlacement3D &cutPlace, MbFloatPoint3D &crossPnt, float &tRes)
 Найти пересечение прямой линии и триангуляции.
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, const std::vector< MbPlacement3D > &cutPlaces, MbFloatPoint3D &crossPnt, float &tRes)
 Найти пересечение прямой линии и триангуляции.
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, float &tRes)
 Найти пересечение прямой линии и триангуляции.
float LineToGridEdgeDistanceSquared (const MbGrid &grid, size_t edgeInd, const MbFloatAxis3D &line, float delta, float &tRes)
 Вычислить квадрат расстояния от линии до полигона.
float LineToGridEdgeDistanceSquared (const MbGrid &grid, size_t edgeInd, const MbFloatAxis3D &line, const MbFloatVector3D &vDelta, MbFloatVector3D &vRes, float &tRes)
 Вычислить квадрат расстояния от линии до полигона.
float LineToSegmentDistanceSquared (const MbFloatPoint3D &seg_base, const MbFloatPoint3D &seg_end, const MbFloatAxis3D &line, float &tRes)
 Вычислить квадрат расстояния от прямой линии до сегмента полигона.
float LineToSegmentDistanceSquared (const MbFloatPoint3D &seg_base, const MbFloatPoint3D &seg_end, const MbFloatAxis3D &line, MbFloatVector3D &vRes, float &tRes)
 Вычислить квадрат расстояния от прямой линии до сегмента полигона.
float LineToPolyDistanceSquared (const MbPolygon3D &poly, const MbFloatAxis3D &line, float delta, MbFloatPoint3D &nearestPoint, float &tRes)
 Вычислить квадрат расстояния от линии до полигона.
float LineToPolyDistanceSquared (const MbPolygon3D &poly, const MbFloatAxis3D &line, float delta, const MbPlacement3D &cutPlace, MbFloatPoint3D &nearestPoint, float &tRes)
 Вычислить квадрат расстояния от линии до полигона.
float LineToPolyDistanceSquared (const MbPolygon3D &poly, const MbFloatAxis3D &line, float delta, const std::vector< MbPlacement3D > &cutPlaces, MbFloatPoint3D &nearestPoint, float &tRes)
 Вычислить квадрат расстояния от линии до полигона.
template<class Double , class Point , class Vector , class Axis >
Double LineToPointDistance (const Axis &line, const Point &to, Double &tRes)
 Вычислить расстояние от линии до точки.
template<class Double , class Point , class Vector , class Axis , class Placement >
Double LineToPointDistance (const Axis &line, const Point &to, const Placement &cutPlace, Double &tRes)
 Вычислить расстояние от линии до точки.
bool CreatePartSolidIndices (const MbSolid &solid, const SArray< MbPartSolidData > &partInfo, MbPartSolidIndices &partIndices)
 Создать индексы частей тела.
bool CreateElevationParam (const MbCurve3D &crvThis, const MbCurve3D &spine, MbCartPoint3D &wcThis, double &ct, MbVector3D *tau)
 Cоздать параметр для заданной кривой
bool CreateElevationParams (RPArray< MbCurve3D > &uCurves, bool vcls, const MbCurve3D &spine, SArray< double > &vParams, SArray< MbCartPoint3D > *tiePnts)
 Наполнить массив v-параметров и весовых центров заданных кривых.
bool CreateLoftedParams (const RPArray< MbCurve3D > &uCurves, bool vcls, SArray< double > &vParams, SArray< MbCartPoint3D > *tiePnts, VERSION version)
 Наполнить массив v-параметров и весовых центров заданных кривых.
double LinePlaneNearestPoints (const MbLine3D &line1, const MbPlane &plane2, MbCartPoint3D &p1, MbCartPoint3D &p2)
 Пересечение или расстояние между бесконечной прямой и бесконечной плоскостью.
MbLine3DPlanesIntersection (const MbPlane &plane1, const MbPlane &plane2)
bool DefineThroughPointsParams (ptrdiff_t degree, bool closed, const Array2< MbCartPoint3D > &points, bool alongLines, MbeSplineParamType spType, SArray< double > &params)
 Определить параметрическое распределение точек для построения NURBS поверхности, проходящей через эти точки.
bool DefineThroughPointsParams (ptrdiff_t degree, bool closed, const Array2< MbCartPoint3D > &points, bool alongLines, ptrdiff_t rowInd, MbeSplineParamType spType, SArray< double > &params)
 Определить параметрическое распределение точек для построения NURBS поверхности, проходящей через эти точки.
void SetMainName (MbName &name, SimpleName mainName, bool addOldMainName)
 Установить главное имя.
void GetEdges (const RPArray< MbFace > &faceSet, RPArray< MbCurveEdge > &edges)
 Выдать множество рёбер.

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

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

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

Ошибка при работе с поверхностями.

samr_AxisSurf_Failed 

Ошибка при работе с осью и поверхностю.

samr_AxisAxis_Failed 

Ошибка при работе с осями.

samr_Undefined 

Не получилось или не измерялось.

samr_AxisAxis_Coaxial 

Оси совпадают.

samr_AxisAxis_Parallel 

Оси параллельны.

samr_AxisAxis_Intersecting 

Оси пересекаются.

samr_AxisAxis_Distant 

Оси на расстоянии.

samr_AxisSurf_Colinear 

Ось лежит на поверхности.

samr_AxisSurf_Parallel 

Ось параллельна поверхности.

samr_AxisSurf_Intersecting 

Ось пересекает поверхность.

samr_AxisSurf_Distant 

Ось на расстоянии от поверхности.

samr_SurfSurf_Colinear 

Одна поверхность лежит на другой.

samr_SurfSurf_Parallel 

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

samr_SurfSurf_Intersecting 

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

Способы "перемешивания" составляющих оболочки.

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

Изменение порядка следования граней в массиве.

smm_LoopsReorder 

Изменение порядок следования циклов на грянях (толко внутренних).

smm_LoopsBegReset 

Изменение начального ребра в циклах граней.

smm_EdgesRedirection 

Изменение направления ребер в циклах граней.

smm_EdgesSection 

Разбивка ребер вставкой вершины.


Функции

bool IsMultiShell ( const MbFaceShell shell,
bool  checkNesting = true 
)

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

Аргументы:
[in]shell- Исходная оболочка.
Возвращает:
Возвращает true, если оболочка состоит из нескольких частей.
size_t DetachShells ( MbFaceShell shell,
RPArray< MbFaceShell > &  parts,
bool  sort 
)

Отделить части оболочки без анализа вложенности. Если sort == true, то наибольшая часть оболочки останется в исходной оболочке, а отделившиеся от неё части будут сложены в parts с сортировкой по убыванию габарита.

Аргументы:
[in]shell- Исходная оболочка.
[out]parts- Оболочки, полученные из shell.
[in]sort- Выполнять ли сортировку частей оболочки по убыванию габарита?
Возвращает:
Возвращает количество оболочек в parts.
size_t CreateShells ( MbFaceShell shell,
RPArray< MbFaceShell > &  parts 
)

Отделить части оболочки без анализа вложенности. Исходная оболочка всегда остаётся неизменённой. Если исходная оболочка распадается на части, то все части складываются в parts.

Аргументы:
[in]shell- Исходная оболочка.
[out]parts- Оболочки, полученные из shell.
Возвращает:
Возвращает количество оболочек в parts.
bool UnifyOwnComplanarFaces ( MbFaceShell shell,
const MbSNameMaker nameMaker,
bool  checkBaseSurfaces 
)

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

Аргументы:
[in]shell- Модифицируемая оболочка.
[in]nameMaker- Именователь операции.
[in]checkBaseSurfaces- Найти и устранить общие поверхности-подложки в гранях.
Возвращает:
Возвращает true, если оболочка была успешно изменена.
bool CheckIdenticalBaseSufaces ( MbFaceShell shell)

Найти и устранить общие поверхности-подложки в гранях оболочки.

Аргументы:
[in]shell- Модифицируемая оболочка.
Возвращает:
Возвращает true, если оболочка была изменена.
void FacePropagate ( MbeFacePropagation  fp,
RPArray< MbFace > &  face_set,
const MbVector3D dir 
)

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

Аргументы:
[in]fp- Cпособ захвата граней.
[in,out]face_set- Набор граней.
[in]dir- Направление уклона.
Предупреждения:
Вспомогательная функция операции DraftSolid.
void MouldCavitySolids ( RPArray< MbSolid > &  solids,
MbCartPoint3D fixedPoint,
double  deltaX,
double  deltaY,
double  deltaZ 
)

Масштабировать каверны литейной формы относительно неподвижной точки.

Аргументы:
[in,out]solids- Модифицируемые тела.
[in]fixedPoint- Неподвижная точка масштабирования.
[in]deltaX- Относительное приращение размера по направлению X.
[in]deltaY- Относительное приращение размера по направлению Y.
[in]deltaZ- Относительное приращение размера по направлению Z.
bool IsSolidsIntersection ( const MbSolid solid1,
const MbSolid solid2,
const MbSNameMaker snMaker 
)

Проверить тела на пересечение без уточнения характера пересечения
(проверяем до первого пересечения граней).

Аргументы:
[in]solid1- Первое тело.
[in]solid2- Второе тело.
Возвращает:
Возвращает true, если найдено хотя бы одно пересечение.
bool IsSolidsIntersection ( const MbSolid solid1,
const MbMatrix3D matr1,
const MbSolid solid2,
const MbMatrix3D matr2,
bool  checkTangent,
PArray< MbIntersectionData > &  intData 
)

Oпределить пересечение тел в сборке.

Аргументы:
[in]solid1- Первое тело в локальной системе координат (ЛСК).
[in]matr1- Матрица преобразования в глобальную СК (ГСК).
[in]solid2- Второе тело в ЛСК.
[in]matr2- Матрица преобразования в ГСК.
[in]checkTangent- Считать касания пересечениями.
[out]intData- Информация о пересечении двух тел.
Возвращает:
Возвращает true, если найдено хотя бы одно пересечение.
void GetDistanceToSurface ( const MbPlacement3D pl,
const MbCurve curve,
const MbSurface surf,
double &  lPlus,
double &  lMinus 
)

Найти расстояния от контура на плоскости до поверхности.
Прямое направление - это направление оси Z системы координат двумерной кривой.
Расстояние в прямом направлении найдено, если значение не отрицательное.
Расстояние в обратном направлении найдено, если значение не положительное.

Аргументы:
[in]pl- Система координат двумерной кривой.
[in]curve- Двумерная кривая.
[in]surf- Поверхность, до которой проводится поиск расстояний.
[out]lPlus- Расстояние в прямом направлении.
[out]lMinus- Расстояние в обратном направлении.
void GetDistanceToCube ( const MbSurface surface,
const MbVector3D direction,
const MbCurve curve,
const MbCube cube,
double &  lPlus,
double &  lMinus,
MbResultType resType 
)

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

Аргументы:
[in]surface- Поверхность, на которой лежит двумерная кривая.
[in]direction- Направление поиска (выдавливания)
[in]curve- Двумерная кривая, лежащая на поверхности surface.
[in]cube- Габаритный куб оболочки.
[out]lPlus- Расстояние в прямом направлении.
[out]lMinus- Расстояние в обратном направлении.
[out]resType- Код результата операции.
void GetDistanceToCube ( const MbSurface surface,
const MbVector3D direction,
const RPArray< MbCurve > &  curves,
const MbCube cube,
double &  lPlus,
double &  lMinus,
MbResultType resType 
)

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

Аргументы:
[in]surface- Поверхность, на которой лежат двумерные кривые.
[in]direction- Направление поиска (выдавливания)
[in]curves- Набор двумерных кривых на поверхности surface.
[in]cube- Габаритный куб оболочки.
[out]lPlus- Расстояние в прямом направлении.
[out]lMinus- Расстояние в обратном направлении.
[out]resType- Код результата операции.
bool GetDistanceToCube ( const MbPlacement3D pl,
const MbFaceShell shell,
double &  dPlus,
double &  dMinus,
bool  findMax = true 
)

Найти расстояния от плоскости до габаритного куба оболочки.
Расстояние в прямом направлении найдено, если значение не отрицательное.
Расстояние в обратном направлении найдено, если значение не положительное.
Использует расчет габарита относительно локальной системы координат.
Если система координат плоскости лежит вне габаритного куба,
то при взведенном флаге findMax ищется максимальное расстояние до куба.

Аргументы:
[in]pl- Система координат плоскости.
[in]shell- Целевая оболочка.
[out]dPlus- Расстояние в прямом направлении.
[out]dMinus- Расстояние в обратном направлении.
[in]findMax- Искать максимальное расстояние до габаритного куба.
Возвращает:
Возвращает true, если найдено хотя бы одно из расстояний.
void GetRangeToCubeOrSurface ( const MbCurve3D curve,
const MbVector3D direction,
const MbAxis3D axis,
const bool  rotation,
bool  operationDirection,
const MbCube toCube,
const MbSurface toSurface,
SweptValuesAndSides params,
MbResultType resType 
)

Найти расстояния/углы от контура до куба или до поверхности.
Нужно учесть уклон в двух направлениях.

Аргументы:
[in]curve- Кривая.
[in]direction- Направление выдавливания.
[in]axis- Ось вращения.
[in]rotation- Вращение (true) или выдавливание (false)
[in]operationDirection- Вперед (true) или назад (false)
[in]toCube- До куба, если указатель ненулевой
[in]toSurface- До поверхности, если указатель ненулевой.
[in,out]params,:Должны быть заданы параметры:
params.side1.rake - Уклон в направлении direction (для плоской образующей).
params.side2.rake - Уклон в направлении direction, обратном direction (для плоской образующей).
params.thikness1 - Толщина стенки в прямом направлении (в положительном направлении нормали объекта (грани, поверхности, плоскости кривой)).
params.thikness2 - Толщина стенки в обратном направлении.
Заполняются параметры:
params.side1.scalarValue - Расстояние выдавливания в направлении direction (если operationDirection == true), иначе обратном.
params.side2.scalarValue - Расстояние выдавливания в направлении, обратном direction (если operationDirection == true), иначе в прямом.
[out]resType- Код результата операции.
bool GetNearestSolid ( const MbPlacement3D pl,
RPArray< MbContour > &  c,
MbSweptLayout::Direction  direction,
RPArray< MbSolid > &  solids,
size_t &  nPlus,
size_t &  nMinus 
)

Найти ближайшие тела при выдавливании с опцией "до ближайшего объекта".
Возвращает номерa (nPlus и nMinus) ближайших тел с положительной и отрицательной стороны эскиза.

Аргументы:
[in]pl- Локальная система координат.
[in]c- Множество двумерных контуров.
[in]direction- Направление выдавливания.
[in]solids- Целевой набор тел.
[out]nPlus- Номер ближайшего тела в положительном направлении.
[out]nMinus- Номер ближайшего тела в отрицательном направлении.
Возвращает:
Возвращает true, если найдено тело хотя бы в одном из направлений.
bool GetNearestSolid ( RPArray< MbCurve3D > &  curves,
const MbVector3D direction,
MbSweptLayout::Direction  operationDirection,
RPArray< MbSolid > &  solids,
size_t &  nPlus,
size_t &  nMinus 
)

Найти ближайшие тела при выдавливании с опцией "до ближайшего объекта".
возвращает номерa (nPlus и nMinus) ближайших тел ближайших тел в прямом и обратном направлении.

Аргументы:
[in]curves- Набор кривых.
[in]direction- Направление выдавливания.
[in]operationDirection- Параметры выдавливания "до ближайшего объекта".
[in]solids- Целевой набор тел.
[out]nPlus- Номер ближайшего тела в положительном направлении.
[out]nMinus- Номер ближайшего тела в отрицательном направлении.
Возвращает:
Возвращает true, если найдено тело хотя бы в одном из направлений.
MbResultType CheckNurbsShell ( const NurbsSurfaceValues params,
const MbSolid nsSolid,
IProgressIndicator progBar 
)

Проверить корректность оболочки или тела, состоящего из NURBS поверхностей.

Аргументы:
[in]params- Исходные параметры операции.
[in]nsSolid- Тело - результат операции.
[in]progBar- Индикатор прогресса выполнения операции.
Возвращает:
Возвращает rt_Success, если тело успешно прошло проверку.
Предупреждения:
Проверочная функция операции NurbsSurfacesShell.
bool AddTruncatingSketch ( const MbPlacement3D sketchPlace,
RPArray< MbCurve > &  sketchCurves,
RPArray< MbSpaceItem > &  items 
)

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

Аргументы:
[in]sketchPlace- Локальная система координат двумерного эскиза.
[in]sketchCurves- Двумерные кривые эскиза.
[out]items- Выходной массив пространственных объектов.
Возвращает:
- Возвращает true в случае добавления элементов в выходной массив.
Предупреждения:
Вспомогательная функция операции TruncateShell.
void AddTruncatingCurve ( MbCurve3D curve,
RPArray< MbSpaceItem > &  items 
)

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

Аргументы:
[in]curve- Пространственная кривaя.
[out]items- Выходной массив пространственных объектов.
Предупреждения:
Вспомогательная функция операции TruncateShell.
void CheckShellingFaces ( const SweptValues params,
RPArray< MbFace > &  faces 
)

Проверить корректность набора вскрываемых граней для создания тонкостенного тела.
Удаляет из массива не подходящие для операции грани.

Аргументы:
[in]params- Параметры тонкой стенки.
[in,out]faces- Множество вскрываемых граней тела.
Предупреждения:
Вспомогательная функция операции построения тонкостенного тела.
bool ProjectVectorOn ( const MbVector3D v3d,
const MbSurface surface,
const MbCartPoint p2d,
MbVector v2d 
)

Вычислить компоненты x и y проекции пространственного вектора, заданного в точке на поверхности.

Аргументы:
[in]v3d- Пространственный вектор.
[in]surface- Поверхность.
[in]p2d- Параметрическая точка на поверхности.
[out]v2d- Проекция пространственного вектора на поверхность.
Возвращает:
- Возвращает true в случае успешного вычисления проекции вектора.
MbSurface* GetExtendedSurfaceCopy ( MbCube gabarit,
const MbSurface surf,
VERSION  version 
)

Расширить поверхность до заданного габарита для резки тела.

Аргументы:
[in,out]gabarit- Желаемый габарит расширения.
[in]surf- Исходная поверхность.
[in]version- Версия построения.
Возвращает:
- Возвращает расширенную поверхность, если получилось ее создать.
void CreateFaces ( const MbPlacement3D place,
const MbContour contour,
const MbVector3D der,
bool  sense,
const MbSNameMaker n,
RPArray< MbFace > &  initFaces,
bool  useAddCount = false 
)

Построить набор граней с топологией призмы.

Аргументы:
[in]place- Локальная система координат (ЛСК).
[in]contour- Двумерный контур в ЛСК.
[in]der- Направление выдавливания.
[in]sense- Ориентация выходного массива граней как замкнутой оболочки.
[in]n- Именователь.
[in,out]initFaces- Множество созданных граней.
[in]useAddCount- Использовать количество граней initFaces на входе для именования новых граней.
void GetAutoReference ( MbFaceShell shell,
const MbPlacement3D place,
const MbContour contour,
ptrdiff_t  index,
RibValues::ExtrudeSide side,
MbCartPoint3D origin,
MbVector3D dir3D 
)

Оценить параметры выдавливания для построения ребра жёсткости.

Аргументы:
[in]shell- Целевая оболочка.
[in]place- Локальная система координат контура.
[in]contour- Двумерный контур.
[in]index- Номер сегмента контура.
[out]side- Сторона заполнения пространства телом ребра.
[out]origin- Точка.
[out]dir3D- Вектор.
Предупреждения:
Вспомогательная функция операции RibSolid.
MbCurve* GetProjCurveOnSurface ( const MbSurfaceIntersectionCurve intersectCurve,
bool  first 
)

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

Аргументы:
[in]intersectCurve- Кривая пересечения.
[in]first- true - Первая поверхность, false - вторая поверхность.
Возвращает:
Возвращает кривую, если ее получилось построить.
bool IsSameSpineDirection ( const MbCurve3D curve,
VERSION  srcVersion,
VERSION  dstVersion 
)

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

Аргументы:
[in]curve- Направляющая кривая.
[in]srcVersion- Рабочая версия.
[in]dstVersion- Целевая версия.
bool CalculateExtremeCurvatures ( const MbSurface surf,
double &  d_max,
double &  d_min,
SArray< MbCartPoint > &  maxPoints,
SArray< MbCartPoint > &  minPoints 
)

Вычислить экстремали нормальной кривизны к поверхности surf.

Аргументы:
[in]surf- Поверхность.
[out]d_max- Максимальное значение нормальной кривизны.
[out]d_min- Минимальное значение нормальной кривизны.
[out]maxPoints- Множество точек, в которых нормальная кривизна максимальна.
[out]minPoints- Множество точек, в которых нормальная кривизна минимальна.
Возвращает:
Возращает true, если получилось найти экстремали нормальной кривизны.
Предупреждения:
Функция находится в разработке.
bool FacesMaxMinCurvature ( const RPArray< MbFace > &  faces,
double &  d_max,
double &  d_min 
)

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

Аргументы:
[in]faces- Грани оболочки.
[out]d_max- Максимальное значение нормальной кривизны.
[out]d_min- Минимальное значение нормальной кривизны.
Возвращает:
Возвращает true, если получилось найти экстремали нормальной кривизны.
Предупреждения:
Функция находится в разработке.
bool IsSpaceNear ( const MbCurve3D curv,
const MbSurface surf,
bool  surfExt,
double  mEps,
double  devSag = 5.0 *Math::deviateSag 
)

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

Аргументы:
[in]curv- Кривая.
[in]surf- Поверхность.
[in]surfExt- Проверять на расширенной поверхности.
[in]mEps- Метрическая близость.
[in]devSag- Максимальное угловое отклонение при шагании по кривой.
Возвращает:
Возвращает true, если кривая близка к поверхности.
bool SurfaceFace ( const MbSurface surface,
SPtr< MbFace > &  face 
)

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

Аргументы:
[in]surface- Поверхность.
[out]face- Грань.
Возвращает:
Возвращает true, если грань создана.
MbGrid* SpaceGrid ( const MbPlacement3D place,
const MbPlanarGrid planarGrid 
)

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

Аргументы:
[in]place- Локальная система координат в трёхмерном пространстве.
[out]planarGrid- Tриангуляция двумерной области.
Возвращает:
Возвращает true, если грань создана.
MbItem* ReplaceByInstance ( MbItem item,
double  ratioThreashhold = -1.0,
bool  makeCopy = false 
)
Аргументы:
[out]item- Обрабатываемый объект.
[in]ratioThreashhold- Пороговое значение отношения расстояния до центра габаритного куба и его диагонали, при превышении которого происходит замена.
[in]makeCopy- Производить ли трансофрмацию на копии объекта.
Возвращает:
Возвращает вставку объекта.
MbResultType FloodFillResult ( MbSolid vessel,
MbeCopyMode  sameShell,
const MbSweptData bungData,
const MbCartPoint3D origin,
const MbSNameMaker names,
MbSolid *&  result 
)

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

Аргументы:
[in]vessel- Тело сосуда.
[in]sameShell- Режим копирования тела сосуда.
[in]bungData- Поверхность уровня или тело пробки.
[in]origin- Точка внутри сосуда.
[in]names- Именователь операции.
[out]result- Построенное тело.
Возвращает:
Возвращает код результата операции.
void CalculatePolygon ( const MbCurve curve,
const MbPlacement3D plane,
double  sag,
MbPolygon3D polygon 
)

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

Аргументы:
[in]curve- Двумерная кривая.
[in]plane- Локальная система координат.
[in]sag- Максимальное допустимое отклонение полигона от оригинала по прогибу или по углу между соседними элементами.
[out]polygon- Рассчитанный полигон.
MbResultType SmoothPhantom ( const MbSolid solid,
RPArray< MbCurveEdge > &  edges,
const SmoothValues params,
RPArray< MbSurface > &  result 
)

Построить фантомные поверхности скругления/фаски и сложить в контейнер surfaces.
По окончании работ поверхности можно и нужно удалить.

Аргументы:
[in]solid- Исходное тело.
[in]edges- Множество выбранных ребер для скругления/фаски.
[in]params- Параметры операции скругления/фаски.
[out]result- Поверхности скругления/фаски.
Возвращает:
Возвращает код результата построения.
MbResultType SmoothPhantom ( const MbSolid solid,
SArray< MbEdgeFunction > &  edges,
const SmoothValues params,
RPArray< MbSurface > &  result 
)

Построить фантомные поверхности скругления/фаски и сложить в контейнер surfaces.
По окончании работ поверхности можно и нужно удалить.

Аргументы:
[in]solid- Исходное тело.
[in]edges- Множество выбранных ребер и функций изменения радиуса для скругления/фаски.
[in]params- Параметры операции скругления/фаски.
[out]result- Поверхности скругления/фаски.
Возвращает:
Возвращает код результата построения.
MbResultType SmoothSequence ( const MbSolid solid,
RPArray< MbCurveEdge > &  edges,
const SmoothValues params,
bool  createSurfaces,
RPArray< MbEdgeSequence > &  sequences,
RPArray< MbSurface > &  result 
)

Построить последовательности гладко стыкующихся рёбер, скругляемых одновременно, а также поверхности скругления/фаски (массив surfaces).
По окончании работ поверхности можно и нужно удалить.

Аргументы:
[in]solid- Исходное тело.
[in]edges- Множество выбранных ребер для скругления/фаски.
[in]params- Параметры операции скругления/фаски.
[in]createSurfaces- Создавать ли поверхности скругления/фаски для фантома?
[out]sequences- Последовательность гладко стыкующихся рёбер.
[out]result- Поверхности скругления/фаски.
Возвращает:
Возвращает код результата построения.
MbResultType SmoothSequence ( const MbSolid solid,
SArray< MbEdgeFunction > &  edges,
const SmoothValues params,
bool  createSurfaces,
RPArray< MbEdgeSequence > &  sequences,
RPArray< MbSurface > &  result 
)

Построить последовательности гладко стыкующихся рёбер, скругляемых одновременно, а также поверхности скругления/фаски (массив surfaces).
По окончании работ поверхности можно и нужно удалить.

Аргументы:
[in]solid- Исходное тело.
[in]edges- Множество выбранных ребер и функций изменения радиуса для скругления/фаски.
[in]params- Параметры операции скругления/фаски.
[in]createSurfaces- Создавать ли поверхности скругления/фаски для фантома?
[out]sequences- Последовательность гладко стыкующихся рёбер.
[out]result- Поверхности скругления/фаски.
Возвращает:
Возвращает код результата построения.
bool TruncatDirection ( const MbCurveEdge truncatingEdge,
MbPlacement3D dirPlace 
)

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

Аргументы:
[in]truncatingEdge- Ребро усеченной грани исходного тела.
[in]dirPlace- Система координат направления усечения (Ось Z - направление усечения).
Возвращает:
Возвращает true, если получилось определить направление.
MbResultType SmoothPositionData ( const MbSolid solid,
RPArray< MbCurveEdge > &  edges,
const SmoothValues params,
RPArray< MbPositionData > &  result,
double  edgeParam = 0.5,
const MbCurveEdge dimensionEdge = NULL 
)

Построить опорные точки размеров операции скругления/фаски и сложить в контейнер data.
Первые две точки лежат на краях поверхности скругления/фаски.

Аргументы:
[in]solid- Исходное тело.
[in]edges- Множество выбранных ребер для скругления/фаски.
[in]params- Параметры операции скругления/фаски.
[out]result- Опорные точки размеров операции скругления/фаски.
[in]edgeParam- Параметр точки на ребре (0 <= edgeParam <= 1).
[in]dimensionEdge- Ребро, на котором дать опорные точки.
Возвращает:
Возвращает код результата построения.
MbResultType SmoothPositionData ( const MbSolid solid,
SArray< MbEdgeFunction > &  edges,
const SmoothValues params,
RPArray< MbPositionData > &  result,
double  edgeParam = 0.5,
const MbCurveEdge dimensionEdge = NULL 
)

Построить опорные точки размеров операции скругления/фаски и сложить в контейнер data.
Первые две точки лежат на краях поверхности скругления/фаски.

Аргументы:
[in]solid- Исходное тело.
[in]edges- Множество выбранных ребер для скругления/фаски и функций изменения радиуса для скругления/фаски.
[in]params- Параметры операции скругления/фаски.
[out]result- Опорные точки размеров операции скругления/фаски.
[in]edgeParam- Параметр точки на ребре (0 <= edgeParam <= 1).
[in]dimensionEdge- Ребро, на котором дать опорные точки.
Возвращает:
Возвращает код результата построения.
template<class Type >
SArray<Type>* CreateArray ( size_t  cnt,
MbResultType res 
) [inline]

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

Аргументы:
[in]cnt- Количество элементов массива.
[out]res- Результат операции.
Возвращает:
Возвращает массив элементов, если он создан, или NULL в противном случае.
template<class Type >
bool ReserveArray ( SArray< Type > &  arr,
size_t  n,
MbResultType res 
) [inline]

Выделить в массиве память под n элементов с контролем выделения памяти.

Аргументы:
[in,out]arr- Массив.
[in]n- Количество элементов, под которые нужно выделить память.
[out]res- Результат операции.
Возвращает:
Возвращает true в случае успешного выделения памяти.
template<class Type >
bool AddItem ( SArray< Type > &  arr,
const Type &  item,
MbResultType res 
) [inline]

Добавить в массив элемент с контролем выделения памяти.

Аргументы:
[in,out]arr- Массив.
[in]item- Элемент, который нужно добавить.
[out]res- Результат операции.
Возвращает:
Возвращает true в случае успешного добавления.
double LineLineNearestPoints ( const MbLine3D line1,
const MbLine3D line2,
MbCartPoint3D p1,
MbCartPoint3D p2 
)

Определение расстояния между ближайшими точками p1 и p2 прямых line1 и line2

double AreaSign ( const MbCurve3D curve,
const MbAxis3D axis,
const MbVector3D direction,
bool  rotation 
)

Вычислить площадь проекции кривой на виртуальную координатную плоскость
для определения ориентации образующей кривой в оболочке выдавливания и вращения.
Параметры direction и axis определяют направление выдавливания и ось вращения, а параметр rotation определяет тип операции:

  • выдавливание, вычисляется площадь проекции на плоскость XOY,
  • вращение, вычисляется площадь "проекции" на "плоскость" ROZ. Для незамкнутой кривой в расчет добавляется "замыкание отрезком".
Аргументы:
[in]curve- Кривая.
[in]axis- Ось вращения.
[in]direction- Направление выдавливания.
[in]rotation- Вращение (true) или выдавливание (false).
Возвращает:
Возвращает площадь проекции.
Предупреждения:
Вспомогательная функция операций ExtrusionSolid, RevolutionSolid, ExtrusionResult и RevolutionResult.
bool GetLineSegmentNURBSSurface ( MbSurface surf,
RPArray< MbCurve3D > &  segments 
)

Построить характеристическую ломаную сплайновой поверхности.
Функция работает с поверхностями типа st_SplineSurface, st_HermitSurface, st_TriBezierSurface, st_TriSplineSurface.

Аргументы:
[in]surf- Поверхность.
[out]segments- Сегменты характеристической ломаной.
Возвращает:
Возвращает true - если характеристическая ломаная получена.
double GetFilletRadiusDelta ( const MbCurve3D filletCurve,
double  radius,
bool  sense,
double  len,
const MbCurve3D curve1,
double  t1,
const MbCurve3D curve2,
double  t2 
)

Определить изменение радиуса при перемещении средней точки кривой скругления
от центра на расстояние len (с учётом знака len).

Аргументы:
[in]filletCurve- Кривая скругления.
[in]radius- Радиус скругления.
[in]sense- Направления смещения средней точки кривой скругления.
[in]len- Величина смещения средней точки кривой скругления.
[in]curve1- Первая сопрягаемая кривая.
[in]t1- Параметр начала кривой скругления на первой сопрягаемой кривой.
[in]curve2- Вторая сопрягаемая кривая.
[in]t2- Параметр конца кривой скругления на второй сопрягаемой кривой.
double GetFilletRadiusDelta ( const MbCurve3D filletCurve,
double  radius,
bool  sense,
double  len 
)

Определить изменение радиуса при перемещении средней точки кривой скругления
от центра на расстояние len (с учётом знака len).

Аргументы:
[in]filletCurve- Кривая скругления.
[in]radius- Радиус скругления.
[in]sense- Направления смещения средней точки кривой скругления.
[in]len- Величина смещения средней точки кривой скругления.
void RadiusDimension3D ( const MbSurface surface,
const MbCartPoint surface_uv,
MbPlaneCurve *&  plane_curve 
)

Построение выполняется по заданной параметрической точке поверхности. Поверхность должна иметь круговую параметрическую линию u=const или v=const. Перечень поверхностей, имеющих параметрическую линию u=const или v=const: MbCylinderSurface v=const,
MbConeSurface v=const,
MbSphereSurface u=const,
MbTorusSurface u=const,
MbLoftedSurface v=const,
MbElevationSurface v=const,
MbExtrusionSurface v=const,
MbRevolutionSurface u=const,
MbEvolutionSurface u=const,
MbExactionSurface u=const.

Аргументы:
[in]surface- Исходная поверхность.
[in]surface_uv- Координаты исходной точки на поверхности.
[out]plane_curve- Требуемая окружность или дуга.
void RadiusDimension3D ( const MbSurface surface,
const MbCartPoint3D point,
MbPlaneCurve *&  plane_curve 
)

Построение выполняется по заданной по заданной пространственной точке. Поверхность должна иметь круговую параметрическую линию u=const или v=const. Перечень поверхностей, имеющих параметрическую линию u=const или u=const: MbCylinderSurface v=const,
MbConeSurface v=const,
MbSphereSurface u=const,
MbTorusSurface u=const,
MbLoftedSurface v=const,
MbElevationSurface v=const,
MbExtrusionSurface v=const,
MbRevolutionSurface u=const,
MbEvolutionSurface u=const,
MbExactionSurface u=const.

Аргументы:
[in]surface- Исходная поверхность.
[in]point- Пространственные координаты исходной точки.
[out]plane_curve- Требуемая окружность или дуга.
void RadiusDimension3D ( const MbSurface surface,
const MbPlacement3D place,
MbPlaneCurve *&  plane_curve 
)

Построение выполняется по заданному плейсменту. Поверхность должна иметь круговую параметрическую линию u=const или v=const. Перечень поверхностей, имеющих параметрическую линию u=const или u=const: MbCylinderSurface v=const,
MbConeSurface v=const,
MbSphereSurface u=const,
MbTorusSurface u=const,
MbLoftedSurface v=const,
MbElevationSurface v=const,
MbExtrusionSurface v=const,
MbRevolutionSurface u=const,
MbEvolutionSurface u=const,
MbExactionSurface u=const.

Аргументы:
[in]surface- Исходная поверхность.
[in]place- Исходный плейсмент.
[out]plane_curve- Требуемая окружность или дуга.
bool IsPosibleRadiusDimension3D ( const MbSurface surface)

Можно построить, если тип базовой поверхности: st_CylinderSurface или st_ConeSurface, или st_SphereSurface, или st_TorusSurface.

Аргументы:
[in]surface- Исходная поверхность.
Возвращает:
true, если можно построить.
MbeSurfAxesMeasureRes SurfAxesDistAngle ( const MbSurface surface1,
bool  sameSense1,
const MbSurface surface2,
bool  sameSense2,
MbAxis3D axis1,
bool &  exist1,
MbAxis3D axis2,
bool &  exist2,
MbCartPoint3D p1,
MbCartPoint3D p2,
double &  angle,
double &  distance,
double  angleEps = ANGLE_EPSILON 
)

Рассчитывается расстояние между осями поверхностей, имеющих оси вращения, или расстояние между поверхностью, имеющей ось, и плоской поверхностью.

Аргументы:
[in]surface1,sameSense1- Первая поверхность и ее направление.
[in]surface2,sameSense2- Вторая поверхность и ее направление.
[out]axis1,exist1- Ось первой поверхности и флаг ее наличия.
[out]axis2,exist2- Ось второй поверхности и флаг ее наличия.
[out]p1- Точка на первой оси или поверхности.
[out]p2- Точка на второй оси или поверхности.
[out]angle- Угол между осями или осью поверхностью.
[out]distance- Минимальное расстояние между осями.
[in]angle- Угловая погрешность.
Возвращает:
Вариант полученного замера или вариант ошибки.
MbeProcessState MinMaxDistances ( const MbSurface surface1,
ptrdiff_t  u1cnt,
ptrdiff_t  v1cnt,
const MbVector3D dir,
const MbeSenseValue orient,
bool  useEqualDistances,
const MbSurface surface2,
ptrdiff_t &  nMin,
ptrdiff_t &  nMax,
MbMinMaxSurfDists allResults,
MbMinMaxSurfDists minResults,
MbMinMaxSurfDists maxResults,
IProgressIndicator indicator = NULL 
)

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

Аргументы:
[in]surface1- Первая поверхность.
[in]u1cnt- Количество точек по u (первая поверхность).
[in]v1cnt- Количество точек по v (первая поверхность).
[in]dir- Вектор заданного направления (если нет, то по нормали).
[in]orient- Направление поиска.
[in]useEqualDistances- Оставлять равные равные расстояния.
[in]surface2- Вторая поверхность.
[in,out]nMin- Кол-во регистрируемых минимумов.
[in,out]nMax- Кол-во регистрируемых максимумов.
[out]allResults- Все результаты.
[out]minResults- Результаты-минимумы.
[out]maxResults- Результаты-максимумы.
[in,out]indicator- Интерфейс-индикатор процесса выполнения.
Возвращает:
Возвращает результат замера (получен, не получен или же процесс был прерван).
bool MaxDistance ( const MbCartPoint3D pnt,
const MbCurve3D curv,
double &  t,
double &  distance 
)

Максимальное расстояние между точкой и кривой.

Аргументы:
[in]pnt- Исходная точка.
[in]curv- Исходная кривая.
[out]t- Параметр на кривой, при котором достигается искомое расстояние.
[out]distance- Искомое расстояние.
Возвращает:
true, если максимальное расстояние было найдено.
bool MaxDistance ( const MbCurve3D curv1,
const MbCurve3D curv2,
double &  t1,
double &  t2,
double &  distance 
)

Найти максимальное расстояние между двумя кривыми.

Аргументы:
[in]curv1,curv2- Исходные кривая.
[out]t1,t2- Параметры на кривых, при которых достигается искомое расстояние.
[out]distance- Искомое расстояние.
Возвращает:
true, если максимальное расстояние было найдено.
bool MaxDistance ( const MbCartPoint3D pnt,
const MbSurface surf,
MbCartPoint uv,
double &  distance 
)

Найти максимальное расстояние между точкой и поверхностью.

Аргументы:
[in]pnt- Исходная точка.
[in]surf- Исходная поверхность.
[out]uv- Параметры точки на поверхности, при которой достигается искомое расстояние.
[out]distance- Искомое расстояние.
Возвращает:
true, если максимальное расстояние было найдено.
bool MaxDistance ( const MbCurve3D curv,
const MbSurface surf,
double &  t,
MbCartPoint uv,
double &  distance 
)

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

Аргументы:
[in]curv- Исходная кривая.
[in]surf- Исходная поверхность.
[out]t- Параметр на кривой, при котором достигается искомое расстояние.
[out]uv- Параметры точки на поверхности, при которой достигается искомое расстояние.
[out]distance- Искомое расстояние.
Возвращает:
true, если максимальное расстояние было найдено.
bool MaxDistance ( const MbSurface surf1,
const MbSurface surf2,
MbCartPoint uv1,
MbCartPoint uv2,
double &  distance 
)

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

Аргументы:
[in]surf1,surf2- Исходные поверхности.
[out]uv1,uv2- Параметры точек на поверхностях, при которых достигается искомое расстояние.
[out]distance- Искомое расстояние.
Возвращает:
true, если максимальное расстояние было найдено.
bool MaxDistance ( const MbAxis3D axis,
const MbCurve3D curve,
double &  param,
double &  distance 
)

Ищется максимальное расстояние от оси до кривой перпендикулярно оси.

Аргументы:
[in]axis- Исходная ось.
[in]curve- Исходная кривая.
[out]param- Параметр на кривой, при котором достигается искомое расстояние.
[out]distance- Искомое расстояние.
Возвращает:
true, если максимальное расстояние было найдено.
void GetEpsilonBound ( const MbCurve3D crv,
double  t,
MbCartPoint3D pnt,
double &  eps,
VERSION  version 
)

Погрешностью считается ограничивающая сфера точки.

Аргументы:
[in]crv- Исходная кривая.
[in]t- Координата точки на кривой.
[out]pnt- Трехмерная координата точки на кривой.
[out]eps- Погрешность точки.
[in]version- Версия.
bool IsIncidence ( const MbCurve3D crv1,
int  t1,
const MbCurve3D crv2,
int  t2,
VERSION  version 
)

Кривые рассматриваются как ребра).

Аргументы:
[in]crv1- Кривая 1.
[in]t1- Если t1 == 1, рассматривается конец кривой, иначе начало.
[in]crv2- Кривая 2.
[in]t2- Если t2 == 1, рассматривается конец кривой, иначе начало.
[in]version- Версия.
Возвращает:
true, если вершины инцидентны.
double GetNearCurveParam ( const MbCurve3D curve,
const MbCartPoint3D point,
const MbVector3D direct 
)

Луч проходит через точку point в направлении вектора direct

Аргументы:
[in]curve- Исходная кривая.
[in]point- Точка луча.
[in]direct- Вектор направления луча.
Возвращает:
Ближайший к лучу параметр кривой.
double GetNearCurveParam ( const MbCurve3D curve,
const MbCartPoint3D point,
const MbVector3D direct,
bool  setOnSide,
bool &  isBegin 
)

Луч проходит через точку point в направлении вектора direct.
setOnSide == true принуждает установить параметр кривой к ближайшему концу и вычислить флаг isBegin, определяющий близость к началу (true) или концу (false) кривой.

Аргументы:
[in]curve- Исходная кривая.
[in]point- Точка луча.
[in]direct- Вектор направления луча.
[in]setOnSide- Надо ли приравнять параметр к ближайшему концу кривой.
[out]isBegin- если true, то параметр находится ближе к началу кривой.
Если false, то параметр находится ближе к концу кривой.
Возвращает:
Ближайший к лучу параметр кривой.
MbCurve* GetFlatCurve ( const MbCurve3D curve3D,
const MbMatrix3D into,
MbRect1D pRgn = NULL,
VERSION  version = Math::DefaultMathVersion() 
)

Построить двумерную кривую - проекцию кривой на плоскость XY локальной системы координат, заданной матрицей преобразования. Двумерные кубические сплайны Эрмита (MbHermit) и кубические сплайны (MbCubicSpline) заменяются на NURBS (MbNurbs).

Аргументы:
[in]curve3D- Исходная кривая.
[in]into- Матрица преобразования из глобальной системы координат в видовую плоскость.
[in]pRgn- Параметрическая область кривой для создания проекции.
[in]version- Версия построения.
Возвращает:
Указатель на полученную кривую.
MbCurve* GetFlatProjection ( const MbCurve3D curve3D,
const MbPlacement3D place,
VERSION  version = Math::DefaultMathVersion() 
)

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

Аргументы:
[in]curve3D- Исходная кривая.
[in]place- Плоскость, на которую требуется спроецировать кривую.
Возвращает:
Указатель на полученную проекционную кривую.
void SolidMixUp ( MbSolid solid,
uint  mixUpModes 
)

Стрессовый тест тела, перемешивание составляющих оболочки.

Аргументы:
[in]solid- Тестируемое тело.
[in]mixUpModes- Флаги из SolidMixUpMode.
void CompareSolids ( const MbSolid solid1,
const MbSolid solid2,
CompareItemsResult compareResult,
bool  compareMassInertia,
bool  checkSense 
)

Сравнение двух тел.

Аргументы:
[in]solid1- Первое тело.
[in]solid2- Второе тело.
[in]compareMassInertia- Проверять сначала МЦХ тел.
[in]checkSense- Проверять совпадение ориентаций рёбер и граней.
[out]compareResult- Результат сравнения двух тел.
bool CompareSolidsByNames ( const MbSolid before,
const MbSolid after,
CompareItemsResult compareResult 
)

Сравнение двух тел по именам.

Аргументы:
[in]before- Тело до перестроения.
[in]after- Тело после перестроения.
[out]compareResult- Результат сравнения двух тел.
bool IsDegeneratedCurve ( const MbCurve3D curve,
double  eps 
)

Проверка вырожденности кривой в трехмерном пространстве.

Проверка вырожденности кривой в трехмерном пространстве.

Аргументы:
[in]curve- Кривая.
[in]eps- Неразличимая метрическая область.
Возвращает:
Возвращает состояние вырожденности кривой.
bool CheckShellClosure ( const MbFaceShell shell,
bool  checkChangedOnly = false 
)

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

Аргументы:
[in]shell- Оболочка.
[in]checkChangedOnly- Проверять только измененные грани оболочки.
Возвращает:
Возвращает состояние замкнутости оболочки.
bool CheckSolidClosure ( const MbSolid solid)

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

bool CheckBoundaryEdges ( const RPArray< MbCurveEdge > &  allEdges,
RPArray< MbCurveEdge > *  boundaryEdges 
)

Поиск краевых ребер замкнутой оболочки.

Аргументы:
[in]allEdges- Множество ребер оболочки.
[in]boundaryEdges- Множество для краевых ребер.
Возвращает:
Возвращает true, если найдено хотя бы одно краевое ребро.
bool CheckBadEdges ( const RPArray< MbCurveEdge > &  allEdges,
RPArray< MbCurveEdge > *  badEdges 
)

Поиск некорректных ребер. Не ищет краевые ребра замкнутой оболочки.
Для поиска краевых ребер используйте функцию CheckBoundaryEdges.

Аргументы:
[in]allEdges- Множество ребер оболочки.
[in]badEdges- Множество для некорректных ребер.
Возвращает:
Возвращает true, если найдено хотя бы одно некорректное ребро.
bool CheckInexactVertices ( const RPArray< MbVertex > &  vertArr,
double  mMaxAcc,
RPArray< MbVertex > *  inexactVerts 
)

Поиск неточных вершин оболочки.

Аргументы:
[in]vertArr- Множество вершин оболочки.
[in]mMaxAcc- Порог отбора неточных вершин.
[in]inexactVerts- Множество для неточных вершин.
Возвращает:
Возвращает true, если найдена хотя бы одна неточная вершина.
bool IsInexactEdge ( const MbCurveEdge edge,
double  mMaxAcc 
)

Является ли кривая пересечения ребра неточной (оценочно).

Аргументы:
[in]edge- Ребро оболочки.
[in]mMaxAcc- Порог отбора неточного ребра.
Возвращает:
Возвращает true, если ребро неточное.
bool CheckInexactEdges ( const RPArray< MbCurveEdge > &  allEdges,
double  mMaxAcc,
RPArray< MbCurveEdge > *  inexactEdges 
)

Поиск неточных ребер оболочки оценочно.

Аргументы:
[in]allEdges- Множество ребер оболочки.
[in]mMaxAcc- Порог отбора неточных ребер.
[in]inexactEdges- Множество для неточных ребер.
Возвращает:
Возвращает true, если найдено хотя бы одно неточное ребро.
void CheckBadFaces ( const MbFaceShell shell,
bool &  areIdenticalBaseSurfaces,
bool &  areBadFacePointers 
)

Проверка подложек и указаний на грани оболочки.

Аргументы:
[in]shell- Проверяемая оболочка.
[out]areIdenticalBaseSurfaces- Наличие общих подложек.
[out]areBadFacePointers- Наличие неверных указателей на соседние грани.
bool CheckLoopsInterposition ( const MbFace face)

Проверка взаимного расположения циклов грани.

Аргументы:
[in]face- Грань.
Возвращает:
Возвращает true, если расположение и ориентация циклов корректны.
bool CheckLoopConnection ( const MbSurface surf,
bool  faceSense,
const MbLoop loop,
double &  lengthTolerance,
double *  paramTolerance,
RPArray< MbOrientedEdge > *  badConnectedEdges = NULL,
RPArray< MbCurveEdge > *  badVertexEdges = NULL 
)

Проверка связности ребер цикла грани. Возвращает максимальные метрическую и параметрическую (опционально) погрешности построения цикла.

Аргументы:
[in]surf- Базовая поверхность грани, содержащей проверяемый цикл.
[in]loop- Цикл грани.
[out]lengthTolerance- Максимальное метрическое значение разрыва между ребрами.
[out]paramTolerance- Максимальное параметрическое значение разрыва между ребрами.
[out]badConnectedEdges- Ребра с плохой связностью.
[out]badVertexEdges- Ребра с неправильными вершинами.
Возвращает:
Возвращает true, если связность ребер не нарушена.
bool CheckLoopConnection ( const MbFace face,
const MbLoop loop,
double &  lengthTolerance,
double *  paramTolerance,
RPArray< MbOrientedEdge > *  badConnectedEdges = NULL,
RPArray< MbCurveEdge > *  badVertexEdges = NULL 
)

Проверка связности ребер цикла грани. Возвращает максимальные метрическую и параметрическую (опционально) погрешности построения цикла.

Аргументы:
[in]face- Грань, содержащая проверяемый цикл.
[in]loop- Цикл грани.
[out]lengthTolerance- Максимальное метрическое значение разрыва между ребрами.
[out]paramTolerance- Максимальное параметрическое значение разрыва между ребрами.
[out]badConnectedEdges- Ребра с плохой связностью.
[out]badVertexEdges- Ребра с неправильными вершинами.
Возвращает:
Возвращает true, если связность ребер не нарушена.
bool FindLoopsSelfIntersections ( const MbFace face,
const MbSNameMaker nameMaker,
bool  checkInsideEdges,
std::vector< std::pair< NumberPair, MbCartPoint3D > > *  loopPnts 
)

Найти циклы грани с самопересечениями. Возвращает найденные циклы с самопересечениям.

Аргументы:
[in]face- Грань, содержащая проверяемые циклы.
[in]nameMaker- Именователь.
[in]checkInsideEdges- Искать самопересечения внутри области определения двумерных кривых ребер.
[out]loopPnts- Точки самопересечения c номерами циклов.
Возвращает:
Возвращает true, если найдены самопересечения циклов.
bool CheckFacesConnection ( const RPArray< MbFace > &  faces)

Проверка топологической связности граней faces.

Аргументы:
[in]faces- Проверяемый набор граней.
Возвращает:
Возвращает true, все грани топологически связаны.
bool FindOverlappingSimilarFaces ( const MbFaceShell srcShell,
const MbFaceShell dstShell,
bool  sameNormals,
std::vector< NumberPair > &  simPairs 
)

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

Аргументы:
[in]srcShell- Исходная оболочка.
[in]dstShell- Производная оболочка.
[in]sameNormals- Искать с одинаковым (true) или противоположным (false) направлением нормалей.
[out]simPairs- Множество соответствий - номеров граней в исходной и производной оболочках.
Возвращает:
Возвращает true, все найдено хоть одно соответствие.
bool FindFacesEdgesCarriers ( const std::vector< const MbCurveEdge * > &  edges,
const MbFaceShell shell,
bool  sameNormals,
std::vector< NumberPair > &  efPairs 
)

Найти на каких гранях исходной оболочки базируются ребра производной оболочки геометрическим поиском. Поиск соответствия проводится по поверхностям из граней, на которые ссылается ребро, а не по поверхностям в кривой пересечения ребра. Флаг sameNormals установить false, если исходная оболочка участвовала в булевом вычитании тел вторым операндом.

Аргументы:
[in]edges- Ребра производной оболочки.
[in]shell- Исходная оболочка.
[in]sameNormals- Искать с одинаковым (true) или противоположным (false) направлением нормалей.
[out]efPairs- Множество соответствий - номеров ребер во входном массиве и номеров граней в исходной оболочке.
Возвращает:
Возвращает true, все найдено хоть одно соответствие.
bool GetDepthToFace ( const MbFace face,
const MbPlacement3D place,
HoleValues pars,
double &  depth 
)

Определить глубину отверстия "до указанной поверхности" при построении оболочки с отверстием. Глубина отверстия "до поверхности" определяться расстоянием между точкой привязки отверстия на поверхности расположения и точкой пересечения оси отверстия с указанной поверхностью ограничения глубины.

Аргументы:
[in]face- Грань, до которой надо ограничить глубину.
[in]place- Плоскость отверстия.
[in]pars- Параметры отверстия.
[out]depth- Глубина.
Возвращает:
true в случае , если расстояние было найдено
false - если ось не пересекает грань
bool LineTriangleIntersect ( const MbFloatPoint3D tri_v0,
const MbFloatPoint3D tri_v1,
const MbFloatPoint3D tri_v2,
const MbFloatAxis3D line,
float  epsilon,
MbFloatPoint3D crossPnt,
float &  tRes 
)

Найти пересечение прямой линии и треугольника, заданного своими вершинами. Если прямая линия пересекает треугольник, то определяется значение параметра прямой линии для точки пересечения.

Аргументы:
[in]tri_v0- Первая вершина треугольника.
[in]tri_v1- Вторая вершина треугольника.
[in]tri_v2- Третья вершина треугольника.
[in]line- Прямая линия, для которой вычисляется пересечение с треугольником.
[in]epsilon- Пространственная погрешность.
[out]crossPnt- Точка пересечения.
[out]tRes- Параметр точки пересечения на линии.
Возвращает:
Пересекает ли прямая треугольник (true - В случае пересечения линии и треугольника).
bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
MbFloatPoint3D crossPnt,
float &  tRes 
)

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

Аргументы:
[in]grid- Триангуляция.
[in]line- Прямая линия, для которой вычисляется пересечение с триангуляцией.
[out]crossPnt- Точка пересечения.
[out]tRes- Параметр точки пересечения линии.
Возвращает:
Найдено ли пересечение (true - В случае успеха).
bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
const MbPlacement3D cutPlace,
MbFloatPoint3D crossPnt,
float &  tRes 
)

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

Аргументы:
[in]grid- Триангуляция.
[in]line- Прямая линия, для которой вычисляется пересечение с триангуляцией.
[in]cutPlace- Отсекающая плоскость.
[out]crossPnt- Точка пересечения.
[out]tRes- Параметр точки пересечения линии.
Возвращает:
Найдено ли пересечение (true - В случае успеха).
bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
const std::vector< MbPlacement3D > &  cutPlaces,
MbFloatPoint3D crossPnt,
float &  tRes 
)

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

Аргументы:
[in]grid- Триангуляция.
[in]line- Прямая линия, для которой вычисляется пересечение с триангуляцией.
[in]cutPlaces- Отсекающая плоскости.
[out]crossPnt- Точка пересечения.
[out]tRes- Параметр точки пересечения линии.
Возвращает:
Найдено ли пересечение (true - В случае успеха).
bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
float &  tRes 
)

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

Аргументы:
[in]grid- Триангуляция.
[in]line- Прямая линия, для которой вычисляется пересечение с триангуляцией.
[out]tRes- Параметр точки пересечения линии.
Возвращает:
Найдено ли пересечение (true - В случае успеха).
float LineToGridEdgeDistanceSquared ( const MbGrid grid,
size_t  edgeInd,
const MbFloatAxis3D line,
float  delta,
float &  tRes 
)

При вычислении квадрата расстояния от линии до полигона проверяется расстояние от каждого сегмента полигона до первого попадания в окрестность delta. Возвращается значение параметра ближайшей точки на линии tRes и квадрат расстояния от этой точки до сегмента полигона.

Аргументы:
[in]grid- Триангуляция.
[in]edgeInd- Индекс тестируемого полигона.
[in]line- Линия, до которой вычисляется расстояние.
[in]delta- Радиус окрестности вокруг линии.
[out]tRes- Значение параметра ближайшей точки линии.
Возвращает:
Квадрат расстояния ближайшей точки до линии.
float LineToGridEdgeDistanceSquared ( const MbGrid grid,
size_t  edgeInd,
const MbFloatAxis3D line,
const MbFloatVector3D vDelta,
MbFloatVector3D vRes,
float &  tRes 
)

При вычислении квадрата расстояния от линии до полигона проверяется расстояние от каждого сегмента полигона до первого попадания в окрестность delta. Возвращается значение параметра ближайшей точки на линии tRes, вектор между ближайшими точками и квадрат расстояния от этой точки до сегмента полигона.

Аргументы:
[in]grid- Триангуляция.
[in]edgeInd- Индекс тестируемого полигона.
[in]line- Линия, до которой вычисляется расстояние.
[in]vDelta- Габарит окрестности вокруг линии.
[out]vRes- Вектор от ближайшей точки на линии до ближайшей точки на полигоне.
[out]tRes- Значение параметра ближайшей точки линии.
Возвращает:
Квадрат расстояния ближайшей точки до линии.
float LineToSegmentDistanceSquared ( const MbFloatPoint3D seg_base,
const MbFloatPoint3D seg_end,
const MbFloatAxis3D line,
float &  tRes 
)

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

Аргументы:
[in]seg_base- Начальная точка сегмента.
[in]seg_end- Начальная точка сегмента.
[in]line- Прямая линия, до которой вычисляется расстояние.
[out]tRes- Значение параметра ближайшей точки на линии.
Возвращает:
Квадрат расстояния ближайшей точки до линии.
float LineToSegmentDistanceSquared ( const MbFloatPoint3D seg_base,
const MbFloatPoint3D seg_end,
const MbFloatAxis3D line,
MbFloatVector3D vRes,
float &  tRes 
)

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

Аргументы:
[in]seg_base- Начальная точка сегмента.
[in]seg_end- Начальная точка сегмента.
[in]line- Прямая линия, до которой вычисляется расстояние.
[out]vRes- Вектор от ближайшей точки на линии до ближайшей точки на сегменте.
[out]tRes- Значение параметра ближайшей точки на линии.
Возвращает:
Квадрат расстояния ближайшей точки до линии.
float LineToPolyDistanceSquared ( const MbPolygon3D poly,
const MbFloatAxis3D line,
float  delta,
MbFloatPoint3D nearestPoint,
float &  tRes 
)

При вычислении квадрата расстояния от линии до полигона проверяется расстояние от каждого сегмента полигона до первого попадания в окрестность delta. Возвращается значение параметра ближайшей точки на линии tRes и квадрат расстояния от этой точки до сегмента полигона.

Аргументы:
[in]poly- Тестируемый полигон.
[in]line- Линия, до которой вычисляется расстояние.
[in]delta- Радиус окрестности вокруг линии.
[out]nearestPoint- Ближайшая к лучу точка.
[out]tRes- Значение параметра ближайшей точки линии.
Возвращает:
Квадрат расстояния ближайшей точки до линии.
float LineToPolyDistanceSquared ( const MbPolygon3D poly,
const MbFloatAxis3D line,
float  delta,
const MbPlacement3D cutPlace,
MbFloatPoint3D nearestPoint,
float &  tRes 
)

При вычислении квадрата расстояния от линии до полигона проверяется расстояние от каждого сегмента полигона до первого попадания в окрестность delta. Возвращается значение параметра ближайшей точки на линии tRes и квадрат расстояния от этой точки до сегмента полигона.

Аргументы:
[in]poly- Тестируемый полигон.
[in]line- Линия, до которой вычисляется расстояние.
[in]delta- Радиус окрестности вокруг линии.
[in]cutPlace- Отсекающая плоскость.
[out]nearestPoint- Ближайшая к лучу точка.
[out]tRes- Значение параметра ближайшей точки линии.
Возвращает:
Квадрат расстояния ближайшей точки до линии.
float LineToPolyDistanceSquared ( const MbPolygon3D poly,
const MbFloatAxis3D line,
float  delta,
const std::vector< MbPlacement3D > &  cutPlaces,
MbFloatPoint3D nearestPoint,
float &  tRes 
)

При вычислении квадрата расстояния от линии до полигона проверяется расстояние от каждого сегмента полигона до первого попадания в окрестность delta. Возвращается значение параметра ближайшей точки на линии tRes и квадрат расстояния от этой точки до сегмента полигона.

Аргументы:
[in]poly- Тестируемый полигон.
[in]line- Линия, до которой вычисляется расстояние.
[in]delta- Радиус окрестности вокруг линии.
[in]cutPlaces- Отсекающая плоскости.
[out]nearestPoint- Ближайшая к лучу точка.
[out]tRes- Значение параметра ближайшей точки линии.
Возвращает:
Квадрат расстояния ближайшей точки до линии.
template<class Double , class Point , class Vector , class Axis >
Double LineToPointDistance ( const Axis &  line,
const Point to,
Double &  tRes 
)

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

Аргументы:
[in]line- Линия.
[in]to- Точка.
[out]tRes- Значение параметра ближайшей точки линии.
Возвращает:
Расстояние от точки до линии.
template<class Double , class Point , class Vector , class Axis , class Placement >
Double LineToPointDistance ( const Axis &  line,
const Point to,
const Placement &  cutPlace,
Double &  tRes 
)

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

Аргументы:
[in]line- Линия.
[in]to- Точка.
[in]cutPlace- Отсекающая плоскость.
[out]tRes- Значение параметра ближайшей точки линии.
Возвращает:
Расстояние от точки до линии.
bool CreatePartSolidIndices ( const MbSolid solid,
const SArray< MbPartSolidData > &  partInfo,
MbPartSolidIndices partIndices 
)

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

Аргументы:
[in]solid- Состоящее из отдельных частей исходное тело.
[in]partInfo- Информация о частях тела.
[out]partIndices- Множество индексов частей тела.
Возвращает:
Cозданы ли индексы частей тела.
bool CreateElevationParam ( const MbCurve3D crvThis,
const MbCurve3D spine,
MbCartPoint3D wcThis,
double &  ct,
MbVector3D tau 
)

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

Аргументы:
[in]crvThis- Профильная кривая.
[in]spine- Направляющая.
[in,out]wcThis- Центр масс профильной кривой.
[in,out]ct- Искомый параметр.
[in,out]tau- Производная направляющей в точке с координатой ct. Если в функцию передать NULL, производная не вычисляется.
Возвращает:
true - если направляющая пересекается с плоскостью профиля, false - если не пересекается.
bool CreateElevationParams ( RPArray< MbCurve3D > &  uCurves,
bool  vcls,
const MbCurve3D spine,
SArray< double > &  vParams,
SArray< MbCartPoint3D > *  tiePnts 
)

Если все профильные кривые плоские, параметры вычисляются функцией CreateElevationParam. Иначе параметр для каждой кривой вычисляется как координата вдоль направляющей проекции центра масс кривой на направляющую.

Аргументы:
[in]uCurves- Множество профильных кривых.
[in]vcls- Замкнута ли поверхность по параметру v.
[in]spine- Направляющая.
[in,out]vParams- Множество параметров.
[in,out]tiePnts- Множество центров масс профильных кривых. Не заполняется, если в функцию передать NULL.
Возвращает:
true - если массив параметров успешно создан.
bool CreateLoftedParams ( const RPArray< MbCurve3D > &  uCurves,
bool  vcls,
SArray< double > &  vParams,
SArray< MbCartPoint3D > *  tiePnts,
VERSION  version 
)

Если все профильные кривые плоские, параметры вычисляются функцией CreateElevationParam. Иначе параметр для каждой кривой вычисляется как координата вдоль направляющей проекции центра масс кривой на направляющую.

Аргументы:
[in]uCurves- Множество профильных кривых.
[in]vcls- Замкнута ли поверхность по параметру v.
[in,out]vParams- Множество параметров.
[in,out]tiePnts- Множество центров масс профильных кривых. Не заполняется, если в функцию передать NULL.
[in]version- Версия.
Возвращает:
true - если массив параметров успешно создан.
double LinePlaneNearestPoints ( const MbLine3D line1,
const MbPlane plane2,
MbCartPoint3D p1,
MbCartPoint3D p2 
)

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

Аргументы:
[in]line1- Прямая
[in]plane2- Плоскость
[out]p1- Точка пересечения на кривой
[out]p2- Точка пересечения на плоскости
Возвращает:
Расстояние между прямой и плоскостью
MbLine3D* PlanesIntersection ( const MbPlane plane1,
const MbPlane plane2 
)

Пересечение двух бесконечных плоскостей

bool DefineThroughPointsParams ( ptrdiff_t  degree,
bool  closed,
const Array2< MbCartPoint3D > &  points,
bool  alongLines,
MbeSplineParamType  spType,
SArray< double > &  params 
)

Определить параметрическое распределение точек для построения NURBS поверхности, проходящей через эти точки. Параметр, для которого определяется распределение точек, задается переменной alongLines (если true - то распределение по v, иначе по u). Определяется усредненное распределение по всем рядам (строкам).

Аргументы:
[in]degree- Порядок поверхности по заданному параметру.
[in]closed- Замыкание поверхности по заданному параметру.
[in]points- Матрица точек, для которых надо определить параметрическое распределение.
[in]alongLines- Определяет, по какому параметру ищется распределение (true - по v, false - по u).
[in]spType- Тип параметризации сплайновых объектов:
spt_Unstated - неустановленный,
spt_EquallySpaced - равномерная,
spt_ChordLength - по длине хорды (расстоянию между точками),
spt_Centripetal - центростремительная (квадратный корень расстояния между точками).
[in]params- Множество с искомым распределением.
Возвращает:
true, если вычисления прошли успешно.
bool DefineThroughPointsParams ( ptrdiff_t  degree,
bool  closed,
const Array2< MbCartPoint3D > &  points,
bool  alongLines,
ptrdiff_t  rowInd,
MbeSplineParamType  spType,
SArray< double > &  params 
)

Определить параметрическое распределение точек для построения NURBS поверхности, проходящей через эти точки. Параметр, для которого определяется распределение точек, задается переменной alongLines (если true - то распределение по v, иначе по u).

Аргументы:
[in]degree- Порядок поверхности по заданному параметру.
[in]closed- Замыкание поверхности по заданному параметру.
[in]points- Матрица точек, для которых надо определить параметрическое распределение.
[in]alongLines- Определяет, по какому параметру ищется распределение (true - по v, false - по u).
[in]rowInd- Строка или столбец, по которому вычисляется распределение.
[in]spType- Тип параметризации сплайновых объектов:
spt_Unstated - неустановленный,
spt_EquallySpaced - равномерная,
spt_ChordLength - по длине хорды (расстоянию между точками),
spt_Centripetal - центростремительная (квадратный корень расстояния между точками).
[in]params- Множество с искомым распределением.
Возвращает:
true, если вычисления прошли успешно.
void SetMainName ( MbName name,
SimpleName  mainName,
bool  addOldMainName 
) [inline]

Установить главное имя mainName для имени name.

Аргументы:
[out]name- Имя.
[in]mainName- Главное имя.
[in]addOldMainName- При true запомнить заменяемое главное имя в индексе копирования.
void GetEdges ( const RPArray< MbFace > &  faceSet,
RPArray< MbCurveEdge > &  edges 
)

Выдать множество рёбер из множества граней.

Аргументы:
[in]faceSet- Множество граней.
[out]edges- Множество рёбер.
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы