From 775ee81f2ec9ef2cc276b6101a4a88e8fe5e1a2a Mon Sep 17 00:00:00 2001 From: nds Date: Thu, 5 Dec 2019 17:15:09 +0300 Subject: [PATCH] 0031197: Visualization - SetTransformPersistence for highlight, select presentations (cherry picked from commit df3644aa354c932483d89f553b09a2f399135f0f) (cherry picked from commit 33ffefa2f7c052225012dde159c5001a3cc73ea5) (cherry picked from commit 59433e7b4e49362dc1741dc00178ccec64c6cc5d) --- src/AIS/AIS_InteractiveContext.cxx | 9 +++++++++ src/AIS/AIS_InteractiveContext.hxx | 5 +++++ src/AIS/AIS_InteractiveObject.cxx | 11 +++++++++++ src/AIS/AIS_InteractiveObject.hxx | 5 +++++ 4 files changed, 30 insertions(+) diff --git a/src/AIS/AIS_InteractiveContext.cxx b/src/AIS/AIS_InteractiveContext.cxx index fe54d23a4e..bf6e9a08c6 100644 --- a/src/AIS/AIS_InteractiveContext.cxx +++ b/src/AIS/AIS_InteractiveContext.cxx @@ -2405,6 +2405,15 @@ void AIS_InteractiveContext::SetTransformPersistence (const Handle(AIS_Interacti const Handle(Graphic3d_TransformPers)& theTrsfPers) { theObject->SetTransformPersistence (theTrsfPers); + UpdateOnTransformPersistence (theObject); +} + +//======================================================================= +//function : UpdateOnTransformPersistence +//purpose : +//======================================================================= +void AIS_InteractiveContext::UpdateOnTransformPersistence (const Handle(AIS_InteractiveObject)& theObject) +{ if (!myObjects.IsBound (theObject)) { return; diff --git a/src/AIS/AIS_InteractiveContext.hxx b/src/AIS/AIS_InteractiveContext.hxx index 306d109f36..a30f9f94f8 100644 --- a/src/AIS/AIS_InteractiveContext.hxx +++ b/src/AIS/AIS_InteractiveContext.hxx @@ -345,6 +345,11 @@ public: //! @name object local transformation management Standard_EXPORT void SetTransformPersistence (const Handle(AIS_InteractiveObject)& theObject, const Handle(Graphic3d_TransformPers)& theTrsfPers); + //! Updates displayed interactive object by checking and recomputing its flagged as "to be recomputed" presentation and selection structures. + //! This method does not force any recomputation on its own. + //! The method recomputes selections even if they are loaded without activation in particular selector. + Standard_EXPORT void UpdateOnTransformPersistence (const Handle(AIS_InteractiveObject)& theIObj); + Standard_DEPRECATED("This method is deprecated - SetTransformPersistence() taking Graphic3d_TransformPers should be called instead") void SetTransformPersistence (const Handle(AIS_InteractiveObject)& theObj, const Graphic3d_TransModeFlags& theFlag, diff --git a/src/AIS/AIS_InteractiveObject.cxx b/src/AIS/AIS_InteractiveObject.cxx index c0d8293e31..2d62f6b2f6 100644 --- a/src/AIS/AIS_InteractiveObject.cxx +++ b/src/AIS/AIS_InteractiveObject.cxx @@ -98,6 +98,17 @@ void AIS_InteractiveObject::SetContext (const Handle(AIS_InteractiveContext)& th } } +//----------------------------------------------------------------------------- +void AIS_InteractiveObject::SetTransformPersistence (const Handle(Graphic3d_TransformPers)& theTrsfPers) +{ + SelectMgr_SelectableObject::SetTransformPersistence (theTrsfPers); + + if (!GetContext().IsNull()) + { + GetContext()->UpdateOnTransformPersistence (this); + } +} + //======================================================================= //function : HasPresentation //purpose : diff --git a/src/AIS/AIS_InteractiveObject.hxx b/src/AIS/AIS_InteractiveObject.hxx index 8b4f9229f1..cd6372239a 100644 --- a/src/AIS/AIS_InteractiveObject.hxx +++ b/src/AIS/AIS_InteractiveObject.hxx @@ -125,6 +125,11 @@ public: //! Returns the context pointer to the interactive context. Standard_EXPORT Handle(AIS_InteractiveContext) GetContext() const; + //! Sets up Transform Persistence defining a special Local Coordinate system where this object should be located. + //! Updates the presentation in context if it is not NULL + //! @sa Graphic3d_TransformPers class description + Standard_EXPORT virtual void SetTransformPersistence (const Handle(Graphic3d_TransformPers)& theTrsfPers); + //! Returns TRUE when this object has a presentation in the current DisplayMode() Standard_EXPORT Standard_Boolean HasPresentation() const; -- 2.39.5