Class to manage TopoDS_Shapes along with metadata.  
 More...
Handles results of BRepBuilderAPI_MakeShape (in particular, boolean operations) by delegating to the arguments' metadata. Also see NEM::GEO::ShapeData 
Definition at line 61 of file GeoManager.H.
| Classes | |
| struct | ShapeMapHasher_Hash | 
| Hasher based on TopTools_ShapeMapHasher, which relies on TopoDS_Shape::IsSame, which is not TopoDS_Shape::operator==.  More... | |
| struct | ShapeMapHasher_KeyEqual | 
| Equality operator based on TopTools_ShapeMapHasher, which relies on TopoDS_Shape::IsSame, which is not TopoDS_Shape::operator==.  More... | |
| Public Types | |
| using | MapType = std::unordered_map< TopoDS_Shape, std::shared_ptr< ShapeData >, ShapeMapHasher_Hash, ShapeMapHasher_KeyEqual > | 
| Public Member Functions | |
| GeoManager (int dim) | |
| Create an empty geometry manager.  More... | |
| int | getDim () const | 
| Get dimension of geometry.  More... | |
| void | setDim (int dim) | 
| Set the dimension.  More... | |
| std::vector< TopoDS_Shape > | modify (BRepBuilderAPI_MakeShape &op, const std::vector< TopoDS_Shape > &shapes, const std::vector< TopAbs_ShapeEnum > &typesToTraverse={ TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE, TopAbs_SOLID}) | 
| Modify this geoMetadata after a BRepBuilderAPI_MakeShapeoperation.  More... | |
| std::vector< TopoDS_Shape > | modify (BRepBuilderAPI_MakeShape &op, const TopTools_ListOfShape &shapes, const std::vector< TopAbs_ShapeEnum > &typesToTraverse={ TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE, TopAbs_SOLID}) | 
| std::array< std::vector< TopoDS_Shape >, 2 > | modify (BRepAlgoAPI_BooleanOperation &op, const std::vector< TopAbs_ShapeEnum > &typesToTraverse={ TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE, TopAbs_SOLID}) | 
| std::vector< TopoDS_Shape > | modify (BRepBuilderAPI_Sewing &op, const std::vector< TopoDS_Shape > &shapes, const std::vector< TopAbs_ShapeEnum > &typesToTraverse={ TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE, TopAbs_SOLID}) | 
| void | deleteShapes (const TopoDS_Shape &shape) | 
| Remove a shape from the map.  More... | |
| void | deleteShapes (const std::vector< TopoDS_Shape > &shapes) | 
| Delete a set of shapes.  More... | |
| TopoDS_Compound | buildCompound () const | 
| Create a compound from shapes present in the map that have same dimension as the instance.  More... | |
| std::shared_ptr< ShapeData > * | get (const TopoDS_Shape &shape) | 
| Get the data from the map.  More... | |
| const std::shared_ptr< ShapeData > * | get (const TopoDS_Shape &shape) const | 
| Get the data from the map.  More... | |
| std::pair< MapType::iterator, bool > | insert (const TopoDS_Shape &shape, std::shared_ptr< ShapeData > shapeData) | 
| template<typename T > | |
| std::pair< MapType::iterator, bool > | insertForward (const TopoDS_Shape &shape, T &&shapeData) | 
| Helper to insert a shape and data into the map.  More... | |
| template<typename T , typename... Args> | |
| std::pair< MapType::iterator, bool > | insertConstruct (const TopoDS_Shape &shape, Args &&...args) | 
| Helper to insert a shape and construct data.  More... | |
| MapType & | getMap () | 
| const MapType & | getMap () const | 
| Get the shapes and data.  More... | |
| Protected Member Functions | |
| bool | isChild (const TopoDS_Shape &shape) const | 
| void | modifyImpl (BRepBuilderAPI_MakeShape &op, const TopoDS_Shape &shape, std::vector< TopoDS_Shape > &shapesToRemove) | 
| Protected Attributes | |
| MapType | map_ | 
| int | dim_ | 
Inherited by NEM::NUCMESH::NucMeshGeo.
| using NEM::GEO::GeoManager::MapType = std::unordered_map<TopoDS_Shape, std::shared_ptr<ShapeData>, ShapeMapHasher_Hash, ShapeMapHasher_KeyEqual> | 
Definition at line 85 of file GeoManager.H.
| 
 | explicit | 
