C3D Toolkit  Kernel - 117982, Vision - 2.9.2.2
+ Collaboration diagram for Algorithms in Three-Dimensional Space:

Classes

class  MbSurfacesJointAnalysisParams
 Input parameters of the search function for minimum and maximum deviations of surfaces parameters along their intersection curve. More...
 
class  MbSurfacesJointAnalysisResults
 Output parameters of the function of finding the minimum and maximum deviations of surfaces parameters along their intersection curve. More...
 
class  MbItemItemDist< Param1, Param2 >
 Distance between points on objects (curve-curve, curve-surface, surface-surface). More...
 
class  MbMinMaxItemItemDistances< Param1, Param2 >
 Distances between surfaces with points. More...
 
class  MbMinMaxGridDistancesParams
 Parameters of the operation of the grid search for minima and maxima. More...
 
class  MbMinMaxGridDistancesResults< Param1, Param2 >
 Results of the operation of the grid search for minima and maxima. More...
 
struct  PrimitiveDifference
 Differences of primitives. More...
 
struct  NameDifference
 Naming difference between two primitives. More...
 
class  CountDifference
 Difference in count. More...
 
class  PointDifference
 Difference of points. More...
 
class  VectorDifference
 Difference of normals. More...
 
class  CompareItemsResult
 The result of comparison between two objects. More...
 
struct  MbShellsIntersectionData
 Information about two solids intersection. More...
 

Typedefs

typedef void(* SurfaceFunction) (const MbSurface &surf, const MbCartPoint &pnt, double &func, MbVector *der)
 The function define on the surface. More...
 

Enumerations

enum  MbeExtremsSearchingMethod { esm_GradientDescent = 1 , esm_LineSegregation = 2 , esm_AdaptiveCells = 3 }
 Algorithms for finding extremes on the surface. More...
 
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
}
 The result of measurement of dimension and angle between surfaces. More...
 
enum  SolidMixUpMode {
  smm_FacesReorder = 1 , smm_LoopsReorder = 2 , smm_LoopsBegReset = 4 , smm_EdgesRedirection = 8 ,
  smm_EdgesSection = 16
}
 Ways of "mixing". More...
 

Functions

void MinSurfaceCurvature (const MbSurface &surf, const MbCartPoint &pnt, double &func, MbVector *der=nullptr)
 Calculate at the point of the surface the minimum normal curvature, as well as its gradient. More...
 
void MaxSurfaceCurvature (const MbSurface &surf, const MbCartPoint &pnt, double &func, MbVector *der=nullptr)
 Calculate at the point of the surface the maximum normal curvature, as well as its gradient. More...
 
void GaussCurvature (const MbSurface &surf, const MbCartPoint &pnt, double &func, MbVector *der=nullptr)
 Calculate at a surface point the Gaussian curvature, as well as its gradient. More...
 
void MeanCurvature (const MbSurface &surf, const MbCartPoint &pnt, double &func, MbVector *der=nullptr)
 Calculate at the point of the surface the mean curvature, as well as its gradient. More...
 
void UNormalCurvature (const MbSurface &surf, const MbCartPoint &pnt, double &func, MbVector *der=nullptr)
 Calculate at the surface point the normal curvature in the direction of u, as well as its gradient. More...
 
void VNormalCurvature (const MbSurface &surf, const MbCartPoint &pnt, double &func, MbVector *der=nullptr)
 Calculate at the surface point the normal curvature in the direction of v, as well as its gradient. More...
 
void SurfaceMinMaxCurvature (const MbSurface &surface, SurfaceFunction func, double &maxNegCurv, MbCartPoint &maxNegLoc, double &maxPosCurv, MbCartPoint &maxPosLoc, MbeExtremsSearchingMethod method=esm_LineSegregation)
 Find the points of the surface at which the selected curvature takes the largest in modulus values. More...
 
void FacesMinMaxCurvature (const RPArray< MbFace > &faces, SurfaceFunction func, double &maxNegCurv, MbFace *&maxNegFace, MbCartPoint &maxNegLoc, double &maxPosCurv, MbFace *&maxPosFace, MbCartPoint &maxPosLoc, bool borderControl=false, MbeExtremsSearchingMethod method=esm_LineSegregation)
 Find the points of the shell at which the selected curvature takes the most modulo values. More...
 
void FacesMinMaxCurvature (const c3d::ConstFacesVector &faces, SurfaceFunction func, double &maxNegCurv, const MbFace *&maxNegFace, MbCartPoint &maxNegLoc, double &maxPosCurv, const MbFace *&maxPosFace, MbCartPoint &maxPosLoc, bool borderControl=false, MbeExtremsSearchingMethod method=esm_LineSegregation)
 Find the points of the shell at which the selected curvature takes the most modulo values. More...
 
void FacesMinMaxCurvature (const c3d::ConstFacesSPtrVector &faces, SurfaceFunction func, double &maxNegCurv, const MbFace *&maxNegFace, MbCartPoint &maxNegLoc, double &maxPosCurv, const MbFace *&maxPosFace, MbCartPoint &maxPosLoc, bool borderControl=false, MbeExtremsSearchingMethod method=esm_LineSegregation)
 Find the points of the shell at which the selected curvature takes the most modulo values. More...
 
void SurfaceMinMaxCurvature (const MbSurface &surface, double &maxNegCurv, MbCartPoint &maxNegLoc, double &maxPosCurv, MbCartPoint &maxPosLoc, MbeExtremsSearchingMethod method=esm_LineSegregation)
 Find the points on the surface at which the major normal curvatures take the largest values in the module. More...
 
void FacesMinMaxCurvature (const RPArray< MbFace > &faces, double &maxNegCurv, MbFace *&maxNegFace, MbCartPoint &maxNegLoc, double &maxPosCurv, MbFace *&maxPosFace, MbCartPoint &maxPosLoc, bool borderControl=false, MbeExtremsSearchingMethod method=esm_LineSegregation)
 Find the points on the shell at which the major normal curvatures take the largest values in the module. More...
 
void FacesMinMaxCurvature (const c3d::ConstFacesVector &faces, double &maxNegCurv, const MbFace *&maxNegFace, MbCartPoint &maxNegLoc, double &maxPosCurv, const MbFace *&maxPosFace, MbCartPoint &maxPosLoc, bool borderControl=false, MbeExtremsSearchingMethod method=esm_LineSegregation)
 Find the points on the shell at which the major normal curvatures take the largest values in the module. More...
 
void FacesMinMaxCurvature (const c3d::ConstFacesSPtrVector &faces, double &maxNegCurv, const MbFace *&maxNegFace, MbCartPoint &maxNegLoc, double &maxPosCurv, const MbFace *&maxPosFace, MbCartPoint &maxPosLoc, bool borderControl=false, MbeExtremsSearchingMethod method=esm_LineSegregation)
 Find the points on the shell at which the major normal curvatures take the largest values in the module. More...
 
double CurveOrientedCurvature (const MbCurve3D &curve, double &param, const MbVector3D *planeNorm=nullptr)
 Oriented curvature for a plane curve. More...
 
void CurveMinMaxCurvature (const MbCurve3D &curve, double &maxCurv, double &maxParam, double &minCurv, double &minParam, c3d::DoubleVector *bendPoints=nullptr, c3d::DoubleVector *maxPoints=nullptr, c3d::DoubleVector *minPoints=nullptr, c3d::DoublePairsVector *rapPoints=nullptr)
 Find the points on the curve at which the curvature takes the largest and smallest values. More...
 
void SurfaceMaxCurvatureDirection (const MbSurface &surf, const MbCartPoint &pnt, MbVector &dir)
 The direction of the maximum normal surface curvature. More...
 
bool SurfacesNormalsMinMaxAngles (const MbSurfacesJointAnalysisParams &params, MbSurfacesJointAnalysisResults &results)
 The function of finding the minimum and maximum angles between surfaces normals of the intersection curve. More...
 
bool SurfacesJointMinMaxValues (const MbSurfacesJointAnalysisParams &params, MbSurfacesJointAnalysisResults &results)
 The function of finding the minimum and maximum values of surface joint parameter. More...
 
bool IsMultiShell (const MbFaceShell *shell, bool checkNesting=true)
 Check if the shell can be subdivided into separate parts. More...
 
size_t DetachShells (MbFaceShell &shell, RPArray< MbFaceShell > &parts, bool sort, c3d::IndicesVector *partIndices=nullptr)
 Separate parts from a shell. More...
 
size_t DetachShells (MbFaceShell &shell, c3d::ShellsVector &parts, bool sort, c3d::IndicesVector *partIndices=nullptr)
 Separate parts from a shell. More...
 
size_t DetachShells (MbFaceShell &shell, c3d::ShellsSPtrVector &parts, bool sort, c3d::IndicesVector *partIndices=nullptr)
 Separate parts from a shell. More...
 
template<class ShellsVector >
size_t CreateShells (const MbFaceShell &shell, ShellsVector &parts, bool sort=true)
 Separate parts from a shell. More...
 
bool UnifyOwnComplanarFaces (MbFaceShell &shell, const MbSNameMaker &nameMaker, bool checkBaseSurfaces)
 Unite complanar faces. More...
 
void FacePropagate (const MbeFacePropagation fp, RPArray< MbFace > &face_set, const MbVector3D &dir)
 Capture the faces in one of proposed methods. More...
 
void MouldCavitySolids (RPArray< MbSolid > &solids, MbCartPoint3D *fixedPoint, double deltaX, double deltaY, double deltaZ)
 Scale cavities of a mold. More...
 
bool IsSolidsIntersection (const MbSolid &solid1, const MbSolid &solid2, const MbSNameMaker &snMaker)
 Check intersection of solids. More...
 
bool IsSolidsIntersection (const MbSolid &solid1, const MbMatrix3D &matr1, const MbSolid &solid2, const MbMatrix3D &matr2, bool checkTangent, bool getIntersectionSolids, bool checkTouchPoints, RPArray< MbShellsIntersectionData > &intData)
 Check intersection of solids in an assembly. More...
 
bool MinimumSolidsDistance (const MbSolid &solid1, const MbMatrix3D &matr1, bool isMultipleUseSolid1, const MbSolid &solid2, const MbMatrix3D &matr2, bool isMultipleUseSolid2, double lowerLimitDistance, bool tillFirstLowerLimit, std::vector< MbShellsDistanceData > &shellsDistanceData)
 Determine the minimum distance between solids in an assembly. More...
 
void MultipleSolidsClassification (const RPArray< MbSolid > &solids, const RPArray< MbSolid > &relativeSolids, std::vector< MbUnitInfo > &info)
 Classify a set of solids relative to another set of solids. More...
 
void GetDistanceToSurface (const MbPlacement3D &pl, const MbCurve *curve, const MbSurface *surf, double &lPlus, double &lMinus)
 Find the distances from a contour on a plane to a surface. More...
 
void GetDistanceToCube (const MbSurface &surface, const MbVector3D &direction, const MbCurve &curve, const MbCube &cube, double &lPlus, double &lMinus, MbResultType &resType)
 Find the distances from a contour on a surface to the bounding box of a shell. More...
 
void GetDistanceToCube (const MbSurface &surface, const MbVector3D &direction, const RPArray< MbCurve > &curves, const MbCube &cube, double &lPlus, double &lMinus, MbResultType &resType)
 Find the distances from curves on a surface to the bounding box of a shell. More...
 
bool GetDistanceToCube (const MbPlacement3D &pl, const MbFaceShell *shell, double &dPlus, double &dMinus, bool findMax=true)
 Find the distances from a plane to the bounding box of a shell. More...
 
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)
 Find the distances/angles from a contour to a bounding box or to a surface. More...
 
bool GetNearestSolid (const MbNearestSolidParams &params, MbNearestSolidResult &result)
 Find the nearest solids while extruding with option 'up to the nearest object'. More...
 
bool GetNearestSolid (const MbPlacement3D &pl, RPArray< MbContour > &c, MbSweptLayout::Direction direction, RPArray< MbSolid > &solids, size_t &nPlus, size_t &nMinus)
 Find the nearest solids while extruding with option 'up to the nearest object'. More...
 
bool GetNearestSolid (RPArray< MbCurve3D > &curves, const MbVector3D &direction, MbSweptLayout::Direction operationDirection, RPArray< MbSolid > &solids, size_t &nPlus, size_t &nMinus)
 Find the nearest solids while extruding with option 'up to the nearest object'. More...
 
MbResultType CheckNurbsShell (const NurbsSurfaceValues &params, const MbSolid &nsSolid, IProgressIndicator *progBar)
 Check a shell or a solid that consists of NURBS surfaces. More...
 
bool AddTruncatingSketch (const MbPlacement3D &sketchPlace, RPArray< MbCurve > &sketchCurves, RPArray< MbSpaceItem > &items)
 Add a sketch to the array of truncating objects. More...
 
void AddTruncatingCurve (const MbCurve3D &curve, RPArray< MbSpaceItem > &items)
 Add a curve to the array of truncating objects. More...
 
void CheckShellingFaces (const SweptValues &params, RPArray< MbFace > &faces)
 Check the correctness of shelling faces for creation of a thin-walled solid. More...
 
bool ProjectVectorOn (const MbVector3D &v3d, const MbSurface &surface, const MbCartPoint &p2d, MbVector &v2d)
 Calculate the components of projection of a vector defined at a point on the surface. More...
 
MbSurfaceGetExtendedSurfaceCopy (MbCube &gabarit, const MbSurface &surf, const MbShellCuttingParams::ProlongState &prolongState, VERSION version)
 Extend a surface for cutting a solid. More...
 
bool CreateFaces (const MbPlacement3D &place, const MbContour &contour, const MbVector3D &der, bool sense, const MbSNameMaker &n, RPArray< MbFace > &faces, bool useAddCount=false)
 Create a set of faces with topology of a prism. More...
 
bool CreateFaces (const MbPlacement3D &place, const MbContour &contour, const MbVector3D &der, bool sense, const MbSNameMaker &n, c3d::FacesSPtrVector &faces, bool useAddCount=false)
 Create a set of faces with topology of a prism. More...
 
void GetAutoReference (MbFaceShell &shell, const MbPlacement3D &place, const MbContour &contour, ptrdiff_t index, RibValues::ExtrudeSide &side, MbCartPoint3D &origin, MbVector3D &dir3D)
 Estimate parameters of extrusion for a rib. More...
 
MbCurveGetProjCurveOnSurface (const MbSurfaceIntersectionCurve &intersectCurve, bool first)
 Create a curve in the parameter space of a surface. More...
 
bool IsSameSpineDirection (const MbCurve3D &curve, VERSION srcVersion, VERSION dstVersion)
 Check the invariance of the vector of spine direction in different versions. More...
 
bool IsSpaceNear (const MbCurve3D &curv, const MbSurface &surf, bool surfExt, double mEps, double devSag=5.0 *Math::deviateSag)
 Determine whether a curve is close to a surface. More...
 
bool SurfaceFace (const MbSurface &surface, SPtr< MbFace > &face)
 Create the face on the base of arbitrary surface. More...
 
MbGridSpaceGrid (const MbPlacement3D &place, const MbPlanarGrid &planarGrid, bool exact=false)
 Creating a three-dimensional grid on a two-dimensional grid. More...
 
MbItemReplaceByInstance (MbItem *item, double ratioThreashhold=-1.0, bool makeCopy=false)
 Replace an item by an instance if the length from it's bounding box to the world origin is greater than it's diagonal by specified factor. More...
 
MbResultType FloodFillResult (MbSolid &vessel, MbeCopyMode sameShell, const MbSweptData &bungData, const MbCartPoint3D &origin, const MbSNameMaker &names, MbSolid *&result)
 The construction of a "flood fill" volume located between the inner surface of the vessel and the bounding surface or body. More...
 
bool FindTouchedFaces (const MbSolid &solid1, const MbSolid &solid2, double precision, c3d::IndicesPairsVector &facesNumbers)
 To find contacted faces of bodies. More...
 
bool SplitTouchedFaces (MbSolid &solid1, MbSolid &solid2, double precision, c3d::IndicesPairsVector &facesNumbers)
 To find contacted faces of bodies. More...
 
c3d::SolidSPtr GetTransformedSolid (c3d::SolidSPtr &solid, MbeCopyMode &copyMode, const MbMatrix3D &matr, SimpleName transformedMainName=ct_TransformedSolid)
 Get transformed copy of a solid. More...
 
template<class Item >
SPtr< Item > GetTransformedItem (SPtr< Item > &item, const MbMatrix3D &matr, MbRegDuplicate *iDupReg=nullptr, MbRegTransform *iTransReg=nullptr)
 Get transformed copy of object. More...
 
void CalculatePolygon (const MbCurve &curve, const MbPlacement3D &plane, double sag, MbPolygon3D &polygon)
 Calculation of polygon of curve. More...
 
MbResultType SmoothPhantom (const MbSolid &solid, RPArray< MbCurveEdge > &edges, const SmoothValues &params, RPArray< MbSurface > &result)
 Create phantom surfaces of fillet/chamfer. More...
 
MbResultType SmoothPhantom (const MbSolid &solid, SArray< MbEdgeFunction > &edges, const SmoothValues &params, RPArray< MbSurface > &result)
 Create phantom surfaces of fillet/chamfer. More...
 
MbResultType SmoothPhantom (const MbSmoothPhantomParams &params, MbSmoothPhantomResult &result)
 Create phantom surfaces of fillet/chamfer. More...
 
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)
 
MbResultType SmoothSequence (const MbSmoothSequenceParams &params, MbSmoothSequenceResult &result)
 Create a sequence of smoothly connected edges. More...
 
bool TruncatDirection (const MbCurveEdge &truncatingEdge, MbPlacement3D &dirPlace)
 Determine a phantom direction of truncation. More...
 
MbResultType SmoothPositionData (const MbSolid &solid, RPArray< MbCurveEdge > &edges, const SmoothValues &params, RPArray< MbPositionData > &result, double edgeParam=0.5, const MbCurveEdge *dimensionEdge=nullptr)
 Create support points of fillet/chamfer operation sizes. More...
 
MbResultType SmoothPositionData (const MbSolid &solid, SArray< MbEdgeFunction > &edges, const SmoothValues &params, RPArray< MbPositionData > &result, double edgeParam=0.5, const MbCurveEdge *dimensionEdge=nullptr)
 Create support points of fillet/chamfer operation sizes. More...
 
MbResultType SmoothPositionData (const MbSmoothPositionDataParams &params, MbSmoothPositionDataResults &result)
 Create support points of fillet/chamfer operation sizes. More...
 
MbFunctionCreateFunction (const MbCurve3D &curve, const MbPlacement3D &place, size_t coordinate)
 Create a function by one of three coordinates of curve. More...
 
