Back to index

salome-geom  6.5.0
NMTTools_CommonBlock.cxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 // File:        NMTTools_CommonBlock.cxx
00024 // Created:     Tue Dec  9 12:23:29 2003
00025 // Author:      Peter KURNEV
00026 //              <pkv@irinox>
00027 //
00028 #include <NMTTools_CommonBlock.hxx>
00029 
00030 #include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
00031 #include <TColStd_ListIteratorOfListOfInteger.hxx>
00032 
00033 //=======================================================================
00034 // function:  NMTTools_CommonBlock::NMTTools_CommonBlock()
00035 // purpose:
00036 //=======================================================================
00037   NMTTools_CommonBlock::NMTTools_CommonBlock()
00038 {
00039 }
00040 //=======================================================================
00041 // function:  AddPaveBlock
00042 // purpose:
00043 //=======================================================================
00044   void NMTTools_CommonBlock::AddPaveBlock(const BOPTools_PaveBlock& aPB)
00045 {
00046   myPaveBlocks.Append(aPB);
00047 }
00048 //=======================================================================
00049 // function:  AddFace
00050 // purpose:
00051 //=======================================================================
00052   void NMTTools_CommonBlock::AddFace(const Standard_Integer aF)
00053 {
00054   myFaces.Append(aF);
00055 }
00056 //=======================================================================
00057 // function:  AddFaces
00058 // purpose:
00059 //=======================================================================
00060   void NMTTools_CommonBlock::AddFaces(const TColStd_ListOfInteger& aLF)
00061 {
00062   TColStd_ListIteratorOfListOfInteger aIt(aLF);
00063   //
00064   for (; aIt.More(); aIt.Next()) {
00065     myFaces.Append(aIt.Value());
00066   }
00067 }
00068 //=======================================================================
00069 // function:  PaveBlocks
00070 // purpose:
00071 //=======================================================================
00072   const BOPTools_ListOfPaveBlock& NMTTools_CommonBlock::PaveBlocks()const
00073 {
00074   return myPaveBlocks;
00075 }
00076 //=======================================================================
00077 // function:  Faces
00078 // purpose:
00079 //=======================================================================
00080   const TColStd_ListOfInteger& NMTTools_CommonBlock::Faces()const
00081 {
00082   return myFaces;
00083 }
00084 //=======================================================================
00085 // function:  PaveBlock1
00086 // purpose:
00087 //=======================================================================
00088   const BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlock1()const
00089 {
00090   return myPaveBlocks.First();
00091 }
00092 //=======================================================================
00093 // function:  PaveBlock1
00094 // purpose:
00095 //=======================================================================
00096    BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlock1(const Standard_Integer aIx)
00097 {
00098   return PaveBlockOnEdge(aIx);
00099 }
00100 //=======================================================================
00101 // function:  PaveBlockOnEdge
00102 // purpose:
00103 //=======================================================================
00104    BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlockOnEdge(const Standard_Integer aIx)
00105 {
00106   static BOPTools_PaveBlock aPBs;
00107   Standard_Integer aIOr;
00108   BOPTools_ListIteratorOfListOfPaveBlock anIt(myPaveBlocks);
00109   //
00110   for (; anIt.More(); anIt.Next()) {
00111     BOPTools_PaveBlock& aPB=anIt.Value();
00112     aIOr=aPB.OriginalEdge();
00113     if (aIOr==aIx){
00114       return aPB;
00115     }
00116   }
00117   return aPBs;
00118 }
00119 //=======================================================================
00120 // function:  IsPaveBlockOnFace
00121 // purpose:
00122 //=======================================================================
00123   Standard_Boolean NMTTools_CommonBlock::IsPaveBlockOnFace(const Standard_Integer aIx)const
00124 {
00125   Standard_Boolean bFound=Standard_False;
00126   Standard_Integer nF;
00127   TColStd_ListIteratorOfListOfInteger anIt(myFaces);
00128   //
00129   for (; anIt.More(); anIt.Next()) {
00130     nF=anIt.Value();
00131     if (nF==aIx){
00132       return !bFound;
00133     }
00134   }
00135   return bFound;
00136 }
00137 //=======================================================================
00138 // function:  IsPaveBlockOnEdge
00139 // purpose:
00140 //=======================================================================
00141   Standard_Boolean NMTTools_CommonBlock::IsPaveBlockOnEdge(const Standard_Integer aIx)const
00142 {
00143   Standard_Boolean bFound=Standard_False;
00144   Standard_Integer aIOr;
00145   BOPTools_ListIteratorOfListOfPaveBlock anIt(myPaveBlocks);
00146   //
00147   for (; anIt.More(); anIt.Next()) {
00148     const BOPTools_PaveBlock& aPB=anIt.Value();
00149     aIOr=aPB.OriginalEdge();
00150     if (aIOr==aIx){
00151       return !bFound;
00152     }
00153   }
00154   return bFound;
00155 }
00156 //=======================================================================
00157 // function:  IsEqual
00158 // purpose:
00159 //=======================================================================
00160   Standard_Boolean NMTTools_CommonBlock::IsEqual(const NMTTools_CommonBlock& aOther)const
00161 {
00162   Standard_Boolean bFound=Standard_True;
00163   Standard_Integer aNb1, aNb2;
00164   BOPTools_ListIteratorOfListOfPaveBlock anIt;
00165   //
00166   aNb1=myPaveBlocks.Extent();
00167   aNb2=aOther.myPaveBlocks.Extent();
00168   //
00169   if (!aNb1 && !aNb2) {
00170     return bFound;
00171   }
00172   if (!aNb1) {
00173     return !bFound;
00174   }
00175   if (!aNb2) {
00176     return !bFound;
00177   }
00178   //
00179   const BOPTools_PaveBlock& aPB=PaveBlock1();
00180   //
00181   anIt.Initialize(aOther.myPaveBlocks);
00182   for (; anIt.More(); anIt.Next()) {
00183     const BOPTools_PaveBlock& aPBOther=anIt.Value();
00184     if (aPB.IsEqual(aPBOther)){
00185       return bFound;
00186     }
00187   }
00188   return !bFound;
00189 }
00190 //=======================================================================
00191 // function:  Contains
00192 // purpose:
00193 //=======================================================================
00194   Standard_Boolean NMTTools_CommonBlock::Contains(const BOPTools_PaveBlock& aPBx)const
00195 {
00196   Standard_Boolean bFound=Standard_False;
00197   Standard_Integer aNb1;
00198   BOPTools_ListIteratorOfListOfPaveBlock anIt;
00199   //
00200   aNb1=myPaveBlocks.Extent();
00201   //
00202   if (!aNb1) {
00203     return bFound;
00204   }
00205   //
00206   anIt.Initialize(myPaveBlocks);
00207   for (; anIt.More(); anIt.Next()) {
00208     const BOPTools_PaveBlock& aPB=anIt.Value();
00209     if (aPB.IsEqual(aPBx)) {
00210       return !bFound;
00211     }
00212   }
00213   return bFound;
00214 }
00215 /*
00216 //=======================================================================
00217 // function:  SetEdge
00218 // purpose:
00219 //=======================================================================
00220   void NMTTools_CommonBlock::SetEdge(const Standard_Integer anEdge)
00221 {
00222   BOPTools_ListIteratorOfListOfPaveBlock anIt;
00223   //
00224   anIt.Initialize(myPaveBlocks);
00225   for (; anIt.More(); anIt.Next()) {
00226     BOPTools_PaveBlock& aPB=anIt.Value();
00227     aPB.SetEdge(anEdge);
00228   }
00229 }
00230 //=======================================================================
00231 // function:  Edge
00232 // purpose:
00233 //=======================================================================
00234   Standard_Integer NMTTools_CommonBlock::Edge()const
00235 {
00236   Standard_Integer aNb;
00237   //
00238   aNb=myPaveBlocks.Extent();
00239   //
00240   if (!aNb) {
00241     return aNb;
00242   }
00243   //
00244   const BOPTools_PaveBlock& aPB=PaveBlock1();
00245   aNb=aPB.Edge();
00246   return aNb;
00247 }
00248 */