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

#include <Database.h>

Public Member Functions

 FDatabase ()
 
FModelGetModel ()
 
TSharedPtr< FModelGetModelAsShared ()
 
void RemoveEntity (FIdent idEntity)
 
void RemoveEntity (FEntity &Entity)
 
void SerializeSelection (FCADKernelArchive &Ar, const TArray< FIdent > &SelectionIds)
 
void Serialize (FCADKernelArchive &Ar)
 
void Deserialize (FCADKernelArchive &Ar)
 
void CleanArchiveEntities ()
 
void Empty ()
 
void AddEntity (TSharedPtr< FEntity > Entity)
 
void AddEntityFromArchive (TSharedPtr< FEntity >Entity)
 
void SetReferencedEntityOrAddToWaitingList (FIdent ArchiveId, TSharedPtr< FEntity > &Entity)
 
void SetReferencedEntityOrAddToWaitingList (FIdent ArchiveId, TWeakPtr< FEntity > &Entity)
 
void SetReferencedEntityOrAddToWaitingList (FIdent ArchiveId, FEntity **Entity)
 
uint32 SpawnEntityIdents (const TArray< TSharedPtr< FEntity > > &SelectedEntities, bool bForceSpawning=false)
 
uint32 SpawnEntityIdents (const TArray< FEntity * > &SelectedEntities, bool bForceSpawning=false)
 
uint32 SpawnEntityIdent (FEntity &SelectedEntity, bool bForceSpawning=false)
 
TSharedPtr< FEntityGetEntity (FIdent id) const
 
void GetEntities (const TArray< FIdent > &ids, TArray< TSharedPtr< FEntity > > &Entities) const
 
void GetEntities (const TArray< FIdent > &ids, TArray< FEntity * > &Entities) const
 
void GetTopologicalEntities (const TArray< FIdent > &ids, TArray< FTopologicalEntity * > &Entities) const
 
void GetTopologicalShapeEntities (const TArray< FIdent > &ids, TArray< FTopologicalShapeEntity * > &Entities) const
 
void GetEntitiesOfType (EEntity Type, TArray< TSharedPtr< FEntity > > &OutEntities) const
 
void GetEntitiesOfTypes (const TSet< EEntity > &Types, TArray< TSharedPtr< FEntity > > &OutEntities) const
 
void ExpandSelection (TSharedPtr< FEntity > Entities, const TSet< EEntity > &Filter, TSet< TSharedPtr< FEntity > > &OutSelection) const
 
void ExpandSelection (const TArray< TSharedPtr< FEntity > > &Entities, const TSet< EEntity > &Filter, TSet< TSharedPtr< FEntity > > &OutSelection) const
 
void ExpandSelection (const TArray< TSharedPtr< FEntity > > &Entities, const TSet< EEntity > &Filter, TArray< TSharedPtr< FEntity > > &OutSelection) const
 
void TopologicalEntitiesSelection (const TArray< TSharedPtr< FEntity > > &Entities, TArray< TSharedPtr< FTopologicalEntity > > &OutTopoEntities, bool bFindSurfaces, bool bFindEdges, bool bFindVertices) const
 
void CadEntitiesSelection (const TArray< TSharedPtr< FEntity > > &Entities, TArray< TSharedPtr< FEntity > > &OutCadEntities) const
 
void MeshEntitiesSelection (const TArray< TSharedPtr< FEntity > > &Entities, TArray< TSharedPtr< FEntity > > &OutMeshEntities) const
 
TSharedPtr< FEntityGetFirstEntityOfType (EEntity Type) const
 

Protected Member Functions

void AddEntityToSave (FIdent EntityId)
 

Protected Attributes

TSharedPtr< FModelModel
 
TArray< TSharedPtr< FEntity > > DatabaseEntities
 
TArray< FIdentAvailableIdents
 
TArray< TSharedPtr< FEntity > > ArchiveEntities
 
TArray< TArray< TSharedPtr< FEntity > * > > ArchiveIdToWaitingSharedPointers
 
TArray< TArray< TWeakPtr< FEntity > * > > ArchiveIdToWaitingWeakPointers
 
TArray< TArray< FEntity ** > > ArchiveIdToWaitingPointers
 
TSet< FIdentEntitiesToBeSerialized
 
TQueue< FIdentNotYetSerialized
 
bool bForceSpawning = false
 
bool bIsRecursiveSerialization = false
 
uint32 EntityCount
 

Friends

class FCADKernelArchive
 
class FEntity
 
class FSession
 
template<typename , ESPMode >
class SharedPointerInternals::TIntrusiveReferenceController
 

Constructor & Destructor Documentation

◆ FDatabase()

UE::CADKernel::FDatabase::FDatabase ( )

Member Function Documentation

◆ AddEntity()

void UE::CADKernel::FDatabase::AddEntity ( TSharedPtr< FEntity Entity)
inline

All Entities are saved in the session map that allows to retrieve them according to their Id This process is automatically done during the entity creation (FEntity::MakeShared)

◆ AddEntityFromArchive()

