C3D Toolkit  Kernel - 117982, Vision - 2.9.2.2

Fillet surface with variable radius is normal or with preservation of edges. More...

#include <surf_channel_surface.h>

+ Inheritance diagram for MbChannelSurface:
+ Collaboration diagram for MbChannelSurface:

Public Member Functions

 MbChannelSurface (MbSurfaceCurve &curv1, MbSurfaceCurve &curv2, double d1, double d2, MbeSmoothForm fm, double cn, MbFunction &func, bool ev)
 Constructor by two curves and type of mate. More...
 
 MbChannelSurface (MbSurfaceCurve &curv1, MbSurfaceCurve &curv2, double d1, double d2, MbeSmoothForm fm, double cn, MbFunction &func, bool byFirst, bool ev)
 Constructor by two curves and type of mate. More...
 
 MbChannelSurface (MbSurface &surf1, MbCurve &curv1, MbSurface &surf2, MbCurve &curv2, MbCurve3D &curv0, MbFunction &weig0, double d1, double d2, MbeSmoothForm fm, double cn, MbFunction &func, bool ev)
 Constructor by two curves and type of mate. More...
 
Common functions of a geometric object
MbeSpaceType IsA () const override
 Get the type of the object.
 
MbSpaceItemDuplicate (MbRegDuplicate *=nullptr) const override
 Create a copy of the object. More...
 
bool IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const override
 Determine whether an object is equal. More...
 
bool SetEqual (const MbSpaceItem &) override
 Make objects equal if they are similar. More...
 
bool IsSimilar (const MbSpaceItem &) const override
 Determine whether an object is similar. More...
 
void GetProperties (MbProperties &properties) override
 Outstanding properties of the object. More...
 
Common functions of surface
MbSurfaceOffset (double d, bool same) const override
 Create an offset surface. More...
 
double GetFilletRadius (const MbCartPoint3D &p, double accuracy=METRIC_REGION) const override
 Get fillet radius if the surface is a fillet surface with the set accuracy. More...
 
double GetFilletRadius (double u) const override
 
Functions of smooth surface
MbSmoothSurfaceCurvesDuplicate () const override
 A copy with the same support surfaces.

 
double GetSmoothRadius () const override
 Get radius.
 
double DistanceRatio (bool firstCurve, MbCartPoint3D &p, double distance) const override
 Get coefficient for radius.
 
Functions of fillet surface with variable radius is normal or with preservation of edges
bool InsertPoints (double &t1, const MbCartPoint &p1, bool add1, double &t2, const MbCartPoint &p2, bool add2) override
 Add a point to the support curves of the boundary. More...
 
bool CheckPole (double &u, bool bModify=true)
 Check pole availability. More...
 
const MbFunctionGetFunction () const
 Get a function of radius changing.
 
MbFunctionSetFunction ()
 Get a function of radius changing.
 
void SetFunction (MbFunction &funcNew)
 Set a function of radius changing.
 
MbFunctionMakeFunction (double u1, double u2) const
 Construct a function for changing the radius from parameter u1 to parameter u2.
 
- Public Member Functions inherited from MbFilletSurface
 MbFilletSurface (MbSurfaceCurve &curv1, MbSurfaceCurve &curv2, double d1, double d2, MbeSmoothForm fm, double cn, bool ev)
 Constructor of fillet surface. More...
 
 MbFilletSurface (MbSurfaceCurve &curv1, MbSurfaceCurve &curv2, double d1, double d2, MbeSmoothForm fm, double cn, bool byFirst, bool ev)
 Constructor of surface with preservation of fillet. More...
 
 MbFilletSurface (MbSurface &surf1, MbCurve &curv1, MbSurface &surf2, MbCurve &curv2, MbCurve3D &curv0, double d1, double d2, MbeSmoothForm fm, double cn, bool ev)
 Constructor of fillet surface. More...
 
void Init0 (double wmin, double wmax, bool insertPoints=true) override
 Correction of the middle line of fillet surface. More...
 
MbeSpaceType IsA () const override
 Get the type of the object.
 
MbeFilletSurfaceVersion GetVersion () const
 Version.
 
MbSpaceItemDuplicate (MbRegDuplicate *=nullptr) const override
 Create a copy of the object. More...
 
bool IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const override
 Determine whether an object is equal. More...
 
bool SetEqual (const MbSpaceItem &) override
 Make objects equal if they are similar. More...
 
bool IsSimilar (const MbSpaceItem &) const override
 Determine whether an object is similar. More...
 
void Transform (const MbMatrix3D &, MbRegTransform *=nullptr) override
 Convert the object according to the matrix. More...
 
void Move (const MbVector3D &, MbRegTransform *=nullptr) override
 Move an object along a vector. More...
 
void Rotate (const MbAxis3D &, double angle, MbRegTransform *=nullptr) override
 Rotate an object around an axis at a given angle. More...
 
void GetProperties (MbProperties &properties) override
 Outstanding properties of the object. More...
 
void SetProperties (const MbProperties &properties) override
 Change the properties of an object. More...
 
void GetBasisItems (RPArray< MbSpaceItem > &s) override
 Outstanding reference objects in a container sent.
 
double GetVPeriod () const override
 Return period for smoothly closed surface or 0.
 
void PointOn (double &u, double &v, MbCartPoint3D &) const override
 Calculate a point on the surface. More...
 
void DeriveU (double &u, double &v, MbVector3D &) const override
 Calculate first derivative with respect to u.
 
void DeriveV (double &u, double &v, MbVector3D &) const override
 Calculate first derivative with respect to v.
 
void DeriveUU (double &u, double &v, MbVector3D &) const override
 Calculate second derivative with respect to u.
 
void DeriveVV (double &u, double &v, MbVector3D &) const override
 Calculate second derivative with respect to v.
 
void DeriveUV (double &u, double &v, MbVector3D &) const override
 Calculate second derivative.
 
void DeriveUUU (double &u, double &v, MbVector3D &) const override
 Calculate third derivative.
 
void DeriveUUV (double &u, double &v, MbVector3D &) const override
 Calculate third derivative.
 
void DeriveUVV (double &u, double &v, MbVector3D &) const override
 Calculate third derivative.
 
void DeriveVVV (double &u, double &v, MbVector3D &) const override
 Calculate third derivative.
 
void Normal (double &u, double &v, MbVector3D &) const override
 Calculate normal.
 
void NormalU (double &u, double &v, MbVector3D &) const override
 Calculate derivative of normal with respect to U.
 
void NormalV (double &u, double &v, MbVector3D &) const override
 Calculate derivative of normal with respect to V.
 
void _PointOn (double u, double v, MbCartPoint3D &) const override
 Calculate a point on the surface. More...
 
void _DeriveU (double u, double v, MbVector3D &) const override
 Calculate first derivative with respect to u on extended surface.
 
void _DeriveV (double u, double v, MbVector3D &) const override
 Calculate first derivative with respect to v on extended surface.
 
void _DeriveUU (double u, double v, MbVector3D &) const override
 Calculate second derivative with respect to u on extended surface.
 
