{
TopoDS_Edge srcE1 = srcEdges.front(), tgtE1 = tgtEdges.front();
reverse = ( ! srcE1.IsSame( shape2ShapeMap( tgtE1 )));
- if ( BRep_Tool::IsClosed( tgtE1, tgtFace )) {
- reverse = ( srcE1.Orientation() == tgtE1.Orientation() );
- if ( _sourceHypo->GetSourceFace().Orientation() != theShape.Orientation() )
- reverse = !reverse;
- }
}
else if ( nbEdgesInWires.front() == 1 )
{
// it will remove mesh built by pattern mapper on edges and vertices
// in failure case
- MeshCleaner cleaner( tgtSubMesh );
+ // MeshCleaner cleaner( tgtSubMesh );
// -------------------------------------------------------------------------
// mapper doesn't take care of nodes already existing on edges and vertices,
bool isSeam = helper.IsSeamShape( sm->GetId() );
- enum { NEW_NODES, OLD_NODES };
+ enum { NEW_NODES = 0, OLD_NODES };
map< double, const SMDS_MeshNode* > u2nodesMaps[2], u2nodesOnSeam;
map< double, const SMDS_MeshNode* >::iterator u_oldNode, u_newNode, u_newOnSeam, newEnd;
set< const SMDS_MeshNode* > seamNodes;
}
// sort nodes on edges by its position
- map< double, const SMDS_MeshNode* > & pos2nodes = u2nodesMaps[ isOld ];
+ map< double, const SMDS_MeshNode* > & pos2nodes = u2nodesMaps[isOld ? OLD_NODES : NEW_NODES];
switch ( node->GetPosition()->GetTypeOfPosition() )
{
case SMDS_TOP_VERTEX: {
node->GetPosition()->GetTypeOfPosition());
}
}
- if ( u2nodesMaps[ OLD_NODES ].size() != u2nodesMaps[ NEW_NODES ].size() )
- RETURN_BAD_RESULT("Different nb of old and new nodes " <<
+ if ( u2nodesMaps[ NEW_NODES ].size() != u2nodesMaps[ OLD_NODES ].size() )
+ {
+ if ( u2nodesMaps[ NEW_NODES ].size() == 0 &&
+ sm->GetSubShape().ShapeType() == TopAbs_EDGE &&
+ BRep_Tool::Degenerated( TopoDS::Edge( sm->GetSubShape() )))
+ // NPAL15894 (tt88bis.py) - project mesh built by NETGEN_1d_2D that
+ // does not make segments/nodes on degenerated edges
+ continue;
+ RETURN_BAD_RESULT("Different nb of old and new nodes on shape #"<< sm->GetId() <<" "<<
u2nodesMaps[ OLD_NODES ].size() << " != " <<
u2nodesMaps[ NEW_NODES ].size());
- if ( isSeam && u2nodesMaps[ OLD_NODES ].size() != u2nodesOnSeam.size() )
+ }
+ if ( isSeam && u2nodesMaps[ OLD_NODES ].size() != u2nodesOnSeam.size() ) {
RETURN_BAD_RESULT("Different nb of old and seam nodes " <<
u2nodesMaps[ OLD_NODES ].size() << " != " << u2nodesOnSeam.size());
-
+ }
// Make groups of nodes to merge
u_oldNode = u2nodesMaps[ OLD_NODES ].begin();
u_newNode = u2nodesMaps[ NEW_NODES ].begin();
}
}
- cleaner.Release(); // do not remove mesh
+ //cleaner.Release(); // do not remove mesh
return true;
}