c3d::FunctionSPtr CreateFunction (const MbCurve &curve, const MbFunctionParameters &params)
 Create a scalar function by Y-coordinate of curve. More...
 
MbResultType SectionPhantom (const MbSectionData &sectionData, MbSectionPhantom &sctionPhantom)
 Calculation of the phantom data for the ends of the mutable section surface. More...
 
MbResultType SectionPhantom (const MbSectionData &sectionData, MbPlacement3D &begPlace, MbCartPoint3D &begGuideP1, MbCartPoint3D &begGuideP2, MbVector3D &begVector1, MbVector3D &begVector2, MbCartPoint3D &begApex, MbPlacement3D &endPlace, MbCartPoint3D &endGuideP1, MbCartPoint3D &endGuideP2, MbVector3D &endVector1, MbVector3D &endVector2, MbCartPoint3D &endApex)
 Calculation of the phantom data for the ends of the mutable section surface. More...
 
template<class Type >
SArray< Type > * CreateArray (size_t cnt, MbResultType &res)
 Create an array. More...
 
template<class Type >
bool ReserveArray (SArray< Type > &arr, size_t n, MbResultType &res)
 Allocate memory in the array for n elements. More...
 
template<class Type >
bool AddItem (SArray< Type > &arr, const Type &item, MbResultType &res)
 Add an element to the array. More...
 
bool LineLineNearestParams (const MbCartPoint3D &origin1, const MbVector3D &direction1, const MbCartPoint3D &origin2, const MbVector3D &direction2, double &t1, double &t2)
 Determine the parameters of the nearest points of lines. More...
 
double LineLineNearestPoints (const MbLine3D &line1, const MbLine3D &line2, MbCartPoint3D &p1, MbCartPoint3D &p2)
 Determination of the distance between the nearest points p1 and p2 of lines line1 and line2. More...
 
bool LineLineNearestParams (const MbCartPoint &origin1, const MbVector &direction1, const MbCartPoint &origin2, const MbVector &direction2, double &t1, double &t2)
 Determine the parameters of the nearest points of lines. More...
 
double AreaSign (const MbCurve3D &curve, const MbAxis3D &axis, const MbVector3D &direction, bool rotation)
 Compute the area of a curve projection onto a virtual coordinate plane. More...
 
bool GetLineSegmentNURBSSurface (const MbSurface &surf, RPArray< MbCurve3D > &segments)
 Create a characteristic polyline of a spline surface. More...
 
double GetFilletRadiusDelta (const MbCurve3D &filletCurve, double radius, bool sense, double len, const MbCurve3D &curve1, double t1, const MbCurve3D &curve2, double t2)
 Determine the radius variation while translating the middle point of the fillet curve. More...
 
double GetFilletRadiusDelta (const MbCurve3D &filletCurve, double radius, bool sense, double len)
 Determine the radius variation while translating the middle point of the fillet curve. More...
 
void RadiusDimension3D (const MbSurface &surface, const MbCartPoint &surface_uv, MbPlaneCurve *&plane_curve)
 Construct a circle or an arc for radial dimension of surface. More...
 
void RadiusDimension3D (const MbSurface &surface, const MbCartPoint3D &point, MbPlaneCurve *&plane_curve)
 Construct a circle or an arc for radial dimension of surface. More...
 
void RadiusDimension3D (const MbSurface &surface, const MbPlacement3D &place, MbPlaneCurve *&plane_curve)
 Construct a circle or an arc for radial dimension of surface. More...
 
bool IsPossibleRadiusDimension3D (const MbSurface &surface)
 Whether a circle or an arc can be constructed for radial dimension of surface. More...
 
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)
 Distance between axes of surfaces. More...
 
MbeProcessState MinMaxSurfaceSurfaceGridDistances (const MbMinMaxGridDistancesParams &params, MbMinMaxGridDistancesResults< MbCartPoint, MbCartPoint > &results)
 Extreme distances between objects (curves or surfaces). More...
 
MbeProcessState MinMaxCurveSurfaceGridDistances (const MbMinMaxGridDistancesParams &params, MbMinMaxGridDistancesResults< double, MbCartPoint > &results)
 Extreme distances between objects (curves and surfaces). More...
 
MbeProcessState MinMaxCurveCurveGridDistances (const MbMinMaxGridDistancesParams &params, MbMinMaxGridDistancesResults< double, double > &results)
 Extreme distances between curves. More...
 
bool MaxDistance (const MbCartPoint3D &pnt, const MbCurve3D &curv, double &t, double &distance)
 Find the maximal distance between a point and a curve. More...
 
bool MaxDistance (const MbCurve3D &curv1, const MbCurve3D &curv2, double &t1, double &t2, double &distance)
 Find the maximal distance between two curves. More...
 
bool MaxDistance (const MbCartPoint3D &pnt, const MbSurface &surf, MbCartPoint &uv, double &distance)
 Find the maximal distance between a point and a surface. More...
 
bool MaxDistance (const MbCurve3D &curv, const MbSurface &surf, double &t, MbCartPoint &uv, double &distance)
 Find the maximal distance between a curve and a surface. More...
 
bool MaxDistance (const MbSurface &surf1, const MbSurface &surf2, MbCartPoint &uv1, MbCartPoint &uv2, double &distance)
 Find the maximal distance between two surfaces. More...
 
bool MaxDistance (const MbAxis3D &axis, const MbCurve3D &curve, double &param, double &distance)
 Find the maximal distance between an axis an a curve. More...
 
void GetEpsilonBound (const MbCurve3D &crv, double t, MbCartPoint3D &pnt, double &eps, VERSION version)
 Calculate the tolerance of a point on a curve. More...
 
bool IsIncidence (const MbCurve3D &crv1, int t1, const MbCurve3D &crv2, int t2, VERSION version)
 Check the coincidence of two vertices. More...
 
double GetNearCurveParam (const MbCurve3D &curve, const MbCartPoint3D &point, const MbVector3D &direct)
 Get the curve parameter which is nearest to the ray. More...
 
double GetNearCurveParam (const MbCurve3D &curve, const MbCartPoint3D &point, const MbVector3D &direct, bool setOnSide, bool &isBegin)
 Get the curve parameter which is nearest to the ray. More...
 
MbCurveGetFlatCurve (const MbCurve3D &curve3D, const MbMatrix3D &into, MbRect1D *pRgn=nullptr, VERSION version=Math::DefaultMathVersion())
 Construct a planar projection of a curve. More...
 
MbCurveGetFlatProjection (const MbCurve3D &curve3D, const MbPlacement3D &place, VERSION version=Math::DefaultMathVersion())
 Get a planar projection of a curve. More...
 
void SolidMixUp (MbSolid &solid, uint mixUpModes)
 A stress test for solid. More...
 
void CompareSolids (const MbSolid &solid1, const MbSolid &solid2, CompareItemsResult &compareResult, bool compareMassInertia, bool checkSense)
 Two solids comparison. More...
 
bool CompareSolidsByNames (const MbSolid &before, const MbSolid &after, CompareItemsResult &compareResult)
 Comparison of two solids by name. More...
 
bool IsDegeneratedCurve (const MbCurve3D &curve, double eps)
 Check for the curve degeneration in three-dimensional space. More...
 
bool CheckSurfaceDegeneracy (const MbSurface &surf, double u, double v, double eps, bool &degRu, bool &degRv, bool &colUV)
 Checking the degeneracy of a surface at a point. More...
 
bool CheckShellClosure (const MbFaceShell &shell, bool checkChangedOnly=false)
 Check of solid's shell for closedness. More...
 
bool CheckSolidClosure (const MbSolid &solid)
 Check of solid's shell for closedness. More...
 
template<class EdgesVector >
bool CheckBoundaryEdges (const EdgesVector &allEdges, EdgesVector *boundaryEdges)
 Search for the boundary edges of a closed shell. More...
 
bool CheckBadEdges (const c3d::ConstEdgesVector &allEdges, c3d::ConstEdgesVector *badEdges)
 Search of incorrect edges. More...
 
template<class VerticesVector >
bool CheckInexactVertices (const VerticesVector &vertArr, double mAcc, VerticesVector *inexactVerts)
 Search for inexact vertices. More...
 
bool IsInexactIntersectionCurve (const MbSurfaceIntersectionCurve &curve, double mMaxAcc)
 Is the curve of intersection inaccurate. More...
 
bool IsInexactEdge (const MbCurveEdge &edge, double mMaxAcc)
 Is the curve of intersection edges inaccurate. More...
 
template<class EdgesVector >
bool CheckInexactEdges (const EdgesVector &allEdges, double mAcc, EdgesVector *inexactEdges)
 Approximate search of inexact edges. More...
 
void CheckBadFaces (const MbFaceShell &shell, bool &areIdenticalBaseSurfaces, bool &areBadFacePointers)
 Check of substrates and pointers to faces. More...
 
bool CheckLoopsInterposition (const MbFace &face)
 Check interposition of face loops. More...
 
bool CheckLoopConnection (const MbFace &face, const MbLoop &loop, double &lengthTolerance, double &paramTolerance, c3d::IndicesPairsVector &badLocs)
 Check for connectivity of loop edges. More...
 
bool CheckLoopConnection (const MbFace &face, const MbLoop &loop, double &lengthTolerance, double *paramTolerance, c3d::ConstOrientEdgesVector &badConnectedEdges, c3d::ConstEdgesVector &badVertexEdges)
 Check for connectivity of a loop edges. More...
 
bool CheckLoopConnection (const MbFace &face, const MbLoop &loop, double &lengthTolerance, double *paramTolerance, c3d::ConstOrientEdgesVector &badConnectedEdges)
 Check for connectivity of a loop edges. More...
 
bool CheckLoopConnection (const MbFace &face, const MbLoop &loop, double &lengthTolerance, double *paramTolerance)
 Check for connectivity of a loop edges. More...
 
bool FindLoopsSelfIntersections (const MbFace &face, const MbSNameMaker &nameMaker, bool checkInsideEdges, std::vector< std::pair< c3d::IndicesPair, MbCartPoint3D > > *loopPnts)
 Find face loops with self-intersections. More...
 
bool CheckFacesConnection (const RPArray< MbFace > &faces)
 Check for connectivity of faces 'faces'. More...
 
bool CheckFacesConnection (const c3d::FacesVector &faces)
 Check for connectivity of faces 'faces'. More...
 
bool CheckFacesConnection (const c3d::ConstFacesVector &faces)
 Check for connectivity of faces 'faces'. More...
 
bool FindOverlappingSimilarFaces (const MbFaceShell &srcShell, const MbFaceShell &dstShell, bool sameNormals, c3d::IndicesPairsVector &simPairs)
 Find "parent" faces of a derived shell in the initial shell. More...
 
bool FindFacesEdgesCarriers (const c3d::ConstEdgesVector &edges, const MbFaceShell &shell, bool sameNormals, c3d::IndicesPairsVector &efPairs)
 Find faces edges of the derived shell are based on. More...
 
bool RepairEdge (MbCurveEdge &edge, bool updateFacesBounds)
 Repair incorrect edge of a shell. More...
 
bool RepairEdges (MbFaceShell &shell, bool updateFacesBounds=true)
 Repair incorrect edges of a shell. More...
 
bool RepairVertices (MbFaceShell &shell)
 Repair incorrect vertices of a shell. More...
 
bool RemoveCommonSurfaceSubstrates (MbFaceShell &shell, bool checkEdges=true)
 Remove common surface substrates. More...
 
bool ResetSurfacesBoundingBoxes (MbFaceShell &shell, bool updateBasisParameticLimits=false)
 Reset bounding boxes of surfaces. More...
 
bool ResetSurfaceBoundingBoxes (MbSurface &surface, bool updateBasisParameticLimits=false)
 Reset bounding boxes of a surface. More...
 
bool ResetCurvesTemporaryData (MbFaceShell &shell)
 Reset all temporary data of curves. More...
 
ThreeStates IsOrientedOutward (const MbFaceShell &shell)
 Checking shell orientation. More...
 
bool CheckTopologyItemsMainNames (const MbFaceShell &shell, c3d::ConstEdgesVector &edges, c3d::ConstVerticesVector &vertices)
 Check whether vertices and edges names contain a main name of one of the parents (edges and faces corresponding). More...
 
bool AddEdgeSmoothnessAttributes (MbFaceShell &shell, bool skipExisting)
 Add edges smoothness attributes. More...
 
bool AddEdgeSmoothnessAttributes (MbFaceShell &shell, bool skipExisting, c3d::ConstEdgesVector &filledEdges, c3d::ConstEdgesVector &emptyEdges)
 Add edges smoothness attributes. More...
 
bool UpdateEdgeSmoothnessAttributes (MbFaceShell &shell)
 Update edges smoothness attributes data. More...
 
bool RemoveEdgeSmoothnessAttributes (MbFaceShell &shell)
 Remove edges smoothness attributes. More...
 
const MbDoubleRangeAttributeGetEdgeSmoothnessAttribute (const MbCurveEdge &edge)
 Get edge smoothness attribute from an edge. More...
 
MbResultType IsDegeneratedElementary (const MbSurface &inputSurface, double accuracy=Math::metricPrecision)
 Check whether the surface is degenerated. More...
 
bool GetDepthToFace (const MbFace &face, const MbPlacement3D &place, const HoleValues &pars, double &depth)
 Determine the hole depth "to the specified surface" while creating a shell with a hole. More...
 
template<class Point >
bool c3d::EqualPoints (const Point &p1, const Point &p2, double xEpsilon, double yEpsilon, double zEpsilon)
 Check points for equality. More...
 
template<class Vector >
bool c3d::EqualVectors (const Vector &p1, const Vector &p2, double xEpsilon, double yEpsilon, double zEpsilon)
 Check equality of vectors with given tolerance. More...
 
bool LineTriangleIntersect (const MbFloatPoint3D &tri_v0, const MbFloatPoint3D &tri_v1, const MbFloatPoint3D &tri_v2, const MbFloatAxis3D &line, float epsilon, MbFloatPoint3D &crossPnt, float &tRes)
 Find the intersection of a line with a triangle. More...
 
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, MbFloatPoint3D &crossPnt, float &tRes)
 Find the intersection of a straight line with the triangulation. More...
 
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, MbFloatPoint3D &crossPnt, float &tRes, c3d::IndicesPair &tqInd)
 Find the intersection of a straight line with the triangulation. More...
 
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, const MbPlacement3D &cutPlace, MbFloatPoint3D &crossPnt, float &tRes)
 Find the intersection of a straight line with the triangulation. More...
 
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, const std::vector< MbPlacement3D > &cutPlaces, MbFloatPoint3D &crossPnt, float &tRes)
 Find the intersection of a straight line with the triangulation. More...
 
bool LineGridIntersect (const MbGrid &grid, const MbFloatAxis3D &line, float &tRes)
 Find the intersection of a straight line with the triangulation. More...
 
float LineToGridEdgeDistanceSquared (const MbGrid &grid, size_t edgeInd, const MbFloatAxis3D &line, float delta, float &tRes)
 Calculate squared distance from a line to a polygon. More...
 
float LineToGridEdgeDistanceSquared (const MbGrid &grid, size_t edgeInd, const MbFloatAxis3D &line, const MbFloatVector3D &vDelta, MbFloatVector3D &vRes, float &tRes)
 Calculate squared distance from a line to a polygon. More...
 
MbPlaneCreateCloudPointsPlane (const c3d::SpacePointsVector &points)
 Create a plane based on the moments of inertia of the point cloud. More...
 
float LineToSegmentDistanceSquared (const MbFloatPoint3D &seg_base, const MbFloatPoint3D &seg_end, const MbFloatAxis3D &line, float &tRes)
 Calculate squared distance from straight line to segment of polygon. More...
 
float LineToSegmentDistanceSquared (const MbFloatPoint3D &seg_base, const MbFloatPoint3D &seg_end, const MbFloatAxis3D &line, MbFloatVector3D &vRes, float &tRes)
 Calculate squared distance from straight line to segment of polygon. More...
 
float LineToPolyDistanceSquared (const MbPolygon3D &poly, const MbFloatAxis3D &line, float delta, MbFloatPoint3D &nearestPoint, float &tRes)
 Calculate squared distance from a line to a polygon. More...
 
float LineToPolyDistanceSquared (const MbPolygon3D &poly, const MbFloatAxis3D &line, float delta, const MbPlacement3D &cutPlace, MbFloatPoint3D &nearestPoint, float &tRes)
 Calculate squared distance from a line to a polygon. More...
 
float LineToPolyDistanceSquared (const MbPolygon3D &poly, const MbFloatAxis3D &line, float delta, const std::vector< MbPlacement3D > &cutPlaces, MbFloatPoint3D &nearestPoint, float &tRes)
 Calculate squared distance from a line to a polygon. More...
 
template<class Double , class Point , class Vector , class Axis >
Double LineToPointDistance (const Axis &line, const Point &to, Double &tRes)
 Calculate the distance from a line to a point. More...
 
template<class Double , class Point , class Vector , class Axis , class Placement >
Double LineToPointDistance (const Axis &line, const Point &to, const Placement &cutPlace, Double &tRes)
 Calculate the distance from a line to a point. More...
 
bool CreatePartSolidIndices (const MbSolid &solid, const SArray< MbPartSolidData > &partInfo, MbPartSolidIndices &partIndices)
 Create indices of the parts of the solid. More...
 
bool CreateElevationParam (const MbCurve3D &crvThis, const MbCurve3D &spine, MbCartPoint3D &wcThis, double &ct, MbVector3D *tau)
 Create parameter for specified curve. More...
 
bool CreateElevationParams (RPArray< MbCurve3D > &uCurves, bool vcls, const MbCurve3D &spine, SArray< double > &vParams, SArray< MbCartPoint3D > *tiePnts)
 Fill array of v-parameters and weight centers of given curves. More...
 
bool CreateLoftedParams (const RPArray< MbCurve3D > &uCurves, bool vcls, SArray< double > &vParams, SArray< MbCartPoint3D > *tiePnts, VERSION version)
 Fill array of v-parameters and weight centers of given curves. More...
 
double LinePlaneNearestPoints (const MbLine3D &line1, const MbPlane &plane2, MbCartPoint3D &p1, MbCartPoint3D &p2)
 Intersection or distance between infinite line and infinite plane. More...
 
MbLine3DPlanesIntersection (const MbPlane &plane1, const MbPlane &plane2)
 Intersection of two infinite planes. More...
 
bool DefineThroughPointsParams (ptrdiff_t degree, bool closed, const Array2< MbCartPoint3D > &points, bool alongLines, MbeSplineParamType spType, SArray< double > &params)
 Determine a parametric distribution of points for the construction of NURBS surface passing through these points. More...
 