void _DeriveVV (double u, double v, MbVector3D &) const override
 Calculate second derivative with respect to v on extended surface.
 
void _DeriveUV (double u, double v, MbVector3D &) const override
 Calculate second derivative on extended surface.
 
void _DeriveUUU (double u, double v, MbVector3D &) const override
 Calculate third derivative on extended surface.
 
void _DeriveUUV (double u, double v, MbVector3D &) const override
 Calculate third derivative on extended surface.
 
void _DeriveUVV (double u, double v, MbVector3D &) const override
 Calculate third derivative on extended surface.
 
void _DeriveVVV (double u, double v, MbVector3D &) const override
 Calculate third derivative on extended surface.
 
void _Normal (double u, double v, MbVector3D &) const override
 Calculate a normal on extended surface.
 
void _NormalU (double u, double v, MbVector3D &) const override
 Calculate derivative of normal vector on extended surface.
 
void _NormalV (double u, double v, MbVector3D &) const override
 Calculate derivative of normal vector on extended surface.
 
void Explore (double &u, double &v, bool ext, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer, MbVector3D *uuDer, MbVector3D *vvDer, MbVector3D *uvDer, MbVector3D *nor) const override
 Calculate point and derivatives of object for given parameters. More...
 
void SurfaceCurveExplore (size_t ind, double t, MbCartPoint &pnt, MbVector *fir, MbVector *sec, MbVector *thir) const
 Calculate the two-dimensional values of the point and derivatives for the surface curve (0 - first, otherwise - second) (for internal use)
 
void _PointNormal (double u, double v, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer, MbVector3D &norm, MbVector3D &uNorm, MbVector3D &vNorm, MbVector3D &uuDer, MbVector3D &vvDer, MbVector3D &uvDer) const override
 Calculate all derivatives at point. More...
 
double StepU (double u, double v, double sag) const override
 Calculate parameter step. More...
 
double StepV (double u, double v, double sag) const override
 Calculate parameter step. More...
 
double DeviationStepU (double u, double v, double angle) const override
 Calculate parameter step. More...
 
double DeviationStepV (double u, double v, double angle) const override
 Calculate parameter step. More...
 
double MetricStepV (double u, double v, double length) const override
 Calculate parameter step. More...
 
double CurvatureV (double u, double v) const override
 Calculate line curvature along the direction of v. More...
 
MbSplineSurfaceNurbsSurface (double, double, double, double, bool bmatch=false) const override
 Construct a NURBS copy of trimmed surface. More...
 
MbSurfaceNurbsSurface (const MbNurbsParameters &uParam, const MbNurbsParameters &vParam) const override
 Construct a NURBS copy of a surface. More...
 
MbSurfaceOffset (double d, bool same) const override
 Create an offset surface. More...
 
MbFilletSurfaceOffsetByFillet (double d, const MbSurface &offSurf1, const MbSurface &offSurf2) const
 
MbCurve3DCurveV (double u, MbRect1D *pRgn, bool bApprox=true) const override
 Construct spatial copy of the line u = const.
More...
 
void ChangeCarrier (const MbSpaceItem &item, MbSpaceItem &init) override
 Changing of carrier. More...
 
bool ChangeCarrierBorne (const MbSurface &item, MbSurface &init, const MbMatrix &matr) override
 Changing of carrier elements. More...
 
MbeNewtonResult SurfaceTangentNewton (const MbSurface &, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &u1, double &v1, bool ext0, bool ext1) const override
 Solution of equation system for determination of surfaces tangency. For internal use only.
 
MbeNewtonResult PointProjectionNewton (const MbCartPoint3D &p, size_t iterLimit, double &u, double &v, bool ext) const override
 Finding of point projection on surface. For internal use only.
 
bool NearPointProjection (const MbCartPoint3D &p, double &u, double &v, bool ext, MbRect2D *uvRange=nullptr) const override
 Find the projection of a point onto the surface. More...
 
double GetFilletRadius (const MbCartPoint3D &p, double accuracy=METRIC_REGION) const override
 Get fillet radius if the surface is a fillet surface with the set accuracy. More...
 
bool CreateNormalPlacements (const MbVector3D &axisZ, double angle, SArray< MbPlacement3D > &places, VERSION version=Math::DefaultMathVersion()) const override
 Construct normal placements of constructive planes.

 
bool CreateTangentPlacements (const MbVector3D &axisZ, SArray< MbPlacement3D > &places) const override
 Construct tangent placements of constructive planes.
 
bool GetCylinderAxis (MbAxis3D &axis) const override
 Get rotation axis of a surface.
 
bool IsSimilarToSurface (const MbSurface &surf, VERSION version, double precision=METRIC_PRECISION) const override
 Define whether the surfaces are similar for merge. More...
 
bool GetMatrixToSurface (const MbSurface &surf, MbMatrix &matr, VERSION version, double precision=METRIC_PRECISION) const override
 Get two-dimensional matrix of transformation from its parametric region to the parametric region of 'surf'. More...
 
bool IsSpecialSimilarToSurface (const MbSurface &surf, VERSION version, double precision=METRIC_PRECISION) const override
 Whether the surfaces are similar to merge. Special case. For internal use only.
 
ThreeStates Salient () const override
 Determine whether the surface is convex. More...
 
double GetRadius () const override
 Get the physical radius of the object or null if it impossible.
More...
 
size_t GetUMeshCount () const override
 The the number of splittings in u-direction.
 
size_t GetVMeshCount () const override
 The the number of splittings in v-direction.
 
MbSmoothSurfaceCurvesDuplicate () const override
 A copy with the same support surfaces.

 
double GetSmoothRadius () const override
 Get radius.
 
void GetDistances (double u, double &d1, double &d2) const override
 Get radii with a sign.
 
double GetDistance (bool s) const override
 Get radius with a sign.
 
bool SurfacesCombine (const MbSurfaceIntersectionCurve &edge, const MbSurface &init, bool add, MbMatrix &matr, const MbSurfaceIntersectionCurve *seam) override
 Combine surfaces by inclusion of the surface 'init' into the given surface. More...
 
double DistanceRatio (bool firstCurve, MbCartPoint3D &p, double distance) const override
 Get coefficient for radius.
 
void GetTesselation (const MbStepData &stepData, double u1, double u2, double v1, double v2, SArray< double > &uu, SArray< double > &vv) const override
 Determine a splitting of parametric region of a surface by verticals and horizontals. More...
 
void GetCurve1 (SPtr< const MbSurfaceCurve > &c) const override
 Support curve on the first surface.
 
void GetCurve2 (SPtr< const MbSurfaceCurve > &c) const override
 Support curve on the second surface.
 
void SetCurve1 (SPtr< MbSurfaceCurve > &c) override
 Get the support curve on the first surface for changing.
 
void SetCurve2 (SPtr< MbSurfaceCurve > &c) override
 Get the support curve on the second surface for changing.
 
double GetWeight (double u) const
 Weights of points of mid-curve. More...
 
