]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Fix for selection by name with suffix
authordbv <dbv@opencascade.com>
Mon, 5 Sep 2016 10:09:39 +0000 (13:09 +0300)
committerdbv <dbv@opencascade.com>
Mon, 5 Sep 2016 10:09:55 +0000 (13:09 +0300)
src/Model/Model_SelectionNaming.cpp

index f85886a010d7857489d12dc8c197ca792459b9aa..ecf334303ef04ca5df4843949b02be7d34adb210 100644 (file)
@@ -335,15 +335,18 @@ const TopoDS_Shape getShapeFromNS(
 {
   TopoDS_Shape aSelection;
   std::string::size_type n = theSubShapeName.rfind('/');                       
-  if (n == std::string::npos) n = 0;
+  if (n == std::string::npos) n = -1;
   std::string aSubString = theSubShapeName.substr(n + 1);
   n = aSubString.rfind('_');
-  int indx;
-  if (n == std::string::npos) {// for primitives this is a first 
-    indx = 1;
-  } else {
-    aSubString = aSubString.substr(n+1);
-    indx = atoi(aSubString.c_str());
+  int indx = 1;
+  if (n != std::string::npos) {// for primitives this is a first 
+    // if we have here the same name as theSubShapeName, there is no index in compound, it is whole
+    Handle(TDataStd_Name) aName;
+    if (!theNS->Label().FindAttribute(TDataStd_Name::GetID(), aName) ||
+        aName->Get() != theSubShapeName.c_str()) {
+      aSubString = aSubString.substr(n+1);
+      indx = atoi(aSubString.c_str());
+    }
   }
 
   TNaming_Iterator anItL(theNS);