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

Namespaces

namespace  Analyzer
 
namespace  ArrayUtils
 
namespace  BSpline
 
namespace  CurveUtilities
 
namespace  Editor
 
namespace  GridSpace
 
namespace  Ident
 
namespace  IntersectionIsoSegmentTool
 
namespace  IntersectionSegmentTool
 
namespace  IntersectionTool
 
namespace  IntersectionToolBase
 
namespace  IsoTriangulatorImpl
 
namespace  LoopCleanerImpl
 
namespace  MeshConst
 
namespace  ParametricMesherTool
 
namespace  Polygon
 
namespace  PolylineTools
 
namespace  SewOption
 
namespace  ShellTools
 
namespace  Slope
 
namespace  SurfaceUtilities
 
namespace  ThinZone2DFinderTool
 
namespace  ThinZoneMesherTools
 
namespace  Topo
 
namespace  TopologicalFaceUtilities
 
namespace  TopologicalLoopImpl
 
namespace  TopomakerTools
 
namespace  Utils
 

Classes

class  F3DDebugSegment
 
class  F3DDebugSession
 
class  FAABB
 
class  FAABB2D
 
struct  FAdditionalIso
 
class  FAngleCriterion
 
struct  FBBoxWithNormal
 
class  FBezierCurve
 
class  FBezierSurface
 
class  FBody
 
struct  FBodyShell
 
class  FBoundedCurve
 
class  FBowyerWatsonTriangulator
 
class  FCADKernelArchive
 
struct  FCandidateNode
 
struct  FCell
 
struct  FCellConnexion
 
struct  FCellCorner
 
struct  FCellLoop
 
struct  FCellPath
 
class  FChrono
 
class  FCompositeCurve
 
class  FCompositeSurface
 
class  FConeSurface
 
class  FConsole
 
class  FCoonsSurface
 
struct  FCoordinateGrid
 
class  FCriteriaGrid
 
class  FCriterion
 
class  FCurvatureCriterion
 
class  FCurve
 
class  FCurve2DSamplerOnChord
 
struct  FCurvePoint
 
struct  FCurvePoint2D
 
class  FCurveSamplerOnChord
 
class  FCurveSamplerOnParam
 
struct  FCuttingGrid
 
struct  FCuttingPoint
 
class  FCycleTriangulator
 
class  FCylinderSurface
 
class  FDatabase
 
class  FDichotomyFinder
 
struct  FEdge2DProperties
 
class  FEdgeMesh
 
class  FEdgeSegment
 
class  FEllipseCurve
 
class  FEntity
 
class  FEntityGeom
 
class  FFaceAnalyzer
 
class  FFaceMesh
 
struct  FFaceSubset
 
class  FGrid
 
class  FGridBase
 
struct  FGridChronos
 
class  FGroup
 
class  FHaveStates
 
class  FHyperbolaCurve
 
struct  FImposedCuttingPoint
 
class  FIndexOfCoordinateFinder
 
class  FIntersectionIsoSegmentTool
 
class  FIntersectionSegmentTool
 
struct  FIsoCurvature
 
class  FIsoCurve3DSamplerOnChord
 
class  FIsoInnerNode
 
class  FIsoNode
 
class  FIsoSegment
 
class  FIsoTriangulator
 
struct  FIsoTriangulatorChronos
 
struct  FLinearBoundary
 
class  FLinearFinder
 
class  FLoopCleaner
 
class  FLoopNode
 
class  FMatrixH
 
class  FMaxSizeCriterion
 
class  FMesh
 
class  FMesher
 
class  FMesherTools
 
struct  FMeshExtractionContext
 
class  FMeshingTolerances
 
class  FMessage
 
class  FMetadataDictionary
 
class  FMinSizeCriterion
 
class  FModel
 
class  FModelMesh
 
class  FModelMeshAnalyzer
 
class  FNURBSCurve
 
struct  FNurbsCurveData
 
class  FNURBSSurface
 
struct  FNurbsSurfaceData
 
struct  FNurbsSurfaceHomogeneousData
 
class  FOffsetSurface
 
class  FOrientedCurve
 
class  FOrientedEdge
 
class  FOrientedFace
 
struct  FPairOfIndex
 
class  FParabolaCurve
 
class  FParametricFaceMesher
 
class  FParametricMesher
 
class  FPlaneSurface
 
class  FPolyline2D
 
class  FPolyline2DCurve
 
struct  FPolylineBBox
 
class  FPolylineCurve
 
class  FProgress
 
class  FProgressManager
 
class  FRestrictionCurve
 
class  FRetessellationUtils
 
class  FRevolutionSurface
 
class  FRuledSurface
 
class  FSagCriterion
 
class  FSegmentCurve
 
class  FSession
 
class  FShell
 
class  FSizeCriterion
 
class  FSphericalSurface
 
class  FSplineCurve
 
class  FSurface
 
struct  FSurfaceCurvature
 
class  FSurfaceSamplerOnParam
 
class  FSurfacicBoundary
 
class  FSurfacicCurve
 
struct  FSurfacicCurvePoint
 
struct  FSurfacicCurvePointWithTolerance
 
class  FSurfacicCurveSamplerOnParam
 
struct  FSurfacicPoint
 
class  FSurfacicPolyline
 
struct  FSurfacicSampling
 
class  FSystem
 
class  FTabulatedCylinderSurface
 
struct  FTechSoftImportOverrides
 
struct  FTessellationContext
 
class  FThinZone2D
 
class  FThinZone2DFinder
 
struct  FThinZoneChronos
 
class  FThinZoneSide
 
class  FTopologicalEdge
 
class  FTopologicalEntity
 
class  FTopologicalFace
 
class  FTopologicalLoop
 
class  FTopologicalShapeEntity
 
class  FTopologicalVertex
 
class  FTopomaker
 
struct  FTopomakerOptions
 
class  FTorusSurface
 
struct  FTriangle
 
struct  FTriangle2D
 
struct  FUnitConverter
 
class  FVectorUtil
 
class  FVertexLink
 
class  FVertexMesh
 
class  FVisu
 
class  TAABB
 
class  TCache
 
class  TCurveSamplerAbstract
 
class  TFactory
 
class  TIntersectionSegmentTool
 
class  TLinkable
 
class  TOrientedEntity
 
class  TPolyline
 
class  TPolylineApproximator
 
class  TPolylineCurve
 
class  TSamplerBasedOnChordError
 
class  TSamplerBasedOnParametrizationAndChordError
 
struct  TSegment
 
class  TTopologicalLink
 
struct  TTriangle
 

Typedefs

typedef TFunction< double(const FVector2d &, const FVector2d &, double)> SlopeMethod
 
typedef TFunction< int32(int32)> NextIndexMethod
 
using FNodeIntersectionCount = TPair< FCandidateNode *, int32 >
 
using FMeshPolygonFunc = TFunction< void(const FGrid &, FIsoNode *[], FFaceMesh &)>
 
typedef uint64 FTimePoint
 
typedef uint64 FDuration
 
typedef FSurfacicCurvePointWithTolerance FSurfacicCurveExtremities[2]
 
typedef TPolyline< FVectorFPolyline3D
 
using FSegment2D = TSegment< FVector2d >
 
using FSegment3D = TSegment< FVector >
 
typedef FVector2d FSurfacicTolerance
 
using FReserveContainerFunc = TFunction< void(int32)>
 
using FAddMeshNodeFunc = TFunction< void(const int32, const FVector2d &, const double, const FEdgeSegment &, const FPairOfIndex &)>
 
typedef TTopologicalLink< FTopologicalEdgeFEdgeLink
 
using FAddCuttingPointFunc = TFunction< void(const double, const ECoordinateType, const FPairOfIndex, const double)>
 

Enumerations

enum class  EGroupOrigin : uint8 { Unknown , CADGroup , CADLayer , CADColor }
 
enum class  EConnectionType : uint8 { DoesntStartFrom = 0 , StartFrom , SuperimposedByOrOn , SameSegment }
 
enum class  EIsoLink : uint8 { IsoUNext = 0 , IsoVNext = 1 , IsoUPrevious = 2 , IsoVPrevious = 3 }
 
enum class  EIsoNodeStates : uint16 {
  None = 0x0000u , LinkedToPreviousU = 0x0001u , LinkedToNextU = 0x0002u , LinkedToPreviousV = 0x0004u ,
  LinkedToNextV = 0x0008u , NodeComplete = 0x000Fu , LinkedToLoop = 0x0010u , InnerMeshLoop = 0x0020u ,
  ThinZoneNode = 0x0040u , Delete = 0x0080u , FirstQuarter = 0x0100u , SecondQuarter = 0x0200u ,
  ThirdQuarter = 0x0400u , FourthQuarter = 0x0800u , NearlyIsoU = 0x1000u , NearlyIsoV = 0x2000u ,
  HasMarker1 = 0x4000u , HasMarker2 = 0x8000u , All = 0xFFFFu
}
 
