// 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/ // // File: NMTTools_PaveFiller.cxx // Created: Fri Dec 5 14:58:54 2003 // Author: Peter KURNEV // // #include // #include #include #include //QQ #include "utilities.h" //======================================================================= // function: NMTTools_PaveFiller::NMTTools_PaveFiller // purpose: //======================================================================= NMTTools_PaveFiller::NMTTools_PaveFiller() { myIntrPool=NULL; myDS=NULL; myIsDone=Standard_False; myNbSources=0; myNbEdges=0; } //======================================================================= // function:NMTTools_PaveFiller::NMTTools_PaveFiller // purpose: //======================================================================= NMTTools_PaveFiller::NMTTools_PaveFiller(const BOPTools_InterferencePool& aIP) { SetInterferencePool(aIP); } //======================================================================= // function: Destroy // purpose: //======================================================================= void NMTTools_PaveFiller::Destroy() { } //======================================================================= // function: SetInterferencePool // purpose: //======================================================================= void NMTTools_PaveFiller::SetInterferencePool(const BOPTools_InterferencePool& aIP) { myIsDone=Standard_False; // myIntrPool=(BOPTools_InterferencePool*)&aIP; myDS=(NMTDS_ShapesDataStructure*)myIntrPool->DS(); myNbSources=myDS->NumberOfShapesOfTheObject()+myDS->NumberOfShapesOfTheTool(); myNbEdges=myDS->NbEdges(); } //======================================================================= // function: InterfPool // purpose: //======================================================================= BOPTools_PInterferencePool NMTTools_PaveFiller::InterfPool() { return myIntrPool; } //======================================================================= // function:IsDone // purpose: //======================================================================= Standard_Boolean NMTTools_PaveFiller::IsDone() const { return myIsDone; } //======================================================================= // function: DS // purpose: //======================================================================= NMTDS_PShapesDataStructure NMTTools_PaveFiller::DS() { return myDS; } //======================================================================= // function: Context // purpose: //======================================================================= const IntTools_Context& NMTTools_PaveFiller::Context() const { return myContext; } //======================================================================= // function: ChangeContext // purpose: //======================================================================= IntTools_Context& NMTTools_PaveFiller::ChangeContext() { return myContext; } //======================================================================= // function: PavePool // purpose: //======================================================================= const BOPTools_PavePool& NMTTools_PaveFiller::PavePool() const { return myPavePool; } //======================================================================= // function: ChangePavePool // purpose: //======================================================================= BOPTools_PavePool& NMTTools_PaveFiller::ChangePavePool() { return myPavePool; } //======================================================================= // function: CommonBlockPool // purpose: //======================================================================= const NMTTools_CommonBlockPool& NMTTools_PaveFiller::CommonBlockPool() const { return myCommonBlockPool; } //======================================================================= // function: ChangeCommonBlockPool // purpose: //======================================================================= NMTTools_CommonBlockPool& NMTTools_PaveFiller::ChangeCommonBlockPool() { return myCommonBlockPool; } //======================================================================= // function: SplitShapesPool // purpose: //======================================================================= const BOPTools_SplitShapesPool& NMTTools_PaveFiller::SplitShapesPool() const { return mySplitShapesPool; } //======================================================================= // function: ChangeSplitShapesPool // purpose: //======================================================================= BOPTools_SplitShapesPool& NMTTools_PaveFiller::ChangeSplitShapesPool() { return mySplitShapesPool; } //======================================================================= // function: Init // purpose: //======================================================================= void NMTTools_PaveFiller::Init() { myDSIt.SetDS(myDS); } //======================================================================= // function: Perform // purpose: //======================================================================= void NMTTools_PaveFiller::Perform() { try { // 0. Init();//myDSIt.SetDS(myDS); // //1.VV PerformVV(); PerformNewVertices(); // // 2.VE myPavePool.Resize (myNbEdges); PrepareEdges(); PerformVE(); // // 3.VF PerformVF(); // // 4.EE myCommonBlockPool.Resize (myNbEdges); mySplitShapesPool.Resize (myNbEdges); myPavePoolNew .Resize (myNbEdges); PreparePaveBlocks(TopAbs_VERTEX, TopAbs_EDGE); PreparePaveBlocks(TopAbs_EDGE, TopAbs_EDGE); // PerformEE(); // RefinePavePool (); // myPavePoolNew.Destroy(); myPavePoolNew.Resize (myNbEdges); // // 5.EF PreparePaveBlocks(TopAbs_EDGE, TopAbs_FACE); PerformEF(); RefinePavePool(); // myPavePoolNew.Destroy(); MakeSplitEdges(); UpdateCommonBlocks(); // // 6. FF PerformFF (); MakeBlocks(); MakePCurves(); // // 7.Postprocessing UpdatePaveBlocks(); // NMTTools_DEProcessor aDEP(*this); aDEP.Do(); // } catch (BOPTColStd_Failure& /*x*/) { //QQ MESSAGE(x.Message() << flush); } }