Salome HOME
PAL8378: fix a bug in Partition algorithm
[modules/geom.git] / src / NMTTools / NMTTools_DSFiller.cxx
1 // File:        NMTTools_DSFiller.cxx
2 // Created:     Fri Dec  5 14:06:34 2003
3 // Author:      Peter KURNEV
4 //              <pkv@irinox>
5
6
7 #include <NMTTools_DSFiller.ixx>
8 #include <NMTTools_PaveFiller.hxx>
9
10 //=======================================================================
11 // function: NMTTools_DSFiller::NMTTools_DSFiller
12 // purpose: 
13 //=======================================================================
14   NMTTools_DSFiller::NMTTools_DSFiller()
15 {
16   myPaveFiller=NULL;
17   myInterfPool=NULL;
18   myDS=NULL;
19   myIsNewFiller=Standard_True;
20   myIsDone=Standard_False;
21 }
22 //=======================================================================
23 // function:Destroy
24 // purpose:
25 //=======================================================================
26   void NMTTools_DSFiller::Destroy() 
27 {
28   Clear();
29 }
30 //=======================================================================
31 // function: Clear
32 // purpose: 
33 //=======================================================================
34   void NMTTools_DSFiller::Clear()
35 {
36   if (myPaveFiller!=NULL) {
37     delete myPaveFiller;
38   }
39   if (myInterfPool!=NULL) {
40     delete myInterfPool;
41   }
42   if (myDS!=NULL) {
43     delete myDS;
44   }
45   myPaveFiller=NULL;
46   myInterfPool=NULL;
47   myDS=NULL;
48 }
49 //=======================================================================
50 // function: SetCompositeShape
51 // purpose: 
52 //=======================================================================
53   void NMTTools_DSFiller::SetCompositeShape(const TopoDS_Shape& aS)
54 {
55   myCompositeShape=aS;
56 }
57 //=======================================================================
58 // function: CompositeShape
59 // purpose: 
60 //=======================================================================
61   const TopoDS_Shape& NMTTools_DSFiller::CompositeShape()const
62 {
63   return myCompositeShape;
64 }
65 //=======================================================================
66 // function:  SetNewFiller
67 // purpose: 
68 //=======================================================================
69   void NMTTools_DSFiller::SetNewFiller(const Standard_Boolean aFlag) const
70 {
71   NMTTools_DSFiller* pDSFiller=(NMTTools_DSFiller*)this;
72   pDSFiller->myIsNewFiller=aFlag;
73 }
74 //=======================================================================
75 // function: IsNewFiller 
76 // purpose: 
77 //=======================================================================
78   Standard_Boolean NMTTools_DSFiller::IsNewFiller() const
79 {
80   return myIsNewFiller;
81 }
82 //=======================================================================
83 // function: DS
84 // purpose: 
85 //=======================================================================
86   const NMTDS_ShapesDataStructure& NMTTools_DSFiller::DS () const 
87 {
88   return *myDS;
89 }
90 //=======================================================================
91 // function: InterfPool
92 // purpose: 
93 //=======================================================================
94   const BOPTools_InterferencePool& NMTTools_DSFiller::InterfPool () const
95 {
96   return *myInterfPool;
97 }
98 //=======================================================================
99 // function:  IsDone
100 // purpose: 
101 //=======================================================================
102   Standard_Boolean NMTTools_DSFiller::IsDone()const 
103 {
104   return myIsDone;
105 }
106 //=======================================================================
107 // function:  PaveFiller
108 // purpose: 
109 //=======================================================================
110   const NMTTools_PaveFiller& NMTTools_DSFiller::PaveFiller()const 
111 {
112   return *myPaveFiller;
113 }
114 //=======================================================================
115 // function:  ChangePaveFiller
116 // purpose: 
117 //=======================================================================
118   NMTTools_PaveFiller& NMTTools_DSFiller::ChangePaveFiller() 
119 {
120   return *myPaveFiller;
121 }
122 //=======================================================================
123 // function:  Perform
124 // purpose: 
125 //=======================================================================
126   void NMTTools_DSFiller::Perform()
127 {
128   myIsDone=Standard_False;
129   //
130   if (myCompositeShape.IsNull()) {
131     return;
132   }
133   //
134   //
135   // Clear contents of the DS if it was before
136   Clear();
137   //
138   myIsNewFiller=Standard_True;
139   //
140   myDS        = new NMTDS_ShapesDataStructure;
141   myDS->SetCompositeShape(myCompositeShape);
142   myDS->Init();
143   //
144   myInterfPool= new BOPTools_InterferencePool (*myDS);
145   //
146   myPaveFiller = new NMTTools_PaveFiller(*myInterfPool);
147   myPaveFiller->Perform();
148   myIsDone=myPaveFiller->IsDone();
149 }