double GetAngle (double u) const
 Arc opening angle. More...
 
double GetLocalAxis (double u, MbAxis3D &axis) const
 Axis of surface at given point. More...
 
void GetCentrePoint (double u, MbCartPoint3D &p1, MbCartPoint3D &p2, MbCartPoint3D &p0) const
 Get point on axis. More...
 
bool GetMiddlePoint (double u, MbCartPoint3D &p1, MbCartPoint3D &p2, MbCartPoint3D &p0, double &w) const
 Get the mid-point. More...
 
double GetVPeriod (double u) const
 Period by direction V. More...
 
const MbCurve3DGetCurve0 () const
 Intersection curve of tangents to surfaces.
 
bool IsEllipse () const
 Fillet isn't circular. More...
 
bool IsEven () const
 Uniform arc length parameterization.

 
bool IsFilletSurface () const
 Whether the fillet surface is homogeneous. More...
 
bool IsConic () const
 General conic section. More...
 
double Conic () const
 Coefficient of shape. More...
 
bool IsKerbSurface () const
 Fillet surface with preservation of fillet. More...
 
bool ByFirstCurve () const
 Whether the first curve is fillet. More...
 
void SetKerbSurface (bool bc1)
 Set fillet surface with preservation of fillet. Need to call this->Init0() after this method. More...
 
const MbFunctionGetWeights () const
 
bool SetWeights (MbFunction &func)
 
MbCurve3DGetSpine () const
 
void SetSpine (MbCurve3D *)
 
MbeFilletSurfType GetFilletType () const
 
- Public Member Functions inherited from MbSmoothSurface
MbeSpaceType Type () const override
 Get the group object type.
 
double GetUMin () const override
 Get the minimum value of u.
 
double GetUMax () const override
 Get the maximum value of u.
 
double GetVMin () const override
 Get the minimum value of v.
 
double GetVMax () const override
 Get the maximum value of v.
 
bool IsUClosed () const override
 Determine whether a surface is closed in u-parameter direction. More...
 
bool IsVClosed () const override
 Determine whether a surface is closed in v-parameter direction. More...
 
double GetUPeriod () const override
 Return period for smoothly closed surface or 0.
 
bool GetPoleUMin () const override
 Whether a pole exists on parametric region boundary.
 
bool GetPoleUMax () const override
 Whether a pole exists on parametric region boundary.
 
bool GetPoleVMin () const override
 Whether a pole exists on parametric region boundary.
 
bool GetPoleVMax () const override
 Whether a pole exists on parametric region boundary.
 
bool IsPole (double u, double v, double paramPrecision=PARAM_PRECISION) const override
 Whether the point is a pole.
 
size_t GetUCount () const override
 The number of splittings by u-parameter for a check of events.
 
size_t GetVCount () const override
 The number of splittings by v-parameter for a check of events.
 
MbeNewtonResult CurveIntersectNewton (const MbCurve3D &, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &t1, bool ext0, bool ext1) const override
 Solution of equation system for determination of intersections between a surface and a curve. For internal use only.
 
double GetParamDelta () const override
 Get the maximum increment of parameter.
 
double GetParamPrice () const override
 Get the minimum distinguishable value of parameter.
 
MbSurfaceNurbsSurface (const MbNurbsParameters &uParam, const MbNurbsParameters &vParam) const override
 Construct a NURBS copy of a surface. More...
 
MbSurfaceTotalDuplicate () const
 Perform a full copying of a surface.
 
const MbSurfaceGetSurface1 () const
 Get the first surface.
 
const MbSurfaceGetSurface2 () const
 Get the second surface.
 
MbCurveCreateBound (bool s) const
 Construct boundary curve along a surface (V = const). More...
 
MbeCurveBuildType GetBuildType () const
 Type of support curves. More...
 
MbeSmoothForm Form () const
 Form of a surface. More...
 
bool ProlongSurface (double u, const MbCartPoint &p1, const MbCartPoint &p2, bool anyCase)
 Prolong surface. More...
 
bool CurveStraighten (double t1, double t2)
 Correct curves. More...
 
void AddProperties (MbProperties &properties)
 Get the object properties.
 
void SetPole ()
 Check poles.
 
- Public Member Functions inherited from MbSurface
virtual ~MbSurface ()
 Destructor.
 
virtual void Accept (Visitor &visitor)
 Implementation of a function initializing a visit of an object.
 
MbeSpaceType Type () const override
 Get the group object type.
 
MbeSpaceType Family () const override
 Get family of objects.
 
double DistanceToPoint (const MbCartPoint3D &) const override
 Determine the distance to the point. More...
 
void AddYourGabaritTo (MbCube &c) const override
 Expand sent bounding box (a.k.a. gabarit), so that it included the object. More...
 
void Refresh () override
 Translate all the time (mutable) data objects in an inconsistent (initial) state.
 
virtual void PrepareIntegralData (const bool forced) const
 Calculate temporary (mutable) data of an object. More...
 
void CalculateMesh (const MbStepData &stepData, const MbFormNote &note, MbMesh &mesh) const override
 Build polygonal copy mesh. More...
 
MbPropertyCreateProperty (MbePrompt name) const override
 Create your own property with the name.
 
void GetBasisPoints (MbControlData3D &) const override
 Get control points of object.
 
void SetBasisPoints (const MbControlData3D &) override
 Change the object by control points.
 
size_t size () const
 Number of objects if object is interpreted as vector of objects.
 
const MbSurfaceoperator[] (size_t) const
 An access operator.
 
virtual bool IsUTouch () const
 Determine whether a surface is closed in u-parameter direction regardless of the smoothness of the closure. More...
 
virtual bool IsVTouch () const
 Determine whether a surface is closed in v-parameter direction regardless of the smoothness of the closure. More...
 
virtual bool IsUPeriodic () const
 Determine whether a surface is closed in u-parameter direction. More...
 
virtual bool IsVPeriodic () const
 Determine whether a surface is closed in v-parameter direction. More...
 
virtual double GetPeriod (ptrdiff_t i) const
 Return period. More...
 
virtual size_t Periodicity () const
 Determine periodicity. More...
 
bool IsPole (const MbCartPoint &uv, double paramPrecision=PARAM_PRECISION) const
 Whether the point is a pole.
 
virtual void TangentU (double &u, double &v, MbVector3D &) const
 Calculate tangent vector in u.
 
virtual void TangentV (double &u, double &v, MbVector3D &) const
 Calculate tangent vector in v.
 
virtual void Explore (double &u, double &v, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer) const
 Calculate point and first derivatives with respect to u and with respect to v. More...
 
virtual void _TangentU (double u, double v, MbVector3D &) const
 Calculate tangent vector in u direction on extended surface.
 
virtual void _TangentV (double u, double v, MbVector3D &) const
 Calculate tangent vector in v direction on extended surface.
 
virtual void _NormalUU (double u, double v, MbVector3D &) const
 Calculate second derivative of normal vector on extended surface.
 
