SMTK
@SMTK_VERSION@
Simulation Modeling Tool Kit
|
10 #ifndef smtk_model_Arrangement_h
11 #define smtk_model_Arrangement_h
13 #include "smtk/common/UUID.h"
15 #include "smtk/model/ArrangementKind.h"
27 typedef std::shared_ptr<Entity>
EntityPtr;
46 std::vector<int>&
details() {
return m_details; }
47 std::vector<int>
const&
details()
const {
return m_details; }
56 CellHasUseWithIndexSenseAndOrientation(
int relationIdx,
int sense,
Orientation o);
57 static Arrangement CellEmbeddedInEntityWithIndex(
int relationIdx);
58 static Arrangement CellIncludesEntityWithIndex(
int relationIdx);
59 static Arrangement CellHasShellWithIndex(
int relationIdx);
60 static Arrangement UseHasCellWithIndexAndSense(
int relationIdx,
int sense);
61 static Arrangement UseHasShellWithIndex(
int relationIdx);
62 static Arrangement UseOrShellIncludesShellWithIndex(
int relationIdx);
63 static Arrangement ShellHasCellWithIndex(
int relationIdx);
64 static Arrangement ShellHasUseWithIndexRange(
int relationBegin,
int relationEnd);
65 static Arrangement ShellEmbeddedInUseOrShellWithIndex(
int relationIdx);
66 static Arrangement InstanceInstanceOfWithIndex(
int relationIdx);
67 static Arrangement EntityInstancedByWithIndex(
int relationIdx);
68 static Arrangement EntitySupersetOfWithIndex(
int relationIdx);
69 static Arrangement EntitySubsetOfWithIndex(
int relationIdx);
71 bool IndexSenseAndOrientationFromCellHasUse(
int& relationIdx,
int& sense,
Orientation& orient)
73 bool IndexFromCellEmbeddedInEntity(
int& relationIdx)
const;
74 bool IndexFromCellIncludesEntity(
int& relationIdx)
const;
75 bool IndexFromCellHasShell(
int& relationIdx)
const;
76 bool IndexAndSenseFromUseHasCell(
int& relationIdx,
int& sense)
const;
77 bool IndexFromUseHasShell(
int& relationIdx)
const;
78 bool IndexFromUseOrShellIncludesShell(
int& relationIdx)
const;
79 bool IndexFromShellHasCell(
int& relationIdx)
const;
80 bool IndexRangeFromShellHasUse(
int& relationBegin,
int& relationEnd)
const;
81 bool IndexFromShellEmbeddedInUseOrShell(
int& relationIdx)
const;
82 bool IndexFromInstanceInstanceOf(
int& relationIdx)
const;
83 bool IndexFromEntityInstancedBy(
int& relationIdx)
const;
84 bool IndexFromEntitySupersetOf(
int& relationIdx)
const;
85 bool IndexFromEntitySubsetOf(
int& relationIdx)
const;
86 bool IndexFromAuxiliaryGeometryEmbeddedInEntity(
int& relationIdx)
const;
87 bool IndexFromAuxiliaryGeometryIncludesEntity(
int& relationIdx)
const;
90 bool IndexFromSimple(
int& relationIdx)
const;
96 template<
bool (Arrangement::*M)(
int&) const>
100 template<
bool (Arrangement::*M)(
int&,
int&) const>
104 template<
bool (Arrangement::*M)(
int&,
int&) const>
108 template<
bool (Arrangement::*M)(
int&,
int&, Orientation&) const>
135 std::vector<int> m_details;
std::map< ArrangementKind, Arrangements >::iterator ArrangementKindWithArrangements
An iterator referencing an (ArrangementKind,Arrangements)-tuple.
Definition: Arrangement.h:177
The main namespace for the Simulation Modeling Tool Kit (SMTK).
Definition: doc.h:33
EntityTypeBits
Different types of entities the model can hold and their inherent properties.
Definition: EntityTypeBits.h:101
ArrangementKind kind
The kind of the arrangement.
Definition: Arrangement.h:164
A helper to extract the relationship from an arrangement that stores an index, sense,...
Definition: Arrangement.h:109
Orientation
Constants that describe a cell-use's orientation relative to its parent cell.
Definition: ArrangementKind.h:39
A helper to extract the relationship from an arrangement that stores an index and sense.
Definition: Arrangement.h:101
Store an arrangement of solid model entities.
Definition: Arrangement.h:40
std::vector< smtk::model::Arrangement > Arrangements
A vector of Arrangements is associated to each Manager entity.
Definition: PublicPointerDefs.h:141
@ KINDS_OF_ARRANGEMENTS
The number of different kinds of arrangement relationships enumerated here.
Definition: ArrangementKind.h:63
std::vector< int > const & details() const
Access to the integer vector defining an arrangement.
Definition: Arrangement.h:47
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
smtk::weak_ptr< smtk::model::Entity > WeakEntityPtr
Definition: PublicPointerDefs.h:432
A helper to extract relationships from an arrangement that stores an index range.
Definition: Arrangement.h:105
ArrangementReference()=default
Construct an invalid reference.
std::vector< smtk::common::UUID > UUIDArray
Definition: PublicPointerDefs.h:35
bool isValid() const
Indicate whether a reference is valid or not:
Definition: Arrangement.h:158
A simple structure that robustly references an arrangement.
Definition: Arrangement.h:144
A helper to extract the relationship from an arrangement that stores only an index.
Definition: Arrangement.h:97
std::map< smtk::common::UUID, KindsToArrangements >::iterator UUIDWithArrangementDictionary
An iterator referencing a (UUID,KindsToArrangements)-tuple.
Definition: Arrangement.h:175
ArrangementReference(const smtk::common::UUID &entId, ArrangementKind k, int idx)
Construct a valid reference.
Definition: Arrangement.h:148
std::vector< int > & details()
Access to the integer vector defining an arrangement.
Definition: Arrangement.h:46
std::map< smtk::common::UUID, KindsToArrangements > UUIDsToArrangements
Each Manager entity's UUID is mapped to a vector of Arrangment instances.
Definition: Arrangement.h:173
int index
The index of the arrangement.
Definition: Arrangement.h:165
ArrangementKind
Specification of how a cell's relations are arranged.
Definition: ArrangementKind.h:48
smtk::common::UUID entityId
The ID of the entity on which the arrangement is defined.
Definition: Arrangement.h:163
std::vector< smtk::model::ArrangementReference > ArrangementReferences
An array of ArrangementReference objects used, for instance, to enumerate inverse relations.
Definition: PublicPointerDefs.h:138