]> SALOME platform Git repositories - modules/visu.git/blobdiff - src/PIPELINE/VISU_Plot3DPL.cxx
Salome HOME
Update copyright information
[modules/visu.git] / src / PIPELINE / VISU_Plot3DPL.cxx
index 8c3d9aeac9cfb9693c3e56e537d53b88805d3f4a..d4fc2bd3593ef8685f6e357fb2e1a6292a1d50a2 100644 (file)
@@ -1,24 +1,25 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
-//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
 //
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
 //
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 //  VISU OBJECT : interactive object for VISU entities implementation
 // File:    VISU_PipeLine.cxx
 // Author:  Alexey PETROV
 #include "VISU_PipeLineUtils.hxx"
 
 #include <vtkAppendPolyData.h>
-#include <vtkCutter.h>
+#include <vtkEDFCutter.h>
 #include <vtkPlane.h>
 
-#include <vtkCellDataToPointData.h>
 #include <vtkGeometryFilter.h>
 #include <vtkContourFilter.h>
 #include <vtkWarpScalar.h>
@@ -46,7 +46,7 @@ vtkStandardNewMacro(VISU_Plot3DPL);
 //----------------------------------------------------------------------------
 VISU_Plot3DPL
 ::VISU_Plot3DPL():
-  myCellDataToPointData(vtkCellDataToPointData::New()),
+  myCellDataToPointData(VISU_CellDataToPointData::New()),
   myAppendPolyData(vtkAppendPolyData::New()),
   myGeometryFilter(vtkGeometryFilter::New()),
   myContourFilter(vtkContourFilter::New()),
@@ -100,7 +100,7 @@ VISU_Plot3DPL
 void
 VISU_Plot3DPL
 ::DoShallowCopy(VISU_PipeLine *thePipeLine,
-               bool theIsCopyInput)
+                bool theIsCopyInput)
 {
   Superclass::DoShallowCopy(thePipeLine, theIsCopyInput);
 
@@ -153,7 +153,7 @@ VISU_Plot3DPL
 vtkFloatingPointType
 VISU_Plot3DPL
 ::GetScaleFactor( VISU_ColoredPL* theColoredPL,
-                 vtkDataSet* theDataSet )
+                  vtkDataSet* theDataSet )
 {
   theDataSet->Update();
   vtkFloatingPointType aLength = theDataSet->GetLength(); // diagonal length
@@ -196,18 +196,21 @@ void
 VISU_Plot3DPL
 ::Update()
 {
+  vtkDataSet* aMergedInput = GetMergedInput();
+  if(VISU::IsQuadraticData(aMergedInput)) // Bug 0020123, note 0005343
+    throw std::runtime_error("Impossible to build presentation");
+
   vtkFloatingPointType aPlaneNormal[3];
   vtkFloatingPointType anOrigin[3];
   GetBasePlane( anOrigin, aPlaneNormal );
 
   vtkPolyData* aPolyData = 0;
-  vtkCutter *aCutPlane = 0;
-  vtkDataSet* aDataSet = GetMergedInput();
+  vtkEDFCutter *aCutPlane = 0;
 
   if ( !IsPlanarInput() )
   {
-    aCutPlane = vtkCutter::New();
-    aCutPlane->SetInput(aDataSet);
+    aCutPlane = vtkEDFCutter::New();
+    aCutPlane->SetInput(aMergedInput);
 
     vtkPlane *aPlane = vtkPlane::New();
     aPlane->SetOrigin(anOrigin);
@@ -221,7 +224,7 @@ VISU_Plot3DPL
   }
 
   if ( !aPolyData || aPolyData->GetNumberOfCells() == 0 ) {
-    myGeometryFilter->SetInput(aDataSet);
+    myGeometryFilter->SetInput(aMergedInput);
     aPolyData = myGeometryFilter->GetOutput();
     aPolyData->Update();
   }
@@ -355,7 +358,7 @@ VISU_Plot3DPL
 void
 VISU_Plot3DPL
 ::SetPlanePosition(vtkFloatingPointType thePosition,
-                  bool theIsRelative)
+                   bool theIsRelative)
 {
   bool anIsSameValue = VISU::CheckIsSameValue(myIsRelative, theIsRelative);
   anIsSameValue &= (myPosition == thePosition);
@@ -417,8 +420,8 @@ GetRotateY(){
 void
 VISU_Plot3DPL::
 SetOrientation(VISU_CutPlanesPL::PlaneOrientation theOrientation,
-              vtkFloatingPointType theXAngle,
-              vtkFloatingPointType theYAngle)
+               vtkFloatingPointType theXAngle,
+               vtkFloatingPointType theYAngle)
 {
   bool anIsSameValue = VISU::CheckIsSameValue(GetRotateX(), theXAngle);
   anIsSameValue &= VISU::CheckIsSameValue(GetRotateY(), theYAngle);
@@ -458,8 +461,8 @@ VISU_Plot3DPL
 void
 VISU_Plot3DPL
 ::GetBasePlane(vtkFloatingPointType theOrigin[3],
-              vtkFloatingPointType theNormal[3],
-              bool  theCenterOrigine )
+               vtkFloatingPointType theNormal[3],
+               bool  theCenterOrigine )
 {
   VISU_CutPlanesPL::GetDir(theNormal,myAngle,myOrientation);
 
@@ -506,7 +509,7 @@ VISU_Plot3DPL
 void
 VISU_Plot3DPL
 ::GetMinMaxPosition( vtkFloatingPointType& minPos, 
-                    vtkFloatingPointType& maxPos )
+                     vtkFloatingPointType& maxPos )
 {
   vtkFloatingPointType aBounds[6], aBoundPrj[3], aNormal[3];
   VISU_CutPlanesPL::GetDir(aNormal,myAngle,myOrientation);