SMTK
@SMTK_VERSION@
Simulation Modeling Tool Kit
|
10 #ifndef smtk_model_Entity_h
11 #define smtk_model_Entity_h
13 #include "smtk/CoreExports.h"
14 #include "smtk/SystemConfig.h"
16 #include "smtk/resource/Component.h"
18 #include "smtk/model/Arrangement.h"
19 #include "smtk/model/EntityTypeBits.h"
20 #include "smtk/model/IntegerData.h"
62 BitFlags entityFlags = EntityTypeBits::INVALID,
69 bool resetRelations =
true);
81 return T(this->modelResource(), this->
id());
86 std::string
name()
const override;
99 void resetRelations();
103 int invalidateRelationByIndex(
int relIdx);
105 std::string flagSummary(
int form = 0)
const
107 return Entity::flagSummary(this->entityFlags(), form);
109 std::string flagDescription(
int form = 0)
const
111 return Entity::flagDescription(this->entityFlags(), form);
114 static std::string flagDimensionList(
BitFlags entityFlags,
bool& plural);
115 static std::string flagSummaryHelper(
BitFlags entityFlags,
int form = 0);
116 static std::string flagSummary(
BitFlags entityFlags,
int form = 0);
117 static std::string flagDescription(
BitFlags entityFlags,
int form = 0);
118 static int countForType(
BitFlags flags, IntegerList& counters,
bool incr =
false);
120 defaultNameFromCounters(
BitFlags entityFlags, IntegerList& counters,
bool incr =
true);
121 static std::string flagToSpecifierString(
BitFlags flagsOrMask,
bool textual =
true);
122 static BitFlags specifierStringToFlag(
const std::string& spec);
123 static BitFlags dimensionToDimensionBits(
int dim);
124 static int dimensionBitsToDimension(
BitFlags dimBits);
126 static QueryFunctor filterStringToQueryFunctor(
const std::string& spec);
151 bool isCellEntity()
const {
return smtk::model::isCellEntity(this->entityFlags()); }
152 bool isUseEntity()
const {
return smtk::model::isUseEntity(this->entityFlags()); }
153 bool isShellEntity()
const {
return smtk::model::isShellEntity(this->entityFlags()); }
154 bool isGroup()
const {
return smtk::model::isGroup(this->entityFlags()); }
155 bool isModel()
const {
return smtk::model::isModel(this->entityFlags()); }
156 bool isInstance()
const {
return smtk::model::isInstance(this->entityFlags()); }
157 bool isSessionRef()
const {
return smtk::model::isSessionRef(this->entityFlags()); }
158 bool isAuxiliaryGeometry()
const {
return smtk::model::isAuxiliaryGeometry(this->entityFlags()); }
159 bool isConcept()
const {
return smtk::model::isConcept(this->entityFlags()); }
161 bool isVertex()
const {
return smtk::model::isVertex(this->entityFlags()); }
162 bool isEdge()
const {
return smtk::model::isEdge(this->entityFlags()); }
163 bool isFace()
const {
return smtk::model::isFace(this->entityFlags()); }
164 bool isVolume()
const {
return smtk::model::isVolume(this->entityFlags()); }
165 bool isChain()
const {
return smtk::model::isChain(this->entityFlags()); }
166 bool isLoop()
const {
return smtk::model::isLoop(this->entityFlags()); }
167 bool isShell()
const {
return smtk::model::isShell(this->entityFlags()); }
168 bool isVertexUse()
const {
return smtk::model::isVertexUse(this->entityFlags()); }
169 bool isEdgeUse()
const {
return smtk::model::isEdgeUse(this->entityFlags()); }
170 bool isFaceUse()
const {
return smtk::model::isFaceUse(this->entityFlags()); }
171 bool isVolumeUse()
const {
return smtk::model::isVolumeUse(this->entityFlags()); }
186 int m_firstInvalid{ -1 };
197 #endif // smtk_model_Entity_h
The main namespace for the Simulation Modeling Tool Kit (SMTK).
Definition: doc.h:33
A solid model entity, defined by a type and relations to other entities.
Definition: Entity.h:46
int dimension(const smtk::common::UUID &ofEntity) const
Return the dimension of the manifold that the passed entity represents.
Definition: Resource.cxx:687
T referenceAs() const
Return the templated object (usually EntityRef or a subclass) that points to this component.
Definition: Entity.h:79
std::vector< smtk::attribute::AttributePtr > Attributes
Definition: PublicPointerDefs.h:471
std::string name() const override
Set/get the user-assigned name of the resource.
Definition: Resource.cxx:203
bool findDualArrangements(const smtk::common::UUID &entityId, ArrangementKind kind, int index, ArrangementReferences &duals) const
Find the inverse of the given arrangement, if it exists.
Definition: Resource.cxx:2271
unsigned int BitFlags
The integer type used to hold bit values describing an entity's type.
Definition: EntityTypeBits.h:25
@ INVALID
The entity is invalid.
Definition: EntityTypeBits.h:169
virtual Index index() const
Index is a compile-time intrinsic of the derived resource's type; as such, it cannot be set.
Definition: Resource.h:110
std::vector< smtk::model::Arrangement > Arrangements
A vector of Arrangements is associated to each Manager entity.
Definition: PublicPointerDefs.h:141
int findArrangementInvolvingEntity(const smtk::common::UUID &entityId, ArrangementKind kind, const smtk::common::UUID &involved) const
Find an arrangement of type kind that relates entityId to involvedEntity.
Definition: Resource.cxx:2235
smtk::shared_ptr< smtk::model::Entity > EntityPtr
Definition: PublicPointerDefs.h:430
std::map< ArrangementKind, Arrangements > KindsToArrangements
A map holding Arrangements of different ArrangementKinds.
Definition: Arrangement.h:171
const Arrangement * findArrangement(const smtk::common::UUID &entityId, ArrangementKind kind, int index) const
Retrieve arrangement information for a cell.
Definition: Resource.cxx:2194
bool clearArrangements(const smtk::common::UUID &entityId)
Erase all arrangements for the given entityId.
Definition: Resource.cxx:2137
std::vector< smtk::common::UUID > UUIDArray
Definition: PublicPointerDefs.h:35
Store information about solid models.
Definition: Resource.h:91
#define smtkTypeMacro(...)
Add typedefs to a class for identifcation.
Definition: SharedFromThis.h:128
smtk::weak_ptr< smtk::model::Resource > WeakResourcePtr
Definition: PublicPointerDefs.h:428
bool setId(const common::UUID &uid) override
Assign an ID to this object (used by readers; not for arbitrary reuse).
Definition: Entity.h:145
smtk::shared_ptr< smtk::model::Resource > ResourcePtr
Definition: PublicPointerDefs.h:426
#define smtkSharedPtrCreateMacro(...)
A convenience macro for declaring shared_from_this and create methods.
Definition: SharedFromThis.h:267
#define smtkSuperclassMacro(...)
Add a typedef to the superclass of this class.
Definition: SharedFromThis.h:147
const common::UUID & id() const override
Return a unique identifier for the object which will be persistent across sessions.
Definition: Entity.h:144
Component is the base class for records stored in an smtk::resource::Resource.
Definition: Component.h:43
std::pair< smtk::common::UUID, Entity > UUIDEntityPair
An abbreviation for the record type used by maps of Entity records.
Definition: Entity.h:192
ArrangementKind
Specification of how a cell's relations are arranged.
Definition: ArrangementKind.h:48
An abstract base class for SMTK resources and their components.
Definition: PersistentObject.h:39
smtk::shared_ptr< smtk::resource::Resource > ResourcePtr
Definition: PublicPointerDefs.h:302
std::vector< smtk::model::ArrangementReference > ArrangementReferences
An array of ArrangementReference objects used, for instance, to enumerate inverse relations.
Definition: PublicPointerDefs.h:138
smtk::shared_ptr< const smtk::attribute::Definition > ConstDefinitionPtr
Definition: PublicPointerDefs.h:459