]> SALOME platform Git repositories - modules/geom.git/blob - src/NMTTools/NMTTools_CommonBlockAPI.cxx
Salome HOME
PAL8378: fix a bug in Partition algorithm
[modules/geom.git] / src / NMTTools / NMTTools_CommonBlockAPI.cxx
1 // File:        NMTTools_CommonBlockAPI.cxx
2 // Created:     Mon Dec 15 11:38:04 2003
3 // Author:      Peter KURNEV
4 //              <pkv@irinox>
5
6
7 #include <NMTTools_CommonBlockAPI.ixx>
8
9 #include <BOPTools_PaveBlock.hxx>
10 #include <BOPTools_ListOfPaveBlock.hxx>
11 #include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
12
13 #include <NMTTools_CommonBlock.hxx>
14 #include <NMTTools_ListOfCommonBlock.hxx>
15 #include <NMTTools_ListIteratorOfListOfCommonBlock.hxx>
16
17 //=======================================================================
18 // function:  NMTTools_CommonBlockAPI::NMTTools_CommonBlockAPI
19 // purpose: 
20 //=======================================================================
21   NMTTools_CommonBlockAPI::NMTTools_CommonBlockAPI (const NMTTools_ListOfCommonBlock& aLCB)
22 {
23   myListOfCommonBlock=(void *)&aLCB;
24 }
25 //=======================================================================
26 // function:  List
27 // purpose: 
28 //=======================================================================
29   const NMTTools_ListOfCommonBlock& NMTTools_CommonBlockAPI::List () const
30 {
31   NMTTools_ListOfCommonBlock* pListOfCommonBlock=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock;
32   return *pListOfCommonBlock;
33 }
34 //=======================================================================
35 // function:  CommonPaveBlocks
36 // purpose:   get all CommonPaveBlocks
37 //=======================================================================
38   const BOPTools_ListOfPaveBlock& NMTTools_CommonBlockAPI::CommonPaveBlocks(const Standard_Integer anE) const
39 {
40   Standard_Integer anECurrent;
41   BOPTools_ListIteratorOfListOfPaveBlock anItPB;
42   //
43   BOPTools_ListOfPaveBlock* pmyListOfPaveBlock=(BOPTools_ListOfPaveBlock*) &myListOfPaveBlock;
44   pmyListOfPaveBlock->Clear();
45
46   NMTTools_ListOfCommonBlock* pListOfCommonBlock=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock;
47
48   NMTTools_ListIteratorOfListOfCommonBlock anIt(*pListOfCommonBlock);
49   for (; anIt.More(); anIt.Next()) {
50     const NMTTools_CommonBlock& aCB=anIt.Value();
51     //
52     const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks();
53     anItPB.Initialize(aLPB);
54     for (; anItPB.More(); anItPB.Next()) {
55       const BOPTools_PaveBlock& aPB=anItPB.Value();
56       anECurrent=aPB.OriginalEdge();
57       if (anECurrent==anE) {
58         pmyListOfPaveBlock->Append(aPB);
59         break;
60       }
61     }
62   }
63   return myListOfPaveBlock;
64 }
65 //=======================================================================
66 // function:  IsCommonBlock
67 // purpose: 
68 //=======================================================================
69   Standard_Boolean NMTTools_CommonBlockAPI::IsCommonBlock(const BOPTools_PaveBlock& aPB) const
70 {
71   Standard_Integer anE;
72   //
73   anE=aPB.OriginalEdge();
74   //
75   CommonPaveBlocks(anE);
76   //
77   BOPTools_ListIteratorOfListOfPaveBlock anIt(myListOfPaveBlock);
78   for (; anIt.More(); anIt.Next()) {
79     const BOPTools_PaveBlock& aPB1=anIt.Value();
80     if (aPB1.IsEqual(aPB)) {
81       return Standard_True;
82     }
83   }
84   return Standard_False;
85 }
86
87 //=======================================================================
88 // function:  CommonBlock
89 // purpose: 
90 //=======================================================================
91   NMTTools_CommonBlock& NMTTools_CommonBlockAPI::CommonBlock(const BOPTools_PaveBlock& aPB)const
92 {
93   static NMTTools_CommonBlock aCBTMP;
94   //
95   NMTTools_ListIteratorOfListOfCommonBlock anItCB;
96   BOPTools_ListIteratorOfListOfPaveBlock anItPB;
97   //
98   NMTTools_ListOfCommonBlock* pLCB=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock;
99   //
100   anItCB.Initialize(*pLCB);
101   for (; anItCB.More(); anItCB.Next()) {
102     NMTTools_CommonBlock& aCB=anItCB.Value();
103     //
104     const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks();
105     anItPB.Initialize(aLPB);
106     for (; anItPB.More(); anItPB.Next()) {
107       const BOPTools_PaveBlock& aPBx=anItPB.Value();
108       if (aPBx.IsEqual(aPB)) {
109         return aCB;
110       }
111     }
112   }
113   return aCBTMP;
114 }