]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
refs #821: correct orientation of the viewer after the plane selection
authorasl <asl@opencascade.com>
Wed, 2 Sep 2015 09:19:10 +0000 (12:19 +0300)
committerasl <asl@opencascade.com>
Wed, 2 Sep 2015 09:19:28 +0000 (12:19 +0300)
src/ModuleBase/ModuleBase_IViewer.h
src/NewGeom/NewGeom_SalomeViewer.cpp
src/NewGeom/NewGeom_SalomeViewer.h
src/PartSet/PartSet_WidgetSketchLabel.cpp
src/XGUI/XGUI_ViewerProxy.cpp
src/XGUI/XGUI_ViewerProxy.h

index b4c37edd5c1366888fc0118d5138b2d96c67c966..a82b5d24a1c4535465120f9b9568cb723eb6ee68 100644 (file)
@@ -57,7 +57,9 @@ Q_OBJECT
   /// \param theX the X projection value
   /// \param theY the Y projection value
   /// \param theZ the Z projection value
-  virtual void setViewProjection(double theX, double theY, double theZ) = 0;
+  /// \param theTwist the twist angle in radians
+  virtual void setViewProjection( double theX, double theY, double theZ,
+                                  double theTwist ) = 0;
 
   /// Add selection filter to the viewer
   /// \param theFilter a selection filter
index 3f5a801b5c01e074a349e10b09b715518e5f3809..a9d0c382dd65c5f0e6964b19308071d3b0e7a627 100644 (file)
@@ -286,7 +286,7 @@ void NewGeom_SalomeViewer::fitAll()
 }
 
 //**********************************************
-void NewGeom_SalomeViewer::setViewProjection(double theX, double theY, double theZ)
+void NewGeom_SalomeViewer::setViewProjection(double theX, double theY, double theZ, double theTwist)
 {
   if (!mySelector) 
     return;
@@ -297,6 +297,7 @@ void NewGeom_SalomeViewer::setViewProjection(double theX, double theY, double th
     Handle(V3d_View) aView3d = aVFrame->getViewPort()->getView();
     if (!aView3d.IsNull()) {
       aView3d->SetProj(theX, theY, theZ);
+      aView3d->SetTwist( theTwist );
       aView3d->FitAll(0.01, true);
       aView3d->SetZSize(0.);
     }
index 56ba4f8240c93750096f4fed596594f2ab53ed7c..0635c89894fd9a3c4a0957cf1772f40c75d44eeb 100644 (file)
@@ -98,7 +98,9 @@ Q_OBJECT
   /// \param theX the X projection value
   /// \param theY the Y projection value
   /// \param theZ the Z projection value
-  virtual void setViewProjection(double theX, double theY, double theZ);
+  /// \param theTwist the twist angle in radians
+  virtual void setViewProjection( double theX, double theY, double theZ,
+                                  double theTwist );
 
   /// Set selector
   /// \param theSel a selector instance
index e7f7e0d1c564ee074d1d91a4d3b4b3abf130eb74..f3d4179c3baa189cd031257265635720fa9661f6 100644 (file)
@@ -152,6 +152,7 @@ void PartSet_WidgetSketchLabel::updateByPlaneSelected(const ModuleBase_ViewerPrs
     std::shared_ptr<GeomAPI_Pln> aPlane = GeomAlgoAPI_FaceBuilder::plane(aGShape);
     std::shared_ptr<GeomAPI_Dir> aDir = aPlane->direction();
     gp_XYZ aXYZ = aDir->impl<gp_Dir>().XYZ();
+    double aTwist = 0.0;
 
     // orienting projection
     if(aBaseShape.get() != NULL) {
@@ -168,7 +169,7 @@ void PartSet_WidgetSketchLabel::updateByPlaneSelected(const ModuleBase_ViewerPrs
       }
     }
 
-    myWorkshop->viewer()->setViewProjection(aXYZ.X(), aXYZ.Y(), aXYZ.Z());
+    myWorkshop->viewer()->setViewProjection(aXYZ.X(), aXYZ.Y(), aXYZ.Z(), aTwist);
   }
   // 3. Clear text in the label
   myLabel->setText("");
index e19cb39b0931dea06da0a13a45b93d5065b4c24c..345efbe077f98fcf03dbc081845174c29d42bb80 100644 (file)
@@ -47,11 +47,12 @@ Handle(V3d_View) XGUI_ViewerProxy::activeView() const
   }
 }
 
-void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ)
+void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ, double theTwist)
 {
   Handle(V3d_View) aView3d = activeView();
   if (!aView3d.IsNull()) {
     aView3d->SetProj(theX, theY, theZ);
+    aView3d->SetTwist( theTwist );
     aView3d->FitAll(0.01, true);
     aView3d->SetZSize(0.);
   }
index 5e8f75a635080430dee5154ea4bab1e9d138eea2..64bc12fb81a05fc59fb6bf4215a0f373adface70 100644 (file)
@@ -48,7 +48,9 @@ Q_OBJECT
   /// \param theX the X projection value
   /// \param theY the Y projection value
   /// \param theZ the Z projection value
-  virtual void setViewProjection(double theX, double theY, double theZ);
+  /// \param theTwist the twist angle in radians
+  virtual void setViewProjection( double theX, double theY, double theZ,
+                                  double theTwist );
 
   //! Sets the view fitted all
   virtual void fitAll();