virtual void _NormalUV (double u, double v, MbVector3D &) const
 Calculate second derivative of normal vector on extended surface.
 
virtual void _NormalVV (double u, double v, MbVector3D &) const
 Calculate second derivative of normal vector on extended surface.
 
virtual void _NormalD (double u, double v, double du, double dv, MbVector3D &der) const
 Calculate derivative of normal vector at the point with the given parameters u and v along the line with the given direction (du,dv).
 
virtual void _NormalDD (double u, double v, double du, double dv, MbVector3D &der) const
 Calculate second derivative of normal vector at the point with the given parameters u and v along the line with the given direction (du,dv).
 
virtual double MetricStepU (double u, double v, double length) const
 Calculate parameter step. More...
 
double SurfaceStep (const double &u, const double &v, bool alongU, const MbStepData &stepData) const
 Calculate parameter step. More...
 
virtual const MbSurfaceGetSurface () const
 Get itself (it is overloaded only in CurveBoundedSurface).
 
virtual const MbSurfaceGetBasisSurface () const
 Get the base surface if exists or itself.
 
virtual MbSurfaceSetSurface ()
 Get itself (it is overloaded only in CurveBoundedSurface).
 
virtual MbSurfaceSetBasisSurface ()
 Get the base surface if exists or itself.
 
virtual void GetLimitPoint (ptrdiff_t number, MbCartPoint3D &pnt) const
 Calculate the boundary point. More...
 
virtual void GetLimitPoint (ptrdiff_t number, MbCartPoint &pnt) const
 Calculate the boundary two-dimensional point. More...
 
MbCartPoint3D GetLimitPoint (ptrdiff_t number) const
 Calculate the boundary point. More...
 
virtual double CurvatureU (double u, double v) const
 Calculate line curvature along the direction of u. More...
 
double NormalCurvatureU (double u, double v) const
 Calculate a normal curvature of line along the direction of u. More...
 
double NormalCurvatureV (double u, double v) const
 Calculate a normal curvature of line along the direction of v. More...
 
double NormalCurvature (double u, double v, double du, double dv) const
 Calculate a normal curvature of surface. More...
 
bool MeanGaussCurvature (double u, double v, double &mean, double &gauss) const
 Calculate the mean and the Gaussian curvature.
More...
 
bool MainCurvatures (double u, double v, double &c1, double &c2, double &du, double &dv) const
 Calculate the mean and the Gaussian curvature.
More...
 
virtual bool IsSameBase (const MbSurface &) const
 Whether a base surface is a copy of the base surface of the given object.
 
virtual bool IsPlanar (double accuracy=METRIC_EPSILON) const
 Whether a surface is planar.
 
virtual MbeParamDir GetFilletDirection (double accuracy=METRIC_REGION) const
 Direction of fillet surface with accuracy. More...
 
virtual bool GetCentre (MbCartPoint3D &c) const
 Give the center of sphere surface.
 
virtual bool GetCenterLines (std::vector< MbCurve3D * > &clCurves) const
 Get center lines of a surface.
 
virtual bool IsSpinePeriodic () const
 Periodicity of the guide. More...
 
MbSplineSurfaceNurbsSurface (bool bmatch=false) const
 Construct a NURBS copy of a surface. More...
 
bool NurbsParam (const MbNurbsParameters &tParam, bool uParam, double op1, double op2, bool &isClosedNurbs, double &epsilon, SArray< double > &params) const
 Prepare parameters for the transformation to NURBS surface. More...
 
void CheckApproxPointParamsOpen (bool isU, double par, size_t degree, size_t pCount, SArray< double > &tList, SArray< double > &aKnots) const
 Chose points for approximation along the parameter. More...
 
void CheckApproxPointParamsClosed (bool isU, double par, size_t degree, size_t pCount, SArray< double > &tList, SArray< double > &aKnots) const
 Chose points for approximation along the parameter. More...
 
virtual MbCurve3DCurveU (double v, MbRect1D *pRgn, bool bApprox=true) const
 Construct spatial copy of the line v = const. More...
 
virtual MbCurve3DCurveUV (const MbLineSegment &segm, bool bApprox=true) const
 Construct spatial copy of line by parametric line. More...
 
virtual MbeItemLocation PointRelative (const MbCartPoint3D &pnt, double eps=ANGLE_REGION) const
 Get point location relative to the surface. More...
 
virtual MbeItemLocation PointClassification (const MbCartPoint &pnt, bool ignoreClosed=false) const
 A point is located inside the region on a surface. More...
 
virtual double DistanceToBorder (const MbCartPoint &point, double &epsilon) const
 Calculate the parametric distance to the nearest boundary. More...
 
virtual size_t CurveClassification (const MbCurve &curve, SArray< double > &tcurv, SArray< MbVector > &dir) const
 Determine points of intersections between the curve and the surface contours. More...
 
size_t SurfaceBorderIntersection (const MbCurve &curve, SArray< double > &tcurv, SArray< MbVector > &dir) const
 Determine points of intersections between the curve and the surface contours. More...
 
virtual MbeNewtonResult DirectPointProjectionNewton (const MbCartPoint3D &p, const MbVector3D &vect, size_t iterLimit, double &u, double &v, double &w, bool ext) const
 Finding of point projections to the surface in direction of the vector. For internal use only.
 
virtual void DirectPointProjection (const MbCartPoint3D &pnt, const MbVector3D &vect, SArray< MbCartPoint > &uv, bool ext, MbRect2D *uvRange=nullptr) const
 Find all a point projection onto the surface along a vector in either of two directions. More...
 
virtual bool NearDirectPointProjection (const MbCartPoint3D &pnt, const MbVector3D &vect, double &u, double &v, bool ext, MbRect2D *uvRange=nullptr, bool onlyPositiveDirection=false) const
 Find the nearest point projection to the surface in the vector direction. More...
 
virtual MbeNewtonResult CurveTangentNewton (const MbCurve3D &curv1, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &t1, bool ext0, bool ext1) const
 Solution of equation system for determination of tangency between a surface and a curve. For internal use only.
 
virtual void CurveIntersection (const MbCurve3D &curv, SArray< MbCartPoint > &uv, SArray< double > &tt, bool ext0, bool ext, bool touchInclude=false) const
 Determine points of intersection between a surface and a curve. More...
 
virtual MbeNewtonResult SurfaceIntersectNewton (const MbSurface &surf1, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &u1, double &v1, bool ext0, bool ext1) const
 Solution of equation system for determination of surfaces intersections. For internal use only.
 
virtual MbeNewtonResult SilhouetteNewton (const MbVector3D &eye, bool perspective, const MbAxis3D *axis, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u, double &v, bool ext) const
 Solution of equation system for determination of surface silhouette points. For internal use only.

 
virtual bool ProjectCurveOnSimilarSurface (const MbCurve3D &spaceCurve, const MbCurve &curve, const MbSurface &surfNew, MbCurve *&curveNew) const
 Construction of projection of a surface curve on coincident surface. More...
 
