UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::CADKernel::FRestrictionCurve Class Reference

#include <RestrictionCurve.h>

+ Inheritance diagram for UE::CADKernel::FRestrictionCurve:

Public Member Functions

virtual void Serialize (FCADKernelArchive &Ar) override
 
virtual ECurve GetCurveType () const override
 
const FSurfacicPolylineGetPolyline () const
 
const TSharedRef< FCurveGet2DCurve () const
 
double GetMinLinearTolerance () const
 
TSharedPtr< FEntityGeomApplyMatrix (const FMatrixH &InMatrix) const override
 
FVector2d Approximate2DPoint (double InCoordinate) const
 
FVector Approximate3DPoint (double InCoordinate) const
 
FVector GetTangentAt (double InCoordinate) const
 
FVector2d GetTangent2DAt (double InCoordinate) const
 
void Approximate2DPoints (const TArray< double > &InCoordinates, TArray< FVector2d > &OutPoints) const
 
void Approximate3DPoints (const TArray< double > &InCoordinates, TArray< FVector > &OutPoints) const
 
void ApproximatePolyline (FSurfacicPolyline &OutPolyline) const
 
template<class PointType >
double GetCoordinateOfProjectedPoint (const FLinearBoundary &InBoundary, const PointType &PointOnEdge, PointType &ProjectedPoint) const
 
template<class PointType >
void ProjectPoints (const FLinearBoundary &InBoundary, const TArray< PointType > &InPointsToProject, TArray< double > &ProjectedPointCoordinates, TArray< PointType > &ProjectedPoints) const
 
void ProjectTwinCurvePoints (const FLinearBoundary &InBoundary, const TArray< FVector > &InPointsToProject, bool bSameOrientation, TArray< double > &OutProjectedPointCoords, double ToleranceOfProjection) const
 
void ComputeIntersectionsWithIsos (const FLinearBoundary &InBoundary, const TArray< double > &InIsoCoordinates, const EIso InTypeIso, const FSurfacicTolerance &ToleranceIso, TArray< double > &OutIntersection) const
 
void CheckIfDegenerated (const FLinearBoundary &InBoundary, bool &bDegeneration2D, bool &bDegeneration3D, double &Length3D) const
 
void GetExtremities (const FLinearBoundary &InBoundary, FSurfacicCurveExtremities &Extremities) const
 
double GetToleranceAt (const double InCoordinate)
 
FVector2d GetExtremityTolerances (const FLinearBoundary &InBoundary)
 
int32 GetPolylineSize ()
 
template<class PointType >
void GetDiscretizationPoints (const FLinearBoundary &InBoundary, EOrientation Orientation, TArray< PointType > &OutPoints) const
 
template<class PointType >
void GetDiscretizationPoints (const FLinearBoundary &InBoundary, TArray< double > &OutCoordinates, TArray< PointType > &OutPoints) const
 
void Sample (const FLinearBoundary &InBoundary, const double DesiredSegmentLength, TArray< double > &OutCoordinates) const
 
double ApproximateLength (const FLinearBoundary &InBoundary) const
 
void ExtendTo (const FVector2d &Point) override
 
bool IsIso (EIso Iso, double ErrorTolerance=DOUBLE_SMALL_NUMBER) const
 
void Offset2D (const FVector2d &OffsetDirection)
 
virtual void Offset (const FVector &OffsetDirection) override
 
- Public Member Functions inherited from UE::CADKernel::FSurfacicCurve
virtual void SpawnIdent (FDatabase &Database) override
 
virtual void ResetMarkersRecursively () const override
 
const TSharedPtr< FCurve > & Get2DCurve () const
 
TSharedPtr< FCurve > & Get2DCurve ()
 
const TSharedRef< FSurfaceGetCarrierSurface () const
 
void Set2DCurve (TSharedPtr< FCurve > &NewCurve2D)
 
const TSharedPtr< FSurface > & GetSurface () const
 
TSharedPtr< FSurface > & GetSurface ()
 
virtual void EvaluatePoint (double Coordinate, FCurvePoint &OutPoint, int32 DerivativeOrder=0) const override
 
virtual void Evaluate2DPoint (double Coordinate, FCurvePoint2D &OutPoint, int32 DerivativeOrder=0) const override
 
