UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SurfacicCurve.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Core/CADEntity.h"
5#include "Core/Types.h"
6#include "Geo/Curves/Curve.h"
7#include "Geo/GeoEnum.h"
9#include "Math/MatrixH.h"
10
11namespace UE::CADKernel
12{
13class FCADKernelArchive;
14class FDatabase;
15class FEntityGeom;
16class FSurfacicPolyline;
17struct FCurvePoint2D;
18struct FCurvePoint;
19struct FLinearBoundary;
20
22{
23 friend class FEntity;
24
25protected:
26
29
31 : FCurve(InCurve2D->GetBoundary())
32 , Curve2D(InCurve2D)
33 , CarrierSurface(InSurface)
34 {
35 ensureCADKernel(Curve2D.IsValid());
36 }
37
38 FSurfacicCurve() = default;
39
40public:
41
42 virtual void Serialize(FCADKernelArchive& Ar) override
43 {
44 FCurve::Serialize(Ar);
45 SerializeIdent(Ar, Curve2D);
46 SerializeIdent(Ar, CarrierSurface);
47 }
48
49 virtual void SpawnIdent(FDatabase& Database) override
50 {
51 if (!FEntity::SetId(Database))
52 {
53 return;
54 }
55
56 Curve2D->SpawnIdent(Database);
57 CarrierSurface->SpawnIdent(Database);
58 }
59
60 virtual void ResetMarkersRecursively() const override
61 {
62 ResetMarkers();
63 Curve2D->ResetMarkersRecursively();
64 CarrierSurface->ResetMarkersRecursively();
65 }
66
67#ifdef CADKERNEL_DEV
68 virtual FInfoEntity& GetInfo(FInfoEntity&) const override;
69#endif
70
71 virtual ECurve GetCurveType() const override
72 {
73 return ECurve::Surfacic;
74 }
75
77 {
78 return Curve2D;
79 }
80
82 {
83 return Curve2D;
84 }
85
87 {
88 return CarrierSurface.ToSharedRef();
89 }
90
92 {
93 ensureCADKernel(NewCurve2D.IsValid());
94 Curve2D = NewCurve2D;
95 }
96
98 {
99 return CarrierSurface;
100 }
101
103 {
104 return CarrierSurface;
105 }
106
107 virtual TSharedPtr<FEntityGeom> ApplyMatrix(const FMatrixH& InMatrix) const override;
108
112 virtual void Offset(const FVector& OffsetDirection) override
113 {
114 ensureCADKernel(false);
115 }
116
117 virtual void EvaluatePoint(double Coordinate, FCurvePoint& OutPoint, int32 DerivativeOrder = 0) const override;
118
119 virtual void Evaluate2DPoint(double Coordinate, FCurvePoint2D& OutPoint, int32 DerivativeOrder = 0) const override
120 {
121 Curve2D->Evaluate2DPoint(Coordinate, OutPoint, DerivativeOrder);
122 }
123
124 virtual void Evaluate2DPoint(double Coordinate, FVector2d& OutPoint) const override
125 {
126 Curve2D->Evaluate2DPoint(Coordinate, OutPoint);
127 }
128
129 virtual void EvaluatePoints(const TArray<double>& Coordinates, TArray<FCurvePoint>& OutPoints, int32 DerivativeOrder = 0) const override;
130
131 void EvaluateSurfacicPolyline(FSurfacicPolyline& OutPolyline) const;
132
133 virtual void Evaluate2DPoints(const TArray<double>& Coordinates, TArray<FVector2d>& OutPoints) const override
134 {
135 Curve2D->Evaluate2DPoints(Coordinates, OutPoints);
136 }
137
138 virtual void Evaluate2DPoints(const TArray<double>& Coordinates, TArray<FCurvePoint2D>& OutPoints, int32 DerivativeOrder = 0) const override
139 {
140 Curve2D->Evaluate2DPoints(Coordinates, OutPoints, DerivativeOrder);
141 }
142
143 virtual void FindNotDerivableCoordinates(const FLinearBoundary& InBoundary, int32 DerivativeOrder, TArray<double>& OutNotDerivableCoordinates) const override;
144private:
145 void EvaluateSurfacicPolylineWithNormalAndTangent(FSurfacicPolyline& OutPolyline) const;
146};
147
148} // namespace UE::CADKernel
149
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ensureCADKernel(InExpression)
Definition Types.h:115
Definition Array.h:670
Definition SharedPointer.h:692
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
Definition SharedPointer.h:153
Definition CADKernelArchive.h:19
Definition Curve.h:21
Definition Database.h:17
Definition CADEntity.h:56
Definition MatrixH.h:14
Definition SurfacicCurve.h:22
virtual void ResetMarkersRecursively() const override
Definition SurfacicCurve.h:60
virtual void SpawnIdent(FDatabase &Database) override
Definition SurfacicCurve.h:49
virtual ECurve GetCurveType() const override
Definition SurfacicCurve.h:71
void Set2DCurve(TSharedPtr< FCurve > &NewCurve2D)
Definition SurfacicCurve.h:91
TSharedPtr< FSurface > & GetSurface()
Definition SurfacicCurve.h:102
TSharedPtr< FCurve > Curve2D
Definition SurfacicCurve.h:27
const TSharedPtr< FCurve > & Get2DCurve() const
Definition SurfacicCurve.h:76
TSharedPtr< FCurve > & Get2DCurve()
Definition SurfacicCurve.h:81
virtual void Evaluate2DPoints(const TArray< double > &Coordinates, TArray< FVector2d > &OutPoints) const override
Definition SurfacicCurve.h:133
virtual void Evaluate2DPoints(const TArray< double > &Coordinates, TArray< FCurvePoint2D > &OutPoints, int32 DerivativeOrder=0) const override
Definition SurfacicCurve.h:138
TSharedPtr< FSurface > CarrierSurface
Definition SurfacicCurve.h:28
const TSharedPtr< FSurface > & GetSurface() const
Definition SurfacicCurve.h:97
virtual void Serialize(FCADKernelArchive &Ar) override
Definition SurfacicCurve.h:42
const TSharedRef< FSurface > GetCarrierSurface() const
Definition SurfacicCurve.h:86
virtual void Evaluate2DPoint(double Coordinate, FCurvePoint2D &OutPoint, int32 DerivativeOrder=0) const override
Definition SurfacicCurve.h:119
virtual void Evaluate2DPoint(double Coordinate, FVector2d &OutPoint) const override
Definition SurfacicCurve.h:124
FSurfacicCurve(TSharedRef< FCurve > InCurve2D, TSharedRef< FSurface > InSurface)
Definition SurfacicCurve.h:30
virtual void Offset(const FVector &OffsetDirection) override
Definition SurfacicCurve.h:112
Definition SurfacicPolyline.h:30
Definition CADEntity.cpp:23
ECurve
Definition GeoEnum.h:10
Definition GeoPoint.h:11
Definition GeoPoint.h:50
Definition Boundary.h:18