bool DefineThroughPointsParams (ptrdiff_t degree, bool closed, const Array2< MbCartPoint3D > &points, bool alongLines, ptrdiff_t rowInd, MbeSplineParamType spType, SArray< double > &params)
 Determine a parametric distribution of points for the construction of NURBS surface passing through these points. More...
 
template<class FacesVector >
size_t SetEdgesLabel (const FacesVector &faceSet, MbeLabelState label, void *key=nullptr)
 Set the specified label to all edges of the shell. More...
 
template<class FacesVector , class EdgesVector >
void GetEdges (const FacesVector &faceSet, EdgesVector &edges)
 Get a set of edges. More...
 

Detailed Description

Typedef Documentation

◆ SurfaceFunction

typedef void( * SurfaceFunction) (const MbSurface &surf, const MbCartPoint &pnt, double &func, MbVector *der)

The function define on the surface.

Calculates the value of the function itself and its gradient.

Enumeration Type Documentation

◆ MbeExtremsSearchingMethod

Algorithms for finding extremes on the surface.

Constants defining the called algorithm for searching for extreme values of a function on a surface.

Enumerator
esm_GradientDescent 

Gradient Descent Method.

esm_LineSegregation 

The method of segregation of lines of change of decrease / increase of the function in u and v directions.

esm_AdaptiveCells 

Adaptive cell splitting method.

◆ MbeSurfAxesMeasureRes

The result of measurement of dimension and angle between surfaces.

The result of measurement of dimension and angle between surfaces.

Enumerator
samr_SurfSurf_Failed 

An error is occurred while working with surfaces.

samr_AxisSurf_Failed 

An error is occurred while working with axis and surface.

samr_AxisAxis_Failed 

An error is occurred while working with axes.

samr_Undefined 

Failed or didn't measured.

samr_AxisAxis_Coaxial 

Axes are coincident.

samr_AxisAxis_Parallel 

Axes are parallel.

samr_AxisAxis_Intersecting 

Axes are crossed.

samr_AxisAxis_Distant 

Axes are located at a distance.

samr_AxisSurf_Colinear 

The axis lies on the surface.

samr_AxisSurf_Parallel 

The axis is parallel to the surface.

samr_AxisSurf_Intersecting 

The axis crosses the surface.

samr_AxisSurf_Distant 

The axis is located at a distance from the surface.

samr_SurfSurf_Colinear 

One surface lies on another one.

samr_SurfSurf_Parallel 

Surfaces are parallel.

samr_SurfSurf_Intersecting 

Surfaces are intersecting inside domain.

◆ SolidMixUpMode

Ways of "mixing".

Ways of shell components "mixing".

Enumerator
smm_FacesReorder 

A change of faces order in array.

smm_LoopsReorder 

A change of loops order in faces (internal only).

smm_LoopsBegReset 

A change of first edge in loops of faces.

smm_EdgesRedirection 

A change of edges directions in loops of faces.

smm_EdgesSection 

Splitting of edges by vertex insertion.

Function Documentation

◆ MinSurfaceCurvature()

void MinSurfaceCurvature ( const MbSurface surf,
const MbCartPoint pnt,
double &  func,
MbVector der = nullptr 
)

Calculate at the point of the surface the minimum normal curvature, as well as its gradient.

The curvature value is calculated and, optionally, its gradient value at a point (if a non-zero pointer is passed).

Parameters
[in]surf- Surface.
[in]pnt- Point of calculation.
[out]func- Calculated curvature value.
[out]der- The calculated value of the curvature gradient.

◆ MaxSurfaceCurvature()

void MaxSurfaceCurvature ( const MbSurface surf,
const MbCartPoint pnt,
double &  func,
MbVector der = nullptr 
)

Calculate at the point of the surface the maximum normal curvature, as well as its gradient.

The curvature value is calculated and, optionally, its gradient value at a point (if a non-zero pointer is passed).

Parameters
[in]surf- Surface.
[in]pnt- Point of calculation.
[out]func- Calculated curvature value.
[out]der- The calculated value of the curvature gradient.

◆ GaussCurvature()

void GaussCurvature ( const MbSurface surf,
const MbCartPoint pnt,
double &  func,
MbVector der = nullptr 
)

Calculate at a surface point the Gaussian curvature, as well as its gradient.

The curvature value is calculated and, optionally, its gradient value at a point (if a non-zero pointer is passed).

Parameters
[in]surf- Surface.
[in]pnt- Point of calculation.
[out]func- Calculated curvature value.
[out]der- The calculated value of the curvature gradient.

◆ MeanCurvature()

void MeanCurvature ( const MbSurface surf,
const MbCartPoint pnt,
double &  func,
MbVector der = nullptr 
)

Calculate at the point of the surface the mean curvature, as well as its gradient.

The curvature value is calculated and, optionally, its gradient value at a point (if a non-zero pointer is passed).

Parameters
[in]surf- Surface.
[in]pnt- Point of calculation.
[out]func- Calculated curvature value.
[out]der- The calculated value of the curvature gradient.

◆ UNormalCurvature()

void UNormalCurvature ( const MbSurface surf,
const MbCartPoint pnt,
double &  func,
MbVector der = nullptr 
)

Calculate at the surface point the normal curvature in the direction of u, as well as its gradient.

The curvature value is calculated and, optionally, its gradient value at a point (if a non-zero pointer is passed).

Parameters
[in]surf- Surface.
[in]pnt- Point of calculation.
[out]func- Calculated curvature value.
[out]der- The calculated value of the curvature gradient.

◆ VNormalCurvature()

void VNormalCurvature ( const MbSurface surf,
const MbCartPoint pnt,
double &  func,
MbVector der = nullptr 
)

Calculate at the surface point the normal curvature in the direction of v, as well as its gradient.

The curvature value is calculated and, optionally, its gradient value at a point (if a non-zero pointer is passed).

Parameters
[in]surf- Surface.
[in]pnt- Point of calculation.
[out]func- Calculated curvature value.
[out]der- The calculated value of the curvature gradient.

◆ SurfaceMinMaxCurvature() [1/2]

void SurfaceMinMaxCurvature ( const MbSurface surface,
SurfaceFunction  func,
double &  maxNegCurv,
MbCartPoint maxNegLoc,
double &  maxPosCurv,
MbCartPoint maxPosLoc,
MbeExtremsSearchingMethod  method = esm_LineSegregation 
)

Find the points of the surface at which the selected curvature takes the largest in modulus values.

Looks for points at which the selected curvature takes on the surface the greatest positive and least negative value.

Parameters
[in]surface- Test surface.
[in]func- The function of calculating the curvature at a point.
[out]maxNegCurv- The largest in modulus value negative curvature (0, if there is no such).
[out]maxNegLoc- The point at which the curvature takes the largest in modulus negative value.
[out]maxPosCurv- The greatest positive value of curvature (0, if there is no such).
[out]maxPosLoc- The point at which the curvature takes the most positive value.
[in]method- Extremum search algorithm.

◆ FacesMinMaxCurvature() [1/6]

void FacesMinMaxCurvature ( const RPArray< MbFace > &  faces,
SurfaceFunction  func,
double &  maxNegCurv,
MbFace *&  maxNegFace,
MbCartPoint maxNegLoc,
double &  maxPosCurv,
MbFace *&  maxPosFace,
MbCartPoint maxPosLoc,
bool  borderControl = false,
MbeExtremsSearchingMethod  method = esm_LineSegregation 
)

Find the points of the shell at which the selected curvature takes the most modulo values.

Finds points on the shell at which the selected curvature takes the largest positive and lowest negative values.

Parameters
[in]faces- Faces of the shell.
[in]func- The function of calculating the curvature at a point.
[out]maxNegCurv- The largest in modulus value negative curvature (0, if there is no such).
[out]maxNegFace- The face at which the curvature takes the largest in modulus negative value.
[out]maxNegLoc- The point at which the curvature takes the largest in modulus negative value.
[out]maxPosCurv- The greatest positive value of curvature (0, if there is no such).
[out]maxPosFace- The face at which the curvature takes the most positive value.
[out]maxPosLoc- The point at which the curvature takes the most positive value.
[in]borderControl- Take into account the boundaries of the faces when searching for extrema.
[in]method- Extremum search algorithm.

◆ FacesMinMaxCurvature() [2/6]

void FacesMinMaxCurvature ( const c3d::ConstFacesVector &  faces,
SurfaceFunction  func,
double &  maxNegCurv,
const MbFace *&  maxNegFace,
MbCartPoint maxNegLoc,
double &  maxPosCurv,
const MbFace *&  maxPosFace,
MbCartPoint maxPosLoc,
bool  borderControl = false,
MbeExtremsSearchingMethod  method = esm_LineSegregation 
)

Find the points of the shell at which the selected curvature takes the most modulo values.

Finds points on the shell at which the selected curvature takes the largest positive and lowest negative values.

Parameters
[in]faces- Faces of the shell.
[in]func- The function of calculating the curvature at a point.
[out]maxNegCurv- The largest in modulus value negative curvature (0, if there is no such).
[out]maxNegFace- The face at which the curvature takes the largest in modulus negative value.
[out]maxNegLoc- The point at which the curvature takes the largest in modulus negative value.
[out]maxPosCurv- The greatest positive value of curvature (0, if there is no such).
[out]maxPosFace- The face at which the curvature takes the most positive value.
[out]maxPosLoc- The point at which the curvature takes the most positive value.
[in]borderControl- Take into account the boundaries of the faces when searching for extrema.
[in]method- Extremum search algorithm.

◆ FacesMinMaxCurvature() [3/6]

void FacesMinMaxCurvature ( const c3d::ConstFacesSPtrVector &  faces,
SurfaceFunction  func,
double &  maxNegCurv,
const MbFace *&  maxNegFace,
MbCartPoint maxNegLoc,
double &  maxPosCurv,
const MbFace *&  maxPosFace,
MbCartPoint maxPosLoc,
bool  borderControl = false,
MbeExtremsSearchingMethod  method = esm_LineSegregation 
)

Find the points of the shell at which the selected curvature takes the most modulo values.

Finds points on the shell at which the selected curvature takes the largest positive and lowest negative values.

Parameters
[in]faces- Faces of the shell.
[in]func- The function of calculating the curvature at a point.
[out]maxNegCurv- The largest in modulus value negative curvature (0, if there is no such).
[out]maxNegFace- The face at which the curvature takes the largest in modulus negative value.
[out]maxNegLoc- The point at which the curvature takes the largest in modulus negative value.
[out]maxPosCurv- The greatest positive value of curvature (0, if there is no such).
[out]maxPosFace- The face at which the curvature takes the most positive value.
[out]maxPosLoc- The point at which the curvature takes the most positive value.
[in]borderControl- Take into account the boundaries of the faces when searching for extrema.
[in]method- Extremum search algorithm.

◆ SurfaceMinMaxCurvature() [2/2]

void SurfaceMinMaxCurvature ( const MbSurface surface,
double &  maxNegCurv,
MbCartPoint maxNegLoc,
double &  maxPosCurv,
MbCartPoint maxPosLoc,
MbeExtremsSearchingMethod  method = esm_LineSegregation 
)

Find the points on the surface at which the major normal curvatures take the largest values in the module.

Looks for points on the surface at which the major normal curvatures take the largest positive and smallest negative values.

Parameters
[in]surface- Test surface.
[out]maxNegCurv- The largest in modulus value negative curvature (0, if there is no such).
[out]maxNegLoc- The point at which the curvature takes the largest in modulus negative value.
[out]maxPosCurv- The greatest positive value of curvature (0, if there is no such).
[out]maxPosLoc- The point at which the curvature takes the most positive value.
[in]method- Extremum search algorithm.

◆ FacesMinMaxCurvature() [4/6]

void FacesMinMaxCurvature ( const RPArray< MbFace > &  faces,
double &  maxNegCurv,
MbFace *&  maxNegFace,
MbCartPoint maxNegLoc,
double &  maxPosCurv,
MbFace *&  maxPosFace,
MbCartPoint maxPosLoc,
bool  borderControl = false,
MbeExtremsSearchingMethod  method = esm_LineSegregation 
)

Find the points on the shell at which the major normal curvatures take the largest values in the module.

Looks for points on the shell at which the major normal curvatures take the largest positive and smallest negative values.

Parameters
[in]faces- Faces of the shell.
[out]maxNegCurv- The largest in modulus value negative curvature (0, if there is no such).
[out]maxNegFace- The face at which the curvature takes the largest in modulus negative value.
[out]maxNegLoc- The point at which the curvature takes the largest in modulus negative value.
[out]maxPosCurv- The greatest positive value of curvature (0, if there is no such).
[out]maxPosFace- The face at which the curvature takes the most positive value.
[out]maxPosLoc- The point at which the curvature takes the most positive value.
[in]borderControl- Take into account the boundaries of the faces when searching for extrema.
[in]method- Extremum search algorithm.

◆ FacesMinMaxCurvature() [5/6]

void FacesMinMaxCurvature ( const c3d::ConstFacesVector &  faces,
double &  maxNegCurv,
const MbFace *&  maxNegFace,
MbCartPoint maxNegLoc,
double &  maxPosCurv,
const MbFace *&  maxPosFace,
MbCartPoint maxPosLoc,
bool  borderControl = false,
MbeExtremsSearchingMethod  method = esm_LineSegregation 
)

Find the points on the shell at which the major normal curvatures take the largest values in the module.

Looks for points on the shell at which the major normal curvatures take the largest positive and smallest negative values.

Parameters
[in]faces- Faces of the shell.
[out]maxNegCurv- The largest in modulus value negative curvature (0, if there is no such).
[out]maxNegFace- The face at which the curvature takes the largest in modulus negative value.
[out]maxNegLoc- The point at which the curvature takes the largest in modulus negative value.
[out]maxPosCurv- The greatest positive value of curvature (0, if there is no such).
[out]maxPosFace- The face at which the curvature takes the most positive value.
[out]maxPosLoc- The point at which the curvature takes the most positive value.
[in]borderControl- Take into account the boundaries of the faces when searching for extrema.
[in]method- Extremum search algorithm.

◆ FacesMinMaxCurvature() [6/6]

void FacesMinMaxCurvature ( const c3d::ConstFacesSPtrVector &  faces,
double &  maxNegCurv,
const MbFace *&  maxNegFace,
MbCartPoint maxNegLoc,
double &  maxPosCurv,
const MbFace *&  maxPosFace,
MbCartPoint maxPosLoc,
bool  borderControl = false,
MbeExtremsSearchingMethod  method = esm_LineSegregation 
)

Find the points on the shell at which the major normal curvatures take the largest values in the module.

Looks for points on the shell at which the major normal curvatures take the largest positive and smallest negative values.

Parameters
[in]faces- Faces of the shell.
[out]maxNegCurv- The largest in modulus value negative curvature (0, if there is no such).
[out]maxNegFace- The face at which the curvature takes the largest in modulus negative value.
[out]maxNegLoc- The point at which the curvature takes the largest in modulus negative value.
[out]maxPosCurv- The greatest positive value of curvature (0, if there is no such).
[out]maxPosFace- The face at which the curvature takes the most positive value.
[out]maxPosLoc- The point at which the curvature takes the most positive value.
[in]borderControl- Take into account the boundaries of the faces when searching for extrema.
[in]method- Extremum search algorithm.

◆ CurveOrientedCurvature()

double CurveOrientedCurvature ( const MbCurve3D curve,
double &  param,
const MbVector3D planeNorm = nullptr 
)

Oriented curvature for a plane curve.

For a flat curve, the function returns the curvature at a point oriented relative to the normal to the plane, in which she lies. For a non-flat curve, the function simply returns the curvature at the point.

Parameters
[in]curve- Test curve.
[in]param- Parameter on the curve.
[in]planeNorm- The normal of the plane in which the curve lies. If the normal is not passed to the function, the algorithm itself checks if the curve is in the plane and calculates normal if the test is being performed.
Returns
The value of the oriented curvature at the point is returned.

◆ CurveMinMaxCurvature()

void CurveMinMaxCurvature ( const MbCurve3D curve,
double &  maxCurv,
double &  maxParam,
double &  minCurv,
double &  minParam,
c3d::DoubleVector bendPoints = nullptr,
c3d::DoubleVector maxPoints = nullptr,
c3d::DoubleVector minPoints = nullptr,
c3d::DoublePairsVector rapPoints = nullptr 
)

Find the points on the curve at which the curvature takes the largest and smallest values.

For a flat curve, the largest and smallest value may go into the negative region. For a non-planar curve, the largest and smallest values are always non-negative.

Parameters
[in]curve- Test curve.
[out]maxCurv- The greatest value of curvature.
[out]maxParam- The point at which the curvature takes the largest value.
[out]minCurv- The smallest value of curvature.
[out]minParam- The point at which the curvature takes the smallest value.
[out]bendPoints- Array of parameters of bend points.
[out]maxPoints- An array of parameters in which the local maximum curvature modulo is reached.
[out]minPoints- An array of parameters in which the local minimum curvature modulo is reached.
[out]rapPoints- Array of parameters in which curvature breaks. For each break two points are inserted, before and after.

◆ SurfaceMaxCurvatureDirection()

void SurfaceMaxCurvatureDirection ( const MbSurface surf,
const MbCartPoint pnt,
MbVector dir 
)

The direction of the maximum normal surface curvature.

The direction on the surface is calculated in which the normal curvature of the surface takes a maximum absolute value.

Parameters
[in]surf- Surface.
[in]pnt- Point of calculation.
[out]dir- The calculated direction.

◆ SurfacesNormalsMinMaxAngles()

bool SurfacesNormalsMinMaxAngles ( const MbSurfacesJointAnalysisParams params,
MbSurfacesJointAnalysisResults results 
)

The function of finding the minimum and maximum angles between surfaces normals of the intersection curve.

The function of finding the minimum and maximum angles between surfaces normals of the intersection curve.

Parameters
[in]params- Input parameters.
[out]results- Output parameters.

◆ SurfacesJointMinMaxValues()

bool SurfacesJointMinMaxValues ( const MbSurfacesJointAnalysisParams params,
MbSurfacesJointAnalysisResults results 
)

The function of finding the minimum and maximum values of surface joint parameter.

The function of finding the minimum and maximum values of surface joint parameter.

Parameters
[in]params- Input parameters.
[out]results- Output parameters.

◆ IsMultiShell()

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

Check if the shell can be subdivided into separate parts.

Check if the closed shell can be subdivided into separate parts with inclusion analysis.

Parameters
[in]shell- The initial shell.
[in]checkNesting- Do nesting analysis of shells.
Returns
Returns 'true' if the shell consists of several parts.

◆ DetachShells() [1/3]

size_t DetachShells ( MbFaceShell shell,
RPArray< MbFaceShell > &  parts,
bool  sort,
c3d::IndicesVector partIndices = nullptr 
)

Separate parts from a shell.