bool ProjectCurveOnSimilarSurface (const MbCurve3D &spaceCurve, const MbCurve &curve, const MbSurface &surfNew, SPtr< MbCurve > &curveNew) const
 Construction of projection of a surface curve on coincident surface. More...
 
virtual double DistanceToCurve (const MbCurve3D &curve, double &u, double &v, double &t, bool tCalc=false) const
 Calculate the nearest distance to a curve. More...
 
virtual double DistanceToSurface (const MbSurface &surf1, double &u0, double &v0, double &u1, double &v1) const
 Calculate the nearest distance to a surface. More...
 
MbeNewtonResult PlacementNewton (const MbVector3D &vec, double angle, MbeParamDir switchPar, size_t iterLimit, double &u, double &v) const
 Construct tangent placements of constructive planes. For internal use only.
 
bool CreateVconstPlacements (const MbVector3D &axisZ, double angle, bool normalPlace, SArray< MbPlacement3D > &places) const
 Construct the normal or tangent placements on v-lines.
 
bool CreateUconstPlacements (const MbVector3D &axisZ, double angle, bool normalPlace, SArray< MbPlacement3D > &places) const
 Construct the normal or tangent placements on u-lines.
 
virtual double ParamArea () const
 Calculate the area of parameters domain.
 
virtual size_t GetUPairs (double v, SArray< double > &u) const
 Calculate U-pairs by V. More...
 
virtual size_t GetVPairs (double u, SArray< double > &v) const
 Calculate V-pairs by U. More...
 
MbeNewtonResult IsoclinalNewton (const MbVector3D &dir, size_t iterLimit, double &u, double &v) const
 Determination of parameters of a surface isocline point. For internal use only.
 
virtual void GetIsoclinal (const MbVector3D &nor, SArray< MbCartPoint > &uv) const
 Find all isoclines of a surface. More...
 
virtual void CalculateGabarit (MbCube &cube) const
 Calculate bounding box of surface. It is recommended to use GetGabarit.
 
void CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const override
 Calculate bounding box in the local coordinate system.
 
const MbCubeGetGabarit () const
 Calculate bounding box of surface.
 
const MbCubeCube () const
 Return saved bounding box. It should be empty. It is recommended to use GetGabarit.
 
void SetDirtyGabarit () const
 Make the bounding box empty. For internal use only.
 
void CopyGabarit (const MbSurface &s, const MbVector3D *to=nullptr)
 Copy the bounding box from the copy. More...
 
double GetGabDiagonal () const
 Calculate the diagonal of the bounding box.
 
void CalculateRect (const MbPlacement3D &place, MbRect &rect) const
 Calculate the rectangular bounding box of a surface in the given plane. More...
 
virtual MbContourMakeContour (bool sense) const
 Return the bounding two-dimensional contour. More...
 
virtual MbCurveMakeSegment (size_t i, bool sense) const
 Return a segment of the bounding two-dimensional contour. More...
 
MbCurveMakeCurve (size_t number1, size_t number2) const
 Return a segment of the bounding two-dimensional contour. More...
 
virtual bool SetLimit (double u1, double v1, double u2, double v2)
 Set surface limits. For internal use only.
 
bool SetLimit (const MbRect &)
 Set surface limits. For internal use only.
 
virtual void SetExtendedParamRegion (double u1, double v1, double u2, double v2)
 Set extended limits of surface. For internal use only.
 
virtual void IncludePoint (double u, double v)
 Include a point into domain. For internal use only.
 
double GetMaxParamDeltaU () const
 Get the maximum increment of U-parameter.
 
double GetMaxParamDeltaV () const
 Get the maximum increment of V-parameter.
 
virtual double GetUParamToUnit () const
 Get increment of u-parameter, corresponding to the unit length in space.
 
virtual double GetVParamToUnit () const
 Get increment of v-parameter, corresponding to the unit length in space.
 
virtual double GetUParamToUnit (double u, double v) const
 Get increment of u-parameter, corresponding to the unit length in space.
 
virtual double GetVParamToUnit (double u, double v) const
 Get increment of v-parameter, corresponding to the unit length in space.
 
double GetUParamToUnit (const MbCartPoint &uv) const
 Get increment of u-parameter, corresponding to the unit length in space.
 
double GetVParamToUnit (const MbCartPoint &uv) const
 Get increment of v-parameter, corresponding to the unit length in space.
 
virtual void GetParamsToUnit (double u, double v, double &uParam, double &vParam) const
 Get increment of parameters, corresponding to the unit length in space.
 
double GetUEpsilon () const
 Get the minimum distinguishable value of u-parameter. It corresponds to the length Math::metricEpsilon in space.
 
double GetVEpsilon () const
 Get the minimum distinguishable value of v-parameter. It corresponds to the length Math::metricEpsilon in space.
 
double GetUEpsilon (double u, double v) const
 Get the minimum distinguishable value of u-parameter. It corresponds to the length Math::metricEpsilon in space.
 
double GetVEpsilon (double u, double v) const
 Get the minimum distinguishable value of v-parameter. It corresponds to the length Math::metricEpsilon in space.
 
double GetURegion () const
 Get the minimum distinguishable value of u-parameter. It corresponds to the length Math::metricRegion in space.
 
double GetVRegion () const
 Get the minimum distinguishable value of v-parameter. It corresponds to the length Math::metricRegion in space.
 
double GetURegion (double u, double v) const
 Get the minimum distinguishable value of u-parameter. It corresponds to the length Math::metricRegion in space.
 
double GetVRegion (double u, double v) const
 Get the minimum distinguishable value of v-parameter. It corresponds to the length Math::metricRegion in space.
 
void CalculatePolygon (double minPar, double maxPar, double constPar, MbeParamDir dir, const MbStepData &stepData, MbPolygon3D &polygon) const
 Calculate polygon by u or v. More...
 
virtual void CalculateSurfaceWire (const MbStepData &stepData, size_t beg, MbMesh &mesh, size_t uMeshCount=c3d::WIRE_MAX, size_t vMeshCount=c3d::WIRE_MAX) const
 Calculate mesh. More...
 
void AddTesselation (const MbStepData &stepData, MbeParamDir dir, double u1, double u2, double v1, double v2, SArray< double > &uu, SArray< double > &vv) const
 Determine splitting of the surface parametric region according to direction. More...
 
virtual void CalculateSurfaceGrid (const MbStepData &stepData, bool sense, MbGrid &grid) const
 Approximate a surface by triangular plates. More...
 
virtual bool IsRectangular () const
 Determine whether derivatives with respect to u and v are orthogonal.
 
virtual bool IsLineU () const
 Check that all derivatives of surface with respect to u which have more than first order are equal to null.
 
virtual bool IsLineV () const
 Check that all derivatives of surface with respect to v which have more than first order are equal to null.
 
virtual bool IsShift (const MbSpaceItem &obj, MbVector3D &dir, bool &isSame, double accuracy=LENGTH_EPSILON) const
 Determine whether the object is a translation. More...
 
virtual void CheckSurfParams (double &u, double &v) const
 Check parameters. Analogue of the global function _CheckParams, optimized for caches usage. More...
 
