0030686: Visualization, SelectMgr_ViewerSelector - sorting issues of transformation...
[occt.git] / src / TopOpeBRepDS / TopOpeBRepDS_FilterFaceInterferences.cxx
1 // Created on: 1997-04-22
2 // Created by: Prestataire Mary FABIEN
3 // Copyright (c) 1997-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17
18 #include <TopoDS_Shape.hxx>
19 #include <TopOpeBRepDS_DataMapOfShapeListOfShapeOn1State.hxx>
20 #include <TopOpeBRepDS_DataStructure.hxx>
21 #include <TopOpeBRepDS_define.hxx>
22 #include <TopOpeBRepDS_Filter.hxx>
23 #include <TopOpeBRepDS_HDataStructure.hxx>
24 #include <TopOpeBRepDS_Interference.hxx>
25 #include <TopOpeBRepDS_ListIteratorOfListOfInterference.hxx>
26 #include <TopOpeBRepDS_ListOfInterference.hxx>
27 #include <TopOpeBRepDS_ListOfShapeOn1State.hxx>
28 #include <TopOpeBRepDS_ProcessInterferencesTool.hxx>
29
30 Standard_EXPORT Standard_Integer FUN_unkeepFdoubleGBoundinterferences(TopOpeBRepDS_ListOfInterference& LI,const TopOpeBRepDS_DataStructure& BDS,const Standard_Integer SIX);
31 Standard_EXPORT void FUN_resolveFUNKNOWN
32 (TopOpeBRepDS_ListOfInterference& LI,TopOpeBRepDS_DataStructure& BDS,
33  const Standard_Integer SIX,
34  const TopOpeBRepDS_DataMapOfShapeListOfShapeOn1State& MEsp,
35  TopOpeBRepTool_PShapeClassifier pClassif);
36
37 //=======================================================================
38 //function : ProcessFaceInterferences
39 //purpose  : 
40 //=======================================================================
41 void TopOpeBRepDS_Filter::ProcessFaceInterferences
42 (const Standard_Integer SIX,const TopOpeBRepDS_DataMapOfShapeListOfShapeOn1State& MEsp)
43 {
44   TopOpeBRepDS_DataStructure& BDS = myHDS->ChangeDS();
45
46   //                 BDS.Shape(SIX);
47   TopOpeBRepDS_ListOfInterference& LI = BDS.ChangeShapeInterferences(SIX);
48   ::FUN_reducedoublons(LI,BDS,SIX);
49
50   TopOpeBRepDS_ListOfInterference lw, lE, lFE, lFEF, lF, lUU, lall; lall.Assign(LI);
51
52   ::FUN_selectTRAUNKinterference(lall,lUU);
53   FUN_resolveFUNKNOWN(lUU,BDS,SIX,MEsp,myPShapeClassif);
54   lw.Append(lall);
55   lw.Append(lUU);
56
57   ::FUN_selectTRASHAinterference(lw,TopAbs_FACE,lF);
58   ::FUN_selectGKinterference(lF,TopOpeBRepDS_EDGE,lFE);
59   ::FUN_selectSKinterference(lFE,TopOpeBRepDS_FACE,lFEF);
60   ::FUN_selectTRASHAinterference(lw,TopAbs_EDGE,lE);
61   
62   LI.Clear();
63   LI.Append(lF);
64   LI.Append(lFE);
65   LI.Append(lFEF);
66   LI.Append(lE);
67
68 } // ProcessFaceInterferences