virtual void Evaluate2DPoint (double Coordinate, FVector2d &OutPoint) const override
 
virtual void EvaluatePoints (const TArray< double > &Coordinates, TArray< FCurvePoint > &OutPoints, int32 DerivativeOrder=0) const override
 
void EvaluateSurfacicPolyline (FSurfacicPolyline &OutPolyline) const
 
virtual void Evaluate2DPoints (const TArray< double > &Coordinates, TArray< FVector2d > &OutPoints) const override
 
virtual void Evaluate2DPoints (const TArray< double > &Coordinates, TArray< FCurvePoint2D > &OutPoints, int32 DerivativeOrder=0) const override
 
virtual void FindNotDerivableCoordinates (const FLinearBoundary &InBoundary, int32 DerivativeOrder, TArray< double > &OutNotDerivableCoordinates) const override
 
- Public Member Functions inherited from UE::CADKernel::FCurve
int32 GetDimension () const
 
virtual EEntity GetEntityType () const override
 
double GetUMin () const
 
double GetUMax () const
 
const FLinearBoundaryGetBoundary () const
 
virtual double GetLength (double Tolerance) const
 
virtual FVector EvaluatePoint (double Coordinate) const
 
virtual FVector2d Evaluate2DPoint (double Coordinate) const
 
virtual void EvaluatePoints (const TArray< double > &Coordinates, TArray< FVector > &OutPoints) const
 
void FindNotDerivableCoordinates (int32 DerivativeOrder, TArray< double > &OutNotDerivableCoordinates) const
 
void Presample (TArray< double > &OutSampling, double Tolerance) const
 
virtual void Presample (const FLinearBoundary &InBoundary, double Tolerance, TArray< double > &OutSampling) const
 
virtual TSharedPtr< FCurveMakeBoundedCurve (const FLinearBoundary &InBoundary)
 
virtual TSharedPtr< FCurveRebound (const FLinearBoundary &InBoundary)
 
virtual void ExtendTo (const FVector &DesiredPosition)
 
- Public Member Functions inherited from UE::CADKernel::FEntityGeom
 FEntityGeom ()=default
 
FIdent GetKioId () const
 
- Public Member Functions inherited from UE::CADKernel::FEntity
virtual ~FEntity ()
 
virtual void Delete ()
 
virtual void Empty ()
 
bool IsTopologicalEntity () const
 
bool IsTopologicalShapeEntity () const
 
bool IsGeometricalEntity ()
 
const TCHARGetTypeName () const
 
const FIdentGetId () const
 
- Public Member Functions inherited from TSharedFromThis< FEntity >
TSharedRef< FEntity, Mode > AsShared ()
 
TSharedRef< FEntity const, Mode > AsShared () const
 
TSharedRef< SubobjectType, Mode > AsSharedSubobject (SubobjectType *SubobjectPtr) const
 
TWeakPtr< FEntity, Mode > AsWeak ()
 
TWeakPtr< FEntity const, Mode > AsWeak () const
 
TWeakPtr< SubobjectType, Mode > AsWeakSubobject (SubobjectType *SubobjectPtr) const
 
void UpdateWeakReferenceInternal (TSharedPtr< SharedPtrType, SharedPtrMode > const *InSharedPtr, OtherType *InObject) const
 
void UpdateWeakReferenceInternal (TSharedRef< SharedRefType, SharedPtrMode > const *InSharedRef, OtherType *InObject) const
 
UE_FORCEINLINE_HINT bool DoesSharedInstanceExist () const
 
- Public Member Functions inherited from UE::CADKernel::FHaveStates
 FHaveStates ()
 
void Serialize (FCADKernelArchive &Ar)
 
void ResetElementStatus ()
 
bool HasMarker1 () const
 
bool HasMarker2 () const
 
bool HasMarker1And2 () const
 
bool HasMarker1Or2 () const
 
void SetMarker1 () const
 
void SetMarker2 () const
 
void ResetMarker1 () const
 
void ResetMarker2 () const
 
void ResetMarkers () const
 
bool IsDeleted () const
 
void SetDeletedMarker () const
 
void ResetDeleted () const
 