bool GetPlacement (MbPlacement3D *place, bool exact=false) const
 Get a local coordinate system of planar surface (or only a possibility of getting it).
 
bool GetPlanePlacement (MbPlacement3D &place) const
 Get a local coordinate system if a surface is a plane.
 
bool GetControlPlacement (MbPlacement3D &place, bool sameSense=true) const
 Construct a local coordinate system of a surface with origin at the middle point of base surface parametric limits. More...
 
bool OrientPlacement (MbPlacement3D &place, bool normalSense=true) const
 Orient an axis X of a placement along the line of its intersection with surface.
 
bool IsPointOn (const MbCartPoint3D &, double eps=METRIC_PRECISION) const
 Determine whether a point is located on a surface or not.
 
void PointOn (MbCartPoint &uv, MbCartPoint3D &p) const
 Calculate the point on a surface inside the domain of surface.
 
void _PointOn (const MbCartPoint &uv, MbCartPoint3D &p) const
 Calculate a point on a surface extension.
 
void Normal (MbCartPoint &uv, MbVector3D &v) const
 Calculate the normal vector to a surface inside the domain of surface.
 
bool GetMatrix (double xMin, double xMax, double yMin, double yMax, MbMatrix &matr) const
 Find a matrix of transformation for the curves on a surface when the parameterization is changed. More...
 
double GetUMid () const
 The middle value of u.
 
double GetVMid () const
 The middle value of v.
 
double GetURange () const
 Parametric length by u.
 
double GetVRange () const
 Parametric length by v.
 
void GetRect (MbRect &r) const
 Get parametric bounding box.
 
void GetRect (MbRect2D &r) const
 Get parametric bounding box.
 
- Public Member Functions inherited from MbSpaceItem
virtual ~MbSpaceItem ()
 Destructor.
 
void PrepareWrite () const
 Register object. More...
 
MbeRefType RefType () const override
 Get a registration type (for copying, duplication).
 
bool IsFamilyRegistrable () const override
 Whether the object belongs to a registrable family.
 
void CalculateWire (const MbStepData &stepData, MbMesh &mesh) const
 
void CalculateWire (double sag, MbMesh &mesh) const
 
- Public Member Functions inherited from TapeBase
 TapeBase (RegistrableRec regs=noRegistrable)
 Constructor.
 
 TapeBase (const TapeBase &)
 Copy-constructor.
 
virtual ~TapeBase ()
 Destructor.
 
RegistrableRec GetRegistrable () const
 Whether the stream class is registrable.
 
void SetRegistrable (RegistrableRec regs=registrable) const
 Set the state of registration of the stream class.
 
virtual const char * GetPureName (const VersionContainer &) const
 Get the class name.
 
- Public Member Functions inherited from MbRefItem
refcount_t GetUseCount () const
 Get count of references (get count of owners of an object).
 
refcount_t AddRef () const
 Increase count of references by one.
 
refcount_t DecRef () const
 Decrease count of references by one.
 
refcount_t Release () const
 Decrease count of references by one and if count of references became zero, then remove itself.
 
- Public Member Functions inherited from MbNestSyncItem
void Lock () const
 Switch lock on (locking happens only in parallel region).
 
void Unlock () const
 Switch lock off if locking has been set.
 
CommonRecursiveMutexGetLock () const
 Get a pointer to the mutex object. Return nullptr if no parallelism. For use in ScopedLock.
 

Static Public Member Functions

static MbChannelSurfaceCreateLawFillet (double rad, MbFunction &law, MbSurfaceCurve &curv1, bool sgn1, MbSurfaceCurve &curv2, bool sgn2, VERSION vers)
 Create a fillet surface from two surfaces according to the law. More...
 
static MbChannelSurfaceCreateKerbLawFillet (double rad, MbFunction &law, MbSurfaceCurve &curv1, bool sgn1, MbSurfaceCurve &curv2, bool sgn2, bool byFirst, VERSION vers)
 Create fillet surface by support surface and by kerb-curve with a radius that varies according to the law. More...
 
- Static Public Member Functions inherited from MbFilletSurface
static MbFilletSurfaceCreateSimpleFillet (double rad, MbSurfaceCurve &curv1, bool sgn1, MbSurfaceCurve &curv2, bool sgn2, double conicFact, VERSION vers)
 Create a fillet surface by two surfaces with a constant radius. More...
 
static MbFilletSurfaceCreateEllipticalFillet (MbSurfaceCurve &curv1, double rad1, MbSurfaceCurve &curv2, double rad2, VERSION vers)
 Create a fillet surface by two surfaces by an "arc of an ellipse". More...
 
static MbFilletSurfaceCreateChordFillet (double h, MbSurfaceCurve &curv1, bool sgn1, MbSurfaceCurve &curv2, bool sgn2, VERSION vers)
 Create a fillet surface by two surfaces with a constant chord. More...
 
static MbFilletSurfaceCreateKerbFillet (double rad, MbSurfaceCurve &curv1, bool sgn1, MbSurfaceCurve &curv2, bool sgn2, bool byFirst, double conicFact, VERSION vers)
 Create fillet surface a constant radius by support surface and support kerb-curve. More...
 
static MbFilletSurfaceCreateKerbTouchingFillet (MbSurfaceCurve &curv1, bool sgn1, MbSurfaceCurve &curv2, bool sgn2, bool byFirst, VERSION vers)
 Create a fillet surface by two support surfaces, specifying the kerb-curve of touching. More...
 

Protected Member Functions

 MbChannelSurface (MbSurfaceCurve &curv1, double d1, MbSurfaceCurve &curv2, double d2, MbFunction &func)
 Constructor for inheritors of ordinary fillet surface.

 
- Protected Member Functions inherited from MbFilletSurface
 MbFilletSurface (MbSurfaceCurve &curv1, double d1, MbSurfaceCurve &curv2, double d2, MbeSmoothForm fm, double cn, bool ev)
 Constructor for inheritors of ordinary fillet surface.

 
 MbFilletSurface (MbSurfaceCurve &curv1, double d1, MbSurfaceCurve &curv2, double d2, MbeSmoothForm fm, double cn, bool byFirst, bool ev)
 Constructor for inheritors of surface with preservation of fillet.
 
 MbFilletSurface (MbSurface &surf1, MbCurve &curv1, double d1, MbSurface &surf2, MbCurve &curv2, double d2, MbCurve3D &curv0, MbFunction &weig0, MbeSmoothForm fm, double cn, bool ev)
 Constructor of fillet surface with intersection curve of tangents to surfaces.
 
 MbFilletSurface (const MbFilletSurface &, MbRegDuplicate *)
 Copy-constructor.
 
 MbFilletSurface (const MbFilletSurface *)
 Copy-constructor with the same support surfaces.
 
