X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMAlgo%2FGEOMAlgo_Tools.cxx;h=65250c36468210ed0e1edaa46aaad7dd5079f197;hb=04f3d723da1ae9133d108921c8f10338a9656d12;hp=97bdbb03e2fe601daf62e86019ec14642b517b21;hpb=ca429d817a18d6acc571443f6a596575dee03c2f;p=modules%2Fgeom.git diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.cxx b/src/GEOMAlgo/GEOMAlgo_Tools.cxx index 97bdbb03e..65250c364 100644 --- a/src/GEOMAlgo/GEOMAlgo_Tools.cxx +++ b/src/GEOMAlgo/GEOMAlgo_Tools.cxx @@ -1,3 +1,22 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: GEOMAlgo_Tools.cxx // Created: Mon Dec 6 11:35:29 2004 // Author: Peter KURNEV @@ -20,6 +39,7 @@ #include #include #include +#include #include #include @@ -32,16 +52,64 @@ #include #include -#include -#include -// +#include //qft +#include //qft + +static + void GetCount(const TopoDS_Shape& aS, + Standard_Integer& iCnt); + +//======================================================================= +//function : IsCompositeShape +//purpose : +//======================================================================= +Standard_Boolean GEOMAlgo_Tools::IsCompositeShape(const TopoDS_Shape& aS) +{ + Standard_Boolean bRet; + Standard_Integer iCnt; + TopoDS_Iterator aIt; + // + iCnt=0; + GetCount(aS, iCnt); + bRet=(iCnt>1); + // + return bRet; +} + +//======================================================================= +//function : GetCount +//purpose : +//======================================================================= +void GetCount(const TopoDS_Shape& aS, + Standard_Integer& iCnt) +{ + TopoDS_Iterator aIt; + TopAbs_ShapeEnum aTS; + // + aTS=aS.ShapeType(); + // + if (aTS==TopAbs_SHAPE) { + return; + } + if (aTS!=TopAbs_COMPOUND) { + ++iCnt; + return; + } + // + aIt.Initialize(aS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSx=aIt.Value(); + GetCount(aSx, iCnt); + } +} + //======================================================================= //function : RefineSDShapes //purpose : //======================================================================= -Standard_Integer GEOMAlgo_Tools::RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyListOfShape &aMPKLE, - const Standard_Real aTol, - IntTools_Context& aCtx) + Standard_Integer GEOMAlgo_Tools::RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& aMPKLE, + const Standard_Real aTol, + IntTools_Context& aCtx) { Standard_Integer i, aNbE, iErr, j, aNbEE, aNbToAdd; TopTools_IndexedDataMapOfShapeListOfShape aMEE, aMSDE, aMEToAdd; @@ -83,12 +151,15 @@ Standard_Integer GEOMAlgo_Tools::RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKey } // for (i=1; i<=aNbToAdd; ++i) { - GEOMAlgo_PassKey aPKE1; + GEOMAlgo_PassKeyShape aPKE1; // const TopoDS_Shape& aE1=aMEToAdd.FindKey(i); const TopTools_ListOfShape& aLE=aMEToAdd(i); // - aPKE1.SetIds(aE1); + //qf + //aPKE1.SetIds(aE1); + aPKE1.SetShapes(aE1); + //qt aMPKLE.Add(aPKE1, aLE); } //