//purpose :
//=======================================================================
-SMESH_Pattern::SMESH_Pattern ()
+SMESH_Pattern::SMESH_Pattern (): myToKeepNodes(false)
{
}
bool SMESH_Pattern::Load (SMESH_Mesh* theMesh,
const TopoDS_Face& theFace,
bool theProject,
- TopoDS_Vertex the1stVertex)
+ TopoDS_Vertex the1stVertex,
+ bool theKeepNodes)
{
MESSAGE(" ::Load(face) " );
Clear();
myIs2D = true;
+ myToKeepNodes = theKeepNodes;
SMESHDS_Mesh * aMeshDS = theMesh->GetMeshDS();
SMESHDS_SubMesh * fSubMesh = aMeshDS->MeshElements( theFace );
myIsBoundaryPointsFound = true;
}
+ if ( myToKeepNodes )
+ {
+ myInNodes.resize( nodePointIDMap.size() + closeNodePointIDMap.size() );
+
+ TNodePointIDMap::iterator nIdIt = nodePointIDMap.begin();
+ for ( ; nIdIt != nodePointIDMap.end(); nIdIt++ )
+ myInNodes[ nIdIt->second ] = smdsNode( nIdIt->first );
+
+ nIdIt = closeNodePointIDMap.begin();
+ for ( ; nIdIt != closeNodePointIDMap.end(); nIdIt++ )
+ myInNodes[ nIdIt->second ] = smdsNode( nIdIt->first );
+ }
+
// Assure that U range is proportional to V range
Bnd_Box2d bndBox;
//=======================================================================
bool SMESH_Pattern::Load (SMESH_Mesh* theMesh,
- const TopoDS_Shell& theBlock)
+ const TopoDS_Shell& theBlock,
+ bool theKeepNodes)
{
MESSAGE(" ::Load(volume) " );
Clear();
myIs2D = false;
+ myToKeepNodes = theKeepNodes;
SMESHDS_SubMesh * aSubMesh;
const bool isQuadMesh = theMesh->NbVolumes( ORDER_QUADRATIC );
SMDS_NodeIteratorPtr nIt = aSubMesh->GetNodes();
if ( !nIt->more() ) continue;
- // store a node and a point
+ // store a node and a point
while ( nIt->more() ) {
const SMDS_MeshNode* node = smdsNode( nIt->next() );
if ( isQuadMesh && SMESH_MeshEditor::IsMedium( node, SMDSAbs_Volume ))
myIsBoundaryPointsFound = true;
+ if ( myToKeepNodes )
+ {
+ myInNodes.resize( nodePointIDMap.size() );
+ TNodePointIDMap::iterator nIdIt = nodePointIDMap.begin();
+ for ( ; nIdIt != nodePointIDMap.end(); nIdIt++ )
+ myInNodes[ nIdIt->second ] = smdsNode( nIdIt->first );
+ }
+
return setErrorCode( ERR_OK );
}
aMeshDS->compactMesh();
+ if ( myToKeepNodes )
+ myOutNodes.swap( nodesVector );
+
// const map<int,SMESHDS_SubMesh*>& sm = aMeshDS->SubMeshes();
// map<int,SMESHDS_SubMesh*>::const_iterator i_sm = sm.begin();
// for ( ; i_sm != sm.end(); i_sm++ )