virtual bool IsDeletedOrDegenerated () const
 
virtual bool IsDegenerated () const
 
virtual void SetAsDegenerated () const
 
virtual void ResetDegenerated () const
 
void SetWaitingMarker () const
 
void ResetWaitingMarker () const
 
virtual bool IsWaiting () const
 
void SetProcessedMarker () const
 
void ResetProcessedMarker () const
 
virtual bool IsProcessed () const
 
virtual bool IsProcessedDeletedOrDegenerated () const
 
void SetToProcessMarker () const
 
void ResetToProcessMarker () const
 
virtual bool IsToProcess () const
 
virtual bool IsNotToProcess () const
 
virtual bool IsNotToOrAlreadyProcess () const
 

Protected Member Functions

 FRestrictionCurve (TSharedRef< FSurface > InCarrierSurface, TSharedRef< FCurve > InCurve2D)
 
 FRestrictionCurve ()=default
 
- Protected Member Functions inherited from UE::CADKernel::FSurfacicCurve
 FSurfacicCurve (TSharedRef< FCurve > InCurve2D, TSharedRef< FSurface > InSurface)
 
 FSurfacicCurve ()=default
 
- Protected Member Functions inherited from UE::CADKernel::FCurve
 FCurve (int8 InDimension=3)
 
 FCurve (const FLinearBoundary &InBounds, int8 InDimension=3)
 
virtual double ComputeLength (const FLinearBoundary &InBoundary, double Tolerance) const
 
virtual double ComputeLength2D (const FLinearBoundary &InBoundary, double Tolerance) const
 
- Protected Member Functions inherited from UE::CADKernel::FEntity
bool SetId (FDatabase &Database)
 
- Protected Member Functions inherited from TSharedFromThis< FEntity >
 TSharedFromThis ()
 
 TSharedFromThis (TSharedFromThis const &)
 
UE_FORCEINLINE_HINT TSharedFromThisoperator= (TSharedFromThis const &)
 
 ~TSharedFromThis ()
 

Protected Attributes

FSurfacicPolyline Polyline
 
double MinLinearTolerance
 
- Protected Attributes inherited from UE::CADKernel::FSurfacicCurve
TSharedPtr< FCurveCurve2D
 
TSharedPtr< FSurfaceCarrierSurface
 
- Protected Attributes inherited from UE::CADKernel::FCurve
TCache< doubleGlobalLength
 
FLinearBoundary Boundary
 
int8 Dimension
 
- Protected Attributes inherited from UE::CADKernel::FEntityGeom
FIdent CtKioId = 0
 
- Protected Attributes inherited from UE::CADKernel::FEntity
FIdent Id = 0
 
- Protected Attributes inherited from UE::CADKernel::FHaveStates
EHaveStates States
 

Friends

class FEntity
 
class FTopologicalEdge
 

Additional Inherited Members

- Static Public Member Functions inherited from UE::CADKernel::FCurve
static TSharedPtr< FCurveMakeNurbsCurve (FNurbsCurveData &InNurbsData)
 
static TSharedPtr< FCurveMakeBezierCurve (const TArray< FVector > &InPoles)
 
static TSharedPtr< FCurveMakeSplineCurve (const TArray< FVector > &InPoles)
 
static TSharedPtr< FCurveMakeSplineCurve (const TArray< FVector > &InPoles, const TArray< FVector > &Tangents)
 
static TSharedPtr< FCurveMakeSplineCurve (const TArray< FVector > &InPoles, const TArray< FVector > &ArriveTangents, const TArray< FVector > &LeaveTangents)
 
static TSharedPtr< FEntityDeserialize (FCADKernelArchive &Archive)
 
- Static Public Member Functions inherited from UE::CADKernel::FEntity
template<typename OtherEntity , typename... InArgTypes>
static TSharedRef< OtherEntity > MakeShared (InArgTypes &&... Args)
 
template<typename OtherEntity >
static TSharedRef< OtherEntity > MakeShared (FCADKernelArchive &Archive)
 
static void SerializeIdent (FCADKernelArchive &Ar, TSharedPtr< FEntity > &Entity, bool bSaveSelection=true)
 
