0021397: EDF SMESH: a quadrangle face mesh can't be projected to a cylinder

enable FindSubShapeAssociation() on faces with different nb of VERTEXes
This commit is contained in:
eap 2012-12-28 15:52:46 +00:00
parent d7b0855638
commit 64a8aee9ab

View File

@ -1118,7 +1118,11 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
TopoDS_Vertex VV1[2], VV2[2]; TopoDS_Vertex VV1[2], VV2[2];
if ( vMap1.Extent() != vMap2.Extent() ) if ( vMap1.Extent() != vMap2.Extent() )
RETURN_BAD_RESULT("Different nb of vertices"); {
if ( HERE::Count( theShape1, TopAbs_EDGE, /*ignoreSame=*/false ) !=
HERE::Count( theShape2, TopAbs_EDGE, /*ignoreSame=*/false ))
RETURN_BAD_RESULT("Different nb of vertices");
}
if ( vMap1.Extent() == 1 ) { if ( vMap1.Extent() == 1 ) {
InsertAssociation( vMap1(1), vMap2(1), theMap ); InsertAssociation( vMap1(1), vMap2(1), theMap );
@ -1158,10 +1162,10 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
// Find transformation to make the shapes be of similar size at same location // Find transformation to make the shapes be of similar size at same location
Bnd_Box box[2]; Bnd_Box box[2];
for ( int i = 1; i <= vMap1.Extent(); ++i ) { for ( int i = 1; i <= vMap1.Extent(); ++i )
box[ 0 ].Add( BRep_Tool::Pnt ( TopoDS::Vertex( vMap1( i )))); box[ 0 ].Add( BRep_Tool::Pnt ( TopoDS::Vertex( vMap1( i ))));
for ( int i = 1; i <= vMap2.Extent(); ++i )
box[ 1 ].Add( BRep_Tool::Pnt ( TopoDS::Vertex( vMap2( i )))); box[ 1 ].Add( BRep_Tool::Pnt ( TopoDS::Vertex( vMap2( i ))));
}
gp_Pnt gc[2]; // box center gp_Pnt gc[2]; // box center
double x0,y0,z0, x1,y1,z1; double x0,y0,z0, x1,y1,z1;
@ -2223,7 +2227,7 @@ void StdMeshers_ProjectionUtils::SetEventListener(SMESH_subMesh* subMesh,
TopoDS_Shape srcShape, TopoDS_Shape srcShape,
SMESH_Mesh* srcMesh) SMESH_Mesh* srcMesh)
{ {
// Set listener that resets an event listener on source submesh when // Set the listener that resets an event listener on source submesh when
// "ProjectionSource*D" hypothesis is modified since source shape can be changed // "ProjectionSource*D" hypothesis is modified since source shape can be changed
subMesh->SetEventListener( GetHypModifWaiter(),0,subMesh); subMesh->SetEventListener( GetHypModifWaiter(),0,subMesh);