Navigation
API > API/Runtime > API/Runtime/CADKernel > API/Runtime/CADKernel/Topo
Inheritance Hierarchy
- FHaveStates
- FEntity
- FTopologicalEntity
- TLinkable
- FTopologicalEdge
References
| Module | CADKernel |
| Header | /Engine/Source/Runtime/Datasmith/CADKernel/Base/Public/Topo/TopologicalEdge.h |
| Include | #include "Topo/TopologicalEdge.h" |
Syntax
class FTopologicalEdge : public UE::CADKernel::TLinkable< FTopologicalEdge, FEdgeLink >
Variables
| Type | Name | Description | |
|---|---|---|---|
| FLinearBoundary | Boundary | The edge is oriented in the curve orientation i.e. StartCoordinate < EndCoordinate | |
| TArray< double > | CrossingPointDeltaUMaxs | Max delta U at the crossing points to respect meshing criteria | |
| TArray< double > | CrossingPointDeltaUMins | Min delta U at the crossing points to respect meshing criteria | |
| TArray< double > | CrossingPointUs | Temporary discretization of the edge used to compute the mesh of the edge | |
| TSharedPtr< FRestrictionCurve > | Curve | ||
| TArray< FCuttingPoint > | CuttingPointUs | Final U coordinates of the edge's mesh nodes | |
| TSharedPtr< FTopologicalVertex > | EndVertex | ||
| TArray< FImposedCuttingPoint > | ImposedCuttingPointUs | U coordinates of the edge's mesh nodes for thin zone purpose | |
| double | Length3D | ||
| FTopologicalLoop * | Loop | ||
| double | Max2DTolerance | To avoid huge tolerance in case of degenerated edge, the max tol is defined as Length3D / 10. | |
| TSharedPtr< FEdgeMesh > | Mesh | ||
| TSharedPtr< FTopologicalVertex > | StartVertex | ||
| TArray< FLinearBoundary > | ThinZoneBounds | ||
| TArray< FThinZoneSide * > | ThinZoneSides |
Constructors
No constructors are accessible with public or protected access.
Destructors
| Type | Name | Description | |
|---|---|---|---|
Functions
| Type | Name | Description | |
|---|---|---|---|
| void | AddImposedCuttingPointU
(
const double ImposedCuttingPointU, |
||
| void | AddThinZone
(
FThinZoneSide* InThinZoneSide, |
||
| void | AddTwinsCuttingPoint
(
const double Coord, |
||
| FPoint | Approximate2DPoint
(
const double InCoordinate |
Approximation of 2D point defined by its coordinate compute with carrier surface 2D polyline | |
| void | Approximate2DPoints
(
const TArray< double >& InCoordinates, |
Approximation of 2D points defined by its coordinates compute with carrier surface 2D polyline | |
| void | ApproximatePoints
(
const TArray< double >& InCoordinates, |
Approximation of 3D points compute with carrier surface 3D polyline | |
| void | ApproximatePolyline
(
FSurfacicPolyline& Polyline |
Approximation of surfacic polyline (points 2d, 3d, normals, tangents) defined by its coordinates compute with carrier surface polyline | |
| bool | Checks if the carrier curve is degenerated i.e. the 2d length of the curve is nearly zero If the 3d length is nearly zero, the edge is flag as degenerated | ||
| void | Generate a sampling of the curve. | ||
| void | ComputeEdge2DProperties
(
FEdge2DProperties& SlopeCharacteristics |
Compute the edge 2D properties i.e. the mean and standard deviation of the slop of the edge in the parametric space of the carrier surface | |
| void | ComputeIntersectionsWithIsos
(
const TArray< double >& InIsoCoordinates, |
||
| void | |||
| TSharedPtr< FTopologicalEdge > | CreateEdgeByMergingEdges
(
const double SmallEdgeTolerance, |
Merge successive edges of a face in a single edge. | |
| void | Disjoin () |
Remove the edge and the extremity vertices of the linked entity vs UnlinkTwinEntities delete only the edge link | |
| int32 | |||
| void | EvaluatePoint
(
double InCoordinate, |
Exact evaluation of point on the 3D curve According to derivativeOrder Gradient of the point (DerivativeOrder = 1) and Laplacian (DerivativeOrder = 1) can also be return | |
| void | EvaluatePoints
(
const TArray< double >& InCoordinates, |
Exact evaluation of points on the 3D curve According to derivativeOrder Gradient of the point (DerivativeOrder = 1) and Laplacian (DerivativeOrder = 1) can also be return | |
| bool | ExtendTo
(
bool bStartExtremity, |
Extend the Edge to the NewVertex. | |
| void | GenerateMeshElements
(
FModelMesh& MeshModel |
||
| const FLinearBoundary & | GetBoundary () |
||
| TArray< double > & | |||
| const TArray< double > & | |||
| TSharedRef< FRestrictionCurve > | GetCurve () |
||
| TSharedRef< FRestrictionCurve > | GetCurve () |
||
| TArray< double > | |||
| const TArray< FCuttingPoint > & | |||
| TArray< FCuttingPoint > & | |||
| double | GetDeltaUFor
(
double Coordinate, |
||
| const TArray< double > & | |||
| TArray< double > & | |||
| TArray< double > & | |||
| void | GetDiscretization2DPoints
(
EOrientation Orientation, |
Get the discretization points of the edge and add them to the outpoints TArray | |
| FPoint | |||
| FPoint | |||
| double | |||
| TSharedRef< FTopologicalVertex > | GetEndVertex () |
||
| const TSharedRef< FTopologicalVertex > | GetEndVertex () |
||
| const TSharedRef< FTopologicalVertex > | GetEndVertex
(
EOrientation Forward |
||
| const TSharedRef< FTopologicalVertex > | GetEndVertex
(
bool Forward |
||
| void | GetExtremities
(
FSurfacicCurveExtremities& Extremities |
||
| FTopologicalFace * | GetFace () |
||
| FTopologicalEdge * | |||
| const TArray< FImposedCuttingPoint > & | |||
| TSharedRef< FTopologicalEdge > | |||
| TSharedRef< const FTopologicalEdge > | |||
| TArray< FTopologicalFace * > | |||
| const FTopologicalLoop * | GetLoop () |
||
| FTopologicalLoop * | GetLoop () |
||
| const FEdgeMesh * | GetMesh () |
||
| FEdgeMesh & | GetOrCreateMesh
(
FModelMesh& MeshModel |
||
| const FTopologicalVertex * | GetOtherVertex
(
const FTopologicalVertex& Vertex |
||
| const TSharedPtr< FTopologicalVertex > | GetOtherVertex
(
const TSharedRef< FTopologicalVertex >& Vertex |
||
| FTopologicalVertex * | GetOtherVertex
(
FTopologicalVertex& Vertex |
||
| TSharedPtr< FTopologicalVertex > | GetOtherVertex
(
const TSharedRef< FTopologicalVertex >& Vertex |
||
| TArray< double > | Compute the lengths of each pre-elements of the edge i.e the elements based of the cutting points of the edges. | ||
| const FTopologicalEdge * | |||
| FTopologicalEdge * | |||
| FPoint | |||
| FPoint | |||
| double | |||
| const TSharedRef< FTopologicalVertex > | |||
| TSharedRef< FTopologicalVertex > | |||
| const TSharedRef< FTopologicalVertex > | GetStartVertex
(
EOrientation Forward |
||
| const TSharedRef< FTopologicalVertex > | GetStartVertex
(
bool Forward |
||
| FPoint2D | GetTangent2DAt
(
const double InCoordinate |
||
| FPoint2D | GetTangent2DAt
(
const FTopologicalVertex& InVertex |
||
| FPoint | GetTangentAt
(
const FTopologicalVertex& InVertex |
Return the tangent at the input vertex | |
| FPoint | GetTangentAt
(
const double InCoordinate |
||
| void | GetTangentsAtExtremities
(
FPoint& StartTangent, |
||
| void | GetTangentsAtExtremities
(
FPoint& StartTangent, |
||
| const TArray< FLinearBoundary > & | |||
| int32 | |||
| const TArray< FThinZoneSide * > & | |||
| double | GetTolerance2DAt
(
double Coordinate |
||
| double | |||
| FTopologicalEdge * | GetTwinEdge () |
||
| bool | HasSameLengthAs
(
const FTopologicalEdge& Edge, |
||
| void | InitDeltaUs () |
||
| bool | IsBorder () |
||
| bool | IsClosed () |
||
| bool | IsConnectedTo
(
const FTopologicalFace* Face |
||
| bool | IsLinkableTo
(
const FTopologicalEdge& Edge, |
It can be linked to the edge if : | |
| bool | IsSameDirection
(
const FTopologicalEdge& Edge |
||
| bool | IsSharpEdge () |
||
| bool | IsSurfacic () |
||
| bool | IsTangentAtExtremitiesWith
(
const FTopologicalEdge& Edge |
||
| bool | IsThinPeak () |
An edge is a thin peak means that this edge is a small edge at the extremity of a peak thin zone So this edge must not be meshed (except at its extremities) ThinSide 0 | |
| bool | |||
| double | Length () |
||
| void | Link
(
FTopologicalEdge& OtherEdge |
Link with the other edge. | |
| void | LinkIfCoincident
(
FTopologicalEdge& OtherEdge, |
Link two edges. | |
| void | LinkVertex () |
||
| TSharedPtr< FTopologicalEdge > | Make
(
const TSharedRef< FSurface >& InSurface, |
Build an edge to connect two vertices carried by a 2d segment | |
| TSharedPtr< FTopologicalEdge > | Make
(
const TSharedRef< FRestrictionCurve >& InCurve, |
||
| TSharedPtr< FTopologicalEdge > | Make
(
const TSharedRef< FRestrictionCurve >& InCurve, |
||
| TSharedPtr< FTopologicalEdge > | Make
(
const TSharedRef< FRestrictionCurve >& InCurve |
||
| TSharedPtr< FTopologicalEdge > | Make
(
const TSharedRef< FRestrictionCurve >& InCurve, |
||
| void | |||
| double | ProjectPoint
(
const PointType& InPointToProject, |
Project Point (2D or 3D) on the polyline (2D or 3D) and return the coordinate of the projected point | |
| void | Project a set of points on the 3D polyline and return the coordinate of the projected point | ||
| void | ProjectTwinEdgePoints
(
const TArray< FPoint >& InPointsToProject, |
Project a set of points of a twin edge on the 3D polyline and return the coordinate of the projected point | |
| void | ProjectTwinEdgePointsOn2DCurve
(
const TSharedRef< FTopologicalEdge >& InTwinEdge, |
Compute 2D points of the edge coincident the points of the twin edge defined by their coordinates | |
| void | If the mesh of the edge is not built, Empty the CuttingPoints This allows to recompute a new discretization of the mesh based among other things on a new imposed cutting points (mesh of thin zone process) | ||
| void | ReplaceEdgeVertex
(
bool bIsStartVertex, |
This function is used to : | |
| void | |||
| void | |||
| TSharedPtr< FTopologicalEdge > | ReturnIfValid
(
TSharedRef< FTopologicalEdge >& InEdge, |
To check the build edge before returning it or return TSharedPtr |
|
| void | Samples the curve with segments of a desired length | ||
| void | SetEndVertex
(
const double NewCoordinate, |
||
| void | SetEndVertex
(
const double NewCoordinate |
||
| void | SetStartVertex
(
const double NewCoordinate |
||
| void | SetStartVertex
(
const double NewCoordinate, |
||
| void | |||
| void | |||
| void | For thin zone purpose. | ||
| FTopologicalVertex * | SplitAt
(
double SplittingCoordinate, |
Split the edge at input coordinate. | |
| void | TransferCuttingPointFromMeshedEdge
(
bool bOnlyWithOppositeNode, |
||
| void | TransformActiveEdgeCoordinatesToLocalCoordinates
(
const TArray< double >& InActiveEdgeCoordinate, |
||
| double | TransformActiveEdgeCoordinateToLocalCoordinate
(
const double ActiveEdgeCoordinate |
||
| void | TransformLocalCoordinatesToActiveEdgeCoordinates
(
const TArray< double >& InLocalCoordinate, |
||
| double | TransformLocalCoordinateToActiveEdgeCoordinate
(
const double LocalCoordinate |
||
| void | TransformTwinEdgeCoordinatesToLocalCoordinates
(
const FTopologicalEdge& TwinEdge, |
||
| double | TransformTwinEdgeCoordinateToLocalCoordinate
(
const FTopologicalEdge& TwinEdge, |
||
| void | Unlink () |
Remove the edge and the extremity vertices of the linked entity vs UnlinkTwinEntities delete only the edge link |
Overridden from FEntity
| Type | Name | Description | |
|---|---|---|---|
| void | Empty () |
||
| EEntity | |||
| void | |||
| void | Serialize
(
FCADKernelArchive& Ar |
Serialization of a FEntity. | |
| void | SpawnIdent
(
FDatabase& Database |
Overridden from FHaveStates
| Type | Name | Description | |
|---|---|---|---|
| bool | Important note: A Degenerated Edge is used to close 2D boundary in case of degenerated surface to ensureCADKernel a closed boundary Specific process is done for the mesh of this kind of surface |