0020951: EDF 1501 SMESH: Conversion linear/quadratic with medium nodes on geometry fails with GHS3D

* Fix for usecase: open the atached study, convert Mesh_1 from
   quadratic, unassign GHS3D algo -> SIGSEGV. Reason is that the same
   SMDS_SpacePosition is shared by all nodes in different solids.
This commit is contained in:
eap 2010-08-04 12:02:49 +00:00
parent cb58ff9fa4
commit da13b7ebd3

View File

@ -3247,13 +3247,15 @@ public:
}
PositionCreator() {
myFuncTable.resize( (size_t) TopAbs_SHAPE, & PositionCreator::defaultPosition );
myFuncTable[ TopAbs_FACE ] = & PositionCreator::facePosition;
myFuncTable[ TopAbs_EDGE ] = & PositionCreator::edgePosition;
myFuncTable[ TopAbs_SOLID ] = & PositionCreator::volumePosition;
myFuncTable[ TopAbs_FACE ] = & PositionCreator::facePosition;
myFuncTable[ TopAbs_EDGE ] = & PositionCreator::edgePosition;
myFuncTable[ TopAbs_VERTEX ] = & PositionCreator::vertexPosition;
}
private:
SMDS_PositionPtr edgePosition() const { return SMDS_PositionPtr( new SMDS_EdgePosition ); }
SMDS_PositionPtr facePosition() const { return SMDS_PositionPtr( new SMDS_FacePosition ); }
SMDS_PositionPtr volumePosition() const { return SMDS_PositionPtr( new SMDS_SpacePosition ); }
SMDS_PositionPtr vertexPosition() const { return SMDS_PositionPtr( new SMDS_VertexPosition); }
SMDS_PositionPtr defaultPosition() const { return SMDS_SpacePosition::originSpacePosition(); }
typedef SMDS_PositionPtr (PositionCreator:: * FmakePos)() const;