From 8b1511ff6327ae63c450b10e49714d3c83577eda Mon Sep 17 00:00:00 2001 From: jfa Date: Thu, 11 Nov 2010 12:44:17 +0000 Subject: [PATCH] Mantis issue 0021071: Regression in GetInPlace. A fix by PKV on Partition error. --- ...NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx | 37 +- src/NMTTools/NMTTools_MapOfPaveBlock.hxx | 37 +- src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx | 37 +- src/NMTTools/NMTTools_PaveFiller.cdl | 37 +- src/NMTTools/NMTTools_PaveFiller.hxx | 538 +++++++++++------- src/NMTTools/NMTTools_PaveFiller_4.cxx | 87 ++- .../NMTTools_StdMapNodeOfMapOfPaveBlock.hxx | 38 +- .../NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx | 45 +- 8 files changed, 489 insertions(+), 367 deletions(-) diff --git a/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx index 0a32c9c5b..40c739829 100644 --- a/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx +++ b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx @@ -1,24 +1,23 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// File generated by CPPExt (Value) // -// Copyright (C) 2003-2007 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 +// Copyright (C) 1991 - 2000 by +// Matra Datavision SA. All rights reserved. +// +// Copyright (C) 2001 - 2004 by +// Open CASCADE SA. All rights reserved. +// +// This file is part of the Open CASCADE Technology software. // +// This software may be distributed and/or modified under the terms and +// conditions of the Open CASCADE Public License as defined by Open CASCADE SA +// and appearing in the file LICENSE included in the packaging of this file. +// +// This software is distributed on an "AS IS" basis, without warranty of any +// kind, and Open CASCADE SA hereby disclaims all such warranties, +// including without limitation, any warranties of merchantability, fitness +// for a particular purpose or non-infringement. Please see the License for +// the specific terms and conditions governing rights and limitations under the +// License. #include diff --git a/src/NMTTools/NMTTools_MapOfPaveBlock.hxx b/src/NMTTools/NMTTools_MapOfPaveBlock.hxx index 7963a1f98..50007afee 100644 --- a/src/NMTTools/NMTTools_MapOfPaveBlock.hxx +++ b/src/NMTTools/NMTTools_MapOfPaveBlock.hxx @@ -1,24 +1,23 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// File generated by CPPExt (Value) // -// Copyright (C) 2003-2007 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 +// Copyright (C) 1991 - 2000 by +// Matra Datavision SA. All rights reserved. +// +// Copyright (C) 2001 - 2004 by +// Open CASCADE SA. All rights reserved. +// +// This file is part of the Open CASCADE Technology software. // +// This software may be distributed and/or modified under the terms and +// conditions of the Open CASCADE Public License as defined by Open CASCADE SA +// and appearing in the file LICENSE included in the packaging of this file. +// +// This software is distributed on an "AS IS" basis, without warranty of any +// kind, and Open CASCADE SA hereby disclaims all such warranties, +// including without limitation, any warranties of merchantability, fitness +// for a particular purpose or non-infringement. Please see the License for +// the specific terms and conditions governing rights and limitations under the +// License. #ifndef _NMTTools_MapOfPaveBlock_HeaderFile #define _NMTTools_MapOfPaveBlock_HeaderFile diff --git a/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx index 6f9d7d8a3..e1e5db0c8 100644 --- a/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx +++ b/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx @@ -1,24 +1,23 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// File generated by CPPExt (Value) // -// Copyright (C) 2003-2007 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 +// Copyright (C) 1991 - 2000 by +// Matra Datavision SA. All rights reserved. +// +// Copyright (C) 2001 - 2004 by +// Open CASCADE SA. All rights reserved. +// +// This file is part of the Open CASCADE Technology software. // +// This software may be distributed and/or modified under the terms and +// conditions of the Open CASCADE Public License as defined by Open CASCADE SA +// and appearing in the file LICENSE included in the packaging of this file. +// +// This software is distributed on an "AS IS" basis, without warranty of any +// kind, and Open CASCADE SA hereby disclaims all such warranties, +// including without limitation, any warranties of merchantability, fitness +// for a particular purpose or non-infringement. Please see the License for +// the specific terms and conditions governing rights and limitations under the +// License. #include diff --git a/src/NMTTools/NMTTools_PaveFiller.cdl b/src/NMTTools/NMTTools_PaveFiller.cdl index 1bc4c8e72..d21a19edf 100644 --- a/src/NMTTools/NMTTools_PaveFiller.cdl +++ b/src/NMTTools/NMTTools_PaveFiller.cdl @@ -1,4 +1,4 @@ --- Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +-- Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -- -- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,7 +19,6 @@ -- -- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -- - -- File: NMTTools_PaveFiller.cdl -- Created: Fri Dec 5 14:35:00 2003 -- Author: Peter KURNEV @@ -36,13 +35,10 @@ uses Vertex from TopoDS, Face from TopoDS, Shape from TopoDS, - -- Modified to add new definitions Thu Sep 14 14:35:18 2006 - -- Contribution of Samtech www.samcef.com BEGIN Edge from TopoDS, ListOfShape from TopTools, DataMapOfShapeShape from TopTools, ListOfInteger from TColStd, - -- Contribution of Samtech www.samcef.com END Context from IntTools, ShrunkRange from IntTools, @@ -68,12 +64,9 @@ uses ShapesDataStructure from NMTDS, - -- Modified to add new definitions Thu Sep 14 14:35:18 2006 - -- Contribution of Samtech www.samcef.com BEGIN PShapesDataStructure from NMTDS, Iterator from NMTDS, IndexedDataMapOfIndexedMapOfInteger from NMTTools, - -- Contribution of Samtech www.samcef.com END PIterator from NMTDS, PInterfPool from NMTDS @@ -104,12 +97,8 @@ is IP(me:out) returns PInterfPool from NMTDS; -- - -- Perform the algo - -- Modified to add new method Thu Sep 14 14:35:18 2006 - -- Contribution of Samtech www.samcef.com BEGIN Init (me:out) is virtual protected; - -- Contribution of Samtech www.samcef.com END Clear (me:out) is virtual protected; @@ -369,14 +358,12 @@ is returns PaveBlock from BOPTools; ---C++: return const & - --modified by NIZNHY-PKV Fri Nov 30 10:30:54 2007 f RealPaveBlock(me:out; aPB:PaveBlock from BOPTools; aLB:out ListOfInteger from TColStd; aIsCommonBlock:out Integer from Standard) returns PaveBlock from BOPTools; ---C++: return const & - --modified by NIZNHY-PKV Fri Nov 30 10:30:58 2007 t RealSplitsFace (me:out; nF2 :Integer from Standard; @@ -457,8 +444,6 @@ is MakePCurves (me:out); - -- Modified to add new methods Thu Sep 14 14:35:18 2006 - -- Contribution of Samtech www.samcef.com BEGIN PerformVF1(me:out) is protected; @@ -468,7 +453,6 @@ is AloneVertices(me) returns IndexedDataMapOfIndexedMapOfInteger from NMTTools; ---C++: return const & - -- Contribution of Samtech www.samcef.com END IsExistingPaveBlock (me:out; aPB : PaveBlock from BOPTools; @@ -489,19 +473,30 @@ is aTol: Real from Standard) returns Integer from Standard; - -- Modified to add new method Thu Sep 14 14:35:18 2006 - -- Contribution of Samtech www.samcef.com BEGIN SharedEdges(me:out; nF1 :Integer from Standard; nF2 :Integer from Standard; aLNE :out ListOfInteger from TColStd; aLSE :out ListOfShape from TopTools); - -- Contribution of Samtech www.samcef.com END FuseVertices(me; aC:Shape from TopoDS; aDMVV: out DataMapOfShapeShape from TopTools); - + -- + TreatPaveBlocks(me:out; + theLCB:out ListOfCommonBlock from NMTTools); + + ChangePavePoolNew(me:out) + returns PavePool from BOPTools; + ---C++:return & + + --modified by NIZNHY-PKV Thu Nov 11 08:12:50 2010f + CheckCoincidence (me:out; + aPB1 : PaveBlock from BOPTools; + aPB2 : PaveBlock from BOPTools) + returns Boolean from Standard; + --modified by NIZNHY-PKV Thu Nov 11 08:12:54 2010t + fields myDS : PShapesDataStructure from NMTDS is protected; myIsDone : Boolean from Standard is protected; diff --git a/src/NMTTools/NMTTools_PaveFiller.hxx b/src/NMTTools/NMTTools_PaveFiller.hxx index 13e147c87..ba8dbd419 100644 --- a/src/NMTTools/NMTTools_PaveFiller.hxx +++ b/src/NMTTools/NMTTools_PaveFiller.hxx @@ -1,35 +1,27 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// File generated by CPPExt (Value) // -// Copyright (C) 2003-2007 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 +// Copyright (C) 1991 - 2000 by +// Matra Datavision SA. All rights reserved. +// +// Copyright (C) 2001 - 2004 by +// Open CASCADE SA. All rights reserved. +// +// This file is part of the Open CASCADE Technology software. // +// This software may be distributed and/or modified under the terms and +// conditions of the Open CASCADE Public License as defined by Open CASCADE SA +// and appearing in the file LICENSE included in the packaging of this file. +// +// This software is distributed on an "AS IS" basis, without warranty of any +// kind, and Open CASCADE SA hereby disclaims all such warranties, +// including without limitation, any warranties of merchantability, fitness +// for a particular purpose or non-infringement. Please see the License for +// the specific terms and conditions governing rights and limitations under the +// License. #ifndef _NMTTools_PaveFiller_HeaderFile #define _NMTTools_PaveFiller_HeaderFile -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - #ifndef _NMTDS_PShapesDataStructure_HeaderFile #include #endif @@ -102,134 +94,204 @@ class TopoDS_Edge; class TopTools_DataMapOfShapeShape; +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + class NMTTools_PaveFiller { + public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTTools_PaveFiller(); + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTTools_PaveFiller(); Standard_EXPORT virtual ~NMTTools_PaveFiller(); - - Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ; - - Standard_EXPORT const TopoDS_Shape& CompositeShape() const; - - Standard_EXPORT NMTDS_PShapesDataStructure DS() ; - - Standard_EXPORT NMTDS_PIterator DSIt() ; - - Standard_EXPORT NMTDS_PInterfPool IP() ; - - Standard_EXPORT virtual void Perform() ; - - Standard_EXPORT Standard_Boolean IsDone() const; - - Standard_EXPORT const IntTools_Context& Context() const; - - Standard_EXPORT IntTools_Context& ChangeContext() ; - - Standard_EXPORT const BOPTools_PavePool& PavePool() const; - - Standard_EXPORT BOPTools_PavePool& ChangePavePool() ; - - Standard_EXPORT BOPTools_PavePool& ChangePavePoolNew() ; - - Standard_EXPORT const NMTTools_CommonBlockPool& CommonBlockPool() const; - - Standard_EXPORT NMTTools_CommonBlockPool& ChangeCommonBlockPool() ; - - Standard_EXPORT const BOPTools_SplitShapesPool& SplitShapesPool() const; - - Standard_EXPORT BOPTools_SplitShapesPool& ChangeSplitShapesPool() ; - - Standard_EXPORT Standard_Integer FindSDVertex(const Standard_Integer nV) const; - - Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT Standard_Integer SplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT Standard_Integer SplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT Standard_Integer SplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT Standard_Integer SplitsFace(const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT Standard_Integer CommonBlocksFace(const Standard_Integer nF,NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void PrepareFace(const Standard_Integer nF,TopoDS_Face& aF) ; - - Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB) ; - - Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB,TColStd_ListOfInteger& aLB,Standard_Integer& aIsCommonBlock) ; - - Standard_EXPORT void RealSplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT Standard_Boolean HasRealSplitsInOnFace(const Standard_Integer nF1,const Standard_Integer nF2) ; - - Standard_EXPORT void RealSplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT void RealSplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT void RealSplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT void RealSplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT void RealSplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT void PrepareSetForFace(const Standard_Integer nF1,const Standard_Integer nF2,const BOPTools_ListOfPaveBlock& aLPB,BOPTools_PaveSet& aPSF) ; - - Standard_EXPORT void PutPaveOnCurve(const BOPTools_PaveSet& aPSF,const Standard_Real aTol,BOPTools_Curve& aBC) ; - - Standard_EXPORT void PutBoundPaveOnCurve(BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; - - Standard_EXPORT void PutBoundPaveOnCurve(const gp_Pnt& aP,const Standard_Real aT,BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; - - Standard_EXPORT Standard_Boolean FindPave(const gp_Pnt& aP,const Standard_Real aTpV,const BOPTools_PaveSet& aPS,BOPTools_Pave& aPV) ; - - Standard_EXPORT Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB,const BOPTools_PaveBlock& aPBR,const Standard_Real aTol) ; - - Standard_EXPORT Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB,const BOPTools_ListOfPaveBlock& aLPB,const Standard_Real aTol) ; - - Standard_EXPORT void MakePCurves() ; - - Standard_EXPORT const NMTTools_IndexedDataMapOfIndexedMapOfInteger& AloneVertices() const; - - Standard_EXPORT Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB,const TopTools_ListOfShape& aLPB,const Standard_Real aTol) ; - - Standard_EXPORT Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB,const BOPTools_ListOfPaveBlock& aLPB) ; - - Standard_EXPORT Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB,const TopoDS_Edge& aE,const Standard_Real aTol) ; - - Standard_EXPORT void SharedEdges(const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLNE,TopTools_ListOfShape& aLSE) ; - - Standard_EXPORT void FuseVertices(const TopoDS_Shape& aC,TopTools_DataMapOfShapeShape& aDMVV) const; + + +Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ; + + +Standard_EXPORT const TopoDS_Shape& CompositeShape() const; + + +Standard_EXPORT NMTDS_PShapesDataStructure DS() ; + + +Standard_EXPORT NMTDS_PIterator DSIt() ; + + +Standard_EXPORT NMTDS_PInterfPool IP() ; + + +Standard_EXPORT virtual void Perform() ; + + +Standard_EXPORT Standard_Boolean IsDone() const; + + +Standard_EXPORT const IntTools_Context& Context() const; + + +Standard_EXPORT IntTools_Context& ChangeContext() ; + + +Standard_EXPORT const BOPTools_PavePool& PavePool() const; + + +Standard_EXPORT BOPTools_PavePool& ChangePavePool() ; + + +Standard_EXPORT const NMTTools_CommonBlockPool& CommonBlockPool() const; + + +Standard_EXPORT NMTTools_CommonBlockPool& ChangeCommonBlockPool() ; + + +Standard_EXPORT const BOPTools_SplitShapesPool& SplitShapesPool() const; + + +Standard_EXPORT BOPTools_SplitShapesPool& ChangeSplitShapesPool() ; + + +Standard_EXPORT Standard_Integer FindSDVertex(const Standard_Integer nV) const; + + +Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,TColStd_ListOfInteger& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT Standard_Integer SplitsFace(const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + + +Standard_EXPORT Standard_Integer CommonBlocksFace(const Standard_Integer nF,NMTTools_ListOfCommonBlock& aLCB) ; + + +Standard_EXPORT void PrepareFace(const Standard_Integer nF,TopoDS_Face& aF) ; + + +Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB) ; + + +Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB,TColStd_ListOfInteger& aLB,Standard_Integer& aIsCommonBlock) ; + + +Standard_EXPORT void RealSplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT Standard_Boolean HasRealSplitsInOnFace(const Standard_Integer nF1,const Standard_Integer nF2) ; + + +Standard_EXPORT void RealSplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT void RealSplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT void RealSplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT void RealSplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT void RealSplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + + +Standard_EXPORT void PrepareSetForFace(const Standard_Integer nF1,const Standard_Integer nF2,const BOPTools_ListOfPaveBlock& aLPB,BOPTools_PaveSet& aPSF) ; + + +Standard_EXPORT void PutPaveOnCurve(const BOPTools_PaveSet& aPSF,const Standard_Real aTol,BOPTools_Curve& aBC) ; + + +Standard_EXPORT void PutBoundPaveOnCurve(BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; + + +Standard_EXPORT void PutBoundPaveOnCurve(const gp_Pnt& aP,const Standard_Real aT,BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; + + +Standard_EXPORT Standard_Boolean FindPave(const gp_Pnt& aP,const Standard_Real aTpV,const BOPTools_PaveSet& aPS,BOPTools_Pave& aPV) ; + + +Standard_EXPORT Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB,const BOPTools_PaveBlock& aPBR,const Standard_Real aTol) ; + + +Standard_EXPORT Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB,const BOPTools_ListOfPaveBlock& aLPB,const Standard_Real aTol) ; + + +Standard_EXPORT void MakePCurves() ; + + +Standard_EXPORT const NMTTools_IndexedDataMapOfIndexedMapOfInteger& AloneVertices() const; + + +Standard_EXPORT Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB,const TopTools_ListOfShape& aLPB,const Standard_Real aTol) ; + + +Standard_EXPORT Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB,const BOPTools_ListOfPaveBlock& aLPB) ; + + +Standard_EXPORT Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB,const TopoDS_Edge& aE,const Standard_Real aTol) ; + + +Standard_EXPORT void SharedEdges(const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLNE,TopTools_ListOfShape& aLSE) ; + + +Standard_EXPORT void FuseVertices(const TopoDS_Shape& aC,TopTools_DataMapOfShapeShape& aDMVV) const; + + +Standard_EXPORT void TreatPaveBlocks(NMTTools_ListOfCommonBlock& theLCB) ; + + +Standard_EXPORT BOPTools_PavePool& ChangePavePoolNew() ; + + +Standard_EXPORT Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB1,const BOPTools_PaveBlock& aPB2) ; @@ -237,76 +299,111 @@ Standard_EXPORT virtual ~NMTTools_PaveFiller(); protected: - - Standard_EXPORT virtual void Init() ; - - Standard_EXPORT virtual void Clear() ; - - Standard_EXPORT virtual void PerformVV() ; - - Standard_EXPORT virtual void PerformVE() ; - - Standard_EXPORT virtual void PerformVF() ; - - Standard_EXPORT virtual void PerformEE() ; - - Standard_EXPORT virtual void PerformEF() ; - - Standard_EXPORT virtual void PerformFF() ; - - Standard_EXPORT void MakeSplitEdges() ; - - Standard_EXPORT virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; - - Standard_EXPORT void CorrectShrunkRanges(const Standard_Integer aSide,const BOPTools_Pave& aPave,IntTools_ShrunkRange& aSR) ; - - Standard_EXPORT virtual void PreparePaveBlocks(const Standard_Integer anE) ; - - Standard_EXPORT virtual void PrepareEdges() ; - - Standard_EXPORT Standard_Boolean IsSuccessorsComputed(const Standard_Integer iF1,const Standard_Integer iF2) const; - - Standard_EXPORT Standard_Boolean IsBlocksCoinside(const BOPTools_PaveBlock& aPB1,const BOPTools_PaveBlock& aPB2) const; - - Standard_EXPORT void RefinePavePool() ; - - Standard_EXPORT Standard_Integer CheckFacePaves(const TopoDS_Vertex& aV,const Standard_Integer nF) ; - - Standard_EXPORT void ReplaceCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void SplitCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void SplitCommonBlock(const NMTTools_CommonBlock& aCB,NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aM) ; - - Standard_EXPORT void EFCommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) ; - - Standard_EXPORT void EENewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT void EENewVertices(const TopoDS_Vertex& aV,const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT void EFNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT void EFNewVertices(const TopoDS_Vertex& aV,const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT void UpdateCommonBlocks() ; - - Standard_EXPORT void UpdatePaveBlocks() ; - - Standard_EXPORT Standard_Integer SplitIndex(const BOPTools_PaveBlock& aPB) const; - - Standard_EXPORT void MakeBlocks() ; - - Standard_EXPORT void PerformVF1() ; - - Standard_EXPORT void MakeAloneVertices() ; - - Standard_EXPORT void TreatPaveBlocks(NMTTools_ListOfCommonBlock& theLCB) ; + // Methods PROTECTED + // + + +Standard_EXPORT virtual void Init() ; + + +Standard_EXPORT virtual void Clear() ; + + +Standard_EXPORT virtual void PerformVV() ; + + +Standard_EXPORT virtual void PerformVE() ; + + +Standard_EXPORT virtual void PerformVF() ; + + +Standard_EXPORT virtual void PerformEE() ; + + +Standard_EXPORT virtual void PerformEF() ; + + +Standard_EXPORT virtual void PerformFF() ; + +Standard_EXPORT void MakeSplitEdges() ; + +Standard_EXPORT virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; + + +Standard_EXPORT void CorrectShrunkRanges(const Standard_Integer aSide,const BOPTools_Pave& aPave,IntTools_ShrunkRange& aSR) ; + + +Standard_EXPORT virtual void PreparePaveBlocks(const Standard_Integer anE) ; + + +Standard_EXPORT virtual void PrepareEdges() ; + + +Standard_EXPORT Standard_Boolean IsSuccessorsComputed(const Standard_Integer iF1,const Standard_Integer iF2) const; + + +Standard_EXPORT Standard_Boolean IsBlocksCoinside(const BOPTools_PaveBlock& aPB1,const BOPTools_PaveBlock& aPB2) const; + + +Standard_EXPORT void RefinePavePool() ; + + +Standard_EXPORT Standard_Integer CheckFacePaves(const TopoDS_Vertex& aV,const Standard_Integer nF) ; + + +Standard_EXPORT void ReplaceCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; + + +Standard_EXPORT void RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; + + +Standard_EXPORT void SplitCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; + + +Standard_EXPORT void SplitCommonBlock(const NMTTools_CommonBlock& aCB,NMTTools_ListOfCommonBlock& aLCB) ; + + +Standard_EXPORT void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aM) ; + + +Standard_EXPORT void EFCommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) ; + + +Standard_EXPORT void EENewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; + + +Standard_EXPORT void EENewVertices(const TopoDS_Vertex& aV,const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; + + +Standard_EXPORT void EFNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; + + +Standard_EXPORT void EFNewVertices(const TopoDS_Vertex& aV,const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; + + +Standard_EXPORT void UpdateCommonBlocks() ; + + +Standard_EXPORT void UpdatePaveBlocks() ; + + +Standard_EXPORT Standard_Integer SplitIndex(const BOPTools_PaveBlock& aPB) const; + + +Standard_EXPORT void MakeBlocks() ; + + +Standard_EXPORT void PerformVF1() ; + + +Standard_EXPORT void MakeAloneVertices() ; + + + // Fields PROTECTED + // NMTDS_PShapesDataStructure myDS; Standard_Boolean myIsDone; Standard_Integer myNbSources; @@ -324,10 +421,14 @@ TopoDS_Shape myCompositeShape; NMTDS_PInterfPool myIP; -private: +private: + // Methods PRIVATE + // + // Fields PRIVATE + // }; @@ -337,6 +438,7 @@ private: // other Inline functions and methods (like "C++: function call" methods) +// #endif diff --git a/src/NMTTools/NMTTools_PaveFiller_4.cxx b/src/NMTTools/NMTTools_PaveFiller_4.cxx index b6dc1b485..22288863a 100644 --- a/src/NMTTools/NMTTools_PaveFiller_4.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_4.cxx @@ -32,6 +32,8 @@ #include #include +#include + #include #include #include @@ -62,6 +64,7 @@ #include #include #include +#include #include #include @@ -170,16 +173,10 @@ void NMTTools_PaveFiller::PerformEE() for (; myDSIt->More(); myDSIt->Next()) { myDSIt->Current(n1, n2, bJustAdd); anIndexIn = 0; - // - //if (myIntrPool->IsComputed(n1, n2)) { - // continue; - //} - // nE1=n1; nE2=n2; // if(bJustAdd) { - //myIntrPool->AddInterference (nE1, nE2, BooleanOperations_EdgeEdge, anIndexIn); continue; } // @@ -281,9 +278,7 @@ void NMTTools_PaveFiller::PerformEE() aR1 = (aEE.Order()) ? anewSR2 : anewSR1; aR2 = (aEE.Order()) ? anewSR1 : anewSR2; // - //modified by NIZNHY-PKV Mon Jun 07 11:01:40 2010f aTol=0.8*aTol; - //modified by NIZNHY-PKV Mon Jun 07 11:01:43 2010t bIsOnPave1=IsOnPave(aT1, aR1, aTol); bIsOnPave2=IsOnPave(aT2, aR2, aTol); // @@ -362,7 +357,6 @@ void NMTTools_PaveFiller::PerformEE() aCoinsideFlag=IsBlocksCoinside(aPB1, aPB2); // if (aNbComPrt2>1 || !aCoinsideFlag) { - //myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn); break; } // @@ -1276,6 +1270,7 @@ void NMTTools_PaveFiller::RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& a void NMTTools_PaveFiller::SplitCommonBlock(const NMTTools_CommonBlock& aCB, NMTTools_ListOfCommonBlock& aLCBx) { + Standard_Boolean bIsCoincided; Standard_Integer i, j,nE, aNbE, aNbSPBx, aNbPB, k; BOPTools_SequenceOfPaveBlock aSPBx; BOPTools_ListIteratorOfListOfPaveBlock anItLPB; @@ -1355,8 +1350,6 @@ void NMTTools_PaveFiller::SplitCommonBlock(const NMTTools_CommonBlock& aCB, aNbSPBx=aSPBx.Length(); aNbPB=aNbSPBx/aNbE; // - //modified by NIZNHY-PKV Fri Jun 04 14:07:37 2010f - // Standard_Integer k1, k2, n11, n12, n21, n22; // for (i=1; i<=aNbPB; ++i) { @@ -1378,28 +1371,20 @@ void NMTTools_PaveFiller::SplitCommonBlock(const NMTTools_CommonBlock& aCB, n21=aPB2.Pave1().Index(); n22=aPB2.Pave2().Index(); if ((n21==n11 && n22==n12) || (n21==n12 && n22==n11)) { - aCBx.AddPaveBlock(aPB2); - break; + //modified by NIZNHY-PKV Thu Nov 11 08:13:24 2010f + bIsCoincided=CheckCoincidence(aPB2, aPB1); + if (bIsCoincided) { + aCBx.AddPaveBlock(aPB2); + break; + } + //aCBx.AddPaveBlock(aPB2); + //break; + //modified by NIZNHY-PKV Thu Nov 11 08:13:31 2010t } } } aLCBx.Append(aCBx); } - /* - for (i=1; i<=aNbPB; ++i) { - NMTTools_CommonBlock aCBx; - // - aCBx.AddFaces(aLF); - // - for (j=1; j<=aNbE; ++j) { - k=i+(j-1)*aNbPB; - const BOPTools_PaveBlock& aPB=aSPBx(k); - aCBx.AddPaveBlock(aPB); - } - aLCBx.Append(aCBx); - } - */ - //modified by NIZNHY-PKV Fri Jun 04 14:07:42 2010t } //======================================================================= @@ -1507,7 +1492,6 @@ void ProcessBlock(const BOPTools_PaveBlock& aPB, ProcessBlock(aPBx, aMapCB, aProcessedBlocks, aChain); } } - // Modified to provide VS interference between // vertex as result of EE and a Face of argument // Thu Sep 14 14:35:18 2006 @@ -1581,3 +1565,48 @@ void ProcessBlock(const BOPTools_PaveBlock& aPB, } } // Contribution of Samtech www.samcef.com END +//modified by NIZNHY-PKV Thu Nov 11 08:13:48 2010f +//======================================================================= +// function: CheckCoincidence +// purpose: +//======================================================================= +Standard_Boolean NMTTools_PaveFiller::CheckCoincidence(const BOPTools_PaveBlock& aPB1, + const BOPTools_PaveBlock& aPB2) +{ + Standard_Boolean bRet; + Standard_Integer nE1, nE2, aNbPoints; + Standard_Real aT11, aT12, aT21, aT22, aT1m, aD, aTol, aT2x; + gp_Pnt aP1m; + // + bRet=Standard_False; + // + aT11=aPB1.Pave1().Param(); + aT12=aPB1.Pave2().Param(); + aT1m=IntTools_Tools::IntermediatePoint (aT11, aT12); + nE1=aPB1.OriginalEdge(); + const TopoDS_Edge& aE1=(*(TopoDS_Edge*)(&myDS->Shape(nE1))); + BOPTools_Tools::PointOnEdge(aE1, aT1m, aP1m); + // + aT21=aPB2.Pave1().Param(); + aT22=aPB2.Pave2().Param(); + nE2=aPB2.OriginalEdge(); + const TopoDS_Edge& aE2=(*(TopoDS_Edge*)(&myDS->Shape(nE2))); + // + GeomAPI_ProjectPointOnCurve& aPPC=myContext.ProjPC(aE2); + aPPC.Perform(aP1m); + aNbPoints=aPPC.NbPoints(); + if (aNbPoints) { + aD=aPPC.LowerDistance(); + // + aTol=BRep_Tool::Tolerance(aE1); + aTol=aTol+BRep_Tool::Tolerance(aE2); + if (aDaT21 && aT2x @@ -52,10 +51,10 @@ Standard_EXPORT Handle_Standard_Type& NMTTools_StdMapNodeOfMapOfPaveBlock_Type_( static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; static Handle_Standard_Type _aType = new Standard_Type("NMTTools_StdMapNodeOfMapOfPaveBlock", - sizeof(NMTTools_StdMapNodeOfMapOfPaveBlock), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); + sizeof(NMTTools_StdMapNodeOfMapOfPaveBlock), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); return _aType; } -- 2.39.2