]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #710 fillet is wrong
authornds <natalia.donis@opencascade.com>
Mon, 6 Jul 2015 10:47:42 +0000 (13:47 +0300)
committernds <natalia.donis@opencascade.com>
Mon, 6 Jul 2015 10:47:42 +0000 (13:47 +0300)
a correction in customize object. There was a regression when saving the customized boolean result value.

src/ModuleBase/ModuleBase_IModule.h
src/PartSet/PartSet_CustomPrs.cpp
src/PartSet/PartSet_CustomPrs.h
src/PartSet/PartSet_Module.cpp
src/PartSet/PartSet_Module.h
src/XGUI/XGUI_Displayer.cpp

index f3e47d8559bca6153d73f9f52b7f2f22abae3f27..f77d5674aaa7316f3a200507a3abd6e86a5e9709 100644 (file)
@@ -148,9 +148,8 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   * If the object is result with the color attribute value set, it is used,\r
   * otherwise the customize is applyed to the object's feature if it is a custom prs\r
   * \param theObject an object instance\r
-  * \return the true state if there is changes and the presentation is customized\r
   */\r
-  virtual bool customizeObject(ObjectPtr theObject) { return false; }\r
+  virtual void customizeObject(ObjectPtr theObject) {}\r
 \r
   /// This method is called on object browser creation for customisation of module specific features\r
   /// \param theObjectBrowser a pinter on Object Browser widget\r
index a90b634ac4b71ed3399f5c8d5903dc9e2f4fdb80..aedc188b58d111159f80101a8a559d8b2c30fa82 100755 (executable)
@@ -98,26 +98,18 @@ Handle(PartSet_OperationPrs) PartSet_CustomPrs::getPresentation() const
   return Handle(PartSet_OperationPrs)::DownCast(anAISIO);
 }
 
-bool PartSet_CustomPrs::customize(const ObjectPtr& theObject)
+void PartSet_CustomPrs::customize(const ObjectPtr& theObject)
 {
   // the presentation should be recomputed if the previous AIS depend on the result
   // [it should be hiddend] or the new AIS depend on it [it should be visualized]
   Handle(PartSet_OperationPrs) anOperationPrs = getPresentation();
   Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
   if (aContext->IsDisplayed(anOperationPrs)) {
-    bool aChanged = anOperationPrs->dependOn(theObject);
-
+    // if there are performance poblems, to improve them, the necessity of redisplay can be checked
+    //bool aChanged = anOperationPrs->dependOn(theObject);
     anOperationPrs->updateShapes();
-    aChanged = aChanged || anOperationPrs->dependOn(theObject);
-
+    //aChanged = aChanged || anOperationPrs->dependOn(theObject);
     //if (aChanged)
     anOperationPrs->Redisplay();
   }
-  return false;
-}
-
-bool PartSet_CustomPrs::customisePresentation(ResultPtr theResult, AISObjectPtr thePrs,
-                                              std::shared_ptr<GeomAPI_ICustomPrs> theCustomPrs)
-{
-  return false;
 }
index 6a34fbb2af4d94d0307c453adc32fa63fd8da240..b5fec271cb19ba45364cbca0665e01cebf07cff7 100755 (executable)
@@ -25,7 +25,7 @@ class ModuleBase_IWorkshop;
 * Interface of a class which can provide specific customization of
 * object presentation
 */
-class PartSet_CustomPrs : public GeomAPI_ICustomPrs
+class PartSet_CustomPrs
 {
 public:
   PARTSET_EXPORT PartSet_CustomPrs(ModuleBase_IWorkshop* theWorkshop);
@@ -40,11 +40,8 @@ public:
   void deactivate();
 
   /// Modifies the given presentation in the custom way.
-  bool customize(const ObjectPtr& theObject);
+  void customize(const ObjectPtr& theObject);
 
-  /// Modifies the given presentation in the custom way.
-  virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs,
-                                     std::shared_ptr<GeomAPI_ICustomPrs> theCustomPrs);
 private:
   /// Returns the AIS presentation
   Handle(PartSet_OperationPrs) getPresentation() const;
index 938731a81ecd17ce2ff5d3d7f6d0e34e7efe5972..e43057089d3449665a6f7220c4fbaecb2bd8f159 100644 (file)
@@ -133,7 +133,7 @@ PartSet_Module::PartSet_Module(ModuleBase_IWorkshop* theWshop)
           SLOT(onViewTransformed(int)));
 
   myMenuMgr = new PartSet_MenuMgr(this);
-  myCustomPrs = std::shared_ptr<GeomAPI_ICustomPrs>(new PartSet_CustomPrs(theWshop));
+  myCustomPrs = new PartSet_CustomPrs(theWshop);
 
   Events_Loop* aLoop = Events_Loop::loop();
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_DOCUMENT_CHANGED));
@@ -280,9 +280,7 @@ void PartSet_Module::onOperationStarted(ModuleBase_Operation* theOperation)
     mySketchMgr->startNestedSketch(theOperation);
   }
 