void UE::CADKernel::FDatabase::AddEntityFromArchive ( TSharedPtr< FEntity Entity)
inline

During the load of an FArchive: All Entities are saved in the session map (like Entity created in runtime) that allows to retrieve them according to their Id. Archive's entities are also saved in a temporary map for the load purpose (c.f. FEntity::Serialize) This process is automatically done during the entity creation (FEntity::MakeShared)

◆ AddEntityToSave()

void UE::CADKernel::FDatabase::AddEntityToSave ( FIdent  EntityId)
inlineprotected

Dedicated method for SerializeSelection

◆ CadEntitiesSelection()

void UE::CADKernel::FDatabase::CadEntitiesSelection ( const TArray< TSharedPtr< FEntity > > &  Entities,
TArray< TSharedPtr< FEntity > > &  OutCadEntities 
) const

◆ CleanArchiveEntities()

void UE::CADKernel::FDatabase::CleanArchiveEntities ( )

Method to clean entity descriptions i.e. removing invalid references (like unsaved linked edges of an edge because the neighbor topological face is not saved)

◆ Deserialize()

void UE::CADKernel::FDatabase::Deserialize ( FCADKernelArchive Ar)

◆ Empty()

void UE::CADKernel::FDatabase::Empty ( )

Delete all the entities of the session

◆ ExpandSelection() [1/3]

void UE::CADKernel::FDatabase::ExpandSelection ( const TArray< TSharedPtr< FEntity > > &  Entities,
const TSet< EEntity > &  Filter,
TArray< TSharedPtr< FEntity > > &  OutSelection 
) const

◆ ExpandSelection() [2/3]

void UE::CADKernel::FDatabase::ExpandSelection ( const TArray< TSharedPtr< FEntity > > &  Entities,
const TSet< EEntity > &  Filter,
TSet< TSharedPtr< FEntity > > &  OutSelection 
) const

◆ ExpandSelection() [3/3]

void UE::CADKernel::FDatabase::ExpandSelection ( TSharedPtr< FEntity Entities,
const TSet< EEntity > &  Filter,
TSet< TSharedPtr< FEntity > > &  OutSelection 
) const

◆ GetEntities() [1/2]

void UE::CADKernel::FDatabase::GetEntities ( const TArray< FIdent > &  ids,
TArray< FEntity * > &  Entities 
) const

◆ GetEntities() [2/2]

void UE::CADKernel::FDatabase::GetEntities ( const TArray< FIdent > &  ids,
TArray< TSharedPtr< FEntity > > &  Entities 
) const

◆ GetEntitiesOfType()

void UE::CADKernel::FDatabase::GetEntitiesOfType ( EEntity  Type,
TArray< TSharedPtr< FEntity > > &  OutEntities 
) const

◆ GetEntitiesOfTypes()

void UE::CADKernel::FDatabase::GetEntitiesOfTypes ( const TSet< EEntity > &  Types,
TArray< TSharedPtr< FEntity > > &  OutEntities 
) const

◆ GetEntity()

TSharedPtr< FEntity > UE::CADKernel::FDatabase::GetEntity ( FIdent  id) const

◆ GetFirstEntityOfType()

TSharedPtr< FEntity > UE::CADKernel::FDatabase::GetFirstEntityOfType ( EEntity  Type) const

◆ GetModel()

FModel & UE::CADKernel::FDatabase::GetModel ( )
inline

◆ GetModelAsShared()

TSharedPtr< FModel > UE::CADKernel::FDatabase::GetModelAsShared ( )

◆ GetTopologicalEntities()

void UE::CADKernel::FDatabase::GetTopologicalEntities ( const TArray< FIdent > &  ids,
TArray< FTopologicalEntity * > &  Entities 
) const

◆ GetTopologicalShapeEntities()

void UE::CADKernel::FDatabase::GetTopologicalShapeEntities ( const TArray< FIdent > &  ids,
TArray< FTopologicalShapeEntity * > &  Entities 
) const

◆ MeshEntitiesSelection()

void UE::CADKernel::FDatabase::MeshEntitiesSelection ( const TArray< TSharedPtr< FEntity > > &  Entities,
TArray< TSharedPtr< FEntity > > &  OutMeshEntities 
) const

◆ RemoveEntity() [1/2]

void UE::CADKernel::FDatabase::RemoveEntity ( FEntity Entity)

◆ RemoveEntity() [2/2]

void UE::CADKernel::FDatabase::RemoveEntity ( FIdent  idEntity)

Remove from database

◆ Serialize()

void UE::CADKernel::FDatabase::Serialize ( FCADKernelArchive Ar)

All entities of the session are saved in the archive

◆ SerializeSelection()

void UE::CADKernel::FDatabase::SerializeSelection ( FCADKernelArchive Ar,
const TArray< FIdent > &  SelectionIds 
)

Recursive serialization of a selection. The selection and all the dependencies are serialized. All entities that need to be saved (added in EntitiesToBeSerialized set) for the completeness of the archive are added to the queue of entities to Serialized (NotYetSerialized).

◆ SetReferencedEntityOrAddToWaitingList() [1/3]

