- // check if the subShape is already in DF
- Handle(TNaming_NamedShape) aNS = TNaming_Tool::NamedShape(aShape, anAccessLabel);
- Handle(TDataStd_Name) anAttr;
- if(!aNS.IsNull() && !aNS->IsEmpty()) { // in the document
- if(aNS->Label().FindAttribute(TDataStd_Name::GetID(), anAttr)) {
- aName = TCollection_AsciiString(anAttr->Get()).ToCString();
- if(!aName.empty()) {
- const TDF_Label& aLabel = aDoc->findNamingName(aName);
-
- static const std::string aPostFix("_");
- TNaming_Iterator anItL(aNS);
- for(int i = 1; anItL.More(); anItL.Next(), i++) {
- if(anItL.NewShape() == aShape) {
- aName += aPostFix;
- aName += TCollection_AsciiString (i).ToCString();
- break;
- }
- }
- }
- }
- }
- if (aName.empty()) { // not found, so use the selection mechanism
- // for this the context result is needed
- ResultPtr aContext;
- const std::string& aBodyGroup = ModelAPI_ResultBody::group();
- for(int a = aDoc->size(aBodyGroup) - 1; a >= 0; a--) {
- ResultPtr aBody = std::dynamic_pointer_cast<ModelAPI_Result>(aDoc->object(aBodyGroup, a));
- if (aBody.get() && aBody->shape().get() && !aBody->isDisabled()) {
- TopoDS_Shape aBodyShape = *(aBody->shape()->implPtr<TopoDS_Shape>());
- // check is body contain the selected sub-shape
- for(TopExp_Explorer anExp(aBodyShape, aShape.ShapeType()); anExp.More(); anExp.Next()) {
- if (aShape.IsEqual(anExp.Current())) {
- aContext = aBody;
- break;
- }
+ // for this the context result is needed
+ ResultPtr aContext;
+ const std::string& aBodyGroup = ModelAPI_ResultBody::group();
+ for(int a = aDoc->size(aBodyGroup) - 1; a >= 0; a--) {
+ ResultPtr aBody = std::dynamic_pointer_cast<ModelAPI_Result>(aDoc->object(aBodyGroup, a));
+ if (aBody.get() && aBody->shape().get() && !aBody->isDisabled()) {
+ TopoDS_Shape aBodyShape = *(aBody->shape()->implPtr<TopoDS_Shape>());
+ // check is body contain the selected sub-shape
+ for(TopExp_Explorer anExp(aBodyShape, aShape.ShapeType()); anExp.More(); anExp.Next()) {
+ if (aShape.IsEqual(anExp.Current())) {
+ aContext = aBody;
+ break;