enum class  ESegmentType : uint8 {
  Unknown = 0 , Loop = 1 , ThinZone = 2 , IsoU ,
  IsoV , LoopToLoop , IsoLoopToLoop , InnerToLoopU ,
  InnerToLoopV , InnerToLoop
}
 
enum class  EIsoSegmentStates : uint8 {
  None = 0x00u , Candidate = 0x01u , LeftCycle = 0x02u , RightCycle = 0x04u ,
  Degenerate = 0x08u , LeftTriangle = 0x10u , RightTriangle = 0x20u , SegmentComplete = 0x30u ,
  Final = 0x40u , Delete = 0x80u , All = 0xFFu
}
 
enum class  ENodeMarker : uint8 {
  None = 0x00u , IsInside = 0x01u , IsInsideButTooCloseToLoop = 0x02u , IsCloseToLoop = 0x04u ,
  All = 0xFFu
}
 
enum class  EEntity : uint8 {
  None = 0 , Curve , Surface , EdgeLink ,
  VertexLink , TopologicalEdge , TopologicalFace , TopologicalLink ,
  TopologicalLoop , TopologicalVertex , Shell , Body ,
  Model , MeshModel , Mesh , Group ,
  Criterion , Property , EntityTypeEnd
}
 
enum class  ETimeUnit : uint8 { NanoSeconds = 0 , MicroSeconds = 1 , MilliSeconds , Seconds }
 
enum class  EValue : uint8 {
  Entity , OrientedEntity , Point , Matrix ,
  Integer , Double , String , Boolean ,
  Tuple , List , Array
}
 
enum  EVerboseLevel : uint8 { NoVerbose = 0 , Spy , Log , Debug }
 
enum class  ECurve : uint8 {
  Bezier = 0 , BoundedCurve , Composite , Ellipse ,
  Hyperbola , Nurbs , Offset , Parabola ,
  Polyline3D , Polyline2D , Restriction , Segment ,
  Surfacic , SurfacicPolyline , Spline , None
}
 
enum class  ESurface : uint8 {
  Bezier = 0 , Blend01 , Blend02 , Blend03 ,
  Composite , Cone , Coons , Cylinder ,
  Nurbs , Offset , Plane , Revolution ,
  Ruled , Sphere , TabulatedCylinder , Torus ,
  None
}
 
enum class  ERupture : uint8 { Continuity = 0 , Tangency , Curvature }
 
enum  EIso : uint8 { IsoU = 0 , IsoV = 1 , UndefinedIso }
 
enum  EOrientation : uint8 { Back = 0 , Front = 1 }
 
enum  ESituation : uint8 { Undefined = 0 , Inside , Outside }
 
enum  ELimit : uint8 { Start = 0 , End = 1 }
 
enum  EPolygonSide : uint8 {
  Side01 = 0 , Side12 , Side20 , Side23 ,
  Side30
}
 
enum class  ECriterion : uint8 {
  Size = 0 , MaxSize = 1 , MinSize = 2 , Angle = 3 ,
  Sag = 4 , CADCurvature = 5 , None = 255
}
 
enum  EGridSpace : uint8 { Default2D = 0 , Scaled = 1 , UniformScaled = 2 , EndGridSpace }
 
enum  EMeshingState : uint8 { NotMeshed = 0 , PartiallyMeshed , FullyMeshed }
 
enum  ECoordinateType : uint8 {
  VertexCoordinate , ImposedCoordinate , IsoUCoordinate , IsoVCoordinate ,
  IsoUVCoordinate , OtherCoordinate
}
 
enum class  EThinZone2DType : uint8 {
  Undefined = 0 , Global , PeakStart , PeakEnd ,
  Butterfly , BetweenLoops , TooSmall
}
 
enum class  ESide : uint8 { First = 0 , Second , None }
 
enum class  EStatut : uint8 { Interior = 0 , Exterior , Border }
 
enum class  EQuadType : uint8 { Unset = 0 , Quadrangular , Triangular , Other }
 
enum class  ESewOption : uint8 {
  None = 0x00u , ForceJoining = 0x01u , RemoveThinFaces = 0x02u , RemoveDuplicatedFaces = 0x04u ,
  All = 0x07u
}
 
enum  EVisuProperty {
  BBox = 0 , Point , Element , Curve ,
  Iso , ControlLine , EdgeMesh , NodeMesh ,
  BorderEdge , NonManifoldEdge , BorderTopo , ControlPoint ,
  YellowPoint , YellowCurve , BluePoint , BlueCurve ,
  RedPoint , RedCurve , PurplePoint , PurpleCurve ,
  GreenPoint , GreenCurve , PinkPoint , PinkCurve ,
  OrangePoint , OrangeCurve , Last
}
 

Functions

double ComputeCurvature (const FVector &Gradient, const FVector &Laplacian)
 
double ComputeCurvature (const FVector &Normal, const FVector &Gradient, const FVector &Laplacian)
 
void FindLoopIntersectionsWithIso (const EIso Iso, const double IsoParameter, const TArray< TArray< FVector2d > > &Loops, TArray< double > &OutIntersections)
 
bool DoIntersect (const FSegment2D &SegmentAB, const FSegment2D &SegmentCD, TFunction< bool(double, double, double, double)> DoCoincidentSegmentsIntersect, const double Min, const double Max)
 
bool DoIntersectInside (const FSegment2D &SegmentAB, const FSegment2D &SegmentCD)
 
bool DoIntersect (const FSegment2D &SegmentAB, const FSegment2D &SegmentCD)
 
void InverseMatrixN (double *Matrice, int32 Rank)
 
void MatrixProduct (int32 ARowNum, int32 AColumnNum, int32 ResultRank, const double *MatrixA, const double *MatrixB, double *MatrixResult)
 
void TransposeMatrix (int32 RowNum, int32 ColumnNum, const double *InMatrix, double *OutMatrix)
 
constexpr int32 GetMaxElementCountPerSide ()
 
bool IsCycleInsideCandidate (const FVector2d &Candidate, const FVector2d &Start, const FVector2d &End, const FVector2d &Next, TFunction< double(double)> ConvertSlope)
 
int32 PreviousIndex2 (int32)
 
template<class TIsoSegment >
int32 TCountIntersections (const TArray< TIsoSegment > &Segments, EIso Iso, int32 Index, const FSegment2D &InSegment, const FSurfacicBoundary &InSegmentBoundary)
 
template<class TIsoSegment >
bool TDoesIntersect (const TArray< TIsoSegment > &Segments, EIso Iso, int32 Index, const FSegment2D &InSegment, const FSurfacicBoundary &InSegmentBoundary)
 
template<class TIsoSegment >
void SortCoordToIndex (TArray< TPair< double, int32 > > &CoordToIndex, const TArray< TIsoSegment > &Segments)
 
 ENUM_CLASS_FLAGS (EIsoNodeStates)
 
uint32 GetTypeHash (const FIsoNode &Node)
 
 ENUM_CLASS_FLAGS (EIsoSegmentStates)
 
uint32 GetTypeHash (const FIsoSegment &Segment)
 
uint32 GetTypeHash (const FIsoSegment &Segment0, const FIsoSegment &Segment1)
 
void ScaleAndSwap (FVector2d &Normal, const FVector2d &StartPoint, const FSurfacicBoundary &Boundary)
 
void SlightlyDisplacedPolyline (TArray< FVector2d > &D2Points, const FSurfacicBoundary &Boundary)
 
 ENUM_CLASS_FLAGS (ENodeMarker)
 
void SplitVertexLinkByShell (FTopologicalVertex *InVertex)
 
void FindBorderVertex (const TArray< FTopologicalEdge * > &Edges, TArray< FTopologicalVertex * > &OutBorderVertices)
 
void Open3DDebugSegment (FIdent Ident)
 
void Close3DDebugSegment ()
 
void FlushVisu ()
 
void DrawElement (int32 Dimension, TArray< FVector > &Points, EVisuProperty Property)
 
void DrawMesh (const FMesh &Mesh)
 
void Draw (const FLinearBoundary &Boundary, const FRestrictionCurve &Curve, EVisuProperty Property)
 
void Draw2D (const FCurve &Curve, const FLinearBoundary &Boundary, EVisuProperty Property)
 
void Draw3D (const FCurve &Curve, const FLinearBoundary &Boundary, EVisuProperty Property)
 
void Draw (const FCurve &Curve, const FLinearBoundary &Boundary, EVisuProperty Property)
 
void Draw (const FCurve &Curve, EVisuProperty Property)
 