void UE::CADKernel::FDatabase::SetReferencedEntityOrAddToWaitingList ( FIdent  ArchiveId,
FEntity **  Entity 
)
inline

Find FEntity* associate to an Archive Id If the Entity is not yet created, add the entity in the waiting list

◆ SetReferencedEntityOrAddToWaitingList() [2/3]

void UE::CADKernel::FDatabase::SetReferencedEntityOrAddToWaitingList ( FIdent  ArchiveId,
TSharedPtr< FEntity > &  Entity 
)
inline

Find TSharedPtr<FEntity> associate to an Archive Id If the Entity is not yet created, add the entity in the waiting list

◆ SetReferencedEntityOrAddToWaitingList() [3/3]

void UE::CADKernel::FDatabase::SetReferencedEntityOrAddToWaitingList ( FIdent  ArchiveId,
TWeakPtr< FEntity > &  Entity 
)
inline

Find TWeakPtr<FEntity> associate to an Archive Id If the Entity is not yet created, add the entity in the waiting list

◆ SpawnEntityIdent()

uint32 UE::CADKernel::FDatabase::SpawnEntityIdent ( FEntity SelectedEntity,
bool  bForceSpawning = false 
)

◆ SpawnEntityIdents() [1/2]

uint32 UE::CADKernel::FDatabase::SpawnEntityIdents ( const TArray< FEntity * > &  SelectedEntities,
bool  bForceSpawning = false 
)

◆ SpawnEntityIdents() [2/2]

uint32 UE::CADKernel::FDatabase::SpawnEntityIdents ( const TArray< TSharedPtr< FEntity > > &  SelectedEntities,
bool  bForceSpawning = false 
)

◆ TopologicalEntitiesSelection()

void UE::CADKernel::FDatabase::TopologicalEntitiesSelection ( const TArray< TSharedPtr< FEntity > > &  Entities,
TArray< TSharedPtr< FTopologicalEntity > > &  OutTopoEntities,
bool  bFindSurfaces,
bool  bFindEdges,
bool  bFindVertices 
) const

Friends And Related Symbol Documentation

◆ FCADKernelArchive

friend class FCADKernelArchive
friend

◆ FEntity

friend class FEntity
friend

◆ FSession

friend class FSession
friend

◆ SharedPointerInternals::TIntrusiveReferenceController

Member Data Documentation

◆ ArchiveEntities

TArray<TSharedPtr<FEntity> > UE::CADKernel::FDatabase::ArchiveEntities
protected

Array (use as a Map<FIdent, TSharedPtr<FEntity>>) of all the entities of an archive Each Entity is at the index of AchiveId in the array

◆ ArchiveIdToWaitingPointers

TArray<TArray<FEntity**> > UE::CADKernel::FDatabase::ArchiveIdToWaitingPointers
protected

◆ ArchiveIdToWaitingSharedPointers

TArray<TArray<TSharedPtr<FEntity>*> > UE::CADKernel::FDatabase::ArchiveIdToWaitingSharedPointers
protected

Array (use as a Map<FIdent, TArray<TSharedPtr<FEntity>*>>) Some Entity reference an other Entities (with a TSharedPtr). If at the deserialization of the Entity, the referenced entity is not yet created, the pointer of the TSharedPtr of the referenced entity is added in the array associated to the ArchiveId of the referenced entity.

E.g. Edge |- ArchiveId = 5 |- Vertex1 (ArchiveId = 6)

IdToWaitingPointers[ArchiveId].Add(&Edge.Vertex)

◆ ArchiveIdToWaitingWeakPointers

TArray<TArray<TWeakPtr<FEntity>*> > UE::CADKernel::FDatabase::ArchiveIdToWaitingWeakPointers
protected

◆ AvailableIdents

TArray<FIdent> UE::CADKernel::FDatabase::AvailableIdents
protected

Recycling of the Id to avoid fragmented idents

◆ bForceSpawning

bool UE::CADKernel::FDatabase::bForceSpawning = false
mutableprotected

◆ bIsRecursiveSerialization

bool UE::CADKernel::FDatabase::bIsRecursiveSerialization = false
protected

◆ DatabaseEntities

TArray<TSharedPtr<FEntity> > UE::CADKernel::FDatabase::DatabaseEntities
protected

Array (use as a Map<FIdent, TSharedPtr<FEntity>>) of all the entities create during the session Each Entity.Id is the index of the entity in the array

◆ EntitiesToBeSerialized

TSet<FIdent> UE::CADKernel::FDatabase::EntitiesToBeSerialized
protected

Dedicated to SerializeSelection. Set of entity Ids needed to be saved

◆ EntityCount

uint32 UE::CADKernel::FDatabase::EntityCount
protected

◆ Model

TSharedPtr<FModel> UE::CADKernel::FDatabase::Model
protected

Root Geometry Entity node

◆ NotYetSerialized

TQueue<FIdent> UE::CADKernel::FDatabase::NotYetSerialized
protected

Dedicated to SerializeSelection. Queue of entity Ids waiting to be saved


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