static void SerializeIdent (FCADKernelArchive &Ar, TWeakPtr< FEntity > &Entity, bool bSaveSelection=true)
 
static void SerializeIdent (FCADKernelArchive &Ar, FEntity **Entity, bool bSaveSelection=true)
 
template<typename EntityType >
static void SerializeIdent (FCADKernelArchive &Ar, EntityType **Entity, bool bSaveSelection=true)
 
template<typename EntityType >
static void SerializeIdent (FCADKernelArchive &Ar, TSharedPtr< EntityType > &Entity, bool bSaveSelection=true)
 
template<typename EntityType >
static void SerializeIdent (FCADKernelArchive &Ar, TWeakPtr< EntityType > &Entity, bool bSaveSelection=true)
 
static void SerializeIdents (FCADKernelArchive &Ar, TArray< FEntity * > &Array, bool bSaveSelection=true)
 
static void SerializeIdents (FCADKernelArchive &Ar, TArray< TWeakPtr< FEntity > > &Array, bool bSaveSelection=true)
 
static void SerializeIdents (FCADKernelArchive &Ar, TArray< TSharedPtr< FEntity > > &Array, bool bSaveSelection=true)
 
static void SerializeIdents (FCADKernelArchive &Ar, TArray< TOrientedEntity< FEntity > > &Array)
 
template<typename EntityType >
static void SerializeIdents (FCADKernelArchive &Ar, TArray< EntityType * > &Array, bool bSaveSelection=true)
 
template<typename EntityType >
static void SerializeIdents (FCADKernelArchive &Ar, TArray< TWeakPtr< EntityType > > &Array, bool bSaveSelection=true)
 
template<typename EntityType >
static void SerializeIdents (FCADKernelArchive &Ar, TArray< TSharedPtr< EntityType > > &Array, bool bSaveSelection=true)
 
static void SpawnIdentOnEntities (TArray< FEntity * > &Array, FDatabase &Database)
 
static void SpawnIdentOnEntities (TArray< TSharedPtr< FEntity > > &Array, FDatabase &Database)
 
static void SpawnIdentOnEntities (TArray< TOrientedEntity< FEntity > > &Array, FDatabase &Database)
 
template<typename EntityType >
static void SpawnIdentOnEntities (TArray< TSharedPtr< EntityType > > &Array, FDatabase &Database)
 
static void ResetMarkersRecursivelyOnEntities (const TArray< FEntity * > &Array)
 
static void ResetMarkersRecursivelyOnEntities (const TArray< TWeakPtr< FEntity > > &Array)
 
static void ResetMarkersRecursivelyOnEntities (const TArray< TSharedPtr< FEntity > > &Array)
 
static void ResetMarkersRecursivelyOnEntities (const TArray< TOrientedEntity< FEntity > > &Array)
 
template<typename EntityType >
static void ResetMarkersRecursivelyOnEntities (const TArray< TSharedPtr< EntityType > > &Array)
 
static TSharedPtr< FEntityDeserialize (FCADKernelArchive &Ar)
 
static const TCHARGetTypeName (EEntity Type)
 
- Static Protected Member Functions inherited from TSharedFromThis< FEntity >
static UE_FORCEINLINE_HINT TSharedRef< OtherType, Mode > SharedThis (OtherType *ThisPtr)
 
static UE_FORCEINLINE_HINT TSharedRef< OtherType const, Mode > SharedThis (const OtherType *ThisPtr)
 
- Static Protected Attributes inherited from UE::CADKernel::FEntity
static const TCHARTypesNames []
 

Detailed Description

A restriction curve is the curve carrying an edge

It's defined by

Constructor & Destructor Documentation

◆ FRestrictionCurve() [1/2]

UE::CADKernel::FRestrictionCurve::FRestrictionCurve ( TSharedRef< FSurface InCarrierSurface,
TSharedRef< FCurve InCurve2D 
)
inlineprotected

◆ FRestrictionCurve() [2/2]

UE::CADKernel::FRestrictionCurve::FRestrictionCurve ( )
protecteddefault

Member Function Documentation

◆ ApplyMatrix()

TSharedPtr< FEntityGeom > UE::CADKernel::FRestrictionCurve::ApplyMatrix ( const FMatrixH InMatrix) const
inlineoverridevirtual

