const TopoDS_Edge& baseE = baseQuadSide->Edge( iE );
eOri[ iE ] = baseE.Orientation();
- // assure correctness of node positions on baseE
+ // assure correctness of node positions on baseE:
+ // helper.GetNodeU() will fix positions if they are wrong
if ( SMESHDS_SubMesh* smDS = meshDS->MeshElements( baseE ))
{
bool ok;
append( aCubeSide[i]._u2nodesMap, u2nodesMap.rbegin(), u2nodesMap.rend());
}
}
+ // check if the loaded grid corresponds to nb of quadrangles
+ const int nbQuads = meshDS->MeshElements( F )->NbElements();
+ const int nbHor = aCubeSide[i]._u2nodesMap.size() - 1;
+ const int nbVer = aCubeSide[i]._u2nodesMap.begin()->second.size() - 1;
+ if ( nbQuads != nbHor * nbVer )
+ {
+ SMESH_ComputeErrorPtr err = ComputePentahedralMesh(aMesh, aShape, proxymesh.get());
+ return error( err );
+ }
}
// Orient loaded grids of cube sides along axis of the unitary cube coord system