Fix the problem on break link and creation of a mesh on the same geometry:

- In SHAPER, create a part
- Create a sketch with a rectangle
- Extrude it
- Create a group of face with the TOP face
- Create a group of face with the BOTTOM face
- In SMESH, create a mesh with Netgen 1D2D
- Compute the mesh
=> The mesh groups TOP and BOTTOM are created (if "Create all Groups on geometry" is ticked in Create mesh dialog box)
- Call Break link on Extrusion_1_1 under Mesh_1.
- Compute Mesh_1 again (it has been cleared by break link).
- In SHAPER, edit the sketch and add a fillet in a corner
- In SMESH, create another mesh with Netgen 1D2D
- Compute Mesh_2
=> The mesh groups TOP and BOTTOM are created, but they are void and have a warning sign.
This commit is contained in:
mpv 2020-03-12 18:02:51 +03:00
parent 4a3d652a69
commit d07d6a9662

View File

@ -270,6 +270,16 @@ void SMESH_Mesh_i::ReplaceShape(GEOM::GEOM_Object_ptr theNewGeom)
if (geomClient->Find(S, aIOR)) { if (geomClient->Find(S, aIOR)) {
geomClient->RemoveShapeFromBuffer(aIOR); geomClient->RemoveShapeFromBuffer(aIOR);
} }
// clear buffer also for sub-groups
const std::set<SMESHDS_GroupBase*>& groups = _impl->GetMeshDS()->GetGroups();
std::set<SMESHDS_GroupBase*>::const_iterator g = groups.begin();
for (; g != groups.end(); ++g)
if (const SMESHDS_GroupOnGeom* group = dynamic_cast<SMESHDS_GroupOnGeom*>(*g))
{
const TopoDS_Shape& s = group->GetShape();
if (geomClient->Find(s, aIOR))
geomClient->RemoveShapeFromBuffer(aIOR);
}
// update the reference to theNewGeom (needed for correct execution of a dumped python script) // update the reference to theNewGeom (needed for correct execution of a dumped python script)
SMESH::SMESH_Mesh_var me = _this(); SMESH::SMESH_Mesh_var me = _this();