-  std::shared_ptr<PartSet_CustomPrs> aCustomPrs =
-                        std::dynamic_pointer_cast<PartSet_CustomPrs>(myCustomPrs);
-  aCustomPrs->activate(theOperation->feature());
+  myCustomPrs->activate(theOperation->feature());
 }
 
 void PartSet_Module::onOperationStopped(ModuleBase_Operation* theOperation)
@@ -296,9 +294,7 @@ void PartSet_Module::onOperationStopped(ModuleBase_Operation* theOperation)
   Handle(V3d_Viewer) aViewer = myWorkshop->viewer()->AISContext()->CurrentViewer();
   aViewer->RemoveZLayer(myVisualLayerId);
   myVisualLayerId = 0;
-  std::shared_ptr<PartSet_CustomPrs> aCustomPrs =
-                        std::dynamic_pointer_cast<PartSet_CustomPrs>(myCustomPrs);
-  aCustomPrs->deactivate();
+  myCustomPrs->deactivate();
 }
 
 ModuleBase_Operation* PartSet_Module::currentOperation() const
@@ -730,14 +726,10 @@ void PartSet_Module::onViewTransformed(int theTrsfType)
     aDisplayer->updateViewer();
 }
 
-bool PartSet_Module::customizeObject(ObjectPtr theObject)
+void PartSet_Module::customizeObject(ObjectPtr theObject)
 {
-  std::shared_ptr<PartSet_CustomPrs> aCustomPrs =
-                          std::dynamic_pointer_cast<PartSet_CustomPrs>(myCustomPrs);
-  bool isCustomized = false;
-  if (aCustomPrs->isActive())
-    isCustomized = aCustomPrs->customize(theObject);
-  return isCustomized;
+  if (myCustomPrs->isActive())
+    myCustomPrs->customize(theObject);
 }
 
 void PartSet_Module::customizeObjectBrowser(QWidget* theObjectBrowser)
index eb64c79e4ea22c7304e75138c966ceb51926665f..5520d0d2ced44c795f273fef0e2bb6c57ad068c5 100644 (file)
@@ -12,8 +12,6 @@
 #include <ModelAPI_Attribute.h>
 #include <ModelAPI_CompositeFeature.h>
 
-#include <GeomAPI_ICustomPrs.h>
-
 #include <Events_Listener.h>
 
 //#include <StdSelect_FaceFilter.hxx>
@@ -153,9 +151,8 @@ public:
   * If the object is result with the color attribute value set, it is used,
   * otherwise the customize is applyed to the object's feature if it is a custom prs
   * \param theObject an object instance
-  * \return the true state if there is changes and the presentation is customized
   */
-  virtual bool customizeObject(ObjectPtr theObject);
+  virtual void customizeObject(ObjectPtr theObject);
 
   /// This method is called on object browser creation for customisation of module specific features
   /// \param theObjectBrowser a pinter on Object Browser widget
@@ -238,8 +235,7 @@ protected slots:
   PartSet_SketcherMgr* mySketchMgr;
   PartSet_MenuMgr* myMenuMgr;
   /// A default custom presentation, which is used for references objects of started operation
-  GeomCustomPrsPtr myCustomPrs;
-
+  PartSet_CustomPrs* myCustomPrs;
   int myVisualLayerId;
 
   PartSet_DocumentDataModel* myDataModel;
index c202b4f6d39e2d398dac34dcd405c3acb96cff3b..98cea3cff16947832262d19c844296a0aefe6a5c 100644 (file)
@@ -861,7 +861,6 @@ bool XGUI_Displayer::customizeObject(ObjectPtr theObject)
   ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theObject);
 
   // Customization of presentation
-  bool isPresentable = false;
   GeomCustomPrsPtr aCustomPrs;
   FeaturePtr aFeature = ModelAPI_Feature::feature(theObject);
   if (aFeature.get() != NULL) {
@@ -870,15 +869,14 @@ bool XGUI_Displayer::customizeObject(ObjectPtr theObject)
       aCustomPrs = aCustPrs;
   }
   if (aCustomPrs.get() == NULL) {
-    // we ignore presentable not customized objects
     GeomPresentablePtr aPrs = std::dynamic_pointer_cast<GeomAPI_IPresentable>(theObject);
-    isPresentable = aPrs.get() != NULL;
-    aCustomPrs = myCustomPrs;
+    // we ignore presentable not customized objects
+    if (aPrs.get() == NULL)
+      aCustomPrs = myCustomPrs;
   }
-  bool isCustomized = false;
-  if (!isPresentable)
-    aCustomPrs->customisePresentation(aResult, anAISObj, myCustomPrs);
-  isCustomized = myWorkshop->module()->customizeObject(theObject) || isCustomized;
+  bool isCustomized = aCustomPrs.get() &&
+                      aCustomPrs->customisePresentation(aResult, anAISObj, myCustomPrs);
+  myWorkshop->module()->customizeObject(theObject);
   return isCustomized;
 }