Separate parts from a shell without inclusion analysis. If 'sort' == 'true', the greatest part of the shell will remain in the initial shell, separated parts will be collected in array 'parts' sorted by bounding box size in descending order.

Parameters
[in]shell- The initial shell.
[out]parts- The shells separated from 'shell'.
[in]sort- If 'sort' == true, the parts separated from the initial shell will be sorted by bounding box size in descending order.
[out]partIndices- Positions' indices of shell parts when dividing into parts before sorting by size (number of indices is number of parts + 1). The last index is the index of the "shell".
Returns
Returns number of shells in 'parts'.

◆ DetachShells() [2/3]

size_t DetachShells ( MbFaceShell shell,
c3d::ShellsVector &  parts,
bool  sort,
c3d::IndicesVector partIndices = nullptr 
)

Separate parts from a shell.

Separate parts from a shell without inclusion analysis. If 'sort' == 'true', the greatest part of the shell will remain in the initial shell, separated parts will be collected in array 'parts' sorted by bounding box size in descending order.

Parameters
[in]shell- The initial shell.
[out]parts- The shells separated from 'shell'.
[in]sort- If 'sort' == true, the parts separated from the initial shell will be sorted by bounding box size in descending order.
[out]partIndices- Positions' indices of shell parts when dividing into parts before sorting by size (number of indices is number of parts + 1). The last index is the index of the "shell".
Returns
Returns number of shells in 'parts'.

◆ DetachShells() [3/3]

size_t DetachShells ( MbFaceShell shell,
c3d::ShellsSPtrVector &  parts,
bool  sort,
c3d::IndicesVector partIndices = nullptr 
)

Separate parts from a shell.

Separate parts from a shell without inclusion analysis. If 'sort' == 'true', the greatest part of the shell will remain in the initial shell, separated parts will be collected in array 'parts' sorted by bounding box size in descending order.

Parameters
[in]shell- The initial shell.
[out]parts- The shells separated from 'shell'.
[in]sort- If 'sort' == true, the parts separated from the initial shell will be sorted by bounding box size in descending order.
[out]partIndices- Positions' indices of shell parts when dividing into parts before sorting by size (number of indices is number of parts + 1). The last index is the index of the "shell".
Returns
Returns number of shells in 'parts'.

◆ CreateShells()

template<class ShellsVector >
size_t CreateShells ( const MbFaceShell shell,
ShellsVector &  parts,
bool  sort = true 
)

Separate parts from a shell.

Separate parts from a shell without inclusion analysis. The initial shell always remains unchangeable. If the initial shell is decomposed, all the parts are put into array 'parts'.

Parameters
[in]shell- The initial shell.
[out]parts- The shells separated from 'shell'.
Returns
Returns number of shells in 'parts'.

◆ UnifyOwnComplanarFaces()

bool UnifyOwnComplanarFaces ( MbFaceShell shell,
const MbSNameMaker nameMaker,
bool  checkBaseSurfaces 
)

Unite complanar faces.

Unite complanar faces of a shell and validate the shell.

Parameters
[in]shell- A shell to be modified.
[in]nameMaker- An object defining names generation in the operation.
[in]checkBaseSurfaces- Find and eliminate common underlying surfaces of faces
Returns
Returns 'true' if the shell has been successfully modified.

◆ FacePropagate()

void FacePropagate ( const MbeFacePropagation  fp,
RPArray< MbFace > &  face_set,
const MbVector3D dir 
)

Capture the faces in one of proposed methods.

Capture the faces in one of methods of propagation in connected shell.

Parameters
[in]fp- A method of capturing the faces.
[in,out]face_set- A set of faces.
[in]dir- A direction of inclination.
Warning
An auxillary function of operation DraftSolid.

◆ MouldCavitySolids()

void MouldCavitySolids ( RPArray< MbSolid > &  solids,
MbCartPoint3D fixedPoint,
double  deltaX,
double  deltaY,
double  deltaZ 
)

Scale cavities of a mold.

Scale cavities of a mold relative to a fixed point.

Parameters
[in,out]solids- The solids to be modified.
[in]fixedPoint- The fixed point of scaling.
[in]deltaX- Relative increment of size in X-direction.
[in]deltaY- Relative increment of size in Y-direction.
[in]deltaZ- Relative increment of size in Z-direction.

◆ IsSolidsIntersection() [1/2]

bool IsSolidsIntersection ( const MbSolid solid1,
const MbSolid solid2,
const MbSNameMaker snMaker 
)

Check intersection of solids.

Check if solids intersect each other without definition of intersection type
(check until the first intersection is detected).

Parameters
[in]solid1- The first solid.
[in]solid2- The second solid.
Returns
Returns 'true' if at least one intersection is detected.

◆ IsSolidsIntersection() [2/2]

bool IsSolidsIntersection ( const MbSolid solid1,
const MbMatrix3D matr1,
const MbSolid solid2,
const MbMatrix3D matr2,
bool  checkTangent,
bool  getIntersectionSolids,
bool  checkTouchPoints,
RPArray< MbShellsIntersectionData > &  intData 
)

Check intersection of solids in an assembly.

Check intersection of solids in an assembly.

Parameters
[in]solid1- The first solid in local coordinate system (LCS).
[in]matr1- Matrix of transformation to the global coordinate system (GCS).
[in]solid2- The second solid in LCS.
[in]matr2- Matrix of transformation to GCS.
[in]checkTangent- Consider tangencies as intersections.
[in]getIntersectionSolids- Get non-tangent intersections in the form of bodies.
[in]checkTouchPoints- Find touch points.
[out]intData- Information about two solids intersection. If one of the intersecting bodies is not closed, then the resulting bodies may not be valid for operations.
Returns
Returns 'true' if at least one intersection is detected.

◆ MinimumSolidsDistance()

bool MinimumSolidsDistance ( const MbSolid solid1,
const MbMatrix3D matr1,
bool  isMultipleUseSolid1,
const MbSolid solid2,
const MbMatrix3D matr2,
bool  isMultipleUseSolid2,
double  lowerLimitDistance,
bool  tillFirstLowerLimit,
std::vector< MbShellsDistanceData > &  shellsDistanceData 
)

Determine the minimum distance between solids in an assembly.

Determine the minimum distance between solids in an assembly. In case of intersection or tangent of the shells returns to zero distance.
With multiple use of the first body should be set isMultipleUseSolid1 = true, else false. Similarly for the second body.

Parameters
[in]solid1- The first solid in local coordinate system (LCS).
[in]matr1- Matrix of transformation to the global coordinate system (GCS).
[in]isMultipleUseSolid1- Multiple use of the first body.
[in]solid2- The second solid in LCS.
[in]matr2- Matrix of transformation to GCS.
[in]isMultipleUseSolid2- Multiple use of the second body.
[in]lowerLimitDistance- Minimum allowed distance.
[in]tillFirstLowerLimit- Search until the first found that satisfies the minimum acceptable distance.
[out]shellsDistanceData- Information about the distance between solids.
Returns
Returns 'true' if at least one distance is obtained.

◆ MultipleSolidsClassification()

void MultipleSolidsClassification ( const RPArray< MbSolid > &  solids,
const RPArray< MbSolid > &  relativeSolids,
std::vector< MbUnitInfo > &  info 
)

Classify a set of solids relative to another set of solids.

Classify a set of solids relative to another set of solids. The solids are in the same coordinate system.
Each classified solids as result has 3 states: 1) It is outside relative set of bodies;
2) Contained in only one solid, then there is information about the index of the relative body;
3) In all other cases, solid intersects with relative set of solids.

Parameters
[in]solids- The classified set of solids.
[in]relativeSolids- A set of solids relative to which classification is performed.
[out]info- Information about finding solids relative to another set of solids.

◆ GetDistanceToSurface()

void GetDistanceToSurface ( const MbPlacement3D pl,
const MbCurve curve,
const MbSurface surf,
double &  lPlus,
double &  lMinus 
)

Find the distances from a contour on a plane to a surface.

Find the distances from a contour on a plane to a surface.
A forward direction is a direction of Z-axis of two-dimensional curve coordinate system.
The distance in a forward direction is found if the value is non-negative.
The distance in a backward direction is found if the value is non-positive.

Parameters
[in]pl- A coordinate system of two-dimensional curve.
[in]curve- A two-dimensional curve.
[in]surf- A surface to measure the distances up to.
[out]lPlus- The distance in a forward direction.
[out]lMinus- The distance in a backward direction.

◆ GetDistanceToCube() [1/3]

void GetDistanceToCube ( const MbSurface surface,
const MbVector3D direction,
const MbCurve curve,
const MbCube cube,
double &  lPlus,
double &  lMinus,
MbResultType resType 
)

Find the distances from a contour on a surface to the bounding box of a shell.

Find the distances from a contour on a surface to the bounding box of a shell.
The distance in a forward direction is found if the value is nonnegative.
The distance in a backward direction is found if the value is non-positive.

Parameters
[in]surface- A surface that contains the two-dimensional curve.
[in]direction- A direction of the distance calculation (an extrusion direction).
[in]curve- A two-dimensional curve on surface 'surface'.
[in]cube- The bounding box of the shell.
[out]lPlus- The distance in a forward direction.
[out]lMinus- The distance in a backward direction.
[out]resType- Operation result code.

◆ GetDistanceToCube() [2/3]

void GetDistanceToCube ( const MbSurface surface,
const MbVector3D direction,
const RPArray< MbCurve > &  curves,
const MbCube cube,
double &  lPlus,
double &  lMinus,
MbResultType resType 
)

Find the distances from curves on a surface to the bounding box of a shell.

Find the distances from curves on a surface to the bounding box of a shell.
The distance in a forward direction is found if the value is nonnegative.
The distance in a backward direction is found if the value is nonpositive.

Parameters
[in]surface- A surface that contains two-dimensional curves.
[in]direction- A direction of the distance calculation (an extrusion direction).
[in]curves- A set of two-dimensional curves on the surface 'surface'.
[in]cube- The bounding box of the shell.
[out]lPlus- The distance in a forward direction.
[out]lMinus- The distance in a backward direction.
[out]resType- Operation result code.

◆ GetDistanceToCube() [3/3]

bool GetDistanceToCube ( const MbPlacement3D pl,
const MbFaceShell shell,
double &  dPlus,
double &  dMinus,
bool  findMax = true 
)

Find the distances from a plane to the bounding box of a shell.

Find the distances from a plane to the bounding box of a shell.
The distance in a forward direction is found if the value is non-negative.
The distance in a backward direction is found if the value is non-positive.
Calculation of the distance relative to the local coordinate system is used.
If a plane coordinate system is out of the bounding box,
then if the flag 'findMax' is set to 'true', the maximal distance to bounding box is calculated.

Parameters
[in]pl- The plane coordinate system.
[in]shell- A target shell.
[out]dPlus- The distance in a forward direction.
[out]dMinus- The distance in a backward direction.
[in]findMax- The maximal distance to bounding box is to be calculated.
Returns
Returns 'true' if at least one of the distances has been found.

◆ GetRangeToCubeOrSurface()

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 
)

Find the distances/angles from a contour to a bounding box or to a surface.

Find the distances/angles from a contour to a bounding box or to a surface.
The inclination in two directions is to be considered.

Parameters
[in]curve- A curve.
[in]direction- An extrusion direction.
[in]axis- Rotation axis.
[in]rotation- Rotation (true) or extrusion (false)
[in]operationDirection- Forward (true) or backward (false)
[in]toCube- Up to a cube if the pointer is not null.
[in]toSurface- Up to a surface if the pointer is not null.
[in,out]paramsThe following parameters should be defined:
params.side1.rake - The inclination in direction 'direction' (for a planar generatrix).
params.side2.rake - The inclination in direction opposite to 'direction' (for a planar generatrix).
params.thikness1 - Wall thickness in forward direction. (in the positive direction of the normal of an object (a face, a surface, the plane of a curve)).
params.thikness2 - The wall thickness in the backward direction.
The output parameters:
params.side1.scalarValue - The extrusion distance in the direction 'direction' (if 'operationDirection' == true), else in the opposite direction.
params.side2.scalarValue - The extrusion distance in the direction opposite to 'direction' (if 'operationDirection' == true), else in the forward direction.
[out]resType- Operation result code.

◆ GetNearestSolid() [1/3]

bool GetNearestSolid ( const MbNearestSolidParams params,
MbNearestSolidResult result 
)

Find the nearest solids while extruding with option 'up to the nearest object'.

Find the nearest solids while extruding with option 'up to the nearest object'.
returns numbers of the nearest solids in the forward and the backward direction.

Parameters
[in]params- Operation parameters.
[out]result- The result of the operation with the numbers of the nearest solids.
Returns
Returns 'true' if a solid is found in at least one of directions.

◆ GetNearestSolid() [2/3]

bool GetNearestSolid ( const MbPlacement3D pl,
RPArray< MbContour > &  c,
MbSweptLayout::Direction  direction,
RPArray< MbSolid > &  solids,
size_t &  nPlus,
size_t &  nMinus 
)

Find the nearest solids while extruding with option 'up to the nearest object'.

Find the nearest solids while extruding with option 'up to the nearest object'.
Returns the numbers (nPlus and nMinus) of nearest solids on the positive and the negative sides of the sketch.

Parameters
[in]pl- A local coordinate system.
[in]c- An array of two-dimensional contours.
[in]direction- An extrusion direction.
[in]solids- A target set of solids.
[out]nPlus- The number of the nearest solid in the positive direction.
[out]nMinus- The number of the nearest solid in the negative direction.
Returns
Returns 'true' if a solid is found in at least one of directions.

◆ GetNearestSolid() [3/3]

bool GetNearestSolid ( RPArray< MbCurve3D > &  curves,
const MbVector3D direction,
MbSweptLayout::Direction  operationDirection,
RPArray< MbSolid > &  solids,
size_t &  nPlus,
size_t &  nMinus 
)

Find the nearest solids while extruding with option 'up to the nearest object'.

Find the nearest solids while extruding with option 'up to the nearest object'.
returns numbers (nPlus and nMinus) of the nearest solids in the forward and the backward direction.

Parameters
[in]curves- A set of curves.
[in]direction- An extrusion direction.
[in]operationDirection- Parameters of extrusion 'up to the nearest object'.
[in]solids- A target set of solids.
[out]nPlus- The number of the nearest solid in the positive direction.
[out]nMinus- The number of the nearest solid in the negative direction.
Returns
Returns 'true' if a solid is found in at least one of directions.

◆ CheckNurbsShell()

MbResultType CheckNurbsShell ( const NurbsSurfaceValues params,
const MbSolid nsSolid,
IProgressIndicator progBar 
)

Check a shell or a solid that consists of NURBS surfaces.

Check the correctness of a shell or a solid that consists of NURBS surfaces.

Parameters
[in]params- Initial parameters of the operation.
[in]nsSolid- A solid - the result of the operation.
[in]progBar- A progress indicator of the operation.
Returns
Returns rt_Success if the solid has successfully passed the validation.
Warning
A checking function of the operation NurbsSurfacesShell.

◆ AddTruncatingSketch()

bool AddTruncatingSketch ( const MbPlacement3D sketchPlace,
RPArray< MbCurve > &  sketchCurves,
RPArray< MbSpaceItem > &  items 
)

Add a sketch to the array of truncating objects.

Add a sketch to the array of truncating objects by creation of spatial curves.

Parameters
[in]sketchPlace- A local coordinate system of two-dimensional sketch.
[in]sketchCurves- Two-dimensional curves of the sketch.
[out]items- The output array of spatial objects.
Returns
- Returns 'true' if elements are added into output array.
Warning
Auxiliary function of the operation TruncateShell.

◆ AddTruncatingCurve()

void AddTruncatingCurve ( const MbCurve3D curve,
RPArray< MbSpaceItem > &  items 
)

Add a curve to the array of truncating objects.

Add a curve to the array of truncating objects (with decomposition of the curve if necessary).

Parameters
[in]curve- A space curve.
[out]items- The output array of spatial objects.
Warning
Auxillary function of the operation TruncateShell.

◆ CheckShellingFaces()

void CheckShellingFaces ( const SweptValues params,
RPArray< MbFace > &  faces 
)

Check the correctness of shelling faces for creation of a thin-walled solid.

Check the correctness of shelling faces set for creation of a thin-walled solid.
Removes unsuitable for the operation faces from the array (Delete faces smoothly connected to unselected faces).

Parameters
[in]params- Parameters of a thin wall.
[in,out]faces- An array of shelling faces of the solid.
Warning
An auxiliary function of thin-walled solid construction operation.

◆ ProjectVectorOn()

bool ProjectVectorOn ( const MbVector3D v3d,
const MbSurface surface,
const MbCartPoint p2d,
MbVector v2d 
)

Calculate the components of projection of a vector defined at a point on the surface.

Calculate x and y components of projection of a space vector defined at a point on a surface.

Parameters
[in]v3d- A space vector.
[in]surface- A surface.
[in]p2d- A parametric point on the surface.
[out]v2d- The projection of the space vector on the surface.
Returns
- Returns 'true' if the vector projection has been successfully calculated.

◆ GetExtendedSurfaceCopy()

MbSurface* GetExtendedSurfaceCopy ( MbCube gabarit,
const MbSurface surf,
const MbShellCuttingParams::ProlongState prolongState,
VERSION  version 
)

Extend a surface for cutting a solid.

Extend a surface to a given bounding box for cutting a solid.

Parameters
[in,out]gabarit- A desirable bounding box of the extended surface.
[in]surf- The initial surface.
[in]prolongState- State of prolongation types of cutter surfaces.
[in]version- The version of construction.
Returns
- Returns the extended surface if it has been successfully created.

◆ CreateFaces() [1/2]

bool CreateFaces ( const MbPlacement3D place,
const MbContour contour,
const MbVector3D der,
bool  sense,
const MbSNameMaker n,
RPArray< MbFace > &  faces,
bool  useAddCount = false 
)

Create a set of faces with topology of a prism.

Create a set of faces with topology of a prism.

Parameters
[in]place- A local coordinate system (LCS).
[in]contour- A two-dimensional curve in LCS.
[in]der- An extrusion direction.
[in]sense- An orientation of the output array of faces as a closed shell.
[in]n- An object for naming the new objects.
[in,out]faces- The array of created faces.
[in]useAddCount- The number of input faces initFaces is to be used for naming the new faces.
Returns
Returns true if new faces have been successfully created.
Deprecated:
The function is deprecated, instead use CreateFaces with #FacesSPtrVector.

◆ CreateFaces() [2/2]

bool CreateFaces ( const MbPlacement3D place,
const MbContour contour,
const MbVector3D der,
bool  sense,
const MbSNameMaker n,
c3d::FacesSPtrVector &  faces,
bool  useAddCount = false 
)