void DrawQuadripode (double Height, double Base, FVector &Center, FVector &InDirection, EVisuProperty Property)
 
void DisplayEntity (const FEntity &Entity)
 
void DisplayEntity2D (const FEntity &Entity)
 
void Display (const FPlane &Plane, FIdent Ident)
 
void DisplayEdgeCriteriaGrid (int32 EdgeId, const TArray< FVector > &Points3D)
 
void DisplayAABB (const FAABB &Aabb, FIdent Ident)
 
void DisplayAABB2D (const FAABB2D &aabb, FIdent Ident)
 
void Display (const FTopologicalVertex &Vertex, EVisuProperty Property)
 
void Display (const FCurve &Curve)
 
void Display (const FShell &Shell)
 
void Draw (const FShell &Shell)
 
void Display (const FBody &Body)
 
void Display (const FSurface &Surface)
 
void Display2D (const FSurface &Surface)
 
void DisplayIsoCurve (const FSurface &Surface, double Coordinate, EIso IsoType)
 
void DisplayControlPolygon (const FCurve &Curve)
 
void DisplayControlPolygon (const FSurface &Surface)
 
void Display (const FTopologicalFace &Face)
 
void Display2D (const FTopologicalFace &Face)
 
void Display2DWithScale (const FTopologicalFace &Face)
 
void Draw (const FTopologicalFace &Face)
 
void Draw2D (const FTopologicalFace &Face)
 
void DrawIsoCurves (const FTopologicalFace &Face)
 
void Display (const FTopologicalEdge &Edge, EVisuProperty Property)
 
void Display2D (const FTopologicalEdge &Edge, EVisuProperty Property)
 
void Display2DWithScale (const FTopologicalEdge &Edge, EVisuProperty Property)
 
void Draw (const FTopologicalEdge &Edge, EVisuProperty Property)
 
void Display (const FModel &Model)
 
void DisplayProductTree (const FModel &Model)
 
void DisplayProductTree (const FBody &Body)
 
void DisplayProductTree (const FShell &Shell)
 
void DisplayProductTree (const FEntity &Entity)
 
void Display (const FGroup &Group)
 
void DisplayMesh (const FModel &Model)
 
void DisplayMesh (const FBody &Body)
 
void DisplayMesh (const FShell &Shell)
 
void DisplayMesh (const FFaceMesh &Mesh)
 
void DisplayMesh (const FEdgeMesh &Mesh)
 
void DisplayMesh (const FVertexMesh &Mesh)
 
void Display (const FModelMesh &MeshModel)
 
void DisplaySegment (const FVector &Point1, const FVector &Point2, FIdent Ident, EVisuProperty Property)
 
void DisplaySegment (const FVector2d &Point1, const FVector2d &Point2, FIdent Ident, EVisuProperty Property, bool bWithOrientation)
 
void DisplayLoop (const FTopologicalFace &Surface)
 
void Display (const FTopologicalLoop &Loop)
 
void Display2D (const FTopologicalLoop &Loop)
 
void Display2DWithScale (const FTopologicalLoop &Loop)
 
constexpr EIso Other (const EIso Iso)
 
EOrientation SameOrientation (bool bIsSameOrientation)
 
EOrientation GetReverseOrientation (EOrientation Orientation)
 
void SwapOrientation (EOrientation &Orientation)
 
CADKERNEL_API FVector2d ComputeCircumCircleCenter (const FVector2d &InPoint0, const FVector2d &InPoint1, const FVector2d &InPoint2)
 
CADKERNEL_API FVector ComputeCircumCircleCenter (const FVector &Point0, const FVector &Point1, const FVector &Point2)
 
CADKERNEL_API FVector2d ComputeCircumCircleCenterAndSquareRadius (const FVector2d &InPoint0, const FVector2d &InPoint1, const FVector2d &InPoint2, double &OutSquareRadius)
 
template<class PointType >
PointType ProjectPointOnSegment (const PointType &Point, const PointType &InSegmentA, const PointType &InSegmentB, double &OutCoordinate, bool bRestrictCoodinateToInside=true)
 
FVector ProjectPointOnPlane (const FVector &Point, const FVector &Origin, const FVector &InNormal, double &OutDistance)
 
template<class PointType >
PointType PointOnSegment (const PointType &InSegmentA, const PointType &InSegmentB, double InCoordinate)
 
template<class PointType >
double DistanceOfPointToSegment (const PointType &Point, const PointType &SegmentPoint1, const PointType &SegmentPoint2)
 
template<class PointType >
double SquareDistanceOfPointToSegment (const PointType &Point, const PointType &SegmentPoint1, const PointType &SegmentPoint2)
 
template<class PointType >
double DistanceOfPointToLine (const PointType &Point, const PointType &LinePoint1, const PointType &LineDirection)
 
template<class PointType >
double CoordinateOfProjectedPointOnSegment (const PointType &Point, const PointType &InSegmentA, const PointType &InSegmentB, bool bRestrictCoodinateToInside=true)
 
FVector2d FindIntersectionOfSegments2D (const FSegment2D &SegmentAB, const FSegment2D &SegmentCD, double &OutABIntersectionCoordinate)
 
FVector2d FindIntersectionOfSegments2D (const FSegment2D &SegmentAB, const FSegment2D &SegmentCD)
 
bool FindIntersectionOfLines2D (const FSegment2D &LineAB, const FSegment2D &LineCD, FVector2d &OutIntersectionPoint)
 
bool AreParallel (const FSegment2D &SegmentAB, const FSegment2D &SegmentCD)
 
 UE_DEPRECATED (5.6, "Use FMath::GetMinMax instead.")
 
template<typename ValueType >
const void GetMinMax (const ValueType &ValueA, const ValueType &ValueB, ValueType &OutMin, ValueType &OutMax)
 
template<typename ValueType >
const void GetMinMax (ValueType &Min, ValueType &Max)
 
template<typename ValueType >
bool IsWithinExclusive (const ValueType &TestValue, const ValueType &MinValue, const ValueType &MaxValue)
 
int32 RealCompare (const double Value1, const double Value2, const double Tolerance=DOUBLE_SMALL_NUMBER)
 
template<class T >
uint8 ToUInt8 (T Value)
 
double WrapTo (double Slope, const double StartOfPeriod, const double EndOfPeriod, const double PeriodLength)
 
double TransformIntoOrientedSlope (double Slope)
 
double TransformIntoClockwiseSlope (double Slope)
 
double TransformIntoUnorientedSlope (double Slope)
 
double TransformIntoPositiveSlope (double Slope)
 
double TransformIntoSlopeRelativeToReferenceAxis (double Slope)
 
double SwapSlopeOrientation (double Slope)
 
double ComputeSlope (const FVector2d &StartPoint, const FVector2d &EndPoint)
 
double ComputeSlope (const FVector2d &StartPoint, const FVector2d &EndPoint, double ReferenceSlope)
 
double ComputeSlope (const FVector2d &StartPoint, const FVector2d &EndPoint1, const FVector2d &EndPoint2)
 
double ComputePositiveSlope (const FVector2d &StartPoint, const FVector2d &EndPoint, double ReferenceSlope)
 
double ComputePositiveSlope (const FVector2d &StartPoint, const FVector2d &EndPoint1, const FVector2d &EndPoint2)
 
double ClockwiseSlope (const FVector2d &StartPoint, const FVector2d &EndPoint, double ReferenceSlope)
 
double CounterClockwiseSlope (const FVector2d &StartPoint, const FVector2d &EndPoint, double ReferenceSlope)
 
double ComputeOrientedSlope (const FVector2d &StartPoint, const FVector2d &EndPoint, double ReferenceSlope)
 
double ComputeOrientedSlope (const FVector2d &StartPoint, const FVector2d &EndPoint1, const FVector2d &EndPoint2)
 
double ComputeUnorientedSlope (const FVector2d &StartPoint, const FVector2d &EndPoint, double ReferenceSlope)
 
double ComputeSlopeRelativeToNearestAxis (const FVector2d &StartPoint, const FVector2d &EndPoint)
 
double ComputeSlopeRelativeToReferenceAxis (const FVector2d &StartPoint, const FVector2d &EndPoint, double ReferenceAxisSlope)
 
double ComputeUnorientedSlope (const FVector2d &StartPoint, const FVector2d &EndPoint1, const FVector2d &EndPoint2)
 
bool IsPointPInsideSectorABC (const FVector2d &PointA, const FVector2d &PointB, const FVector2d &PointC, const FVector2d &PointP, const double FlatAngle)
 
bool ArePointsInsideSectorABC (const FVector2d &PointA, const FVector2d &PointB, const FVector2d &PointC, const TArray< const FVector2d * > &Points, const double FlatAngle=-DOUBLE_SMALL_NUMBER)
 