- Protected Member Functions inherited from MbSmoothSurface
 MbSmoothSurface (MbSurfaceCurve &crv1, MbSurfaceCurve &crv2, MbeSmoothForm fm, double d1, double d2)
 Constructor by two curves and conjugation type. More...
 
 MbSmoothSurface (MbSurface &surf1, MbCurve &curv1, MbSurface &surf2, MbCurve &curv2, MbeSmoothForm fm, double d1, double d2)
 Constructor by two curves and conjugation type. More...
 
 MbSmoothSurface (const MbSmoothSurface &, MbRegDuplicate *)
 Copy-constructor.
 
 MbSmoothSurface (const MbSmoothSurface *)
 Copy constructor with the same support surfaces.
 
void CheckParam (double &u, double &v) const
 Correction of parameters.
 
- Protected Member Functions inherited from MbSurface
 MbSurface ()
 Constructor.
 
 MbSurface (const MbSurface &)
 Copy-constructor.
 
void MoveGabarit (const MbVector3D &v)
 Move bounding box.
 
void NormalCalculation (const MbVector3D &uDer, const MbVector3D &vDer, double u, double v, bool ext, MbVector3D &nor) const
 Normal calculation by derivatives uDer and vDer on point with parameters u, v.
 
double StepAlong (double u, double v, double sag, bool alongU, double stepMinCoeff, const MbVector3D &der, const MbVector3D &sec) const
 Step calculation by sag.
 
double DeviationStepAlong (double u, double v, double angle, bool alongU, const MbVector3D &der, const MbVector3D &sec) const
 Step calculation by normal deviation.
 
- Protected Member Functions inherited from MbSpaceItem
 MbSpaceItem ()
 Default constructor.
 
- Protected Member Functions inherited from MbRefItem
 MbRefItem ()
 Constructor without parameters.
 

Additional Inherited Members

- Public Types inherited from MbFilletSurface
enum  MbeFilletSurfaceVersion { fsv_Ver0 = 0 , fsv_Ver1 = 1 , fsv_Count }
 Version of implementation of surface. More...
 
enum  MbeFilletSurfType {
}
 Implemented types of fillets with exact mathematics. More...
 
- Protected Attributes inherited from MbFilletSurface
MbCurve3Dcurve0
 Intersection curve of tangents to surfaces - always not nullptr.
 
MbFunctionweights0
 Function of weight of points of curve0 mid-curve.
 
double conic
 Coefficient of shape is changed between 0.05 and 0.95 and determines weight of points of curve0 curve.
 
bool even
 Whether arc length parameterization is uniform or not.
 
bool equable
 True - ordinary surface, false - curve1 or curve2 is fillet.
 
bool byCurve1
 True - curve2 is fillet, false - curve1 is fillet.
 
MbCurve3Dspine
 Curve of centers of circular arcs in case of uniform parameterization.
 
MbeFilletSurfaceVersion version
 Version.
 
- Protected Attributes inherited from MbSmoothSurface
MbSurfaceCurvecurve1
 Support curve on the first surface (it never equals nullptr).
 
MbSurfaceCurvecurve2
 Support curve on the second surface (it never equals nullptr).
 
MbeSmoothForm form
 Conjugation type.
 
double distance1
 Fillet radius or chamfer "cathetus" with sign for surface of curve1 curve.
 
double distance2
 Fillet radius or chamfer "cathetus" with sign for surface of curve2 curve.
 
double umin
 Minimal value of parameter u.
 
double umax
 Maximal value of parameter u.
 
double vmin
 Minimal value of parameter v.
 
double vmax
 Maximal value of parameter v.
 
bool uclosed
 An attribute of closedness in u-parameter direction.
 
bool poleUMin
 Existence of a pole at umin.
 
bool poleUMax
 Existence of a pole at umax.
 
bool poleVMin
 Existence of a pole at vmin.
 
bool poleVMax
 Existence of a pole at vmax.
 
- Protected Attributes inherited from MbSurface
MbCube cube
 Bounding box of surface. More...
 

Detailed Description

Fillet surface with variable radius is normal or with preservation of edges.

Fillet surface with variable radius is NURBS-surface constructed on three curves: curve1, curve0, curve2. The first surface parameter coincides with the parameter of curve1, curve0, curve2 curves. The second parameter is changed from zero (points coincide with curve1) to unit (points coincide with curve2). Function "function" determines the change of the radius and equals the ratio of the current radius to given for surface. The parameter of radius function coincides with the parameter of curves curve1, curve0, curve2. If coefficient of shape conic = ARC ( 0 ), then the weight of each point of the curve0 curve determined by the function weights0 and calculated so that the section of surface along its second parameter is a circular arc i.e. for any parameter u three points of curve1(u), curve0(u), curve2(u) determine the NURBS-curve with the shape of a circular arc. If coefficient of shape conic != ARC, then the weight of each point of the curve0 curve is equal to conic / ( 1.0 - conic ). If conic = 0.5, then the surface section along its second parameter is parabola.

Constructor & Destructor Documentation

◆ MbChannelSurface() [1/3]

MbChannelSurface::MbChannelSurface ( MbSurfaceCurve curv1,
MbSurfaceCurve curv2,
double  d1,
double  d2,
MbeSmoothForm  fm,
double  cn,
MbFunction func,
bool  ev 
)

Constructor by two curves and type of mate.

Constructor by two curves and type of mate.

Parameters
[in]curv1- Support curve on the first surface
[in]curv2- Support curve on the second surface
[in]d1- Fillet radius with sign for surface of crve1 curve
[in]d2- Fillet radius with sign for surface of crve2 curve
[in]fm- Mate type:
st_Span - fillet with a given chord
st_Fillet - fillet with given radii.
[in]cn- Coefficient of shape is changed from 0.05 to 0.95 (if 0.5 - circular arc)
[in]func- Function of change of the radius
[in]ev- Uniform parametrization by arc or not

◆ MbChannelSurface() [2/3]

MbChannelSurface::MbChannelSurface ( MbSurfaceCurve curv1,
MbSurfaceCurve curv2,
double  d1,
double  d2,
MbeSmoothForm  fm,
double  cn,
MbFunction func,
bool  byFirst,
bool  ev 
)

Constructor by two curves and type of mate.

Constructor of surface with preservation of edges by two curves and mate type.

Parameters
[in]curv1- Support curve on the first surface
[in]curv2- Support curve on the second surface
[in]d1- Fillet radius with sign for surface of crve1 curve
[in]d2- Fillet radius with sign for surface of crve2 curve
[in]fm- Mate type:
st_Span - fillet with a given chord
st_Fillet - fillet with given radii.
[in]cn- Coefficient of shape is changed from 0.05 to 0.95 (if 0.5 - circular arc)
[in]func- Function of change of the radius
[in]byFirst- True - curve2 curve is edge, false - curve1 curve is edge
[in]ev- Uniform parametrization by arc or not

◆ MbChannelSurface() [3/3]

MbChannelSurface::MbChannelSurface ( MbSurface surf1,
MbCurve curv1,
MbSurface surf2,
MbCurve curv2,
MbCurve3D curv0,
MbFunction weig0,
double  d1,
double  d2,
MbeSmoothForm  fm,
double  cn,
MbFunction func,
bool  ev 
)