Create a set of faces with topology of a prism.

Create a set of faces with topology of a prism.

Parameters
[in]place- A local coordinate system (LCS).
[in]contour- A two-dimensional curve in LCS.
[in]der- An extrusion direction.
[in]sense- An orientation of the output array of faces as a closed shell.
[in]n- An object for naming the new objects.
[in,out]faces- The array of created faces.
[in]useAddCount- The number of input faces initFaces is to be used for naming the new faces.
Returns
Returns true if new faces have been successfully created.

◆ GetAutoReference()

void GetAutoReference ( MbFaceShell shell,
const MbPlacement3D place,
const MbContour contour,
ptrdiff_t  index,
RibValues::ExtrudeSide side,
MbCartPoint3D origin,
MbVector3D dir3D 
)

Estimate parameters of extrusion for a rib.

Estimate parameters of extrusion for creating a rib.

Parameters
[in]shell- A target shell.
[in]place- A local coordinate system of the contour.
[in]contour- A two-dimensional contour.
[in]index- A number of the contour segment.
[out]side- The side to place the rib on.
[out]origin- A point.
[out]dir3D- A vector.
Warning
An auxillary function of the operation RibSolid.

◆ GetProjCurveOnSurface()

MbCurve* GetProjCurveOnSurface ( const MbSurfaceIntersectionCurve intersectCurve,
bool  first 
)

Create a curve in the parameter space of a surface.

Create a curve in the parameter space of a surface. The projection curve can be created if necessary.
If it is not required to create the projection curve, returns a copy of two-dimensional curve in the parameter space of the surface.
The curve is to be deleted after use.

Parameters
[in]intersectCurve- The intersection curve
[in]first- True - The first surface, false - the second surface.
Returns
Returns the curve if it has been successfully created.

◆ IsSameSpineDirection()

bool IsSameSpineDirection ( const MbCurve3D curve,
VERSION  srcVersion,
VERSION  dstVersion 
)

Check the invariance of the vector of spine direction in different versions.

Check if the spine direction can be preserved between versions without any change of the shape.

Parameters
[in]curve- The spine curve.
[in]srcVersion- The current version.
[in]dstVersion- The target version.

◆ IsSpaceNear()

bool IsSpaceNear ( const MbCurve3D curv,
const MbSurface surf,
bool  surfExt,
double  mEps,
double  devSag = 5.0 *Math::deviateSag 
)

Determine whether a curve is close to a surface.

Determine whether a curve is close to a surface within the given tolerance.
The check uses sample points of curves obtained by sampling with maximal turning angle.

Parameters
[in]curv- A curve.
[in]surf- A surface.
[in]surfExt- Perform the check for the extended surface.
[in]mEps- The metric proximity tolerance.
[in]devSag- The maximal turning angle for sampling the curve.
Returns
Returns 'true' if the curve is close to the surface.

◆ SurfaceFace()

bool SurfaceFace ( const MbSurface surface,
SPtr< MbFace > &  face 
)

Create the face on the base of arbitrary surface.

Create the face on the base of arbitrary surface without selfintersections.

Parameters
[in]surface- A surface.
[out]face- The face.
Returns
Returns 'true' if the face was created.

◆ SpaceGrid()

MbGrid* SpaceGrid ( const MbPlacement3D place,
const MbPlanarGrid planarGrid,
bool  exact = false 
)

Creating a three-dimensional grid on a two-dimensional grid.

Creating a three-dimensional grid on a two-dimensional grid.

Parameters
[in]place- Local coordinate system in three dimensional space.
[out]planarGrid- Triangulation of a two-dimensional region.
Returns
Returns 'true' if the face was created.

◆ ReplaceByInstance()

MbItem* ReplaceByInstance ( MbItem item,
double  ratioThreashhold = -1.0,
bool  makeCopy = false 
)

Replace an item by an instance if the length from it's bounding box to the world origin is greater than it's diagonal by specified factor.

Обрабатываются только объекты, не являющиеся вставками. Нулевое или отрицательное значение параметра ratioThreashhold запрещает преобразование. The item or it's replica is moved bey the vector from the origin of the world to the center of the item's bounding box, then put in the instance, providing the displacement by the reversed vector. Function processes objects of all types except for instances. Null or negative value of the ratioThreashhold parameter blocks the transformation.

Parameters
[out]item- Processable item.
[in]ratioThreashhold- The replacement threshold value of the ratio of the bounding box's center to the origin of the world to it's diagonal length.
[in]makeCopy- Is the copy of the object must be transformed.
Returns
Returns instance of object.

◆ FloodFillResult()

MbResultType FloodFillResult ( MbSolid vessel,
MbeCopyMode  sameShell,
const MbSweptData bungData,
const MbCartPoint3D origin,
const MbSNameMaker names,
MbSolid *&  result 
)

The construction of a "flood fill" volume located between the inner surface of the vessel and the bounding surface or body.

The body, an additional surface or an additional body and the coordinates of the source are fed to the input. On the output we get the volume, constructed from the source and bounded from all sides by the shell of the body and by additional objects.

Parameters
[in]vessel- The vessel.
[in]sameShell- Whether to copy the vessel.
[in]bungData- The surface of the level or body of the bung.
[in]origin- The point inside the vessel.
[in]names- An object defining names generation in the operation.
[out]result- The resultant solid.
Returns
Returns operation result code.

◆ FindTouchedFaces()

bool FindTouchedFaces ( const MbSolid solid1,
const MbSolid solid2,
double  precision,
c3d::IndicesPairsVector facesNumbers 
)

To find contacted faces of bodies.

To find contacted faces of bodies with oppositely directed normals which have a finite overlap area.

Parameters
[in]solid1- The first solid.
[in]solid2- The second solid.
[in]precision- The precision of operation.
[out]facesNumbers- The couples of number of contacted faces with oppositely directed normals.
Returns
Returns true, if contacted faces were found.

◆ SplitTouchedFaces()

bool SplitTouchedFaces ( MbSolid solid1,
MbSolid solid2,
double  precision,
c3d::IndicesPairsVector facesNumbers 
)

To find contacted faces of bodies.

To find contacted faces of bodies and build a finite overlap contacted area as faces.

Parameters
[in,out]solid1- The first solid.
[in,out]solid2- The second solid.
[in]precision- The precision of operation.
[in]facesNumbers- The container with pairs of contact face numbers that need to have common contact spots (it can be empty).
Returns
Returns true, if contacted faces were found.

◆ GetTransformedSolid()

c3d::SolidSPtr GetTransformedSolid ( c3d::SolidSPtr solid,
MbeCopyMode copyMode,
const MbMatrix3D matr,
SimpleName  transformedMainName = ct_TransformedSolid 
)

Get transformed copy of a solid.

Get transformed copy of a solid if a matrix is not identity matrix or original of the solid if the matrix is identity matrix.

Parameters
[in]solid- A solid.
[in,out]copyMode- An initial copy mode.
[in]matr- Transformation matrix.
[in]transformedMainName- Main name of transformation operation.
Returns
Returns copy or original of the solid.

◆ GetTransformedItem()

template<class Item >
SPtr<Item> GetTransformedItem ( SPtr< Item > &  item,
const MbMatrix3D matr,
MbRegDuplicate iDupReg = nullptr,
MbRegTransform iTransReg = nullptr 
)

Get transformed copy of object.

Get transformed copy of an object if a matrix is not identity matrix or original of the solid if the matrix is identity matrix.

Parameters
[in]item- An object.
[in]matr- Transformation matrix.
Returns
Returns copy or original of the object.

◆ CalculatePolygon()

void CalculatePolygon ( const MbCurve curve,
const MbPlacement3D plane,
double  sag,
MbPolygon3D polygon 
)

Calculation of polygon of curve.

Calculation of three-dimensional polygon of two-dimensional curve located in the XOY-plane of a local coordinate system.

Parameters
[in]curve- A two-dimensional curve.
[in]plane- Local coordinate system.
[in]sag- Maximum allowable deviation of polygon from the original by sag or by angle between neighboring elements.
[out]polygon- Calculated polygon.

◆ SmoothPhantom() [1/3]

MbResultType SmoothPhantom ( const MbSolid solid,
RPArray< MbCurveEdge > &  edges,
const SmoothValues params,
RPArray< MbSurface > &  result 
)

Create phantom surfaces of fillet/chamfer.

Create phantom surfaces of fillet/chamfer and store them in the container 'surfaces'.
After finish working with the surfaces they should be deleted.

Deprecated:
The method is deprecated. Use instead SmoothPhantom with the parameters MbSmoothPhantomParams.
Parameters
[in]solid- The initial solid.
[in]edges- An array of edges for fillet/chamfer.
[in]params- Parameters of the fillet/chamfer operation.
[out]result- The fillet/chamfer surfaces.
Returns
Returns the creation result code.

◆ SmoothPhantom() [2/3]

MbResultType SmoothPhantom ( const MbSolid solid,
SArray< MbEdgeFunction > &  edges,
const SmoothValues params,
RPArray< MbSurface > &  result 
)

Create phantom surfaces of fillet/chamfer.

Create phantom surfaces of fillet/chamfer and store them in the container 'surfaces'.
After finish working with the surfaces they should be deleted.

Deprecated:
The method is deprecated. Use instead SmoothPhantom with the parameters MbSmoothPhantomParams.
Parameters
[in]solid- The initial solid.
[in]edges- An array of edges and radius laws for fillet/chamfer.
[in]params- Parameters of the fillet/chamfer operation.
[out]result- The fillet/chamfer surfaces.
Returns
Returns the creation result code.

◆ SmoothPhantom() [3/3]

MbResultType SmoothPhantom ( const MbSmoothPhantomParams params,
MbSmoothPhantomResult result 
)

Create phantom surfaces of fillet/chamfer.

Create phantom surfaces of fillet/chamfer and store them in the container 'surfaces'.
After finish working with the surfaces they should be deleted.

Parameters
[in]params- Parameters of creating phantom surfaces of fillet/chamfer.
[out]result- The fillet/chamfer surfaces.
Returns
Returns the creation result code.

◆ SmoothSequence() [1/3]

MbResultType SmoothSequence ( const MbSolid solid,
RPArray< MbCurveEdge > &  edges,
const SmoothValues params,
bool  createSurfaces,
RPArray< MbEdgeSequence > &  sequences,
RPArray< MbSurface > &  result 
)
Deprecated:
The method is deprecated. Use instead SmoothSequence with the parameters MbSmoothSequenceParams.
Parameters
[in]solid- The initial solid.
[in]edges- An array of edges for fillet/chamfer.
[in]params- Parameters of the fillet/chamfer operation.
[in]createSurfaces- Create a fillet/chamfer surfaces for phantom.
[out]sequences- Sequence of smooth mating edges.
[out]result- The fillet/chamfer surfaces.
Returns

◆ SmoothSequence() [2/3]

MbResultType SmoothSequence ( const MbSolid solid,
SArray< MbEdgeFunction > &  edges,
const SmoothValues params,
bool  createSurfaces,
RPArray< MbEdgeSequence > &  sequences,
RPArray< MbSurface > &  result 
)
Deprecated:
The method is deprecated. Use instead SmoothSequence with the parameters MbSmoothSequenceParams.
Parameters
[in]solid- The initial solid.
[in]edges- An array of edges and radius laws for fillet/chamfer.
[in]params- Parameters of the fillet/chamfer operation.
[in]createSurfaces- Create a fillet/chamfer surfaces for phantom.
[out]sequences- Sequence of smooth mating edges.
[out]result- The fillet/chamfer surfaces.
Returns

◆ SmoothSequence() [3/3]

MbResultType SmoothSequence ( const MbSmoothSequenceParams params,
MbSmoothSequenceResult result 
)

Create a sequence of smoothly connected edges.

Construct sequences of smoothly connected edges filleted at the same time, and fillet/chamfer surfaces.
On the work completion, the surfaces can be and should deleted.

Parameters
[in]params- Construction parameters.
[out]result- The operation result (constructed sequences of smoothly connected edges and fillet/chamfer surfaces).
Returns

◆ TruncatDirection()

bool TruncatDirection ( const MbCurveEdge truncatingEdge,
MbPlacement3D dirPlace 
)

Determine a phantom direction of truncation.

Determine a phantom direction of truncation given the truncated face of the initial solid.

Parameters
[in]truncatingEdge- An edge of truncated face of the initial solid.
[in]dirPlace- A coordinate system of truncation direction (Z-axis is a truncation direction).
Returns
Returns true if the direction has been successfully determined.

◆ SmoothPositionData() [1/3]

MbResultType SmoothPositionData ( const MbSolid solid,
RPArray< MbCurveEdge > &  edges,
const SmoothValues params,
RPArray< MbPositionData > &  result,
double  edgeParam = 0.5,
const MbCurveEdge dimensionEdge = nullptr 
)

Create support points of fillet/chamfer operation sizes.

Create support points of fillet/chamfer operation sizes and store them in container 'data'.
The first two points lie on the fillet/chamfer surface boundary.

Deprecated:
The method is deprecated. Use instead SmoothPositionData with the parameters MbSmoothPositionDataParams.
Parameters
[in]solid- The initial solid.
[in]edges- An array of edges for fillet/chamfer.
[in]params- Parameters of the fillet/chamfer operation.
[out]result- Support points of the fillet/chamfer operation sizes.
[in]edgeParam- The parameter of a point on the edge (0 <= edgeParam <= 1).
[in]dimensionEdge- The edge on which the support points are to be created.
Returns
Returns the creation result code.

◆ SmoothPositionData() [2/3]

MbResultType SmoothPositionData ( const MbSolid solid,
SArray< MbEdgeFunction > &  edges,
const SmoothValues params,
RPArray< MbPositionData > &  result,
double  edgeParam = 0.5,
const MbCurveEdge dimensionEdge = nullptr 
)

Create support points of fillet/chamfer operation sizes.

Create support points of fillet/chamfer operation sizes and store them in container 'data'.
The first two points lie on the fillet/chamfer surface boundary.

Deprecated:
The method is deprecated. Use instead SmoothPositionData with the parameters MbSmoothPositionDataParams.
Parameters
[in]solid- The initial solid.
[in]edges- The array of specified edges for fillet/chamfer and radius laws for fillet/chamfer.
[in]params- Parameters of the fillet/chamfer operation.
[out]result- Support points of the fillet/chamfer operation sizes.
[in]edgeParam- The parameter of a point on the edge (0 <= edgeParam <= 1).
[in]dimensionEdge- The edge on which the support points are to be created.
Returns
Returns the creation result code.

◆ SmoothPositionData() [3/3]

MbResultType SmoothPositionData ( const MbSmoothPositionDataParams params,
MbSmoothPositionDataResults result 
)

Create support points of fillet/chamfer operation sizes.

Create support points of fillet/chamfer operation sizes and store them in container 'data'.
The first two points lie on the fillet/chamfer surface boundary.

Parameters
[in]params- Parameters for creating support points of fillet/chamfer operation sizes.
[out]result- The output data of creating support points of fillet/chamfer operation sizes.
Returns
Returns the creation result code.

◆ CreateFunction() [1/2]

MbFunction* CreateFunction ( const MbCurve3D curve,
const MbPlacement3D place,
size_t  coordinate 
)

Create a function by one of three coordinates of curve.

A function creation for behavior of selected curve coordinate with curve parameter.

Deprecated:
The method is deprecated. Use instead CreateFunction with the parameters MbFunctionParameters.
Parameters
[in]curve- The curve.
[in]place- The local coordinate system that uses the curve.
[in]coordinate- The number (0,1,2) of the curve coordinate in the local coordinate system for constructing the function.
Returns
Returns the created function.

◆ CreateFunction() [2/2]

c3d::FunctionSPtr CreateFunction ( const MbCurve curve,
const MbFunctionParameters params 
)

Create a scalar function by Y-coordinate of curve.

A function creation for behavior of Y-curve coordinate with X-curve parameter.

Parameters
[in]curve- The curve.
[in]params- The parameters of creating a scalar function.
Returns
Returns the created function.

◆ SectionPhantom() [1/2]

MbResultType SectionPhantom ( const MbSectionData sectionData,
MbSectionPhantom sctionPhantom 
)

Calculation of the phantom data for the ends of the mutable section surface.

Calculating the section plane, guide points, sides of the enclosing triangle, and apex at the ends of the surface.

Parameters
[in]sectionData- The parameters of the mutable section surface.
[out]sctionPhantom- The data of the enclosing triangles at the ends of the mutable section surface.
Returns
Returns the creation result code.

◆ SectionPhantom() [2/2]

MbResultType SectionPhantom ( const MbSectionData sectionData,
MbPlacement3D begPlace,
MbCartPoint3D begGuideP1,
MbCartPoint3D begGuideP2,
MbVector3D begVector1,
MbVector3D begVector2,
MbCartPoint3D begApex,
MbPlacement3D endPlace,
MbCartPoint3D endGuideP1,
MbCartPoint3D endGuideP2,
MbVector3D endVector1,
MbVector3D endVector2,
MbCartPoint3D endApex 
)

Calculation of the phantom data for the ends of the mutable section surface.

Calculating the section plane, guide points, sides of the enclosing triangle, and apex at the ends of the surface.

Parameters
[in]sectionData- The parameters of the mutable section surface.
[out]begPlace- The XY plane of the local coordinate system is the plane at the beginning of the surface.
[out]begGuideP1- The point of the first guide at the beginning of the surface.
[out]begGuideP2- The point of the second guide at the beginning of the surface.
[out]begVector1- The direction vector from the first guide (the side of the enclosing triangle) at the beginning of the surface.
[out]begVector2- The direction vector from the second guide (the side of the enclosing triangle) at the beginning of the surface.
[out]begApex- The point of the apex curve at the beginning of the surface (maybe in infinity).
[out]endPlace- The XY plane of the local coordinate system is the plane at the end of the surface.
[out]endGuideP1- The point of the first guide at the end of the surface.
[out]endGuideP2- The point of the second guide at the end of the surface.
[out]endVector1- The direction vector from the first guide (the side of the enclosing triangle) at the end of the surface.
[out]endVector2- The direction vector from the second guide (the side of the enclosing triangle) at the end of the surface.
[out]endApex- The point of the apex curve at the end of the surface (maybe in infinity).
Returns
Returns the creation result code.

◆ CreateArray()

template<class Type >
SArray<Type>* CreateArray ( size_t  cnt,
MbResultType res 
)
inline

Create an array.

Create an array with memory allocation control.

Parameters
[in]cnt- Number of elements in the array.
[out]res- The operation result.
Returns
Returns an array of elements if it has been created, otherwise returns nullptr.

◆ ReserveArray()

template<class Type >
bool ReserveArray ( SArray< Type > &  arr,
size_t  n,
MbResultType res 
)
inline