Reimplemented from UE::CADKernel::FSurfacicCurve.

◆ Approximate2DPoint()

FVector2d UE::CADKernel::FRestrictionCurve::Approximate2DPoint ( double  InCoordinate) const
inline

Fast computation of the point in the parametric space of the carrier surface. This approximation is based on FSurfacicPolyline::Polyline

◆ Approximate2DPoints()

void UE::CADKernel::FRestrictionCurve::Approximate2DPoints ( const TArray< double > &  InCoordinates,
TArray< FVector2d > &  OutPoints 
) const
inline

Fast computation of the point in the parametric space of the carrier surface. This approximation is based on FSurfacicPolyline::Polyline

◆ Approximate3DPoint()

FVector UE::CADKernel::FRestrictionCurve::Approximate3DPoint ( double  InCoordinate) const
inline

Fast computation of the point in the parametric space of the carrier surface. This approximation is based on FSurfacicPolyline::Polyline

◆ Approximate3DPoints()

void UE::CADKernel::FRestrictionCurve::Approximate3DPoints ( const TArray< double > &  InCoordinates,
TArray< FVector > &  OutPoints 
) const
inline

Fast computation of the 3D point of the curve. This approximation is based on FSurfacicPolyline::Polyline

◆ ApproximateLength()

double UE::CADKernel::FRestrictionCurve::ApproximateLength ( const FLinearBoundary InBoundary) const
inline

◆ ApproximatePolyline()

void UE::CADKernel::FRestrictionCurve::ApproximatePolyline ( FSurfacicPolyline OutPolyline) const
inline

Approximation of surfacic polyline (points 2d, 3d, normals, tangents) defined by its coordinates compute with carrier surface polyline

◆ CheckIfDegenerated()

void UE::CADKernel::FRestrictionCurve::CheckIfDegenerated ( const FLinearBoundary InBoundary,
bool bDegeneration2D,
bool bDegeneration3D,
double Length3D 
) const
inline

A check is done to verify that:

  • the curve is degenerated in the parametric space of the carrier surface i.e. the 2D length of the curve is not nearly equal to zero
  • the curve is degenerated in 3D i.e. the 3D length of the curve is not nearly equal to zero

A curve can be degenerated in 3D and not in 2D in the case of locally degenerated carrier surface.

◆ ComputeIntersectionsWithIsos()

void UE::CADKernel::FRestrictionCurve::ComputeIntersectionsWithIsos ( const FLinearBoundary InBoundary,
const TArray< double > &  InIsoCoordinates,
const EIso  InTypeIso,
const FSurfacicTolerance ToleranceIso,
TArray< double > &  OutIntersection 
) const
inline

◆ ExtendTo()

void UE::CADKernel::FRestrictionCurve::ExtendTo ( const FVector2d DesiredPosition)
overridevirtual

Linear deformation of the curve along the axis [Start point, End point] so that the nearest extremity is at the desired position and the other is not modified

Reimplemented from UE::CADKernel::FCurve.

◆ Get2DCurve()

const TSharedRef< FCurve > UE::CADKernel::FRestrictionCurve::Get2DCurve ( ) const
inline

◆ GetCoordinateOfProjectedPoint()

template<class PointType >
double UE::CADKernel::FRestrictionCurve::GetCoordinateOfProjectedPoint ( const FLinearBoundary InBoundary,
const PointType &  PointOnEdge,
PointType &  ProjectedPoint 
) const
inline

◆ GetCurveType()

virtual ECurve UE::CADKernel::FRestrictionCurve::GetCurveType ( ) const
inlineoverridevirtual

Reimplemented from UE::CADKernel::FSurfacicCurve.

◆ GetDiscretizationPoints() [1/2]

template<class PointType >
void UE::CADKernel::FRestrictionCurve::GetDiscretizationPoints ( const FLinearBoundary InBoundary,
EOrientation  Orientation,
TArray< PointType > &  OutPoints 
) const
inline

Get the sub polyline bounded by the input InBoundary in the orientation of the input InOrientation and append it to the output OutPoints

◆ GetDiscretizationPoints() [2/2]

