1 // VISU OBJECT : interactive object for VISU entities implementation
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
23 // File: VISU_CutPlanesPL.hxx
24 // Author: Alexey PETROV
27 #ifndef VISU_CutPlanesPL_HeaderFile
28 #define VISU_CutPlanesPL_HeaderFile
30 #include "VISU_ScalarMapPL.hxx"
34 class vtkAppendPolyData;
36 class VISU_CutPlanesPL : public VISU_ScalarMapPL{
39 VISU_CutPlanesPL(const VISU_CutPlanesPL&);
41 vtkTypeMacro(VISU_CutPlanesPL,VISU_ScalarMapPL);
42 static VISU_CutPlanesPL* New();
49 ShallowCopy(VISU_PipeLine *thePipeLine);
51 enum PlaneOrientation {XY, YZ, ZX};
55 SetOrientation(const VISU_CutPlanesPL::PlaneOrientation& theOrient,
56 vtkFloatingPointType theXAng,
57 vtkFloatingPointType theYAng,
61 const PlaneOrientation&
62 GetPlaneOrientation(int theNum = 0);
66 GetRotateX(int theNum = 0);
70 GetRotateY(int theNum = 0);
74 GetDisplacement(int theNum = 0)
76 return myDisplacement[theNum];
81 SetDisplacement(vtkFloatingPointType theDisp,
84 myDisplacement[theNum] = theDisp;
89 SetPartPosition(int thePartNumber,
90 vtkFloatingPointType thePartPosition);
94 GetPartPosition(int thePartNumber,
99 SetPartDefault(int thePartNumber);
103 IsPartDefault(int thePartNumber);
107 SetNbParts(int theNb);
129 return myAppendPolyData;
134 vtkFloatingPointType*
135 GetRx(vtkFloatingPointType theRx[3][3],
136 vtkFloatingPointType thaAng);
139 vtkFloatingPointType*
140 GetRy(vtkFloatingPointType theRy[3][3],
141 vtkFloatingPointType thaAng);
144 vtkFloatingPointType*
145 GetRz(vtkFloatingPointType theRz[3][3],
146 vtkFloatingPointType thaAng);
150 CorrectPnt(vtkFloatingPointType thePnt[3],
151 const vtkFloatingPointType BoundPrj[6]);
155 GetBoundProject(vtkFloatingPointType BoundPrj[3],
156 const vtkFloatingPointType BoundBox[6],
157 const vtkFloatingPointType Dir[3]);
161 GetDir(vtkFloatingPointType theDir[3],
162 const vtkFloatingPointType theAng[3],
163 const PlaneOrientation& theBasePlane);
167 ClearAppendPolyData(vtkAppendPolyData *theAppendPolyData);
171 CutWithPlane(vtkAppendPolyData* theAppendPolyData,
172 vtkDataSet* theDataSet,
173 vtkFloatingPointType theDir[3],
174 vtkFloatingPointType theOrig[3]);
178 CutWithPlanes(vtkAppendPolyData* theAppendPolyData,
179 vtkDataSet* theDataSet,
181 vtkFloatingPointType theDir[3],
182 vtkFloatingPointType theBounds[6],
183 const std::vector<vtkFloatingPointType>& thePlanePosition,
184 const std::vector<int>& thePlaneCondition,
185 vtkFloatingPointType theDisplacement);
192 SetPartPosition(int theNum = 0);
195 PlaneOrientation myBasePlane[2];
196 vtkFloatingPointType myAng[2][3], myDisplacement[2];
197 vtkAppendPolyData *myAppendPolyData;
198 std::vector<vtkFloatingPointType> myPartPosition;
199 std::vector<int> myPartCondition;