Allocate memory in the array for n elements.

Allocate memory in the array for n elements with memory allocation control.

Parameters
[in,out]arr- An array.
[in]n- Number of elements for allocation.
[out]res- The operation result.
Returns
Returns true if the memory has been successfully allocated.

◆ AddItem()

template<class Type >
bool AddItem ( SArray< Type > &  arr,
const Type &  item,
MbResultType res 
)
inline

Add an element to the array.

Add an element to the array with memory allocation control.

Parameters
[in,out]arr- An array.
[in]item- The element to add.
[out]res- The operation result.
Returns
Returns true if the element has been successfully added.

◆ LineLineNearestParams() [1/2]

bool LineLineNearestParams ( const MbCartPoint3D origin1,
const MbVector3D direction1,
const MbCartPoint3D origin2,
const MbVector3D direction2,
double &  t1,
double &  t2 
)

Determine the parameters of the nearest points of lines.

Determine the parameters of the nearest points of lines which are defined by the given point and direction vector.

Parameters
[in]origin1,direction1- A point and direction of the first line.
[in]origin2,direction2- A point and direction of the second line.
[out]t1- Parameter on the first line.
[out]t2- Parameter on the second line.
Returns
Returns true, if lines are not parallel.

◆ LineLineNearestPoints()

double LineLineNearestPoints ( const MbLine3D line1,
const MbLine3D line2,
MbCartPoint3D p1,
MbCartPoint3D p2 
)

Determination of the distance between the nearest points p1 and p2 of lines line1 and line2.

Determination of the distance between the nearest points p1 and p2 of lines line1 and line2

◆ LineLineNearestParams() [2/2]

bool LineLineNearestParams ( const MbCartPoint origin1,
const MbVector direction1,
const MbCartPoint origin2,
const MbVector direction2,
double &  t1,
double &  t2 
)

Determine the parameters of the nearest points of lines.

Determine the parameters of the nearest points of lines which are defined by the given point and direction vector.

Parameters
[in]origin1,direction1- A point and direction of the first line.
[in]origin2,direction2- A point and direction of the second line.
[out]t1- Parameter on the first line.
[out]t2- Parameter on the second line.
Returns
Returns true, if lines are not parallel.

◆ AreaSign()

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

Compute the area of a curve projection onto a virtual coordinate plane.

Compute the area of a curve projection onto a virtual coordinate plane
to determine the generating curve orientation in the shell of extrusion and revolution.
Parameters 'direction' and 'axis' determine the extrusion direction and the rotation axis, and parameter 'rotation' determines the operation type:

  • extrusion, the area of projection onto the plane XOY is computed,
  • revolution, the area of "projection" to the "plane" ROZ is computed. For an open curve "enclosure by a segment" is considered.
    Parameters
    [in]curve- The curve.
    [in]axis- Rotation axis.
    [in]direction- An extrusion direction.
    [in]rotation- Revolution (true) or extrusion (false).
    Returns
    Returns the projection area.
    Warning
    An auxiliary function of operations ExtrusionSolid, RevolutionSolid, ExtrusionResult and RevolutionResult.

◆ GetLineSegmentNURBSSurface()

bool GetLineSegmentNURBSSurface ( const MbSurface surf,
RPArray< MbCurve3D > &  segments 
)

Create a characteristic polyline of a spline surface.

Create a characteristic polyline of a spline surface.
The function accepts the surfaces of types st_SplineSurface, st_HermitSurface, st_TriBezierSurface, st_SimplexSurface.

Parameters
[in]surf- The surface.
[out]segments- The characteristic polyline.
Returns
Returns true - if the characteristic polyline is obtained.

◆ GetFilletRadiusDelta() [1/2]

double GetFilletRadiusDelta ( const MbCurve3D filletCurve,
double  radius,
bool  sense,
double  len,
const MbCurve3D curve1,
double  t1,
const MbCurve3D curve2,
double  t2 
)

Determine the radius variation while translating the middle point of the fillet curve.

Determine the radius variation while translating the middle point of the fillet curve
from the centre on distance 'len' (signed).

Parameters
[in]filletCurve- The fillet curve.
[in]radius- The radius of fillet.
[in]sense- A direction of the middle point of the fillet curve translation.
[in]len- A value of translation of the fillet curve middle point.
[in]curve1- The first curve to fillet.
[in]t1- The parameter of fillet curve start point on the first curve.
[in]curve2- The second curve to fillet.
[in]t2- The parameter of fillet curve end point on the second curve.

◆ GetFilletRadiusDelta() [2/2]

double GetFilletRadiusDelta ( const MbCurve3D filletCurve,
double  radius,
bool  sense,
double  len 
)

Determine the radius variation while translating the middle point of the fillet curve.

Determine the radius variation while translating the middle point of the fillet curve
from the centre on distance 'len' (signed).

Parameters
[in]filletCurve- The fillet curve.
[in]radius- The radius of fillet.
[in]sense- A direction of the middle point of the fillet curve translation.
[in]len- A value of translation of the fillet curve middle point.

◆ RadiusDimension3D() [1/3]

void RadiusDimension3D ( const MbSurface surface,
const MbCartPoint surface_uv,
MbPlaneCurve *&  plane_curve 
)

Construct a circle or an arc for radial dimension of surface.

Construction is performed by the given parametric point on surface. A surface should have a circular parametric line u=const or v=const. The enumeration of surfaces which have a parametric line u=const or 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.

Parameters
[in]surface- The initial surface.
[in]surface_uv- Coordinates of the initial point on surface.
[out]plane_curve- The required circle or an arc.

◆ RadiusDimension3D() [2/3]

void RadiusDimension3D ( const MbSurface surface,
const MbCartPoint3D point,
MbPlaneCurve *&  plane_curve 
)

Construct a circle or an arc for radial dimension of surface.

Construction is performed by the given spatial point. A surface should have a circular parametric line u=const or v=const. The enumeration of surfaces which have a parametric line u=const or 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.

Parameters
[in]surface- The initial surface.
[in]point- Space coordinates of the initial point.
[out]plane_curve- The required circle or an arc.

◆ RadiusDimension3D() [3/3]

void RadiusDimension3D ( const MbSurface surface,
const MbPlacement3D place,
MbPlaneCurve *&  plane_curve 
)

Construct a circle or an arc for radial dimension of surface.

Construction is performed by the given placement. A surface should have a circular parametric line u=const or v=const. The enumeration of surfaces with a parametric line u=const or 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.

Parameters
[in]surface- The initial surface.
[in]place- The initial placement.
[out]plane_curve- The required circle or an arc.

◆ IsPossibleRadiusDimension3D()

bool IsPossibleRadiusDimension3D ( const MbSurface surface)

Whether a circle or an arc can be constructed for radial dimension of surface.

It can be constructed if the type of a base surface is st_CylinderSurface or st_ConeSurface, or st_SphereSurface, or st_TorusSurface.

Parameters
[in]surface- The initial surface.
Returns
true if it can be constructed.

◆ SurfAxesDistAngle()

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 
)

Distance between axes of surfaces.

Calculate distance between axes of revolution surfaces or distance between revolution surface and planar surface.

Parameters
[in]surface1,sameSense1- The first surface and its direction.
[in]surface2,sameSense2- The second surface and its direction.
[out]axis1,exist1- The axis of the first surface and the flag of its existence.
[out]axis2,exist2- The axis of the second surface and the flag of its existence.
[out]p1- The point on the first axis or surface.
[out]p2- The point on the second axis or surface.
[out]angle- The angle between axes or between an axis and a surface.
[out]distance- Minimal distance between axes.
[in]angle- The angle accuracy.
Returns
The variant of the obtained measurement or the variant of error.

◆ MinMaxSurfaceSurfaceGridDistances()

MbeProcessState MinMaxSurfaceSurfaceGridDistances ( const MbMinMaxGridDistancesParams params,
MbMinMaxGridDistancesResults< MbCartPoint, MbCartPoint > &  results 
)

Extreme distances between objects (curves or surfaces).

Extreme distances between objects along the grid on the first object, and measurements are taken in a given direction (if there is a vector) or along the normal to the first object.

Parameters
[in]params- Parameters of the operation of the grid search for minima and maxima.
[out]results- Results of the operation of the grid search for minima and maxima.
Returns
Returns the result of measurement (obtained, not obtained, or the process has been aborted).

◆ MinMaxCurveSurfaceGridDistances()

MbeProcessState MinMaxCurveSurfaceGridDistances ( const MbMinMaxGridDistancesParams params,
MbMinMaxGridDistancesResults< double, MbCartPoint > &  results 
)

Extreme distances between objects (curves and surfaces).

Extreme distances between objects along the grid on the curve, and measurements are taken in a given direction (if there is a vector) or along the normal to the surface.

Parameters
[in]params- Parameters of the operation of the grid search for minima and maxima.
[out]results- Results of the operation of the grid search for minima and maxima.
Returns
Returns the result of measurement (obtained, not obtained, or the process has been aborted).

◆ MinMaxCurveCurveGridDistances()

MbeProcessState MinMaxCurveCurveGridDistances ( const MbMinMaxGridDistancesParams params,
MbMinMaxGridDistancesResults< double, double > &  results 
)

Extreme distances between curves.

Extreme distances between curves along the grid, and measurements are taken at the break points of the first curve along the normal to the second curve or between the break points of the first curve and the points of the second curve.

Parameters
[in]params- Parameters of the operation of the grid search for minima and maxima.
[out]results- Results of the operation of the grid search for minima and maxima.
Returns
Returns the result of measurement (obtained, not obtained, or the process has been aborted).

◆ MaxDistance() [1/6]

bool MaxDistance ( const MbCartPoint3D pnt,
const MbCurve3D curv,
double &  t,
double &  distance 
)

Find the maximal distance between a point and a curve.

The maximal distance between a point and a curve.

Parameters
[in]pnt- The initial point.
[in]curv- The initial curve.
[out]t- The parameter on a curve where the required distance is reached.
[out]distance- The required distance.
Returns
true if the maximal distance has been found.

◆ MaxDistance() [2/6]

bool MaxDistance ( const MbCurve3D curv1,
const MbCurve3D curv2,
double &  t1,
double &  t2,
double &  distance 
)

Find the maximal distance between two curves.

Find the maximal distance between two curves.

Parameters
[in]curv1,curv2- The initial curves.
[out]t1,t2- The parameters on curves where the required distance is reached.
[out]distance- The required distance.
Returns
true if the maximal distance has been found.

◆ MaxDistance() [3/6]

bool MaxDistance ( const MbCartPoint3D pnt,
const MbSurface surf,
MbCartPoint uv,
double &  distance 
)

Find the maximal distance between a point and a surface.

Find the maximal distance between a point and a surface.

Parameters
[in]pnt- The initial point.
[in]surf- The initial surface.
[out]uv- The point parameters on a surface where the required distance is reached.
[out]distance- The required distance.
Returns
true if the maximal distance has been found.

◆ MaxDistance() [4/6]

bool MaxDistance ( const MbCurve3D curv,
const MbSurface surf,
double &  t,
MbCartPoint uv,
double &  distance 
)

Find the maximal distance between a curve and a surface.

Find the maximal distance between a curve and a surface.

Parameters
[in]curv- The initial curve.
[in]surf- The initial surface.
[out]t- The parameter on a curve where the required distance is reached.
[out]uv- The point parameters on a surface where the required distance is reached.
[out]distance- The required distance.
Returns
true if the maximal distance has been found.

◆ MaxDistance() [5/6]

bool MaxDistance ( const MbSurface surf1,
const MbSurface surf2,
MbCartPoint uv1,
MbCartPoint uv2,
double &  distance 
)

Find the maximal distance between two surfaces.

Find the maximal distance between two surfaces.

Parameters
[in]surf1,surf2- The initial surfaces.
[out]uv1,uv2- The parameters on surfaces where the required distance is reached.
[out]distance- The required distance.
Returns
true if the maximal distance has been found.

◆ MaxDistance() [6/6]

bool MaxDistance ( const MbAxis3D axis,
const MbCurve3D curve,
double &  param,
double &  distance 
)

Find the maximal distance between an axis an a curve.

Find the maximal distance between an axis and a curve perpendicularly to an axis.

Parameters
[in]axis- The initial axis.
[in]curve- The initial curve.
[out]param- The parameter on a curve where the required distance is reached.
[out]distance- The required distance.
Returns
true if the maximal distance has been found.

◆ GetEpsilonBound()

void GetEpsilonBound ( const MbCurve3D crv,
double  t,
MbCartPoint3D pnt,
double &  eps,
VERSION  version 
)

Calculate the tolerance of a point on a curve.

The tolerance is a sphere bounding a point.

Parameters
[in]crv- The initial curve.
[in]t- A coordinate of a point on a curve.
[out]pnt- A three-dimensional coordinate of a point on a curve.
[out]eps- The tolerance of a point.
[in]version- Version.

◆ IsIncidence()

bool IsIncidence ( const MbCurve3D crv1,
int  t1,
const MbCurve3D crv2,
int  t2,
VERSION  version 
)

Check the coincidence of two vertices.

Curves are considered as edges.

Parameters
[in]crv1- The curve 1.
[in]t1- If 't1' equals 1 then the end of a curve is considered, the start of a curve is considered otherwise.
[in]crv2- The curve 2.
[in]t2- If 't2' equals 1 then the end of a curve is considered, the start of a curve is considered otherwise.
[in]version- Version.
Returns
true if vertices are coincident.

◆ GetNearCurveParam() [1/2]

double GetNearCurveParam ( const MbCurve3D curve,
const MbCartPoint3D point,
const MbVector3D direct 
)

Get the curve parameter which is nearest to the ray.

The ray is passed through the point 'point' in the direction of the vector 'direct'

Parameters
[in]curve- The initial curve.
[in]point- The point of a ray.
[in]direct- The vector of ray direction.
Returns
The nearest curve parameter to the ray.

◆ GetNearCurveParam() [2/2]

double GetNearCurveParam ( const MbCurve3D curve,
const MbCartPoint3D point,
const MbVector3D direct,
bool  setOnSide,
bool &  isBegin 
)

Get the curve parameter which is nearest to the ray.

The ray is passed through the point 'point' in the direction of the vector 'direct'.
if 'setOnSide' equals true then the parameter of curve should be set for the nearest end and the flag 'isBegin' determines the proximity to the curve start (true) or to the curve end (false).

Parameters
[in]curve- The initial curve.
[in]point- The point of a ray.
[in]direct- The vector of a ray direction.
[in]setOnSide- Whether the parameter should be equated to the nearest end of a curve.
[out]isBegin- if true than the parameter is located closer to the start of a curve.
if false than the parameter is located closer to the end of a curve.
Returns
The nearest curve parameter to the ray.

◆ GetFlatCurve()

MbCurve* GetFlatCurve ( const MbCurve3D curve3D,
const MbMatrix3D into,
MbRect1D pRgn = nullptr,
VERSION  version = Math::DefaultMathVersion() 
)

Construct a planar projection of a curve.

Construct a two-dimensional curve - projection of a curve to the plane XY of a coordinate system which is set by the matrix of transformation. Two-dimensional cubic splines of Hermite ('MbHermit') and cubic splines ('MbCubicSpline') are replaced by NURBS ('MbNurbs').

Parameters
[in]curve3D- The initial curve.
[in]into- The transformation matrix from the global coordinate system into a plane of view.
[in]pRgn- The parametric region of a curve for the creation of a projection.
[in]version- The version of construction.
Returns
The pointer to the obtained curve.

◆ GetFlatProjection()

MbCurve* GetFlatProjection ( const MbCurve3D curve3D,
const MbPlacement3D place,
VERSION  version = Math::DefaultMathVersion() 
)

Get a planar projection of a curve.

A curve is projected onto a given plane.

Parameters
[in]curve3D- The initial curve.
[in]place- The plane the curve should be projected on.
Returns
The pointer to the obtained projection curve.

◆ SolidMixUp()

void SolidMixUp ( MbSolid solid,
uint  mixUpModes 
)

A stress test for solid.

A stress test for solid, shell components mixing.

Parameters
[in]solid- The tested solid.
[in]mixUpModes- Flags from SolidMixUpMode.

◆ CompareSolids()

void CompareSolids ( const MbSolid solid1,
const MbSolid solid2,
CompareItemsResult compareResult,
bool  compareMassInertia,
bool  checkSense 
)

Two solids comparison.

Two solids comparison.

Parameters
[in]solid1- The first solid.
[in]solid2- The second solid.
[in]compareMassInertia- Check mass-inertial properties at first.
[in]checkSense- Check orientations coincidence of edges and faces.
[out]compareResult- The result of comparison between two solids.

◆ CompareSolidsByNames()

bool CompareSolidsByNames ( const MbSolid before,
const MbSolid after,
CompareItemsResult compareResult 
)

Comparison of two solids by name.

Comparison of two solids by name.

Parameters
[in]before- The solid before construction.
[in]after- The solid after construction.
[out]compareResult- The result of comparison between two solids.

◆ IsDegeneratedCurve()

bool IsDegeneratedCurve ( const MbCurve3D curve,
double  eps 
)

Check for the curve degeneration in three-dimensional space.

Check for the curve degeneration in three-dimensional space.

Parameters
[in]curve- Curve.
[in]eps- Indistinguishable metric domain, curve degeneration criterion.
Returns
Returns the state of the curve degeneration.

◆ CheckSurfaceDegeneracy()

bool CheckSurfaceDegeneracy ( const MbSurface surf,
double  u,
double  v,
double  eps,
bool &  degRu,
bool &  degRv,
bool &  colUV 
)

Checking the degeneracy of a surface at a point.

Checking the degeneracy of a surface at a point.

Parameters
[in]surf- Surface.
[in]u,v- The coordinates of a point on a surface.
[in]eps- Estimation accuracy.
For a linear one, the ratio of the minimum to the maximum lengths of the first derivatives is estimated.
For a angular one, the angle between the first derivatives is estimated.
[in]degRu- Estimates the degeneracy of a surface by the length of the derivative Ru.
[in]degRv- Estimates the degeneracy of a surface by the length of the derivative Rv.
[in]degRuv-Estimates the degeneracy of a surface by the angle between Ru and Rv.
Returns
Returns the degeneracy status.

◆ CheckShellClosure()

bool CheckShellClosure ( const MbFaceShell shell,
bool  checkChangedOnly = false 
)

Check of solid's shell for closedness.

Check of solid's shell for closedness.

Parameters
[in]shell- A shell.
[in]checkChangedOnly- Only modified faces of a shell are to be checked.
Returns
Returns the state of shell closedness.

◆ CheckSolidClosure()

bool CheckSolidClosure ( const MbSolid solid)

Check of solid's shell for closedness.

Check of solid's shell for closedness.

◆ CheckBoundaryEdges()