Constructor by two curves and type of mate.

Constructor of surface with preservation of edges by two curves and mate type.

Parameters
[in]surf1- First surface
[in]curv1- Support curve at parameters of the first surface
[in]surf2- Second surface
[in]curv2- Support curve at parameters of the second surface
[in]curv0- Intersection curve of tangents to surfaces
[in]weig0- Function of change of the weights.
[in]d1- Fillet radius with sign for surface of crve1 curve
[in]d2- Fillet radius with sign for surface of crve2 curve
[in]fm- Mate type:
st_Span - fillet with a given chord
st_Fillet - fillet with given radii.
[in]cn- Coefficient of shape is changed from 0.05 to 0.95 (if 0.5 - circular arc)
[in]func- Function of change of the radius.
[in]byFirst- True - curve2 curve is edge, false - curve1 curve is edge
[in]ev- Uniform parametrization by arc or not

Member Function Documentation

◆ CreateLawFillet()

static MbChannelSurface* MbChannelSurface::CreateLawFillet ( double  rad,
MbFunction law,
MbSurfaceCurve curv1,
bool  sgn1,
MbSurfaceCurve curv2,
bool  sgn2,
VERSION  vers 
)
static

Create a fillet surface from two surfaces according to the law.

If successful, a fillet surface is created with version >= fsv_Ver1.

Parameters
[in]rad- Fillet radius.
[in]law- Multiplication function of radius rad, depending on the parameter u of the surface.
[in]curv1- Support curve at parameters of the first surface
[in]sgn1- The orientation of the first support surface.
[in]curv2- Support curve at parameters of the second surface
[in]sgn2- The orientation of the second support surface.
[in]vers- Version.
Returns
Returns a pointer to the created fillet surface if successful, nullptr otherwise.

◆ CreateKerbLawFillet()

static MbChannelSurface* MbChannelSurface::CreateKerbLawFillet ( double  rad,
MbFunction law,
MbSurfaceCurve curv1,
bool  sgn1,
MbSurfaceCurve curv2,
bool  sgn2,
bool  byFirst,
VERSION  vers 
)
static

Create fillet surface by support surface and by kerb-curve with a radius that varies according to the law.

If successful, a fillet surface is created with version >= fsv_Ver1.

Parameters
[in]rad- Fillet radius.
[in]law- Multiplication function of radius rad, depending on the parameter u of the surface.
[in]curv1- Support curve at parameters of the first surface
[in]sgn1- The orientation of the first support surface.
[in]curv2- Support curve at parameters of the second surface
[in]sgn2- The orientation of the second support surface.
[in]byFirst- True - curve2 curve is edge, false - curve1 curve is edge
[in]vers- Version.
Returns
Returns a pointer to the created fillet surface if successful, nullptr otherwise.

◆ Duplicate()

MbSpaceItem& MbChannelSurface::Duplicate ( MbRegDuplicate iReg = nullptr) const
overridevirtual

Create a copy of the object.

Create a copy of an object using the registrator. Registrator is used to prevent multiple copy of the object. If the object contains references to the other objects, then nested objects are copied as well. It is allowed not to pass registrator into the function. Then new copy of object will be created. While copying of single object or set of not connected objects, it is allowed not to use registrator. Registrator should be used if it is required to copy several connected objects. It is possible, that objects connection is based on the references to common objects. Then, while copying without using of registrator, it is possible to obtain set of copies, that contain references to the different copies of the same nested object, that leads to loss of connection between copies.

Parameters
[in]iReg- Registrator.
Returns
A copy of the object.

Implements MbSpaceItem.

◆ IsSame()

bool MbChannelSurface::IsSame ( const MbSpaceItem other,
double  accuracy = LENGTH_EPSILON 
) const
overridevirtual

Determine whether an object is equal.

Still considered objects of the same type, all data is the same (equal).

Parameters
[in]item- The object to compare.
[in]accuracy- The accuracy to compare.
Returns
Whether the objects are equal.

Implements MbSpaceItem.

◆ SetEqual()

bool MbChannelSurface::SetEqual ( const MbSpaceItem item)
overridevirtual

Make objects equal if they are similar.

You can still make only a similar objects.

Parameters
[in]item- The object to initialize.
Returns
Object is changed.

Implements MbSpaceItem.

◆ IsSimilar()

bool MbChannelSurface::IsSimilar ( const MbSpaceItem item) const
overridevirtual

Determine whether an object is similar.

Such are considered the same objects whose data are similar.

Parameters
[in]item- The object to compare.
Returns
Whether the objects are similar.

Reimplemented from MbSpaceItem.

◆ GetProperties()

void MbChannelSurface::GetProperties ( MbProperties properties)
overridevirtual

Outstanding properties of the object.

Issue internal data (properties) of the object for viewing and modification.

Parameters
[in]properties- Container for the internal data of the object.

Implements MbSpaceItem.

◆ Offset()

MbSurface* MbChannelSurface::Offset ( double  d,
bool  same 
) const
overridevirtual

Create an offset surface.

Parameters
[in]d- Distance by the normal vector from the base surface to the offset surface.
[in]same- A flag showing whether to use the current surface or its copy in offset surface.

Reimplemented from MbSurface.

◆ GetFilletRadius()

double MbChannelSurface::GetFilletRadius ( const MbCartPoint3D p,
double  accuracy = METRIC_REGION 
) const
overridevirtual

Get fillet radius if the surface is a fillet surface with the set accuracy.

Get fillet radius if the surface is a fillet surface with the set accuracy. Accuracy is used to compare surface slices to an arc to find rotation axis.

Parameters
[in]p- Point near which the radius is searched. Used when the radius is variable.
[in]accuracy- Accuracy.
Returns
Fillet radius if possible or 0.

Reimplemented from MbSurface.

◆ InsertPoints()

bool MbChannelSurface::InsertPoints ( double &  t1,
const MbCartPoint p1,
bool  add1,
double &  t2,
const MbCartPoint p2,
bool  add2 
)
overridevirtual

Add a point to the support curves of the boundary.

Add a point to the support curves of the boundary.
A point will be added into a curve if it has a type pt_LineSegment, pt_CubicSpline or pt_Hermit.

Parameters
[out]t1- Parameter of a point on the first curve (if add1 equals true)
[in]p1- Point on the first curve
[in]add1- Whether to add a point to the first curve
[out]t2- Parameter of a point on the second curve (if add2 equals true)
[in]p2- Point on the second curve
[in]add2- Whether to add a point to the second curve

Reimplemented from MbSmoothSurface.

◆ CheckPole()

bool MbChannelSurface::CheckPole ( double &  u,
bool  bModify = true 
)

Check pole availability.

Check pole availability.

Parameters
[in]u- Initial approximation of parameter U to search pole
[in]bModify- Flag of surface modification
if true, then the surface corrects its parameters along U and according to them the support curves curve1 and curve2
Returns
True - if pole has been found

The documentation for this class was generated from the following file: