IPAL53011: Order of sub-mesh in meshing process does't work
fix SALOME crash: resize occgeom.facemeshstatus in FillNgMesh() + cosmetic changes
This commit is contained in:
parent
043ee5d5fe
commit
0b23f6ad83
@ -266,8 +266,6 @@ void NETGENPlugin_Mesher::SetParameters(const NETGENPlugin_Hypothesis* hyp)
|
|||||||
// create elements of second order
|
// create elements of second order
|
||||||
mparams.secondorder = hyp->GetSecondOrder() ? 1 : 0;
|
mparams.secondorder = hyp->GetSecondOrder() ? 1 : 0;
|
||||||
// quad-dominated surface meshing
|
// quad-dominated surface meshing
|
||||||
// only triangles are allowed for volumic mesh (before realizing IMP 0021676)
|
|
||||||
//if (!_isVolume)
|
|
||||||
mparams.quad = hyp->GetQuadAllowed() ? 1 : 0;
|
mparams.quad = hyp->GetQuadAllowed() ? 1 : 0;
|
||||||
_optimize = hyp->GetOptimize();
|
_optimize = hyp->GetOptimize();
|
||||||
_fineness = hyp->GetFineness();
|
_fineness = hyp->GetFineness();
|
||||||
@ -288,16 +286,13 @@ void NETGENPlugin_Mesher::SetParameters(const NETGENPlugin_Hypothesis* hyp)
|
|||||||
double val = (*it).second;
|
double val = (*it).second;
|
||||||
// --
|
// --
|
||||||
GEOM::GEOM_Object_var aGeomObj;
|
GEOM::GEOM_Object_var aGeomObj;
|
||||||
TopoDS_Shape S = TopoDS_Shape();
|
|
||||||
SALOMEDS::SObject_var aSObj = myStudy->FindObjectID( entry.c_str() );
|
SALOMEDS::SObject_var aSObj = myStudy->FindObjectID( entry.c_str() );
|
||||||
if ( !aSObj->_is_nil() ) {
|
if ( !aSObj->_is_nil() ) {
|
||||||
CORBA::Object_var obj = aSObj->GetObject();
|
CORBA::Object_var obj = aSObj->GetObject();
|
||||||
aGeomObj = GEOM::GEOM_Object::_narrow(obj);
|
aGeomObj = GEOM::GEOM_Object::_narrow(obj);
|
||||||
aSObj->UnRegister();
|
aSObj->UnRegister();
|
||||||
}
|
}
|
||||||
if ( !aGeomObj->_is_nil() )
|
TopoDS_Shape S = smeshGen_i->GeomObjectToShape( aGeomObj.in() );
|
||||||
S = smeshGen_i->GeomObjectToShape( aGeomObj.in() );
|
|
||||||
// --
|
|
||||||
SetLocalSize(S, val);
|
SetLocalSize(S, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -961,8 +956,10 @@ bool NETGENPlugin_Mesher::FillNgMesh(netgen::OCCGeometry& occgeom,
|
|||||||
// if second oreder is required, even already meshed faces must be passed to NETGEN
|
// if second oreder is required, even already meshed faces must be passed to NETGEN
|
||||||
int fID = occgeom.fmap.Add( geomFace );
|
int fID = occgeom.fmap.Add( geomFace );
|
||||||
occgeom.facemeshstatus[ fID-1 ] = netgen::FACE_MESHED_OK;
|
occgeom.facemeshstatus[ fID-1 ] = netgen::FACE_MESHED_OK;
|
||||||
while ( fID < faceNgID ) { // geomFace is already in occgeom.fmap, add a copy
|
while ( fID < faceNgID ) // geomFace is already in occgeom.fmap, add a copy
|
||||||
|
{
|
||||||
fID = occgeom.fmap.Add( BRepBuilderAPI_Copy( geomFace, /*copyGeom=*/false ));
|
fID = occgeom.fmap.Add( BRepBuilderAPI_Copy( geomFace, /*copyGeom=*/false ));
|
||||||
|
if ( occgeom.facemeshstatus.Size() < fID ) occgeom.facemeshstatus.SetSize( fID );
|
||||||
occgeom.facemeshstatus[ fID-1 ] = netgen::FACE_MESHED_OK;
|
occgeom.facemeshstatus[ fID-1 ] = netgen::FACE_MESHED_OK;
|
||||||
}
|
}
|
||||||
// Problem with the second order in a quadrangular mesh remains.
|
// Problem with the second order in a quadrangular mesh remains.
|
||||||
@ -970,7 +967,7 @@ bool NETGENPlugin_Mesher::FillNgMesh(netgen::OCCGeometry& occgeom,
|
|||||||
// by FillSMesh() (find "AddFaceDescriptor")
|
// by FillSMesh() (find "AddFaceDescriptor")
|
||||||
// 2) Temporary triangles generated by StdMeshers_QuadToTriaAdaptor
|
// 2) Temporary triangles generated by StdMeshers_QuadToTriaAdaptor
|
||||||
// are on faces where quadrangles were.
|
// are on faces where quadrangles were.
|
||||||
// Due to these 2 points, wrong geom faces are used while conversion to qudratic
|
// Due to these 2 points, wrong geom faces are used while conversion to quadratic
|
||||||
// of the mentioned above quadrangles and triangles
|
// of the mentioned above quadrangles and triangles
|
||||||
|
|
||||||
// Orient the face correctly in solidID1 (issue 0020206)
|
// Orient the face correctly in solidID1 (issue 0020206)
|
||||||
@ -2141,7 +2138,7 @@ int NETGENPlugin_Mesher::FillSMesh(const netgen::OCCGeometry& occgeo,
|
|||||||
for (i = nbInitFac+1; i <= nbFac; ++i )
|
for (i = nbInitFac+1; i <= nbFac; ++i )
|
||||||
{
|
{
|
||||||
const netgen::Element2d& elem = ngMesh.SurfaceElement(i);
|
const netgen::Element2d& elem = ngMesh.SurfaceElement(i);
|
||||||
int aGeomFaceInd = elem.GetIndex();
|
const int aGeomFaceInd = elem.GetIndex();
|
||||||
TopoDS_Face aFace;
|
TopoDS_Face aFace;
|
||||||
if (aGeomFaceInd > 0 && aGeomFaceInd <= occgeo.fmap.Extent())
|
if (aGeomFaceInd > 0 && aGeomFaceInd <= occgeo.fmap.Extent())
|
||||||
aFace = TopoDS::Face(occgeo.fmap(aGeomFaceInd));
|
aFace = TopoDS::Face(occgeo.fmap(aGeomFaceInd));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user