template<class EdgesVector >
bool CheckBoundaryEdges ( const EdgesVector &  allEdges,
EdgesVector *  boundaryEdges 
)

Search for the boundary edges of a closed shell.

Search for the boundary edges of a closed shell.
Boundary edge is an edge that has no reference to one of the adjacent faces.
The presence of boundary edges of a closed shell may lead to failure of operations on the shell, if the operation affects a part of the shell with such edges.
The presence of single boundary edges has practically no effect on the correctness of the MIP calculation.
Multiple boundary edges, especially in the form of related chains, is a serious defect of the closed shell.

Parameters
[in]allEdges- Set of edges of a shell.
[in]boundaryEdges- Set of found boundary edges.
Returns
Returns true if at least one boundary edges is found.

◆ CheckBadEdges()

bool CheckBadEdges ( const c3d::ConstEdgesVector &  allEdges,
c3d::ConstEdgesVector *  badEdges 
)

Search of incorrect edges.

Search of incorrect edges. Does not look for the boundary edges of a closed shell.
Use function CheckBoundaryEdges for searching for boundary edges.
The function checks the next parameters of an edge as signs of its incorrectness :

  1. An edge with the border type cbt_Boundary must point to only one face.
  2. The surfaces of the intersection curve of the edge have to be the same as the surfaces in the adjacent faces of the edge.
  3. The boundary points of the surface curves in the curve of intersection of the edge must coincide with an accuracy not worse than 1e-6 or tolerance at the vertices of the edge.
  4. The reference points of the splines of the surface curves in the intersection curve with the border type cbt_Specific must coincide in space with an accuracy not worse than 1e-6.
    The presence of incorrect edges is a serious defect of the shell.
    Parameters
    [in]allEdges- Set of edges of a shell.
    [in]badEdges- Set of found incorrect edges.
    Returns
    Returns true if at least one incorrect edge is found.

◆ CheckInexactVertices()

template<class VerticesVector >
bool CheckInexactVertices ( const VerticesVector &  vertArr,
double  mAcc,
VerticesVector *  inexactVerts 
)

Search for inexact vertices.

Search for inexact vertices of a shell.
The presence of inaccurate vertices is not a serious shell defect. In most cases, does not affect on the result of operations with this shell. Does not affect the calculation of the MIP.

Parameters
[in]vertArr- Set of shell's vertices.
[in]mAcc- Accuracy of inexact vertices filtration.
[in]inexactVerts- Set of inexact vertices.
Returns
Returns true if at least one inexact vertex is found.

◆ IsInexactIntersectionCurve()

bool IsInexactIntersectionCurve ( const MbSurfaceIntersectionCurve curve,
double  mMaxAcc 
)

Is the curve of intersection inaccurate.

Is the curve of intersection inaccurate (estimated).
The presence of inaccurate curves of intersection is not a serious defect. In most cases, does not affect on the result of operations. Can slightly affect the calculation of the MIP.

Parameters
[in]curve- The curve of intersection.
[in]mMaxAcc- Accuracy selection inaccurate curves of intersection.
Returns
Returns true, if the curve of intersection is inaccurate.

◆ IsInexactEdge()

bool IsInexactEdge ( const MbCurveEdge edge,
double  mMaxAcc 
)

Is the curve of intersection edges inaccurate.

Is the curve of intersection edges inaccurate (estimated).
The presence of inaccurate edges is not a serious shell defect. In most cases, does not affect on the result of operations with this shell. Can slightly affect the calculation of the MIP.

Parameters
[in]edge- The edge of the shell.
[in]mMaxAcc- Accuracy selection inaccurate edges.
Returns
Returns true, if the edge is inaccurate.

◆ CheckInexactEdges()

template<class EdgesVector >
bool CheckInexactEdges ( const EdgesVector &  allEdges,
double  mAcc,
EdgesVector *  inexactEdges 
)

Approximate search of inexact edges.

Approximate search of inexact edges of a shell.
The presence of inaccurate edges is not a serious shell defect. In most cases, does not affect on the result of operations with this shell. Can slightly affect the calculation of the MIP.

Parameters
[in]allEdges- Set of edges of a shell.
[in]mAcc- Accuracy of inexact edges filtration.
[in]inexactEdges- Set of found inexact edges.
Returns
Returns true if at least one inexact edge is found.

◆ CheckBadFaces()

void CheckBadFaces ( const MbFaceShell shell,
bool &  areIdenticalBaseSurfaces,
bool &  areBadFacePointers 
)

Check of substrates and pointers to faces.

Check of substrates and pointers to faces of a shell.
The presence of common substrates (base surfaces in bounded curved surfaces) and invalid references to faces in edges is a serious shell defect.

Parameters
[in]shell- A shell to check.
[out]areIdenticalBaseSurfaces- Whether there are common substrates.
[out]areBadFacePointers- Whether there are invalid pointers to neighboring faces.

◆ CheckLoopsInterposition()

bool CheckLoopsInterposition ( const MbFace face)

Check interposition of face loops.

Check interposition of face loops.
The function is to check the correctness of the orientation of the face loops (chains of oriented edges). Incorrect orientation of face's loops is a serious defect in the shell.

Parameters
[in]face- Face.
Returns
Returns true if interposition of loops and their orientations are correct.

◆ CheckLoopConnection() [1/4]

bool CheckLoopConnection ( const MbFace face,
const MbLoop loop,
double &  lengthTolerance,
double &  paramTolerance,
c3d::IndicesPairsVector badLocs 
)

Check for connectivity of loop edges.

Check for connectivity of loop edges. Returns the maximal metric and parametric (optionally) tolerances of the loop construction.
The presence of inaccurate connection in face loops (chains of oriented edges) is not necessarily a serious shell defect.

Parameters
[in]face- Face containing the loop under test.
[in]loop- Face loop.
[out]lengthTolerance- The maximal metric value of a gap between edges.
[out]paramTolerance- The maximal parametric value of a gap between edges.
[out]badLocs- Edges pairs with bad connectivity.
Returns
Returns true if the connectivity is good.

◆ CheckLoopConnection() [2/4]

bool CheckLoopConnection ( const MbFace face,
const MbLoop loop,
double &  lengthTolerance,
double *  paramTolerance,
c3d::ConstOrientEdgesVector &  badConnectedEdges,
c3d::ConstEdgesVector &  badVertexEdges 
)

Check for connectivity of a loop edges.

Check for connectivity of a loop edges. Returns the maximal metric and parametric (optionally) tolerances of the loop construction.
The presence of inaccurate connection in face loops (chains of oriented edges) is not necessarily a serious shell defect.

Parameters
[in]face- Face containing the loop under test.
[in]loop- Face loop.
[out]lengthTolerance- The maximal metric value of a gap between edges.
[out]paramTolerance- The maximal parametric value of a gap between edges.
[out]badConnectedEdges- Edges with bad connectivity.
[out]badVertexEdges- Edges with incorrect vertices.
Returns
Returns true if the connectivity is good.

◆ CheckLoopConnection() [3/4]

bool CheckLoopConnection ( const MbFace face,
const MbLoop loop,
double &  lengthTolerance,
double *  paramTolerance,
c3d::ConstOrientEdgesVector &  badConnectedEdges 
)

Check for connectivity of a loop edges.

Check for connectivity of a loop edges. Returns the maximal metric and parametric (optionally) tolerances of the loop construction.
The presence of inaccurate connection in face loops (chains of oriented edges) is not necessarily a serious shell defect.

Parameters
[in]face- Face containing the loop under test.
[in]loop- Face loop.
[out]lengthTolerance- The maximal metric value of a gap between edges.
[out]paramTolerance- The maximal parametric value of a gap between edges.
[out]badConnectedEdges- Edges with bad connectivity.
Returns
Returns true if the connectivity is good.

◆ CheckLoopConnection() [4/4]

bool CheckLoopConnection ( const MbFace face,
const MbLoop loop,
double &  lengthTolerance,
double *  paramTolerance 
)

Check for connectivity of a loop edges.

Check for connectivity of a loop edges. Returns the maximal metric and parametric (optionally) tolerances of the loop construction.
The presence of inaccurate connection in face loops (chains of oriented edges) is not necessarily a serious shell defect.

Parameters
[in]face- Face containing the loop under test.
[in]loop- Face loop.
[out]lengthTolerance- The maximal metric value of a gap between edges.
[out]paramTolerance- The maximal parametric value of a gap between edges.
Returns
Returns true if the connectivity is good.

◆ FindLoopsSelfIntersections()

bool FindLoopsSelfIntersections ( const MbFace face,
const MbSNameMaker nameMaker,
bool  checkInsideEdges,
std::vector< std::pair< c3d::IndicesPair, MbCartPoint3D > > *  loopPnts 
)

Find face loops with self-intersections.

Find face loops with self-intersections. Returns the found loops with self-intersections.
The presence of self-intersections in face loops is a serious shell defect.

Parameters
[in]face- Face containing loops under test.
[in]nameMaker- An object for naming the new objects.
[in]checkInsideEdges- Find edges with self-intersections inside.
[out]loopPnts- Points of self-intersecting loops and the numbers of loops.
Returns
Returns true if the self-intersection has been found.

◆ CheckFacesConnection() [1/3]

bool CheckFacesConnection ( const RPArray< MbFace > &  faces)

Check for connectivity of faces 'faces'.

Check for topological connectivity of faces 'faces'.

Parameters
[in]faces- Set of faces under check.
Returns
Returns true if all the faces are topologically connected.

◆ CheckFacesConnection() [2/3]

bool CheckFacesConnection ( const c3d::FacesVector &  faces)

Check for connectivity of faces 'faces'.

Check for topological connectivity of faces 'faces'.

Parameters
[in]faces- Set of faces under check.
Returns
Returns true if all the faces are topologically connected.

◆ CheckFacesConnection() [3/3]

bool CheckFacesConnection ( const c3d::ConstFacesVector &  faces)

Check for connectivity of faces 'faces'.

Check for topological connectivity of faces 'faces'.

Parameters
[in]faces- Set of faces under check.
Returns
Returns true if all the faces are topologically connected.

◆ FindOverlappingSimilarFaces()

bool FindOverlappingSimilarFaces ( const MbFaceShell srcShell,
const MbFaceShell dstShell,
bool  sameNormals,
c3d::IndicesPairsVector simPairs 
)

Find "parent" faces of a derived shell in the initial shell.

Find "parent" faces of a derived shell in the initial shell by geometric search of similar faces with overlapping.
Flag sameNormals is to be set to false if the initial shell was involved in the boolean subtraction of solids as a second operand.

Parameters
[in]srcShell- The source shell.
[in]dstShell- The derived shell.
[in]sameNormals- Search with the same (true) or the opposite (false) direction of normals.
[out]simPairs- Set of correspondences - indices of faces in the initial and the derived shells.
Returns
Returns true if at least one correspondence is found.

◆ FindFacesEdgesCarriers()

bool FindFacesEdgesCarriers ( const c3d::ConstEdgesVector &  edges,
const MbFaceShell shell,
bool  sameNormals,
c3d::IndicesPairsVector efPairs 
)

Find faces edges of the derived shell are based on.

Determine on which faces of the initial shell edges of the derived shell are based on by the geometric search. Search of the correspondence is performed by surfaces from faces the edge refers to, but not by surfaces from the intersection curve of the edge. Flag sameNormals is to be set to false if the initial shell was involved in the boolean subtraction of solids as a second operand.

Parameters
[in]edges- Edges of an arbitrary shell.
[in]shell- The source shell.
[in]sameNormals- Search with the same (true) or the opposite (false) direction of normals.
[out]efPairs- Set of correspondence - indices of edges in the input array and numbers of faces in the input shell.
Returns
Returns true if at least one correspondence is found.

◆ RepairEdge()

bool RepairEdge ( MbCurveEdge edge,
bool  updateFacesBounds 
)

Repair incorrect edge of a shell.

Repair incorrect edge of a shell (pseudo-tolerant, pseudo-exact).

Parameters
[in,out]edge- Shell edge.
[in]updateFacesBounds- Update surface bounds of edge faces.
Returns
Returns true if edge modification was performed.

◆ RepairEdges()

bool RepairEdges ( MbFaceShell shell,
bool  updateFacesBounds = true 
)

Repair incorrect edges of a shell.

Repair incorrect edge of a shell (pseudo-tolerant, pseudo-exact).

Parameters
[in,out]shell- Shell.
[in]updateFacesBounds- Update surface bounds of edge faces.
Returns
Returns true if edge modification was performed.

◆ RepairVertices()

bool RepairVertices ( MbFaceShell shell)

Repair incorrect vertices of a shell.

Repair incorrect vertices of a shell :

  • set single vertex at the midpoint of the edge junction,
  • clarify the tolerance of the vertex if it's not there or it 's less than the real one.
    ~
    Parameters
    [in]shell- Shell.
    Returns
    Returns true if at least one vertex has been modified.

◆ RemoveCommonSurfaceSubstrates()

bool RemoveCommonSurfaceSubstrates ( MbFaceShell shell,
bool  checkEdges = true 
)

Remove common surface substrates.

Find and eliminate common underlying surfaces of a shell faces.

Parameters
[in,out]shell- A shell to be modified.
[in]checkEdges- Replace in shell edges.
Returns
Returns true if the shell modification was performed.

◆ ResetSurfacesBoundingBoxes()

bool ResetSurfacesBoundingBoxes ( MbFaceShell shell,
bool  updateBasisParameticLimits = false 
)

Reset bounding boxes of surfaces.

Reset bounding boxes of surfaces and update parametric limits of basis surfaces.

Parameters
[in,out]shell- A shell to be modified.
[in]updateParameticLimits- Update parametric limits of surfaces.
Returns
Returns true if the shell modification was performed.

◆ ResetSurfaceBoundingBoxes()

bool ResetSurfaceBoundingBoxes ( MbSurface surface,
bool  updateBasisParameticLimits = false 
)

Reset bounding boxes of a surface.

Reset bounding boxes of a surface and update parametric limits of its basis surface.

Parameters
[in,out]surface- A surface to be modified.
[in]updateParameticLimits- Update parametric limits of surfaces.
Returns
Returns true if the surface modification was performed.

◆ ResetCurvesTemporaryData()

bool ResetCurvesTemporaryData ( MbFaceShell shell)

Reset all temporary data of curves.

Reset all temporary data of curves of shell edges.

Parameters
[in,out]shell- A shell to be modified.
Returns
Returns true if the curve modification was performed.

◆ IsOrientedOutward()

ThreeStates IsOrientedOutward ( const MbFaceShell shell)

Checking shell orientation.

Checking the shell orientation outward by the corner points of the extended bounding box.

Parameters
[in]shell- A shell.
Returns
Returns the orientation state of the shell (ts_positive - outward, ts_negative - inward, ts_neutral - failed to determine).

◆ CheckTopologyItemsMainNames()

bool CheckTopologyItemsMainNames ( const MbFaceShell shell,
c3d::ConstEdgesVector &  edges,
c3d::ConstVerticesVector &  vertices 
)

Check whether vertices and edges names contain a main name of one of the parents (edges and faces corresponding).

Check whether vertices and edges names contain a main name of one of the parents (edges and faces corresponding).

Parameters
[in]shell- Shell to check.
[in]edges- Resulting array of edges which do not contain a main name of any of the adjacent faces.
[in]vertices- Resulting array of vertices which do not contain a main name of any of the adjacent edges.
Returns
Returns true if all of the vertices and edges names contain a main name of one of the parents (edges and faces corresponding).

◆ AddEdgeSmoothnessAttributes() [1/2]

bool AddEdgeSmoothnessAttributes ( MbFaceShell shell,
bool  skipExisting 
)

Add edges smoothness attributes.

Add attributes to edges with information about the smoothness of joining faces in the edge.

Parameters
[in,out]shell- Shell to processing.
[in]skipExisting- Skip existing ones (do not update data in them).
Returns
Returns true if new attributes were added.

◆ AddEdgeSmoothnessAttributes() [2/2]

bool AddEdgeSmoothnessAttributes ( MbFaceShell shell,
bool  skipExisting,
c3d::ConstEdgesVector &  filledEdges,
c3d::ConstEdgesVector &  emptyEdges 
)

Add edges smoothness attributes.

Add attributes to edges with information about the smoothness of joining faces in the edge.

Parameters
[in,out]shell- Shell to processing.
[in]skipExisting- Skip existing ones (do not update data in them).
[out]filledEdges- Edges with created or saved smoothness attributes.
[out]emptyEdges- Edges without smoothness attributes (no second surface or creation failure).
Returns
Returns true if new attributes were added.

◆ UpdateEdgeSmoothnessAttributes()

bool UpdateEdgeSmoothnessAttributes ( MbFaceShell shell)

Update edges smoothness attributes data.

Update data in the attributes for the smoothness of the joining of faces in an edge.

Parameters
[in,out]shell- Shell to processing.
Returns
Returns true if attributes were updated.

◆ RemoveEdgeSmoothnessAttributes()

bool RemoveEdgeSmoothnessAttributes ( MbFaceShell shell)

Remove edges smoothness attributes.

Remove attributes from edges with information about the smoothness of the joining of faces in the edge.

Parameters
[in,out]shell- Shell to processing.
Returns
Returns true if attributes were removed.

◆ GetEdgeSmoothnessAttribute()

const MbDoubleRangeAttribute* GetEdgeSmoothnessAttribute ( const MbCurveEdge edge)

Get edge smoothness attribute from an edge.

Get edge smoothness attribute from an edge.

Parameters
[in]edge- Edge to check.
Returns
Returns edge smoothness attribute if this attribute does exist.

◆ IsDegeneratedElementary()

MbResultType IsDegeneratedElementary ( const MbSurface inputSurface,
double  accuracy = Math::metricPrecision 
)

Check whether the surface is degenerated.

Check whether the surface is degenerated. Currently works on the elementary surfaces inherited from #MbElemetarySurface and on the surfaces bounded by curves #CurveBoundedSurface.

Parameters
[in]inputSurface- Surface to check.
[in]accuracy- Accuracy of the check.
Returns
Returns: rt_Success, if the surface is not degenerated; rt_DegenerateSurface, the surface is degenerated; rt_ParameterError, if the input surface type is not supported.

◆ GetDepthToFace()

bool GetDepthToFace ( const MbFace face,
const MbPlacement3D place,
const HoleValues pars,
double &  depth 
)

Determine the hole depth "to the specified surface" while creating a shell with a hole.

Determine the hole depth "to the specified surface" while creating a shell with a hole. The hole depth "to the surface" is defined by the distance between the fasten point of the hole on the location surface and a point of intersection of the hole axis with the given surface limiting the depth.

