- MESSAGE("add element in subshape already belonging to a subshape "
- << ME->GetID() << " " << ME->getIdInShape() << " " << ME->getshapeId());
- throw SALOME_Exception(LOCALIZED("add element in subshape already belonging to a subshape"));
+ if (oldShapeId != myIndex)
+ {
+ MESSAGE("add element in subshape already belonging to another subshape "
+ << ME->GetID() << " " << oldShapeId << " " << myIndex);
+ throw SALOME_Exception(LOCALIZED("add element in subshape already belonging to a subshape"));
+ }
+ else
+ {
+ int idInSubShape = ME->getIdInShape();
+ if (idInSubShape >= 0)
+ {
+ MESSAGE("add element in subshape already belonging to that subshape "
+ << ME->GetID() << " " << oldShapeId << " " << idInSubShape);
+ // check if ok: do nothing if ok
+ if (idInSubShape >= myElements.size())
+ {
+ MESSAGE("out of bounds " << idInSubShape << " " << myElements.size());
+ throw SALOME_Exception(LOCALIZED("out of bounds"));
+ }
+ if (ME != myElements[idInSubShape])
+ {
+ MESSAGE("not the same element");
+ throw SALOME_Exception(LOCALIZED("not the same element"));
+ }
+ MESSAGE("already done, OK, nothing to do");
+ return;
+ }
+ }