FVector2d SlopeToVector (const double Slope)
 
template<typename FCuttingPointType >
void GetCuttingPointCoordinates (const TArray< FCuttingPointType > &CuttingPoints, TArray< double > &CuttingPointCoordinates)
 
 ENUM_CLASS_FLAGS (ESewOption)
 
void Wait (bool bMakeWait=true)
 
void Open3DDebugSession (bool bIsDisplayed, FString name, const TArray< FIdent > &idList=TArray< FIdent >())
 
void Open3DDebugSession (FString name, const TArray< FIdent > &idList=TArray< FIdent >())
 
void Close3DDebugSession (bool bIsDisplayed=true)
 
template<typename TPoint >
void DrawPoint (const TPoint &InPoint, EVisuProperty Property=EVisuProperty::BluePoint)
 
template<typename TPoint >
void Draw (const TArray< TPoint > &Points, EVisuProperty Property=EVisuProperty::BlueCurve)
 
CADKERNEL_API void DrawMesh (const TSharedPtr< FMesh > &mesh)
 
template<typename TPoint >
void DisplayPoint (const TPoint &Point, FIdent Ident)
 
template<typename TPoint >
void DisplayPoint (const TPoint &Point, EVisuProperty Property=EVisuProperty::BluePoint)
 
template<typename TPoint >
void DisplayPoint (const TPoint &Point, EVisuProperty Property, FIdent Ident)
 
template<typename TPoint >
void DisplayPoints (FString Message, const TArray< TPoint > &Points, EVisuProperty Property=EVisuProperty::BluePoint, bool bDisplay=true)
 
CADKERNEL_API void Display2DWithScale (const FSurface &CarrierSurface)
 
template<typename TPoint >
void DisplaySegment (const TPoint &Point1, const TPoint &Point2, FIdent Ident=0, EVisuProperty Property=EVisuProperty::BlueCurve, bool bWithOrientation=false)
 
template<typename TPoint >
void DisplaySegmentWithScale (const TPoint &Point1, const TPoint &Point2, FIdent Ident=0, EVisuProperty Property=EVisuProperty::BlueCurve, bool bWithOrientation=false)
 
template<typename TPoint >
void DisplayPolyline (const TArray< TPoint > &Points, EVisuProperty Property)
 
template<typename TPoint >
void DisplayOrientedPolyline (const TArray< TPoint > &Points, EVisuProperty Property)
 
CADKERNEL_API void Draw2DWithScale (const FTopologicalFace &Face)
 
template<typename TPoint >
void DrawSegment (const TPoint &Point1, const TPoint &Point2, EVisuProperty Property=EVisuProperty::Element)
 
template<typename TPoint >
void DrawSegmentOrientation (const TPoint &Point1, const TPoint &Point2, EVisuProperty Property=EVisuProperty::Element)
 

Variables

const TCHARGroupOriginNames []
 
const TCHARCriterionTypeNames []
 
const charCriterionTypeConstNames []
 
const charCriterionTypeConstDescHelp []
 
constexpr double ConstMinCurvature = 0.001
 
const charVerboseLevelConstNames []
 
const charVerboseConstDescHelp []
 
const TCHARVisuPropertyNames []
 

Detailed Description

Typedef Documentation

◆ FAddCuttingPointFunc

◆ FAddMeshNodeFunc

◆ FDuration

◆ FEdgeLink

◆ FMeshPolygonFunc

◆ FNodeIntersectionCount

◆ FPolyline3D

◆ FReserveContainerFunc

◆ FSegment2D

◆ FSegment3D

◆ FSurfacicCurveExtremities

typedef FSurfacicCurvePointWithTolerance UE::CADKernel::FSurfacicCurveExtremities[2]

◆ FSurfacicTolerance

◆ FTimePoint

◆ NextIndexMethod

◆ SlopeMethod

Enumeration Type Documentation

◆ EConnectionType

Enumerator
DoesntStartFrom 
StartFrom 
SuperimposedByOrOn 
SameSegment 

◆ ECoordinateType

Enumerator
VertexCoordinate 
ImposedCoordinate 
IsoUCoordinate 
IsoVCoordinate 
IsoUVCoordinate 
OtherCoordinate 

◆ ECriterion

Enumerator
Size 
MaxSize 
MinSize 
Angle 
Sag 
CADCurvature 
None 

◆ ECurve

Enumerator
Bezier 
BoundedCurve 
Composite 
Ellipse 
Hyperbola 
Nurbs 
Offset 
Parabola 
Polyline3D 
Polyline2D 
Restriction 
Segment 
Surfacic 
SurfacicPolyline 
Spline 
None 

◆ EEntity

Enumerator
None 
Curve 
Surface 
EdgeLink 
VertexLink 
TopologicalEdge 
TopologicalFace 
TopologicalLink 
TopologicalLoop 
TopologicalVertex 
Shell 
Body 
Model 
MeshModel 
Mesh 
Group 
Criterion 
Property 
EntityTypeEnd 

◆ EGridSpace

3 parametric spaces are defined : -EGridSpace::Default2D the natural parametric space of the carrier surface i.e. for a Bezier surface the boundary of the space is [[0, 1], [0, 1]] and for a spherical surface [[0, 2Pi], [-Pi / 2, Pi / 2]] -EGridSpace::UniformScaled.The average curvilinear length of the iso curves is calculated in each axis.The parametric space is then scaled in each axis such that the average curvilinear length between two points P(A, V) and P(B, V) = B - A.For a spherical surface [[0, 2Pi.R / 2], [-Pi.R / 2, Pi.R / 2]] with R the radius of the sphere -EGridSpace::Scaled.The UnifomeScaled space is rescaled in its most disturbe axis e.g. if V is the most disturbe axis, whatever V, length of[P(A, V), P(B, V)] = (B - A). This parametric space is closed to a good flattening of the surface.

Enumerator
Default2D 
Scaled 
UniformScaled 
EndGridSpace 

◆ EGroupOrigin

Enumerator
Unknown 
CADGroup 
CADLayer 
CADColor 

◆ EIso

Enumerator
IsoU 
IsoV 
UndefinedIso 

◆ EIsoLink

Enumerator
IsoUNext 
IsoVNext 
IsoUPrevious 
IsoVPrevious 

◆ EIsoNodeStates

Enumerator
None 
LinkedToPreviousU 
LinkedToNextU 
LinkedToPreviousV 
LinkedToNextV 
NodeComplete 
LinkedToLoop 
InnerMeshLoop 
ThinZoneNode 
Delete 
FirstQuarter 
SecondQuarter 
ThirdQuarter 
FourthQuarter 
NearlyIsoU 
NearlyIsoV 
HasMarker1 
HasMarker2 
All 

◆ EIsoSegmentStates

Enumerator
None 
Candidate 
LeftCycle 
RightCycle 
Degenerate 
LeftTriangle 
RightTriangle 
SegmentComplete 
Final 
Delete 
All 

◆ ELimit

Enumerator
Start 
End 

◆ EMeshingState

Enumerator
NotMeshed 
PartiallyMeshed 
FullyMeshed 

◆ ENodeMarker

Enumerator
None 
IsInside 
IsInsideButTooCloseToLoop 
IsCloseToLoop 
All 

◆ EOrientation

Enumerator
Back 
Front 

◆ EPolygonSide

Enumerator
Side01 
Side12 
Side20 
Side23 
Side30 

◆ EQuadType

Enumerator
Unset 
Quadrangular 
Triangular 
Other 

◆ ERupture

Enumerator
Continuity 
Tangency 
Curvature 

◆ ESegmentType

Enumerator
Unknown 
Loop 
ThinZone 
IsoU 
IsoV 
LoopToLoop 
IsoLoopToLoop 
InnerToLoopU 
InnerToLoopV 
InnerToLoop 

◆ ESewOption

Enumerator
None 
ForceJoining 
RemoveThinFaces 
RemoveDuplicatedFaces 
All 

◆ ESide

Enumerator
First 
Second 
None 

◆ ESituation

Enumerator
Undefined 
Inside 
Outside 

◆ EStatut

Enumerator
Interior 
Exterior 
Border 

◆ ESurface

Enumerator
Bezier 
Blend01 
Blend02 
Blend03 
Composite 
Cone 
Coons 
Cylinder 
Nurbs 
Offset 
Plane 
Revolution 
Ruled 
Sphere 
TabulatedCylinder 
Torus 
None 

◆ EThinZone2DType

Enumerator
Undefined 
Global 
PeakStart 
PeakEnd 
Butterfly 
BetweenLoops 
TooSmall 

◆ ETimeUnit