template<class PointType >
void UE::CADKernel::FRestrictionCurve::GetDiscretizationPoints ( const FLinearBoundary InBoundary,
TArray< double > &  OutCoordinates,
TArray< PointType > &  OutPoints 
) const
inline

Get the sub polyline bounded by the input InBoundary in the orientation of the input InOrientation and append it to the output OutPoints

◆ GetExtremities()

void UE::CADKernel::FRestrictionCurve::GetExtremities ( const FLinearBoundary InBoundary,
FSurfacicCurveExtremities Extremities 
) const
inline

◆ GetExtremityTolerances()

FVector2d UE::CADKernel::FRestrictionCurve::GetExtremityTolerances ( const FLinearBoundary InBoundary)
inline

◆ GetMinLinearTolerance()

double UE::CADKernel::FRestrictionCurve::GetMinLinearTolerance ( ) const
inline

◆ GetPolyline()

const FSurfacicPolyline & UE::CADKernel::FRestrictionCurve::GetPolyline ( ) const
inline

◆ GetPolylineSize()

int32 UE::CADKernel::FRestrictionCurve::GetPolylineSize ( )
inline
Returns
the size of the polyline i.e. the count of points.

◆ GetTangent2DAt()

FVector2d UE::CADKernel::FRestrictionCurve::GetTangent2DAt ( double  InCoordinate) const
inline

◆ GetTangentAt()

FVector UE::CADKernel::FRestrictionCurve::GetTangentAt ( double  InCoordinate) const
inline

◆ GetToleranceAt()

double UE::CADKernel::FRestrictionCurve::GetToleranceAt ( const double  InCoordinate)
inline

◆ IsIso()

bool UE::CADKernel::FRestrictionCurve::IsIso ( EIso  Iso,
double  ErrorTolerance = DOUBLE_SMALL_NUMBER 
) const
inline

◆ Offset()

virtual void UE::CADKernel::FRestrictionCurve::Offset ( const FVector OffsetDirection)
inlineoverridevirtual

must not be call

Reimplemented from UE::CADKernel::FSurfacicCurve.

◆ Offset2D()

void UE::CADKernel::FRestrictionCurve::Offset2D ( const FVector2d OffsetDirection)

◆ ProjectPoints()

template<class PointType >
void UE::CADKernel::FRestrictionCurve::ProjectPoints ( const FLinearBoundary InBoundary,
const TArray< PointType > &  InPointsToProject,
TArray< double > &  ProjectedPointCoordinates,
TArray< PointType > &  ProjectedPoints 
) const
inline

◆ ProjectTwinCurvePoints()

void UE::CADKernel::FRestrictionCurve::ProjectTwinCurvePoints ( const FLinearBoundary InBoundary,
const TArray< FVector > &  InPointsToProject,
bool  bSameOrientation,
TArray< double > &  OutProjectedPointCoords,
double  ToleranceOfProjection 
) const
inline

Project a set of points of a twin curve on the 3D polyline and return the coordinate of the projected point

Parameters
ToleranceOfProjectionMax error between the both curve to stop the search of projection of a point

◆ Sample()

void UE::CADKernel::FRestrictionCurve::Sample ( const FLinearBoundary InBoundary,
const double  DesiredSegmentLength,
TArray< double > &  OutCoordinates 
) const
inline

Samples the sub curve limited by the boundary respecting the input Desired segment length

◆ Serialize()

virtual void UE::CADKernel::FRestrictionCurve::Serialize ( FCADKernelArchive Ar)
inlineoverridevirtual

Serialization of a FEntity. Each class derived from FEntity has to override this method (and call the direct base class override method first) E.g. class FEntityXXX : public FEntityXX { virtual void Serialize(FCADKernelArchive& Ar) override { FEntityXX::Serialize(Ar); ... } }

Reimplemented from UE::CADKernel::FSurfacicCurve.

Friends And Related Symbol Documentation

◆ FEntity

friend class FEntity
friend

◆ FTopologicalEdge

friend class FTopologicalEdge
friend

Member Data Documentation

◆ MinLinearTolerance

double UE::CADKernel::FRestrictionCurve::MinLinearTolerance
protected

◆ Polyline

FSurfacicPolyline UE::CADKernel::FRestrictionCurve::Polyline
protected

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