100 lines
2.2 KiB
C++
100 lines
2.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
#pragma once
|
|
|
|
#include "Core/CADKernelArchive.h"
|
|
#include "Core/CADEntity.h"
|
|
#include "Core/HaveStates.h"
|
|
#include "Core/Types.h"
|
|
|
|
namespace UE::CADKernel
|
|
{
|
|
class FModelMesh;
|
|
class FTopologicalFace;
|
|
class FTopologyReport;
|
|
|
|
class CADKERNEL_API FTopologicalEntity : public FEntity
|
|
{
|
|
friend class FCoreTechBridge;
|
|
|
|
protected:
|
|
FIdent CtKioId = 0;
|
|
|
|
public:
|
|
|
|
FIdent GetKioId() const
|
|
{
|
|
return CtKioId;
|
|
}
|
|
|
|
virtual void Serialize(FCADKernelArchive& Ar) override
|
|
{
|
|
FEntity::Serialize(Ar);
|
|
Ar << CtKioId;
|
|
}
|
|
|
|
#ifdef CADKERNEL_DEV
|
|
virtual FInfoEntity& GetInfo(FInfoEntity&) const override;
|
|
#endif
|
|
|
|
const bool IsApplyCriteria() const
|
|
{
|
|
return ((States & EHaveStates::IsApplyCriteria) == EHaveStates::IsApplyCriteria);
|
|
}
|
|
|
|
virtual void SetApplyCriteriaMarker() const
|
|
{
|
|
States |= EHaveStates::IsApplyCriteria;
|
|
}
|
|
|
|
virtual void ResetApplyCriteria()
|
|
{
|
|
States &= ~EHaveStates::IsApplyCriteria;
|
|
}
|
|
|
|
bool IsNotMeshable() const
|
|
{
|
|
constexpr EHaveStates MeshedOrDeletedOrDegenerated = EHaveStates::IsMeshed | EHaveStates::Degenerated | EHaveStates::IsDeleted;
|
|
return ((States & MeshedOrDeletedOrDegenerated) != EHaveStates::None);
|
|
}
|
|
|
|
bool IsMeshable() const
|
|
{
|
|
constexpr EHaveStates MeshedOrDeletedOrDegenerated = EHaveStates::IsMeshed | EHaveStates::Degenerated | EHaveStates::IsDeleted;
|
|
return ((States & MeshedOrDeletedOrDegenerated) == EHaveStates::None);
|
|
}
|
|
|
|
/**
|
|
* An edge is premesh if the cutting points of the mesh have been defined but the mesh is not build
|
|
* This is used during thin zone meshing i.e. due to the process, an edge can be premeshed but not finalized
|
|
*/
|
|
bool IsPreMeshed() const
|
|
{
|
|
constexpr EHaveStates MeshedOrPreMeshed = EHaveStates::IsMeshed | EHaveStates::IsPreMeshed;
|
|
return ((States & MeshedOrPreMeshed) != EHaveStates::None);
|
|
}
|
|
|
|
bool IsMeshed() const
|
|
{
|
|
return ((States & EHaveStates::IsMeshed) == EHaveStates::IsMeshed);
|
|
}
|
|
|
|
virtual void SetPreMeshedMarker()
|
|
{
|
|
States |= EHaveStates::IsPreMeshed;
|
|
}
|
|
|
|
virtual void SetMeshedMarker()
|
|
{
|
|
constexpr EHaveStates MeshedOrPreMeshed = EHaveStates::IsMeshed | EHaveStates::IsPreMeshed;
|
|
States |= MeshedOrPreMeshed;
|
|
}
|
|
|
|
virtual void ResetPreMeshed()
|
|
{
|
|
States &= ~EHaveStates::IsPreMeshed;
|
|
}
|
|
};
|
|
|
|
} // namespace UE::CADKernel
|
|
|