#include "SMDS_VertexPosition.hxx"
#include "SMDS_EdgePosition.hxx"
#include "SMDS_FacePosition.hxx"
+#include "SMDS_SpacePosition.hxx"
#include "SMESHDS_GroupOnGeom.hxx"
+
#include <TopExp_Explorer.hxx>
#include <TopExp.hxx>
#include <TopoDS_Iterator.hxx>
return false;
}
+namespace {
+
+ //================================================================================
+ /*!
+ * \brief Creates a node position in volume
+ */
+ //================================================================================
+
+ inline SMDS_PositionPtr volumePosition(int volId)
+ {
+ SMDS_SpacePosition* pos = new SMDS_SpacePosition();
+ pos->SetShapeId( volId );
+ return SMDS_PositionPtr(pos);
+ }
+}
+
//=======================================================================
//function : SetNodeOnVolume
//purpose :
const TopoDS_Shell & S)
{
if ( add( aNode, getSubmesh(S) ))
- const_cast<SMDS_Position*>( aNode->GetPosition().get() )->SetShapeId( myCurSubID );
+ aNode->SetPosition ( volumePosition( myCurSubID ));
}
//=======================================================================
//function : SetNodeOnVolume
const TopoDS_Solid & S)
{
if ( add( aNode, getSubmesh(S) ))
- const_cast<SMDS_Position*>( aNode->GetPosition().get() )->SetShapeId( myCurSubID );
+ aNode->SetPosition ( volumePosition( myCurSubID ));
}
//=======================================================================
void SMESHDS_Mesh::SetNodeInVolume(const SMDS_MeshNode* aNode, int Index)
{
if ( add( aNode, getSubmesh( Index )))
- const_cast<SMDS_Position*>( aNode->GetPosition().get() )->SetShapeId( Index );
+ ((SMDS_MeshNode*) aNode)->SetPosition( volumePosition( Index ));
}
//=======================================================================