]> OCCT Git - occt.git/commitdiff
0029947: Visualization - SelectMgr_SelectableObject::GetSelectPresentation() should...
authorkgv <kgv@opencascade.com>
Wed, 11 Jul 2018 12:52:02 +0000 (15:52 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 13 Jul 2018 12:05:40 +0000 (15:05 +0300)
Methods SelectMgr_SelectableObject::GetHilightPresentation(), ::GetSelectPresentation() and ::UpdateClipping()
have been corrected to copy clipping planes of the object into highlighting and selection presentations.

src/SelectMgr/SelectMgr_SelectableObject.cxx
src/SelectMgr/SelectMgr_SelectableObject.hxx
tests/bugs/vis/bug29947 [new file with mode: 0644]

index 14f4d61ad6dc6eb5bab6798bafe6f6ed07d7e34b..e9e48bbda64da7f0d8291355e342a1c78b251cbc 100644 (file)
@@ -348,6 +348,7 @@ Handle(Prs3d_Presentation) SelectMgr_SelectableObject::GetHilightPresentation (c
   {
     myHilightPrs = new Prs3d_Presentation (theMgr->StructureManager());
     myHilightPrs->SetTransformPersistence (TransformPersistence());
+    myHilightPrs->SetClipPlanes (myClipPlanes);
   }
 
   return myHilightPrs;
@@ -364,6 +365,7 @@ Handle(Prs3d_Presentation) SelectMgr_SelectableObject::GetSelectPresentation (co
   {
     mySelectionPrs = new Prs3d_Presentation (theMgr->StructureManager());
     mySelectionPrs->SetTransformPersistence (TransformPersistence());
+    mySelectionPrs->SetClipPlanes (myClipPlanes);
   }
 
   return mySelectionPrs;
@@ -428,6 +430,23 @@ void SelectMgr_SelectableObject::SetZLayer (const Graphic3d_ZLayerId theLayerId)
   }
 }
 
+//=======================================================================
+//function : UpdateClipping
+//purpose  :
+//=======================================================================
+void SelectMgr_SelectableObject::UpdateClipping()
+{
+  PrsMgr_PresentableObject::UpdateClipping();
+  if (!mySelectionPrs.IsNull())
+  {
+    mySelectionPrs->SetClipPlanes (myClipPlanes);
+  }
+  if (!myHilightPrs.IsNull())
+  {
+    myHilightPrs->SetClipPlanes (myClipPlanes);
+  }
+}
+
 //=======================================================================
 //function : updateSelection
 //purpose  : Sets update status FULL to selections of the object. Must be
index 0ac59a910bee317ac310854486a9d44561f943ca..3132b5f22079ccbb454bfb6d9a18fbcfa145e3c8 100644 (file)
@@ -198,6 +198,9 @@ protected:
     myGlobalSelMode = theMode > 0 ? theMode : 0;
   }
 
+  //! Update clipping planes state.
+  Standard_EXPORT virtual void UpdateClipping() Standard_OVERRIDE;
+
   Standard_EXPORT virtual void updateSelection (const Standard_Integer theMode);
 
 protected:
diff --git a/tests/bugs/vis/bug29947 b/tests/bugs/vis/bug29947
new file mode 100644 (file)
index 0000000..5557880
--- /dev/null
@@ -0,0 +1,20 @@
+puts "============="
+puts "0029947: Visualization - SelectMgr_SelectableObject::GetSelectPresentation() should copy object clipping planes"
+puts "============="
+
+pload MODELING VISUALIZATION XDE
+vclear
+vinit View1
+vaxo
+meshfromstl m [locate_data_file shape.stl]
+vfit
+vdisplay -dispMode 2 m
+vselmode m 8 1
+vselect 160 170 320 370
+if { [vreadpixel 230 260 rgb name] == "BLACK" } { puts "Error" }
+vclipplane c -set m -equation 0 1 0 4
+if { [vreadpixel 230 260 rgb name] != "BLACK" } { puts "Error" }
+vmoveto 75 172
+if { [vreadpixel  70 170 rgb name] != "BLACK" } { puts "Error" }
+
+vdump ${imagedir}/${casename}.png