![]() |
UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
|
#include <TopologicalLoop.h>
Inheritance diagram for UE::CADKernel::FTopologicalLoop:Public Attributes | |
| FSurfacicBoundary | Boundary |
Protected Member Functions | |
| FTopologicalLoop (const TArray< TSharedPtr< FTopologicalEdge > > &Edges, const TArray< EOrientation > &EdgeDirections, const bool bIsEternalLoop) | |
| FTopologicalLoop ()=default | |
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 TSharedFromThis & | operator= (TSharedFromThis const &) |
| ~TSharedFromThis () | |
Protected Attributes | |
| TArray< FOrientedEdge > | Edges |
| FTopologicalFace * | Face |
| bool | bIsExternal |
Protected Attributes inherited from UE::CADKernel::FTopologicalEntity | |
| 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 | FTopologicalFace |
| class | FTopologicalEdge |
Additional Inherited Members | |
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 TCHAR * | TypesNames [] |
|
protected |
|
protecteddefault |
|
inlineoverridevirtual |
| void UE::CADKernel::FTopologicalLoop::CheckEdgesOrientation | ( | ) |
| void UE::CADKernel::FTopologicalLoop::CheckLoopWithTwoEdgesOrientation | ( | ) |
| void UE::CADKernel::FTopologicalLoop::ComputeBoundaryProperties | ( | const TArray< int32 > & | StartSideIndex, |
| TArray< FEdge2DProperties > & | OutSideProperties | ||
| ) | const |
| void UE::CADKernel::FTopologicalLoop::DeleteLoopEdges | ( | ) |
|
inline |
Reimplemented from UE::CADKernel::FEntity.
| void UE::CADKernel::FTopologicalLoop::FindBreaks | ( | TArray< TSharedPtr< FTopologicalVertex > > & | Ruptures, |
| TArray< int32 > & | OutStartSideIndex, | ||
| TArray< double > & | RuptureValues | ||
| ) | const |
| void UE::CADKernel::FTopologicalLoop::FindSurfaceCorners | ( | TArray< TSharedPtr< FTopologicalVertex > > & | OutCorners, |
| TArray< int32 > & | OutStartSideIndex | ||
| ) | const |
| bool UE::CADKernel::FTopologicalLoop::Get2DSamplingWithoutDegeneratedEdges | ( | TArray< FVector2d > & | LoopSampling | ) | const |
The idea is to remove degenerated edges of the loop i.e. where the surface is degenerated
|
inline |
Add active Edge that has not marker 1 in the edge array. Marker 1 has to be reset at the end.
|
inline |
| EOrientation UE::CADKernel::FTopologicalLoop::GetDirection | ( | TSharedPtr< FTopologicalEdge > & | Edge, |
| bool | bAllowLinkedEdge = false |
||
| ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
Implements UE::CADKernel::FEntity.
|
inline |
|
inline |
|
inline |
| bool UE::CADKernel::FTopologicalLoop::IsInside | ( | const FTopologicalLoop & | Other | ) | const |
| double UE::CADKernel::FTopologicalLoop::Length | ( | ) | const |
|
static |
| bool UE::CADKernel::FTopologicalLoop::Orient | ( | ) |
To check loop orientation, we check the orientation of the extremity points i.e. "o" points below
o
/ \
/ \
o o
\ /
\ /
o
For these points, the slop is compute. If the slop is between 0 and 4, the loop at the point is well oriented otherwise not
The difficulties start when the slop is closed to 0 or 4 i.e.
-----o-----
| |
In this case, the orientation of the next segment is compare to the bounding box
The last very difficult case is a sharp case i.e. The slop is closed to 0 or 8, so it could be a pick in self intersecting. We try to recompute the slop a the closed point
| o—O | O
| / | /
| o => | o
| | | |
If the slop is still closed to 0 or 8, the point is "UndefinedOrientation" This case was found in the shape of char '1'
| void UE::CADKernel::FTopologicalLoop::RemoveDegeneratedEdges | ( | ) |
| void UE::CADKernel::FTopologicalLoop::RemoveEdge | ( | TSharedPtr< FTopologicalEdge > & | Edge | ) |
| void UE::CADKernel::FTopologicalLoop::ReplaceEdge | ( | TSharedPtr< FTopologicalEdge > & | Edge, |
| TArray< TSharedPtr< FTopologicalEdge > > & | NewEdges | ||
| ) |
| void UE::CADKernel::FTopologicalLoop::ReplaceEdge | ( | TSharedPtr< FTopologicalEdge > & | OldEdge, |
| TSharedPtr< FTopologicalEdge > & | NewEdge | ||
| ) |
| void UE::CADKernel::FTopologicalLoop::ReplaceEdges | ( | TArray< FOrientedEdge > & | Candidates, |
| TSharedPtr< FTopologicalEdge > & | NewEdge | ||
| ) |
|
inlineoverridevirtual |
Reimplemented from UE::CADKernel::FEntity.
|
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::FTopologicalEntity.
|
inline |
|
inline |
|
inlineoverridevirtual |
Reimplemented from UE::CADKernel::FEntity.
| void UE::CADKernel::FTopologicalLoop::SplitEdge | ( | FTopologicalEdge & | Edge, |
| TSharedPtr< FTopologicalEdge > | NewEdge, | ||
| bool | bNewEdgeIsFirst | ||
| ) |
The Edge is split in two edges : Edge + NewEdge
| bNewEdgeIsFirst | == true => StartVertex Connected to Edge, EndVertexConnected to NewEdge According to the direction of Edge, if bNewEdgeIsFirst == true, NewEdge is added in the loop after (EOrientation::Front) or before (EOrientation::Back) |
| void UE::CADKernel::FTopologicalLoop::SwapOrientation | ( | ) |
|
friend |
|
friend |
|
protected |
| FSurfacicBoundary UE::CADKernel::FTopologicalLoop::Boundary |
|
protected |
|
protected |