]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
For for bounding planes selection in composite features
authordbv <dbv@opencascade.com>
Thu, 18 Jun 2015 09:35:53 +0000 (12:35 +0300)
committerdbv <dbv@opencascade.com>
Thu, 18 Jun 2015 09:40:43 +0000 (12:40 +0300)
src/FeaturesPlugin/FeaturesPlugin_ExtrusionBoolean.cpp
src/FeaturesPlugin/FeaturesPlugin_RevolutionBoolean.cpp

index fcc22448899360c476b1d66e6195f16acb046f96..af44526a7365eabfbec01ec6380130b2301dfc31 100644 (file)
@@ -33,12 +33,18 @@ ListOfShape FeaturesPlugin_ExtrusionBoolean::MakeSolids(const ListOfShape& theFa
   std::shared_ptr<GeomAPI_Shape> aFromShape;
   std::shared_ptr<GeomAPI_Shape> aToShape;
   std::shared_ptr<ModelAPI_AttributeSelection> anObjRef = selection(FROM_OBJECT_ID());
-  if (anObjRef) {
+  if(anObjRef.get() != NULL) {
     aFromShape = std::dynamic_pointer_cast<GeomAPI_Shape>(anObjRef->value());
+    if(aFromShape.get() == NULL && anObjRef->context().get() != NULL) {
+      aFromShape = anObjRef->context()->shape();
+    }
   }
   anObjRef = selection(TO_OBJECT_ID());
-  if (anObjRef) {
+  if(anObjRef.get() != NULL) {
     aToShape = std::dynamic_pointer_cast<GeomAPI_Shape>(anObjRef->value());
+    if(aToShape.get() == NULL && anObjRef->context().get() != NULL) {
+      aToShape =  anObjRef->context()->shape();
+    }
   }
 
   // Getting extrusion sizes.
index 6467924921405829f6b19f38f0e48d30048eabb7..09a0fd72b3ce491cea6bd16f674b6342561a90a4 100644 (file)
@@ -48,12 +48,18 @@ ListOfShape FeaturesPlugin_RevolutionBoolean::MakeSolids(const ListOfShape& theF
   std::shared_ptr<GeomAPI_Shape> aFromShape;
   std::shared_ptr<GeomAPI_Shape> aToShape;
   anObjRef = selection(FROM_OBJECT_ID());
-  if (anObjRef) {
+  if(anObjRef.get() != NULL) {
     aFromShape = std::dynamic_pointer_cast<GeomAPI_Shape>(anObjRef->value());
+    if(aFromShape.get() == NULL && anObjRef->context().get() != NULL) {
+      aFromShape = anObjRef->context()->shape();
+    }
   }
   anObjRef = selection(TO_OBJECT_ID());
-  if (anObjRef) {
+  if(anObjRef.get() != NULL) {
     aToShape = std::dynamic_pointer_cast<GeomAPI_Shape>(anObjRef->value());
+    if(aToShape.get() == NULL && anObjRef->context().get() != NULL) {
+      aToShape =  anObjRef->context()->shape();
+    }
   }
 
   // Getting revolution angles.