| dim | Shapes of this dimension (clipped to be between 1 and 3, inclusive) are treated as first-class citizens, with lower-dimensional shapes assumed to be subshapes. | 
Definition at line 46 of file GeoManager.C.
| TopoDS_Compound NEM::GEO::GeoManager::buildCompound | ( | ) | const | 
Definition at line 145 of file GeoManager.C.
References isChild(), and map_.
Referenced by NEM::NUCMESH::ShapesArray::basicTransformation(), NEM::NUCMESH::NucMeshGeo::computeMesh(), and NEM::NUCMESH::ShapeBase::mergeGeo().
| void NEM::GEO::GeoManager::deleteShapes | ( | const TopoDS_Shape & | shape | ) | 
Note there is no effect if shape's dimension is less than the instance dimension (to avoid removing shapes that are still referenced by other shapes).
| shape | Shape to remove, if present | 
Definition at line 127 of file GeoManager.C.
References isChild(), and map_.
Referenced by deleteShapes(), and NEM::NUCMESH::ShapeBase::mergeGeo().
| void NEM::GEO::GeoManager::deleteShapes | ( | const std::vector< TopoDS_Shape > & | shapes | ) | 
Note there is no effect if shape's dimension is less than the instance dimension (to avoid removing shapes that are still referenced by other shapes).
| shape | Shape to remove, if present | 
| shapes | Shapes to remove, if present | 
Definition at line 139 of file GeoManager.C.
References deleteShapes().
| std::shared_ptr< ShapeData > * NEM::GEO::GeoManager::get | ( | const TopoDS_Shape & | shape | ) | 
| shape | Shape to query | 
Definition at line 162 of file GeoManager.C.
References map_.
| const std::shared_ptr< ShapeData > * NEM::GEO::GeoManager::get | ( | const TopoDS_Shape & | shape | ) | const | 
| shape | Shape to query | 
Definition at line 171 of file GeoManager.C.
References map_.
| int NEM::GEO::GeoManager::getDim | ( | ) | const | 
Definition at line 50 of file GeoManager.C.
References dim_.
Referenced by NEM::NUCMESH::ShapeBase::mergeGeo().
| GeoManager::MapType & NEM::GEO::GeoManager::getMap | ( | ) | 
Definition at line 186 of file GeoManager.C.
References map_.
Referenced by NEM::NUCMESH::CopyOverrideShapeData< QuadMeshSurface, GroupData >::updateModified().
| const GeoManager::MapType & NEM::GEO::GeoManager::getMap | ( | ) | const | 
| std::pair< GeoManager::MapType::iterator, bool > NEM::GEO::GeoManager::insert | ( | const TopoDS_Shape & | shape, | 
| std::shared_ptr< ShapeData > | shapeData | ||
| ) | 
Definition at line 181 of file GeoManager.C.
References map_.
Referenced by NEM::NUCMESH::ShapesArray::basicTransformation(), and NEM::NUCMESH::ShapeBase::mergeGeo().
| 
 | inline | 
| T | ShapeDatatype | 
| Args | Types of Tconstructor | 
| shape | Shape to insert | 
| args | Arguments of Tconstructor for data to associate withshape | 
Definition at line 218 of file GeoManager.H.
| 
 | inline | 
| T | ShapeDatatype | 
| shape | Shape to insert | 
| shapeData | Data to associate to with | 
Definition at line 197 of file GeoManager.H.
| 
 | protected | 
Definition at line 190 of file GeoManager.C.
References dim_.
Referenced by buildCompound(), NEM::NUCMESH::NucMeshGeo::computeMesh(), and deleteShapes().
| std::vector< TopoDS_Shape > NEM::GEO::GeoManager::modify | ( | BRepBuilderAPI_MakeShape & | op, | 
| const std::vector< TopoDS_Shape > & | shapes, | ||
| const std::vector< TopAbs_ShapeEnum > & | typesToTraverse = { TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE, TopAbs_SOLID} | ||
| ) | 
| op | Modification of geometry | 
| shapes | Geometry objects assumed to be inputs of op. The corresponding values in the map dictate the behavior of the resulting metadata. | 
| typesToTraverse | Traverse the subshapes of shapeswith these types. An empty list means onlyshapeswill be examined. | 
op Definition at line 74 of file GeoManager.C.
References modifyImpl(), and NEM::GEO::modifyTempl().
Referenced by NEM::NUCMESH::ShapeBase::mergeGeo(), and modify().
| std::vector< TopoDS_Shape > NEM::GEO::GeoManager::modify | ( | BRepBuilderAPI_MakeShape & | op, | 
| const TopTools_ListOfShape & | shapes, | ||
| const std::vector< TopAbs_ShapeEnum > & | typesToTraverse = { TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE, TopAbs_SOLID} | ||
| ) | 
Definition at line 84 of file GeoManager.C.
References modifyImpl(), and NEM::GEO::modifyTempl().
| std::array< std::vector< TopoDS_Shape >, 2 > NEM::GEO::GeoManager::modify | ( | BRepAlgoAPI_BooleanOperation & | op, | 
| const std::vector< TopAbs_ShapeEnum > & | typesToTraverse = { TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE, TopAbs_SOLID} | ||
| ) | 
shapes are inferred from
Definition at line 94 of file GeoManager.C.
References modify().
| std::vector< TopoDS_Shape > NEM::GEO::GeoManager::modify | ( | BRepBuilderAPI_Sewing & | op, | 
| const std::vector< TopoDS_Shape > & | shapes, | ||
| const std::vector< TopAbs_ShapeEnum > & | typesToTraverse = { TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE, TopAbs_SOLID} | ||
| ) | 
Definition at line 101 of file GeoManager.C.
References map_, NEM::GEO::modifyTempl(), and NEM::DRV::JSON::shapeType.
| 
 | protected | 
| void NEM::GEO::GeoManager::setDim | ( | int | dim | ) | 
| dim | dimension (between 1 and 3) | 
Definition at line 52 of file GeoManager.C.
References dim_.
Referenced by NEM::NUCMESH::ShapeBase::mergeGeo().
| 
 | protected | 
Definition at line 240 of file GeoManager.H.
| 
 | protected | 
Definition at line 239 of file GeoManager.H.
Referenced by buildCompound(), NEM::NUCMESH::NucMeshGeo::computeMesh(), deleteShapes(), get(), getMap(), insert(), modify(), and modifyImpl().