Parameters
[in]face- A face terminating the depth.
[in]place- Plane of the hole.
[in]pars- The hole parameters.
[out]depth- Depth.
Returns
True if the distance was found
false - if the axis does not intersect the face

◆ EqualPoints()

template<class Point >
bool c3d::EqualPoints ( const Point &  p1,
const Point &  p2,
double  xEpsilon,
double  yEpsilon,
double  zEpsilon 
)

Check points for equality.

Parameters
[in]p1- The first cartesian point.
[in]p2- The second cartesian point.
[in]xEpsilon- The metric tolerance of points coincidence along the X axis.
[in]yEpsilon- The metric tolerance of points coincidence along the Y axis.
[in]zEpsilon- The metric tolerance of points coincidence along the Y axis.
Returns
True if points coincide,
false otherwise.

◆ EqualVectors()

template<class Vector >
bool c3d::EqualVectors ( const Vector &  p1,
const Vector &  p2,
double  xEpsilon,
double  yEpsilon,
double  zEpsilon 
)

Check equality of vectors with given tolerance.

Check equality of vectors with given tolerance. Vectors are equal if their coordinates differs less than given tolerance.

Parameters
[in]p1- The first vector.
[in]p2- The second vector.
[in]xEpsilon- The metric tolerance of points coincidence along the X axis.
[in]yEpsilon- The metric tolerance of points coincidence along the Y axis.
[in]zEpsilon- The metric tolerance of points coincidence along the Y axis.
Returns
Returns true if the vectors are equal.

◆ LineTriangleIntersect()

bool LineTriangleIntersect ( const MbFloatPoint3D tri_v0,
const MbFloatPoint3D tri_v1,
const MbFloatPoint3D tri_v2,
const MbFloatAxis3D line,
float  epsilon,
MbFloatPoint3D crossPnt,
float &  tRes 
)

Find the intersection of a line with a triangle.

Find the intersection of a line with a triangle defined by its vertices. If a straight line crosses the triangle, then the value of parameter of a straight line at the intersection point is determined.

Parameters
[in]tri_v0- The first vertex of the triangle.
[in]tri_v1- The second vertex of the triangle.
[in]tri_v2- The third vertex of the triangle.
[in]line- A straight line to calculate the intersection of triangle with.
[in]epsilon- A spatial tolerance.
[out]crossPnt- The intersection point.
[out]tRes- Parameter of the intersection point on the line.
Returns
Whether the line intersects the triangle (true in case of line and triangle intersection).

◆ LineGridIntersect() [1/5]

bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
MbFloatPoint3D crossPnt,
float &  tRes 
)

Find the intersection of a straight line with the triangulation.

For all the triangles the intersection with the straight line is determined and the minimum value of the intersection point parameter on the secant straight line is calculated.

Parameters
[in]grid- Triangulation.
[in]line- Straight line to calculate the intersection of triangulation with.
[out]crossPnt- The intersection point.
[out]tRes- Parameter of the intersection point on the line.
Returns
Whether the intersection is found (true if success).

◆ LineGridIntersect() [2/5]

bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
MbFloatPoint3D crossPnt,
float &  tRes,
c3d::IndicesPair tqInd 
)

Find the intersection of a straight line with the triangulation.

For all the triangles the intersection with the straight line is determined and the minimum value of the intersection point parameter on the secant straight line is calculated.

Parameters
[in]grid- Triangulation.
[in]line- Straight line to calculate the intersection of triangulation with.
[out]crossPnt- The intersection point.
[out]tRes- Parameter of the intersection point on the line.
[out]tqInd- Index of the found triangle (tqInd.first) or quadrangle (tqInd.second).
Returns
Whether the intersection is found (true if success).

◆ LineGridIntersect() [3/5]

bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
const MbPlacement3D cutPlace,
MbFloatPoint3D crossPnt,
float &  tRes 
)

Find the intersection of a straight line with the triangulation.

For all the triangles the intersection with the straight line is determined and the minimum value of the intersection point parameter on the secant straight line is calculated.

Parameters
[in]grid- Triangulation.
[in]line- Straight line to calculate the intersection of triangulation with.
[in]cutPlace- Cutting plane.
[out]crossPnt- The intersection point.
[out]tRes- Parameter of the intersection point on the line.
Returns
Whether the intersection is found (true if success).

◆ LineGridIntersect() [4/5]

bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
const std::vector< MbPlacement3D > &  cutPlaces,
MbFloatPoint3D crossPnt,
float &  tRes 
)

Find the intersection of a straight line with the triangulation.

For all the triangles the intersection with the straight line is determined and the minimum value of the intersection point parameter on the secant straight line is calculated.

Parameters
[in]grid- Triangulation.
[in]line- Straight line to calculate the intersection of triangulation with.
[in]cutPlaces- Cutting planes.
[out]crossPnt- The intersection point.
[out]tRes- Parameter of the intersection point on the line.
Returns
Whether the intersection is found (true if success).

◆ LineGridIntersect() [5/5]

bool LineGridIntersect ( const MbGrid grid,
const MbFloatAxis3D line,
float &  tRes 
)

Find the intersection of a straight line with the triangulation.

For all the triangles the intersection with the straight line is determined and the minimum value of the intersection point parameter on the secant straight line is calculated.

Parameters
[in]grid- Triangulation.
[in]line- Straight line to calculate the intersection of triangulation with.
[out]tRes- Parameter of the intersection point on the line.
Returns
Whether the intersection is found (true if success).

◆ LineToGridEdgeDistanceSquared() [1/2]

float LineToGridEdgeDistanceSquared ( const MbGrid grid,
size_t  edgeInd,
const MbFloatAxis3D line,
float  delta,
float &  tRes 
)

Calculate squared distance from a line to a polygon.

During calculation of squared distance from a line to a polygon the distance from each segment of the polygon is checked until the first getting to 'delta' neighborhood. Returns the value of the nearest point parameter on tRes line and the squared distance from this point to a segment of the polygon.

Parameters
[in]grid- Triangulation.
[in]edgeInd- Index of polygon to check.
[in]line- Line to calculate the distance to.
[in]delta- Neighborhood radius around the line.
[out]tRes- The value of parameter of the nearest point on the line.
Returns
Squared distance between the nearest point and the line.

◆ LineToGridEdgeDistanceSquared() [2/2]

float LineToGridEdgeDistanceSquared ( const MbGrid grid,
size_t  edgeInd,
const MbFloatAxis3D line,
const MbFloatVector3D vDelta,
MbFloatVector3D vRes,
float &  tRes 
)

Calculate squared distance from a line to a polygon.

During calculation of squared distance from a line to a polygon the distance from each segment of the polygon is checked until the first getting to 'delta' neighborhood. Returns the value of the nearest point parameter on the line, the vector between the nearest points and the squared distance from this point to a segment of the polygon.

Parameters
[in]grid- Triangulation.
[in]edgeInd- Index of polygon to check.
[in]line- Line to calculate the distance to.
[in]vDelta- The dimensions of the area around the line.
[out]vRes- Vector from the nearest point on the line to the nearest point on the polygon.
[out]tRes- The value of parameter of the nearest point on the line.
Returns
Squared distance between the nearest point and the line.

◆ CreateCloudPointsPlane()

MbPlane* CreateCloudPointsPlane ( const c3d::SpacePointsVector points)

Create a plane based on the moments of inertia of the point cloud.

Create a plane based on the moments of inertia of the point cloud .

Parameters
[in]points- Points vector.
Returns
Plane, if it turned out to be built.

◆ LineToSegmentDistanceSquared() [1/2]

float LineToSegmentDistanceSquared ( const MbFloatPoint3D seg_base,
const MbFloatPoint3D seg_end,
const MbFloatAxis3D line,
float &  tRes 
)

Calculate squared distance from straight line to segment of polygon.

Calculate squared distance from straight line to segment of polygon defined by start and end points.
Returns value of parameter of nearest point on tRes line and squared distance from this point to the segment.
Returns value of parameter of nearest point on tRes line and squared distance from this point to the segment.

Parameters
[in]seg_base- Start point of the segment.
[in]seg_end- Start point of the segment.
[in]line- Straight line to calculate the distance to.
[out]tRes- Value of the nearest point parameter on the line.
Returns
Squared distance between the nearest point and the line.

◆ LineToSegmentDistanceSquared() [2/2]

float LineToSegmentDistanceSquared ( const MbFloatPoint3D seg_base,
const MbFloatPoint3D seg_end,
const MbFloatAxis3D line,
MbFloatVector3D vRes,
float &  tRes 
)

Calculate squared distance from straight line to segment of polygon.

Calculate squared distance from straight line to segment of polygon defined by start and end points.
Returns the value of parameter of nearest point on the line, the vector between the nearest points and the squared distance from this point to the segment.

Parameters
[in]seg_base- Start point of the segment.
[in]seg_end- Start point of the segment.
[in]line- Straight line to calculate the distance to.
[out]vRes- Vector from the nearest point on the line to the nearest point on the segment.
[out]tRes- Value of the nearest point parameter on the line.
Returns
Squared distance between the nearest point and the line.

◆ LineToPolyDistanceSquared() [1/3]

float LineToPolyDistanceSquared ( const MbPolygon3D poly,
const MbFloatAxis3D line,
float  delta,
MbFloatPoint3D nearestPoint,
float &  tRes 
)

Calculate squared distance from a line to a polygon.

During calculation of squared distance from a line to a polygon the distance from each segment of the polygon is checked until the first getting to 'delta' neighborhood. Returns the value of the nearest point parameter on tRes line and the squared distance from this point to a segment of the polygon.

Parameters
[in]poly- Polygon to check.
[in]line- Line to calculate the distance to.
[in]delta- Neighborhood radius around the line.
[out]nearestPoint- The nearest point of the polygon.
[out]tRes- The value of parameter of the nearest point on the line.
Returns
Squared distance between the nearest point and the line.

◆ LineToPolyDistanceSquared() [2/3]

float LineToPolyDistanceSquared ( const MbPolygon3D poly,
const MbFloatAxis3D line,
float  delta,
const MbPlacement3D cutPlace,
MbFloatPoint3D nearestPoint,
float &  tRes 
)

Calculate squared distance from a line to a polygon.

During calculation of squared distance from a line to a polygon the distance from each segment of the polygon is checked until the first getting to 'delta' neighborhood. Returns the value of the nearest point parameter on tRes line and the squared distance from this point to a segment of the polygon.

Parameters
[in]poly- Polygon to check.
[in]line- Line to calculate the distance to.
[in]delta- Neighborhood radius around the line.
[in]cutPlace- Cutting plane.
[out]nearestPoint- The nearest point of the polygon.
[out]tRes- The value of parameter of the nearest point on the line.
Returns
Squared distance between the nearest point and the line.

◆ LineToPolyDistanceSquared() [3/3]

float LineToPolyDistanceSquared ( const MbPolygon3D poly,
const MbFloatAxis3D line,
float  delta,
const std::vector< MbPlacement3D > &  cutPlaces,
MbFloatPoint3D nearestPoint,
float &  tRes 
)

Calculate squared distance from a line to a polygon.

During calculation of squared distance from a line to a polygon the distance from each segment of the polygon is checked until the first getting to 'delta' neighborhood. Returns the value of the nearest point parameter on tRes line and the squared distance from this point to a segment of the polygon.

Parameters
[in]poly- Polygon to check.
[in]line- Line to calculate the distance to.
[in]delta- Neighborhood radius around the line.
[in]cutPlaces- Cutting planes.
[out]nearestPoint- The nearest point of the polygon.
[out]tRes- The value of parameter of the nearest point on the line.
Returns
Squared distance between the nearest point and the line.

◆ LineToPointDistance() [1/2]

template<class Double , class Point , class Vector , class Axis >
Double LineToPointDistance ( const Axis &  line,
const Point &  to,
Double &  tRes 
)

Calculate the distance from a line to a point.

For correct calculating of the distance from a line to a point the line direction vector must be normalized.

Parameters
[in]line- Line.
[in]to- Point.
[out]tRes- The value of parameter of the nearest point on the line.
Returns
The distance from a point to a line.

◆ LineToPointDistance() [2/2]

template<class Double , class Point , class Vector , class Axis , class Placement >
Double LineToPointDistance ( const Axis &  line,
const Point &  to,
const Placement &  cutPlace,
Double &  tRes 
)

Calculate the distance from a line to a point.

For correct calculating of the distance from a line to a point the line direction vector must be normalized.

Parameters
[in]line- Line.
[in]to- Point.
[in]cutPlace- Cutting plane.
[out]tRes- The value of parameter of the nearest point on the line.
Returns
The distance from a point to a line.

◆ CreatePartSolidIndices()

bool CreatePartSolidIndices ( const MbSolid solid,
const SArray< MbPartSolidData > &  partInfo,
MbPartSolidIndices partIndices 
)

Create indices of the parts of the solid.

When creating indices of solid parts it is assumed that the solid consists of parts. Information array must correspond to solid.

Parameters
[in]solid- The initial solid is consisting of separate parts.
[in]partInfo- Information about the solid parts.
[out]partIndices- Index set of the parts of the solid.
Returns
Whether indices of solid parts are created.

◆ CreateElevationParam()

bool CreateElevationParam ( const MbCurve3D crvThis,
const MbCurve3D spine,
MbCartPoint3D wcThis,
double &  ct,
MbVector3D tau 
)

Create parameter for specified curve.

Profile curve should be planar. If guide curve intersects with plane of profile, then as parameter is used the coordinate along guide curve of intersection point of it with plane of profile which is nearest to center of mass of profile curve.
If guide curve not intersects with plane of profile, then as parameter is used the coordinate on guide curve of projection of center of mass of profile curve onto guide curve.

Parameters
[in]crvThis- The profile curve.
[in]spine- The spine (guide) curve.
[in,out]wcThis- Center of mass of profile curve.
[in,out]ct- Required parameter.
[in,out]tau- Derivative of guide curve at point with 'ct' coordinate. If giving nullptr to function, then derivative isn't calculated.
Returns
True - if guide curve intersects with plane of profile, false - if not intersects.

◆ CreateElevationParams()

bool CreateElevationParams ( RPArray< MbCurve3D > &  uCurves,
bool  vcls,
const MbCurve3D spine,
SArray< double > &  vParams,
SArray< MbCartPoint3D > *  tiePnts 
)

Fill array of v-parameters and weight centers of given curves.

If all the profile curves are planar, then parameters are calculated by CreateElevationParam function. Otherwise parameter for each curve is calculated as coordinate along guide projection of center of mass of curve to guide.

Parameters
[in]uCurves- Set of profile curves.
[in]vcls- Whether the surface is closed by parameter v.
[in]spine- The spine (guide) curve.
[in,out]vParams- Set of parameters.
[in,out]tiePnts- Set of centers of mass of profile curves. If giving nullptr to function, then it isn't filled.
Returns
True - if the array of parameters successfully created.

◆ CreateLoftedParams()

bool CreateLoftedParams ( const RPArray< MbCurve3D > &  uCurves,
bool  vcls,
SArray< double > &  vParams,
SArray< MbCartPoint3D > *  tiePnts,
VERSION  version 
)

Fill array of v-parameters and weight centers of given curves.

If all the profile curves are planar, then parameters are calculated by CreateElevationParam function. Otherwise parameter for each curve is calculated as coordinate along guide projection of center of mass of curve to guide.

Parameters
[in]uCurves- Set of profile curves.
[in]vcls- Whether the surface is closed by parameter v.
[in,out]vParams- Set of parameters.
[in,out]tiePnts- Set of centers of mass of profile curves. If giving nullptr to function, then it isn't filled.
[in]version- Version.
Returns
True - if the array of parameters successfully created.

◆ LinePlaneNearestPoints()

double LinePlaneNearestPoints ( const MbLine3D line1,
const MbPlane plane2,
MbCartPoint3D p1,
MbCartPoint3D p2 
)

Intersection or distance between infinite line and infinite plane.

Intersection of infinite line and infinite plane.
or distance between infinite line and infinite plane.

Parameters
[in]line1- Line
[in]plane2- Plane
[out]p1- Intersection point on curve
[out]p2- Intersection point on plane
Returns
Distance between line and plane

◆ PlanesIntersection()

MbLine3D* PlanesIntersection ( const MbPlane plane1,
const MbPlane plane2 
)

Intersection of two infinite planes.

Intersection of two infinite planes

◆ DefineThroughPointsParams() [1/2]

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

Determine a parametric distribution of points for the construction of NURBS surface passing through these points.

Determine a parametric distribution of points for the construction of NURBS surface passing through these points. The parameter for which distribution of points is determined is set by the variable alongLines. (if true then there is a distribution by v, otherwise - by u). An average distribution by all rows is determined.

Parameters
[in]degree- An order of a surface by the given parameter.
[in]closed- A closure of a surface by the given parameter.
[in]points- A matrix of points for which the parametric distribution should be determined.
[in]alongLines- Determines a parameter by which the distribution is sought (true - by v, false - by u).
[in]spType- The parameterization type of spline objects:
spt_Unstated - unspecified,
spt_EquallySpaced - uniform,
spt_ChordLength - by chord length (by distance between the points),
spt_Centripetal - centripetal (square root of the distance between the points).
[in]params- A set with the required distribution.
Returns
True if the calculations were successfully performed..

◆ DefineThroughPointsParams() [2/2]

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

Determine a parametric distribution of points for the construction of NURBS surface passing through these points.

Determine a parametric distribution of points for the construction of NURBS surface passing through these points. The parameter for which distribution of points is determined is set by the variable alongLines. (if true then there is a distribution by v, otherwise - by u).

Parameters
[in]degree- An order of a surface by the given parameter.
[in]closed- A closure of a surface by the given parameter.
[in]points- A matrix of points for which the parametric distribution should be determined.
[in]alongLines- Determines a parameter by which the distribution is sought (true - by v, false - by u).
[in]rowInd- A row or a column by which the distribution is calculated.
[in]spType- The parameterization type of spline objects:
spt_Unstated - unspecified,
spt_EquallySpaced - uniform,
spt_ChordLength - by chord length (by distance between the points),
spt_Centripetal - centripetal (square root of the distance between the points).
[in]params- A set with the required distribution.
Returns
True if the calculations were successfully performed..

◆ SetEdgesLabel()

template<class FacesVector >
size_t SetEdgesLabel ( const FacesVector &  faceSet,
MbeLabelState  label,
void key = nullptr 
)

Set the specified label to all edges of the shell.

Set the specified label to all edges of the shell.

Parameters
[in,out]faceSet- A set of faces.
[in]label- Label.

◆ GetEdges()

template<class FacesVector , class EdgesVector >
void GetEdges ( const FacesVector &  faceSet,
EdgesVector &  edges 
)

Get a set of edges.

Get a set of edges from a set of faces.

Parameters
[in]faceSet- A set of faces.
[out]edges- A set of edges.