Enumerator
NanoSeconds 
MicroSeconds 
MilliSeconds 
Seconds 

◆ EValue

Enumerator
Entity 
OrientedEntity 
Point 
Matrix 
Integer 
Double 
String 
Boolean 
Tuple 
List 
Array 

◆ EVerboseLevel

Enumerator
NoVerbose 
Spy 
Log 
Debug 

◆ EVisuProperty

Enumerator
BBox 
Point 
Element 
Curve 
Iso 
ControlLine 
EdgeMesh 
NodeMesh 
BorderEdge 
NonManifoldEdge 
BorderTopo 
ControlPoint 
YellowPoint 
YellowCurve 
BluePoint 
BlueCurve 
RedPoint 
RedCurve 
PurplePoint 
PurpleCurve 
GreenPoint 
GreenCurve 
PinkPoint 
PinkCurve 
OrangePoint 
OrangeCurve 
Last 

Function Documentation

◆ AreParallel()

bool UE::CADKernel::AreParallel ( const FSegment2D SegmentAB,
const FSegment2D SegmentCD 
)
inline

◆ ArePointsInsideSectorABC()

bool UE::CADKernel::ArePointsInsideSectorABC ( const FVector2d PointA,
const FVector2d PointB,
const FVector2d PointC,
const TArray< const FVector2d * > &  Points,
const double  FlatAngle = -DOUBLE_SMALL_NUMBER 
)
inline
                    P1
     inside        /
                  /   inside
                 /

A -----------— B ------------— C \ Outside \ Outside \ P2

Return true if all of the segment BPi is inside the sector defined the half-lines [BA) and [BC) in the counterclockwise.

◆ ClockwiseSlope()

double UE::CADKernel::ClockwiseSlope ( const FVector2d StartPoint,
const FVector2d EndPoint,
double  ReferenceSlope 
)
inline

◆ Close3DDebugSegment()

CADKERNEL_API void UE::CADKernel::Close3DDebugSegment ( )

◆ Close3DDebugSession()

void UE::CADKernel::Close3DDebugSession ( bool  bIsDisplayed = true)
inline

◆ ComputeCircumCircleCenter() [1/2]

CADKERNEL_API FVector UE::CADKernel::ComputeCircumCircleCenter ( const FVector Point0,
const FVector Point1,
const FVector Point2 
)
inline

◆ ComputeCircumCircleCenter() [2/2]

CADKERNEL_API FVector2d UE::CADKernel::ComputeCircumCircleCenter ( const FVector2d InPoint0,
const FVector2d InPoint1,
const FVector2d InPoint2 
)
inline

◆ ComputeCircumCircleCenterAndSquareRadius()

CADKERNEL_API FVector2d UE::CADKernel::ComputeCircumCircleCenterAndSquareRadius ( const FVector2d InPoint0,
const FVector2d InPoint1,
const FVector2d InPoint2,
double OutSquareRadius 
)
inline

◆ ComputeCurvature() [1/2]

CADKERNEL_API double UE::CADKernel::ComputeCurvature ( const FVector Gradient,
const FVector Laplacian 
)

◆ ComputeCurvature() [2/2]

CADKERNEL_API double UE::CADKernel::ComputeCurvature ( const FVector Normal,
const FVector Gradient,
const FVector Laplacian 
)

◆ ComputeOrientedSlope() [1/2]

double UE::CADKernel::ComputeOrientedSlope ( const FVector2d StartPoint,
const FVector2d EndPoint,
double  ReferenceSlope 
)
inline

Compute the oriented slope of a segment according to a reference slope

Returns
a slope between [-4, 4] i.e. an equivalent angle between [-Pi, Pi]

◆ ComputeOrientedSlope() [2/2]

double UE::CADKernel::ComputeOrientedSlope ( const FVector2d StartPoint,
const FVector2d EndPoint1,
const FVector2d EndPoint2 
)
inline

Compute the positive slope between the segments [StartPoint, EndPoint1] and [StartPoint, EndPoint2]

Returns
a slope between [-4, 4] i.e. an equivalent angle between [-Pi, Pi]

◆ ComputePositiveSlope() [1/2]

double UE::CADKernel::ComputePositiveSlope ( const FVector2d StartPoint,
const FVector2d EndPoint,
double  ReferenceSlope 
)
inline

Compute the oriented slope of a segment according to a reference slope This method is used to compute an approximation of the angle between two segments in 2D. return a slope between [0, 8] i.e. an equivalent angle between [0, 2Pi]

◆ ComputePositiveSlope() [2/2]

double UE::CADKernel::ComputePositiveSlope ( const FVector2d StartPoint,
const FVector2d EndPoint1,
const FVector2d EndPoint2 
)
inline

Compute the positive slope between the segments [StartPoint, EndPoint1] and [StartPoint, EndPoint2]

Returns
a slope between [0, 8] i.e. an equivalent angle between [0, 2Pi]

◆ ComputeSlope() [1/3]

double UE::CADKernel::ComputeSlope ( const FVector2d StartPoint,
const FVector2d EndPoint 
)
inline

◆ ComputeSlope() [2/3]

double UE::CADKernel::ComputeSlope ( const FVector2d StartPoint,
const FVector2d EndPoint,
double  ReferenceSlope 
)
inline

Compute the slope of a segment according to a reference slope return the slope

◆ ComputeSlope() [3/3]

double UE::CADKernel::ComputeSlope ( const FVector2d StartPoint,
const FVector2d EndPoint1,
const FVector2d EndPoint2 
)
inline

Compute the slope between the segments [StartPoint, EndPoint1] and [StartPoint, EndPoint2]

Returns
a slope i.e. an equivalent angle

◆ ComputeSlopeRelativeToNearestAxis()

double UE::CADKernel::ComputeSlopeRelativeToNearestAxis ( const FVector2d StartPoint,
const FVector2d EndPoint 
)
inline

return a slope between [0, 1] relative to the nearest axis between horizontal or vertical axis i.e. ComputeUnorientedSlope => 0.5 return 0.5 ComputeUnorientedSlope => 2.3 return 0.3 ComputeUnorientedSlope => 3.6 return 0.4

◆ ComputeSlopeRelativeToReferenceAxis()

double UE::CADKernel::ComputeSlopeRelativeToReferenceAxis ( const FVector2d StartPoint,
const FVector2d EndPoint,
double  ReferenceAxisSlope 
)
inline

return a slope between [0, 2] relative to reference Axis i.e. ComputeUnorientedSlope => 0.5 return 0.5 ComputeUnorientedSlope => 2.3 return 1.7

◆ ComputeUnorientedSlope() [1/2]

double UE::CADKernel::ComputeUnorientedSlope ( const FVector2d StartPoint,
const FVector2d EndPoint,
double  ReferenceSlope 
)
inline

return a slope between [0, 4] i.e. an angle between [0, Pi]

◆ ComputeUnorientedSlope() [2/2]

double UE::CADKernel::ComputeUnorientedSlope ( const FVector2d StartPoint,
const FVector2d EndPoint1,
const FVector2d EndPoint2 
)
inline

return a slope between [0, 4] i.e. an angle between [0, Pi]

◆ CoordinateOfProjectedPointOnSegment()

template<class PointType >
double UE::CADKernel::CoordinateOfProjectedPointOnSegment ( const PointType &  Point,
const PointType &  InSegmentA,
const PointType &  InSegmentB,
bool  bRestrictCoodinateToInside = true 
)
inline
Returns
Coordinate of the projected point in the segment AB (coordinate of A = 0 and of B = 1)

◆ CounterClockwiseSlope()

double UE::CADKernel::CounterClockwiseSlope ( const FVector2d StartPoint,
const FVector2d EndPoint,
double  ReferenceSlope 
)
inline

◆ Display() [1/12]

CADKERNEL_API void UE::CADKernel::Display ( const FBody Body)

◆ Display() [2/12]

CADKERNEL_API void UE::CADKernel::Display ( const FCurve Curve)

◆ Display() [3/12]

CADKERNEL_API void UE::CADKernel::Display ( const FGroup Group)

◆ Display() [4/12]

CADKERNEL_API void UE::CADKernel::Display ( const FModel Model)

◆ Display() [5/12]

CADKERNEL_API void UE::CADKernel::Display ( const FModelMesh MeshModel)

◆ Display() [6/12]

CADKERNEL_API void UE::CADKernel::Display ( const FPlane Plane,
FIdent  Ident 
)

◆ Display() [7/12]

CADKERNEL_API void UE::CADKernel::Display ( const FShell Shell)

◆ Display() [8/12]

CADKERNEL_API void UE::CADKernel::Display ( const FSurface Surface)

◆ Display() [9/12]

CADKERNEL_API void UE::CADKernel::Display ( const FTopologicalEdge Edge,
EVisuProperty  Property 
)

