0023024: Update headers of OCCT files
[occt.git] / src / BOP / BOP_WireWire.cxx
1 // Created on: 2002-02-01
2 // Created by: Peter KURNEV
3 // Copyright (c) 2002-2012 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20
21 #include <BOP_WireWire.ixx>
22
23 #include <Standard_Failure.hxx>
24 #include <Standard_ErrorHandler.hxx>
25
26 #include <BooleanOperations_ShapesDataStructure.hxx>
27
28 #include <BOPTColStd_Dump.hxx>
29
30 #include <BOPTools_DSFiller.hxx>
31 #include <BOPTools_PaveFiller.hxx>
32 #include <BOPTools_WireStateFiller.hxx>
33
34 #include <BOP_CorrectTolerances.hxx>
35
36
37 //=======================================================================
38 // function: BOP_WireWire::BOP_WireWire
39 // purpose: 
40 //=======================================================================
41 BOP_WireWire::BOP_WireWire()
42 {
43 }
44 //=======================================================================
45 // function: Destroy
46 // purpose: 
47 //=======================================================================
48   void BOP_WireWire::Destroy() 
49 {
50 }
51 //=======================================================================
52 // function: Do
53 // purpose: 
54 //=======================================================================
55   void BOP_WireWire::Do() 
56 {
57   myErrorStatus=0;
58   myIsDone=Standard_False;
59   //
60   // Filling the DS
61   BOPTools_DSFiller aDSFiller;
62   aDSFiller.SetShapes (myShape1, myShape2);
63   //
64   aDSFiller.Perform ();
65   //
66   DoWithFiller(aDSFiller);
67 }
68
69 //=======================================================================
70 // function: DoWithFiller
71 // purpose: 
72 //=======================================================================
73   void BOP_WireWire::DoWithFiller(const BOPTools_DSFiller& aDSFiller) 
74 {
75   myErrorStatus=0;
76   myIsDone=Standard_False;
77   //
78   myResultMap.Clear();
79   myModifiedMap.Clear();
80   //
81   myDSFiller=(BOPTools_DSFiller*) &aDSFiller;
82   //
83   try {
84     OCC_CATCH_SIGNALS
85     // modified by NIZHNY-MKK  Fri Sep  3 15:14:17 2004.BEGIN
86     if(!myDSFiller->IsDone()) {
87       myErrorStatus = 1;
88       BOPTColStd_Dump::PrintMessage("DSFiller is invalid: Can not build result\n");
89       return;
90     }
91     // modified by NIZHNY-MKK  Fri Sep  3 15:14:20 2004.END
92
93     Standard_Boolean bIsNewFiller;
94     bIsNewFiller=aDSFiller.IsNewFiller();
95     
96     if (bIsNewFiller) {
97       //
98       // Preparing;
99       // 1 States
100       const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller();
101       BOPTools_WireStateFiller aStateFiller(aPaveFiller);
102       aStateFiller.Do();
103       
104       aDSFiller.SetNewFiller(!bIsNewFiller);
105     }
106     //
107     //DoNewFaces();
108     //
109     BuildResult();
110     //
111     BOP_CorrectTolerances::CorrectTolerances(myResult, 0.01);
112     //
113     FillModified();
114     myIsDone=Standard_True;
115   }
116   catch ( Standard_Failure ) {
117     myErrorStatus = 1;
118     BOPTColStd_Dump::PrintMessage("Can not build result\n"); 
119   }
120 }
121
122 //=======================================================================
123 // function: BuildResult
124 // purpose: 
125 //=======================================================================
126   void BOP_WireWire::BuildResult()
127 {
128   AddSplitPartsINOUT();
129   AddSplitPartsON();
130   //
131   MakeResult();
132 }
133