SMESH_ComputeErrorPtr ComputePentahedralMesh(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape) { //printf(" ComputePentahedralMesh HERE\n"); // bool bOK; SMESH_ComputeErrorPtr err = SMESH_ComputeError::New(); //int iErr; StdMeshers_Penta_3D anAlgo; // bOK=anAlgo.Compute(aMesh, aShape); // err = anAlgo.GetComputeError(); // if ( !bOK && anAlgo.ErrorStatus() == 5 ) { static StdMeshers_Prism_3D * aPrism3D = 0; if ( !aPrism3D ) { SMESH_Gen* gen = aMesh.GetGen(); aPrism3D = new StdMeshers_Prism_3D( gen->GetANewId(), 0, gen ); } SMESH_Hypothesis::Hypothesis_Status aStatus; if ( aPrism3D->CheckHypothesis( aMesh, aShape, aStatus ) ) { aPrism3D->InitComputeError(); bOK = aPrism3D->Compute( aMesh, aShape ); err = aPrism3D->GetComputeError(); } } return err; }
bool EvaluatePentahedralMesh(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, MapShapeNbElems& aResMap) { StdMeshers_Penta_3D anAlgo; bool bOK = anAlgo.Evaluate(aMesh, aShape, aResMap); //err = anAlgo.GetComputeError(); //if ( !bOK && anAlgo.ErrorStatus() == 5 ) if( !bOK ) { static StdMeshers_Prism_3D * aPrism3D = 0; if ( !aPrism3D ) { SMESH_Gen* gen = aMesh.GetGen(); aPrism3D = new StdMeshers_Prism_3D( gen->GetANewId(), 0, gen ); } SMESH_Hypothesis::Hypothesis_Status aStatus; if ( aPrism3D->CheckHypothesis( aMesh, aShape, aStatus ) ) { return aPrism3D->Evaluate(aMesh, aShape, aResMap); } } return bOK; }