◆ Display() [10/12]

CADKERNEL_API void UE::CADKernel::Display ( const FTopologicalFace Face)

◆ Display() [11/12]

CADKERNEL_API void UE::CADKernel::Display ( const FTopologicalLoop Loop)

◆ Display() [12/12]

CADKERNEL_API void UE::CADKernel::Display ( const FTopologicalVertex Vertex,
EVisuProperty  Property 
)

◆ Display2D() [1/4]

CADKERNEL_API void UE::CADKernel::Display2D ( const FSurface Surface)

◆ Display2D() [2/4]

CADKERNEL_API void UE::CADKernel::Display2D ( const FTopologicalEdge Edge,
EVisuProperty  Property 
)

◆ Display2D() [3/4]

CADKERNEL_API void UE::CADKernel::Display2D ( const FTopologicalFace Face)

◆ Display2D() [4/4]

CADKERNEL_API void UE::CADKernel::Display2D ( const FTopologicalLoop Loop)

◆ Display2DWithScale() [1/4]

CADKERNEL_API void UE::CADKernel::Display2DWithScale ( const FSurface CarrierSurface)

◆ Display2DWithScale() [2/4]

CADKERNEL_API void UE::CADKernel::Display2DWithScale ( const FTopologicalEdge Edge,
EVisuProperty  Property 
)

◆ Display2DWithScale() [3/4]

CADKERNEL_API void UE::CADKernel::Display2DWithScale ( const FTopologicalFace Face)

◆ Display2DWithScale() [4/4]

CADKERNEL_API void UE::CADKernel::Display2DWithScale ( const FTopologicalLoop Loop)

◆ DisplayAABB()

CADKERNEL_API void UE::CADKernel::DisplayAABB ( const FAABB Aabb,
FIdent  Ident 
)

◆ DisplayAABB2D()

CADKERNEL_API void UE::CADKernel::DisplayAABB2D ( const FAABB2D aabb,
FIdent  Ident 
)

◆ DisplayControlPolygon() [1/2]

CADKERNEL_API void UE::CADKernel::DisplayControlPolygon ( const FCurve Curve)

◆ DisplayControlPolygon() [2/2]

CADKERNEL_API void UE::CADKernel::DisplayControlPolygon ( const FSurface Surface)

◆ DisplayEdgeCriteriaGrid()

CADKERNEL_API void UE::CADKernel::DisplayEdgeCriteriaGrid ( int32  EdgeId,
const TArray< FVector > &  Points3D 
)

◆ DisplayEntity()

CADKERNEL_API void UE::CADKernel::DisplayEntity ( const FEntity Entity)

◆ DisplayEntity2D()

CADKERNEL_API void UE::CADKernel::DisplayEntity2D ( const FEntity Entity)

◆ DisplayIsoCurve()

CADKERNEL_API void UE::CADKernel::DisplayIsoCurve ( const FSurface Surface,
double  Coordinate,
EIso  IsoType 
)

◆ DisplayLoop()

CADKERNEL_API void UE::CADKernel::DisplayLoop ( const FTopologicalFace Surface)

◆ DisplayMesh() [1/6]

CADKERNEL_API void UE::CADKernel::DisplayMesh ( const FBody Body)

◆ DisplayMesh() [2/6]

CADKERNEL_API void UE::CADKernel::DisplayMesh ( const FEdgeMesh Mesh)

◆ DisplayMesh() [3/6]

CADKERNEL_API void UE::CADKernel::DisplayMesh ( const FFaceMesh Mesh)

◆ DisplayMesh() [4/6]

CADKERNEL_API void UE::CADKernel::DisplayMesh ( const FModel Model)

◆ DisplayMesh() [5/6]

CADKERNEL_API void UE::CADKernel::DisplayMesh ( const FShell Shell)

◆ DisplayMesh() [6/6]

CADKERNEL_API void UE::CADKernel::DisplayMesh ( const FVertexMesh Mesh)

◆ DisplayOrientedPolyline()

template<typename TPoint >
void UE::CADKernel::DisplayOrientedPolyline ( const TArray< TPoint > &  Points,
EVisuProperty  Property 
)

◆ DisplayPoint() [1/3]

template<typename TPoint >
void UE::CADKernel::DisplayPoint ( const TPoint Point,
EVisuProperty  Property,
FIdent  Ident 
)

◆ DisplayPoint() [2/3]

template<typename TPoint >
void UE::CADKernel::DisplayPoint ( const TPoint Point,
EVisuProperty  Property = EVisuProperty::BluePoint 
)

◆ DisplayPoint() [3/3]

template<typename TPoint >
void UE::CADKernel::DisplayPoint ( const TPoint Point,
FIdent  Ident 
)

◆ DisplayPoints()

template<typename TPoint >
void UE::CADKernel::DisplayPoints ( FString  Message,
const TArray< TPoint > &  Points,
EVisuProperty  Property = EVisuProperty::BluePoint,
bool  bDisplay = true 
)

◆ DisplayPolyline()

template<typename TPoint >
void UE::CADKernel::DisplayPolyline ( const TArray< TPoint > &  Points,
EVisuProperty  Property 
)

◆ DisplayProductTree() [1/4]

CADKERNEL_API void UE::CADKernel::DisplayProductTree ( const FBody Body)

◆ DisplayProductTree() [2/4]

CADKERNEL_API void UE::CADKernel::DisplayProductTree ( const FEntity Entity)

◆ DisplayProductTree() [3/4]

CADKERNEL_API void UE::CADKernel::DisplayProductTree ( const FModel Model)

◆ DisplayProductTree() [4/4]

CADKERNEL_API void UE::CADKernel::DisplayProductTree ( const FShell Shell)

◆ DisplaySegment() [1/3]

void UE::CADKernel::DisplaySegment ( const FVector Point1,
const FVector Point2,
FIdent  Ident,
EVisuProperty  Property 
)

◆ DisplaySegment() [2/3]

void UE::CADKernel::DisplaySegment ( const FVector2d Point1,
const FVector2d Point2,
FIdent  Ident,
EVisuProperty  Property,
bool  bWithOrientation 
)

◆ DisplaySegment() [3/3]

template<typename TPoint >
void UE::CADKernel::DisplaySegment ( const TPoint Point1,
const TPoint Point2,
FIdent  Ident = 0,
EVisuProperty  Property = EVisuProperty::BlueCurve,
bool  bWithOrientation = false 
)

◆ DisplaySegmentWithScale()

template<typename TPoint >
void UE::CADKernel::DisplaySegmentWithScale ( const TPoint Point1,
const TPoint Point2,
FIdent  Ident = 0,
EVisuProperty  Property = EVisuProperty::BlueCurve,
bool  bWithOrientation = false 
)

◆ DistanceOfPointToLine()

template<class PointType >
double UE::CADKernel::DistanceOfPointToLine ( const PointType &  Point,
const PointType &  LinePoint1,
const PointType &  LineDirection 
)
inline
Returns
the distance between the point and the line i.e. the distance between the point and its projection on the line

◆ DistanceOfPointToSegment()

template<class PointType >
double UE::CADKernel::DistanceOfPointToSegment ( const PointType &  Point,
const PointType &  SegmentPoint1,
const PointType &  SegmentPoint2 
)
inline
Returns
the distance between the point and the segment. If the projection of the point on the segment is not inside it, return the distance of the point to nearest the segment extremity

◆ DoIntersect() [1/2]

CADKERNEL_API bool UE::CADKernel::DoIntersect ( const FSegment2D SegmentAB,
const FSegment2D SegmentCD 
)

Similar as FastDoIntersect but check intersection if both segment are carried by the same line. This method is 50% slower than FastIntersectSegments2D even if the segments tested are never carried by the same line

◆ DoIntersect() [2/2]

bool UE::CADKernel::DoIntersect ( const FSegment2D SegmentAB,
const FSegment2D SegmentCD,
TFunction< bool(double, double, double, double)>  DoCoincidentSegmentsIntersect,
const double  Min,
const double  Max 
)

◆ DoIntersectInside()

CADKERNEL_API bool UE::CADKernel::DoIntersectInside ( const FSegment2D SegmentAB,
const FSegment2D SegmentCD 
)

◆ Draw() [1/7]

CADKERNEL_API void UE::CADKernel::Draw ( const FCurve Curve,
const FLinearBoundary Boundary,
EVisuProperty  Property 
)

◆ Draw() [2/7]

CADKERNEL_API void UE::CADKernel::Draw ( const FCurve Curve,
EVisuProperty  Property 
)

◆ Draw() [3/7]

CADKERNEL_API void UE::CADKernel::Draw ( const FLinearBoundary Boundary,
const FRestrictionCurve Curve,
EVisuProperty  Property 
)

◆ Draw() [4/7]

CADKERNEL_API void UE::CADKernel::Draw ( const FShell Shell)

◆ Draw() [5/7]

CADKERNEL_API void UE::CADKernel::Draw ( const FTopologicalEdge Edge,
EVisuProperty  Property 
)

◆ Draw() [6/7]

CADKERNEL_API void UE::CADKernel::Draw ( const FTopologicalFace Face)

◆ Draw() [7/7]

template<typename TPoint >
void UE::CADKernel::Draw ( const TArray< TPoint > &  Points,
EVisuProperty  Property = EVisuProperty::BlueCurve 
)

◆ Draw2D() [1/2]

void UE::CADKernel::Draw2D ( const FCurve Curve,
const FLinearBoundary Boundary,
EVisuProperty  Property 
)

◆ Draw2D() [2/2]

CADKERNEL_API void UE::CADKernel::Draw2D ( const FTopologicalFace Face)

◆ Draw2DWithScale()

CADKERNEL_API void UE::CADKernel::Draw2DWithScale ( const FTopologicalFace Face)

◆ Draw3D()

void UE::CADKernel::Draw3D ( const FCurve Curve,
const FLinearBoundary Boundary,
EVisuProperty  Property 
)

◆ DrawElement()

CADKERNEL_API void UE::CADKernel::DrawElement ( int32  Dimension,
TArray< FVector > &  Points,
EVisuProperty  Property = EVisuProperty::Element 
)

Draw a mesh element i.e. Element of dimension 1 is an edge, of dimension 2 is a triangle or quadrangle, of dimension 3 is tetrahedron, pyramid, hexahedron, ...

◆ DrawIsoCurves()

CADKERNEL_API void UE::CADKernel::DrawIsoCurves ( const FTopologicalFace Face)

◆ DrawMesh() [1/2]

void UE::CADKernel::DrawMesh ( const FMesh Mesh)

◆ DrawMesh() [2/2]

CADKERNEL_API void UE::CADKernel::DrawMesh ( const TSharedPtr< FMesh > &  mesh)

◆ DrawPoint()

template<typename TPoint >
void UE::CADKernel::DrawPoint ( const TPoint InPoint,
EVisuProperty  Property = EVisuProperty::BluePoint 
)

◆ DrawQuadripode()

CADKERNEL_API void UE::CADKernel::DrawQuadripode ( double  Height,
double  Base,
FVector Center,
FVector InDirection,
EVisuProperty  Property 
)

◆ DrawSegment()

template<typename TPoint >
void UE::CADKernel::DrawSegment ( const TPoint Point1,
const TPoint Point2,
EVisuProperty  Property = EVisuProperty::Element 
)

◆ DrawSegmentOrientation()

template<typename TPoint >
void UE::CADKernel::DrawSegmentOrientation ( const TPoint Point1,
const TPoint Point2,
EVisuProperty  Property = EVisuProperty::Element 
)

◆ ENUM_CLASS_FLAGS() [1/4]

UE::CADKernel::ENUM_CLASS_FLAGS ( EIsoNodeStates  )

◆ ENUM_CLASS_FLAGS() [2/4]

UE::CADKernel::ENUM_CLASS_FLAGS ( EIsoSegmentStates  )

◆ ENUM_CLASS_FLAGS() [3/4]

UE::CADKernel::ENUM_CLASS_FLAGS ( ENodeMarker  )

◆ ENUM_CLASS_FLAGS() [4/4]

UE::CADKernel::ENUM_CLASS_FLAGS ( ESewOption  )

◆ FindBorderVertex()

void UE::CADKernel::FindBorderVertex ( const TArray< FTopologicalEdge * > &  Edges,
TArray< FTopologicalVertex * > &  OutBorderVertices 
)

◆ FindIntersectionOfLines2D()

bool UE::CADKernel::FindIntersectionOfLines2D ( const FSegment2D LineAB,
const FSegment2D LineCD,
FVector2d OutIntersectionPoint 
)
inline
Returns
false if the lines are parallel

◆ FindIntersectionOfSegments2D() [1/2]

FVector2d UE::CADKernel::FindIntersectionOfSegments2D ( const FSegment2D SegmentAB,
const FSegment2D SegmentCD 
)
inline

The segments must intersect because no check is done

◆ FindIntersectionOfSegments2D() [2/2]

FVector2d UE::CADKernel::FindIntersectionOfSegments2D ( const FSegment2D SegmentAB,
const FSegment2D SegmentCD,
double OutABIntersectionCoordinate 
)
inline

The segments must intersect because no check is done

◆ FindLoopIntersectionsWithIso()

CADKERNEL_API void UE::CADKernel::FindLoopIntersectionsWithIso ( const EIso  Iso,
const double  IsoParameter,
const TArray< TArray< FVector2d > > &  Loops,
TArray< double > &  OutIntersections 
)

◆ FlushVisu()

CADKERNEL_API void UE::CADKernel::FlushVisu ( )

◆ GetCuttingPointCoordinates()

void UE::CADKernel::GetCuttingPointCoordinates ( const TArray< FCuttingPointType > &  CuttingPoints,
TArray< double > &  CuttingPointCoordinates 
)

◆ GetMaxElementCountPerSide()

constexpr int32 UE::CADKernel::GetMaxElementCountPerSide ( )
constexpr

In some cases as a huge plan, the MaxSizeCriteria can generate a lot of triangles e.g. a 100m side plan with a MaxSizeCriteria of 3cm will need 3e3 elements by side so 2e7 triangles. This kind of case is most of the time a forgotten sketch body than a real wanted body. This mesh could make the process extremely long or simply crash all the system. The idea is to not cancel the mesh of the body in the case it will really expected but to avoid the generation of a huge mesh with unwanted hundreds of millions of triangles. So if MaxSizeCriteria will generate a huge mesh, this criteria is abandoned. The chosen limit value is 3000 elements by side

◆ GetMinMax() [1/2]

template<typename ValueType >
const void UE::CADKernel::GetMinMax ( const ValueType &  ValueA,
const ValueType &  ValueB,
ValueType &  OutMin,
ValueType &  OutMax 
)

Sort input A & B values into OutMin & OutMax

◆ GetMinMax() [2/2]

template<typename ValueType >
const void UE::CADKernel::GetMinMax ( ValueType &  Min,
ValueType &  Max 
)

Sort input values to be Min and Max

◆ GetReverseOrientation()

EOrientation UE::CADKernel::GetReverseOrientation ( EOrientation  Orientation)
inline

◆ GetTypeHash() [1/3]

uint32 UE::CADKernel::GetTypeHash ( const FIsoNode Node)
inline

◆ GetTypeHash() [2/3]

uint32 UE::CADKernel::GetTypeHash ( const FIsoSegment Segment)
inline

◆ GetTypeHash() [3/3]

uint32 UE::CADKernel::GetTypeHash ( const FIsoSegment Segment0,
const FIsoSegment Segment1 
)
inline

◆ InverseMatrixN()

CADKERNEL_API void UE::CADKernel::InverseMatrixN ( double Matrice,
int32  Rank 
)

◆ IsCycleInsideCandidate()

bool UE::CADKernel::IsCycleInsideCandidate ( const FVector2d Candidate,
const FVector2d Start,
const FVector2d End,
const FVector2d Next,
TFunction< double(double)>  ConvertSlope 
)

◆ IsPointPInsideSectorABC()

bool UE::CADKernel::IsPointPInsideSectorABC ( const FVector2d PointA,
const FVector2d PointB,
const FVector2d PointC,
const FVector2d PointP,
const double  FlatAngle 
)
inline
                    P1
     inside        /
                  /   inside
                 /

A -----------— B ------------— C \ Outside \ Outside \ P2

Return true if the segment BP is inside the sector defined the half-lines [BA) and [BC) in the counterclockwise. Return false if ABP angle or PBC angle is too flat (smaller than FlatAngle)

◆ IsWithinExclusive()

template<typename ValueType >
bool UE::CADKernel::IsWithinExclusive ( const ValueType &  TestValue,
const ValueType &  MinValue,
const ValueType &  MaxValue 
)

Checks if value is within a range, exclusive on MinValue and MaxValue)

◆ MatrixProduct()

CADKERNEL_API void UE::CADKernel::MatrixProduct ( int32  ARowNum,
int32  AColumnNum,
int32  ResultRank,
const double MatrixA,
const double MatrixB,
double MatrixResult 
)

◆ Open3DDebugSegment()

CADKERNEL_API void UE::CADKernel::Open3DDebugSegment ( FIdent  Ident)

◆ Open3DDebugSession() [1/2]

void UE::CADKernel::Open3DDebugSession ( bool  bIsDisplayed,
FString  name,
const TArray< FIdent > &  idList = TArray<FIdent>() 
)
inline

◆ Open3DDebugSession() [2/2]

void UE::CADKernel::Open3DDebugSession ( FString  name,
const TArray< FIdent > &  idList = TArray<FIdent>() 
)
inline

◆ Other()

constexpr EIso UE::CADKernel::Other ( const EIso  Iso)
constexpr

◆ PointOnSegment()

template<class PointType >
PointType UE::CADKernel::PointOnSegment ( const PointType &  InSegmentA,
const PointType &  InSegmentB,
double  InCoordinate 
)
inline
Returns
InSegmentA + (InSegmentB - InSegmentA) | InCoordinate

◆ PreviousIndex2()

int32 UE::CADKernel::PreviousIndex2 ( int32  )

◆ ProjectPointOnPlane()

FVector UE::CADKernel::ProjectPointOnPlane ( const FVector Point,
const FVector Origin,
const FVector InNormal,
double OutDistance 
)
inline

◆ ProjectPointOnSegment()

template<class PointType >
PointType UE::CADKernel::ProjectPointOnSegment ( const PointType &  Point,
const PointType &  InSegmentA,
const PointType &  InSegmentB,
double OutCoordinate,
bool  bRestrictCoodinateToInside = true 
)
inline
Parameters
OutCoordinatethe coordinate of the projected point in the segment AB (coodinate of A = 0 and of B = 1)
Returns
Projected point

◆ RealCompare()

int32 UE::CADKernel::RealCompare ( const double  Value1,
const double  Value2,
const double  Tolerance = DOUBLE_SMALL_NUMBER 
)
inline

◆ SameOrientation()

EOrientation UE::CADKernel::SameOrientation ( bool  bIsSameOrientation)
inline

◆ ScaleAndSwap()

void UE::CADKernel::ScaleAndSwap ( FVector2d Normal,
const FVector2d StartPoint,
const FSurfacicBoundary Boundary 
)

For the surface normal at a StartPoint of the 3D degenerated curve (Not degenerated in 2d) The normal is swap if StartPoint is too close to the Boundary The norm of the normal is defined as 1/20 of the parallel boundary Length

◆ SlightlyDisplacedPolyline()

void UE::CADKernel::SlightlyDisplacedPolyline ( TArray< FVector2d > &  D2Points,
const FSurfacicBoundary Boundary 
)

Displace loop nodes inside to avoid that the nodes are outside the surface Boundary, so outside the grid

◆ SlopeToVector()

FVector2d UE::CADKernel::SlopeToVector ( const double  Slope)
inline

◆ SortCoordToIndex()

template<class TIsoSegment >
void UE::CADKernel::SortCoordToIndex ( TArray< TPair< double, int32 > > &  CoordToIndex,
const TArray< TIsoSegment > &  Segments 
)

◆ SplitVertexLinkByShell()

void UE::CADKernel::SplitVertexLinkByShell ( FTopologicalVertex InVertex)

◆ SquareDistanceOfPointToSegment()

template<class PointType >
double UE::CADKernel::SquareDistanceOfPointToSegment ( const PointType &  Point,
const PointType &  SegmentPoint1,
const PointType &  SegmentPoint2 
)
inline
Returns
the distance between the point and the segment. If the projection of the point on the segment is not inside it, return the distance of the point to nearest the segment extremity

◆ SwapOrientation()

void UE::CADKernel::SwapOrientation ( EOrientation Orientation)
inline

◆ SwapSlopeOrientation()

double UE::CADKernel::SwapSlopeOrientation ( double  Slope)
inline

Swap a slope i.e Slope + PiSlope i.e. angle + Pi

Returns
a slope between [0, 8]

◆ TCountIntersections()

template<class TIsoSegment >
int32 UE::CADKernel::TCountIntersections ( const TArray< TIsoSegment > &  Segments,
EIso  Iso,
int32  Index,
const FSegment2D InSegment,
const FSurfacicBoundary InSegmentBoundary 
)

◆ TDoesIntersect()

template<class TIsoSegment >
bool UE::CADKernel::TDoesIntersect ( const TArray< TIsoSegment > &  Segments,
EIso  Iso,
int32  Index,
const FSegment2D InSegment,
const FSurfacicBoundary InSegmentBoundary 
)

◆ ToUInt8()

template<class T >
uint8 UE::CADKernel::ToUInt8 ( Value)

◆ TransformIntoClockwiseSlope()

double UE::CADKernel::TransformIntoClockwiseSlope ( double  Slope)
inline

◆ TransformIntoOrientedSlope()

double UE::CADKernel::TransformIntoOrientedSlope ( double  Slope)
inline

Transform a positive slope into an oriented slope [-4, 4] i.e. an equivalent angle between [-Pi, Pi]

Returns
a slope between [-4, 4]

◆ TransformIntoPositiveSlope()

double UE::CADKernel::TransformIntoPositiveSlope ( double  Slope)
inline

Transform a slope into a positive slope [0, *] i.e. an equivalent angle between [0, 2.Pi]

Returns
a slope between [0, 8]

◆ TransformIntoSlopeRelativeToReferenceAxis()

double UE::CADKernel::TransformIntoSlopeRelativeToReferenceAxis ( double  Slope)
inline

return a slope between [0, 2] relative to reference Axis i.e. ComputeUnorientedSlope => 0.5 return 0.5 ComputeUnorientedSlope => 2.3 return 1.7

◆ TransformIntoUnorientedSlope()

double UE::CADKernel::TransformIntoUnorientedSlope ( double  Slope)
inline

Transform a positive slope into an unoriented slope [0, 4] i.e. an equivalent angle between [0, Pi]

Returns
a slope between [0, 4]

◆ TransposeMatrix()

CADKERNEL_API void UE::CADKernel::TransposeMatrix ( int32  RowNum,
int32  ColumnNum,
const double InMatrix,
double OutMatrix 
)

◆ UE_DEPRECATED()

UE::CADKernel::UE_DEPRECATED ( 5.  6,
"Use FMath::GetMinMax instead."   
)

◆ Wait()

void UE::CADKernel::Wait ( bool  bMakeWait = true)
inline

◆ WrapTo()

double UE::CADKernel::WrapTo ( double  Slope,
const double  StartOfPeriod,
const double  EndOfPeriod,
const double  PeriodLength 
)
inline

Wraps a periodic value into a prime period defined by its StartOfPeriod value and its EndOfPeriod value Mandatory EndOfPeriod - StartOfPeriod = PeriodSize

Fast FMath::Fmod or FMath::Floor for the special case of Slope functions since most of the time the input value doesn't need to be change

See also
SlopeUtils.h

Variable Documentation

◆ ConstMinCurvature

constexpr double UE::CADKernel::ConstMinCurvature = 0.001
constexpr

◆ CriterionTypeConstDescHelp

const char * UE::CADKernel::CriterionTypeConstDescHelp
Initial value:
= {
": Size of elements (only for check)",
": maximum size of elements",
": minimum size of elements",
": angle between the normal of elements",
": distance between elements and CAD surfaces/curves",
": CAD curvature (only for check)",
nullptr
}

◆ CriterionTypeConstNames

const char * UE::CADKernel::CriterionTypeConstNames
Initial value:
= {
"CRITERION_SIZE",
"CRITERION_MAX_SIZE",
"CRITERION_MIN_SIZE",
"CRITERION_ANGLE",
"CRITERION_SAG",
"CRITERION_CAD_CURVATURE",
nullptr
}

◆ CriterionTypeNames

const TCHAR * UE::CADKernel::CriterionTypeNames
Initial value:
= {
TEXT("Size"),
TEXT("MaxSize"),
TEXT("MinSize"),
TEXT("Angle"),
TEXT("Chord Error"),
TEXT("CAD Curvature"),
}
#define TEXT(x)
Definition Platform.h:1272

◆ GroupOriginNames

const TCHAR * UE::CADKernel::GroupOriginNames
Initial value:
= {
TEXT("Unknown"),
TEXT("CAD Group"),
TEXT("CAD Layer"),
TEXT("CAD Color"),
nullptr
}

◆ VerboseConstDescHelp

const char * UE::CADKernel::VerboseConstDescHelp
Initial value:
= {
": nothing is printed",
": only commands and arguments will be showed",
": SPY + messages",
": debug mode, for developers only",
nullptr
}

◆ VerboseLevelConstNames

const char * UE::CADKernel::VerboseLevelConstNames
Initial value:
= {
("NO_VERBOSE"),
("SPY"),
("LOG"),
("DBG"),
nullptr
}

◆ VisuPropertyNames

const TCHAR * UE::CADKernel::VisuPropertyNames