From: skl Date: Fri, 20 Oct 2006 07:23:31 +0000 (+0000) Subject: Add new files for new version of PartitionAlgo. X-Git-Tag: StablePartAlgo1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1d64e6d16a6fc2d57a6e5c1365814c1a3d8beb35;p=modules%2Fgeom.git Add new files for new version of PartitionAlgo. --- diff --git a/src/GEOMAlgo/GEOMAlgo.cdl b/src/GEOMAlgo/GEOMAlgo.cdl index c5c09eb5a..75e5b2106 100755 --- a/src/GEOMAlgo/GEOMAlgo.cdl +++ b/src/GEOMAlgo/GEOMAlgo.cdl @@ -1,28 +1,26 @@ -// 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 -// +-- 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.cdl -- Created: Sat Dec 04 12:36:22 2004 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2004 - package GEOMAlgo @@ -30,7 +28,8 @@ package GEOMAlgo uses TCollection, - TColStd, + + TColgp, Geom, Bnd, gp, @@ -40,10 +39,18 @@ uses TopTools, IntTools, BOPTools, - BOP - + BOP, + --|| + TColStd, + BOPTColStd, + BRepAlgo, + NMTDS, + NMTTools + --|| + is - -- enumerations + -- + -- enumerations -- enumeration State is ST_UNKNOWN, @@ -57,8 +64,8 @@ is -- -- classes -- - deferred class Algo; - deferred class ShapeAlgo; + deferred class Algo; + deferred class ShapeAlgo; -- -- gluer class Gluer; @@ -69,7 +76,6 @@ is class PassKeyShape; class SurfaceTools; class Tools; - -- -- finder on deferred class ShapeSolid; @@ -82,6 +88,45 @@ is class FinderShapeOn1; class StateCollector; -- + -- Builder/Splitter + deferred class BuilderShape; + + class Builder; + class Splitter; + class Tools3D; + class BuilderTools; + class ShapeSet; + + deferred class BuilderArea; + class BuilderFace; + class BuilderSolid; + + class WireSplitter; + class WireEdgeSet; + class WESCorrector; + -- + -- Pointers + -- + pointer PWireEdgeSet to WireEdgeSet from GEOMAlgo; + -- + -- + -- Instantiations + class DataMapOfShapeShapeSet instantiates + DataMap from TCollection(Shape from TopoDS, + ShapeSet from GEOMAlgo, + ShapeMapHasher from TopTools); + + class DataMapOfShapeReal instantiates + DataMap from TCollection(Shape from TopoDS, + Real from Standard, + ShapeMapHasher from TopTools); + + + class DataMapOfRealListOfShape instantiates + DataMap from TCollection(Real from Standard, + ListOfShape from TopTools, + MapRealHasher from TColStd); + -- -- instantiations class IndexedDataMapOfPassKeyShapeListOfShape instantiates IndexedDataMap from TCollection (PassKeyShape from GEOMAlgo, @@ -105,20 +150,13 @@ is instantiates IndexedDataMap from TCollection (Shape from TopoDS, State from TopAbs, ShapeMapHasher from TopTools); --- class ListOfPnt instantiates List from TCollection (Pnt from gp); --- class IndexedDataMapOfPassKeyInteger --- instantiates IndexedDataMap from TCollection (PassKeyRoot from GEOMAlgo, --- Integer from Standard, --- PassKeyMapHasher from GEOMAlgo); - + class DataMapOfPassKeyInteger instantiates DataMap from TCollection (PassKey from GEOMAlgo, Integer from Standard, PassKeyMapHasher from GEOMAlgo); - - end GEOMAlgo; diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.cdl b/src/GEOMAlgo/GEOMAlgo_Algo.cdl index a0482b714..1b56ef469 100755 --- a/src/GEOMAlgo/GEOMAlgo_Algo.cdl +++ b/src/GEOMAlgo/GEOMAlgo_Algo.cdl @@ -1,27 +1,26 @@ -// 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 -// +-- 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_Algo.cdl -- Created: Sat Dec 04 12:37:56 2004 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2004 deferred class Algo from GEOMAlgo diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.hxx b/src/GEOMAlgo/GEOMAlgo_Algo.hxx index bfeae4fa2..028e7fbce 100644 --- a/src/GEOMAlgo/GEOMAlgo_Algo.hxx +++ b/src/GEOMAlgo/GEOMAlgo_Algo.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,6 +32,7 @@ #include #endif + class GEOMAlgo_Algo { public: @@ -50,8 +51,14 @@ public: } // Methods PUBLIC // + + Standard_EXPORT virtual void Perform() = 0; + + Standard_EXPORT Standard_Integer ErrorStatus() const; + + Standard_EXPORT Standard_Integer WarningStatus() const; @@ -62,9 +69,15 @@ protected: // Methods PROTECTED // + + Standard_EXPORT GEOMAlgo_Algo(); Standard_EXPORT virtual ~GEOMAlgo_Algo(); + + Standard_EXPORT virtual void CheckData() ; + + Standard_EXPORT virtual void CheckResult() ; diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.ixx b/src/GEOMAlgo/GEOMAlgo_Algo.ixx index b31871134..5b8348358 100644 --- a/src/GEOMAlgo/GEOMAlgo_Algo.ixx +++ b/src/GEOMAlgo/GEOMAlgo_Algo.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_Algo.jxx b/src/GEOMAlgo/GEOMAlgo_Algo.jxx index edeaf138e..65f9ef05a 100644 --- a/src/GEOMAlgo/GEOMAlgo_Algo.jxx +++ b/src/GEOMAlgo/GEOMAlgo_Algo.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _GEOMAlgo_Algo_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.cdl b/src/GEOMAlgo/GEOMAlgo_Builder.cdl new file mode 100755 index 000000000..42eb89e86 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.cdl @@ -0,0 +1,247 @@ +-- 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_Builder.cdl +-- Created: +-- Author: Peter KURNEV + + +class Builder from GEOMAlgo + inherits BuilderShape from GEOMAlgo + + ---Purpose: + +uses + ShapeEnum from TopAbs, + Shape from TopoDS, + + ListOfShape from TopTools, + IndexedDataMapOfShapeListOfShape from TopTools, + IndexedDataMapOfShapeShape from TopTools, + MapOfShape from TopTools, + Image from BRepAlgo, + + DSFiller from NMTTools, + PDSFiller from NMTTools + +--raises + +is + + Create + ---Purpose: Empty constructor + returns Builder from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_Builder();" + + Perform(me:out) + ---Purpose: Performs calculations + is redefined; + + PerformWithFiller(me:out; + theDSF: DSFiller from NMTTools) + ---Purpose: Performs calculations using prepared DSFiller + -- object theDSF + is virtual; + + AddShape (me:out; + theShape: Shape from TopoDS) + ---Purpose: Adds argument theShape of the operation + is virtual; + + Clear(me:out) + ---Purpose: Clears internal fields and arguments + is virtual; + + Shapes(me) + ---Purpose: Returns the arguments of the operation + returns ListOfShape from TopTools; + ---C++: return const & + -- + -- History support + -- + Generated (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns the list of shapes generated from the + -- shape theS. + returns ListOfShape from TopTools + is redefined; + ---C++: return const & + + Modified (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns the list of shapes modified from the shape + -- theS. + returns ListOfShape from TopTools + is redefined; + ---C++: return const & + + IsDeleted (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns true if the shape theS has been deleted. + returns Boolean from Standard + is redefined; + -- + -- protected methods + -- + PrepareHistory (me:out) + ---Purpose: Prepare information for history support + is redefined protected; + + ClearInternals(me:out) + ---Purpose: Clears internal fields + is virtual protected; + + Prepare(me:out) + ---Purpose: Provides preparing actions + is virtual protected; + + PostTreat(me:out) + ---Purpose: Provides post-tratment actions + is virtual protected; + + AddShape1 (me:out; + theShape: Shape from TopoDS) + ---Purpose: Append the argument theShape to + -- typified lists of arguments myShapes1 + is protected; + + BuildResult(me:out; + theType: ShapeEnum from TopAbs) + ---Purpose: Build the resulting shapes of type theType + is virtual protected; + + -- Vertices + FillImagesVertices(me:out) + ---Purpose: Fill Images for vertices + is protected; + + -- Edges + FillImagesEdges(me:out) + ---Purpose: Fill Images for edges + is protected; + -- + -- Faces + FillImagesFaces(me:out) + ---Purpose: Fill Images for faces + is protected; + + FillIn2DParts(me:out) + ---Purpose: For each interferred face find split edges + -- that are in 2-D domain of the face + is protected; + + BuildSplitFaces(me:out) + ---Purpose: Build draft faces + is protected; + + FillSameDomainFaces(me:out) + ---Purpose: Among draft faces find same domain faces + is protected; + + FillImagesFaces1(me:out) + ---Purpose: Fill Images for faces + -- taking into account same domain faces + is protected; + + FillInternalVertices(me:out) + ---Purpose: Update Images for faces by + -- internal vertices + is protected; + -- + -- Wires, Shells, Compsolids, Compounds + FillImagesContainers(me:out; + theType:ShapeEnum from TopAbs) + ---Purpose: Fill Images for Wires, Shells, Compsolids, Compounds + is protected; + -- + -- Solids + FillImagesSolids(me:out) + ---Purpose: Fill Images for solids + is protected; + + FillIn3DParts(me:out) + ---Purpose: For each interferred solid find split faces + -- that are in 3-D domain of the solid + is protected; + + BuildSplitSolids(me:out) + ---Purpose: Build draft solids + is protected; + + FillInternalShapes(me:out) + ---Purpose: Update draft solids by + -- internal shells, edges, vertices + is protected; + + BuildDraftSolid(me:out; + theSolid: Shape from TopoDS; + theDraftSolid: out Shape from TopoDS; + theInternalFaces: out ListOfShape from TopTools) + ---Purpose: Build solid theDraftSolid that consists of + -- non-internal split faces of the solid + -- theSolid. + -- All splits of internal faces of + -- theSolid are in the list: theInternalFaces + is protected; + -- + -- debug methods + -- + AddCompound (me:out; + theShape: Shape from TopoDS); + ---Purpose: Adds arguments of the operation as + -- shapes of upper level of container shape theShape + Shapes1(me; + theType: Integer from Standard) + ---Purpose: Returns list of arguments of type theType + returns ListOfShape from TopTools; + ---C++: return const & + + Images(me) + ---Purpose: Returns image shapes + returns Image from BRepAlgo; + ---C++: return const & + + InParts(me; + theShape:Shape from TopoDS) + ---Purpose: Returns split-parts of shapes that have + -- state IN for the domain of shape theShape + returns ListOfShape from TopTools; + ---C++: return const & + + -- ===================================================== + +fields + myDSFiller : PDSFiller from NMTTools is protected; + myShapes : ListOfShape from TopTools is protected; + -- Common usage + myNbTypes : Integer from Standard is protected; + myMapFence : MapOfShape from TopTools is protected; + myShapes1 : ListOfShape from TopTools[9] is protected; + myImages : Image from BRepAlgo is protected; + myInParts : IndexedDataMapOfShapeListOfShape from TopTools is protected; + + -- Faces + mySplitFaces : Image from BRepAlgo is protected; + mySameDomainShapes: IndexedDataMapOfShapeShape from TopTools is protected; + -- solids + myDraftSolids : IndexedDataMapOfShapeShape from TopTools is protected; + + -- +end Builder; + diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.cxx b/src/GEOMAlgo/GEOMAlgo_Builder.cxx new file mode 100755 index 000000000..0ab651cde --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.cxx @@ -0,0 +1,389 @@ +// 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_Builder.cxx +// Created: +// Author: Peter KURNEV + + +#include + +#include + +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include + +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_Builder::GEOMAlgo_Builder() +: + GEOMAlgo_BuilderShape() +{ + myNbTypes=9; + myDSFiller=NULL; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_Builder::~GEOMAlgo_Builder() +{ +} +//======================================================================= +//function : AddCompound +//purpose : +//======================================================================= + void GEOMAlgo_Builder::AddCompound(const TopoDS_Shape& theShape) +{ + TopoDS_Iterator aIt; + // + aIt.Initialize(theShape); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + AddShape(aS); + } +} +//======================================================================= +//function : AddShape +//purpose : +//======================================================================= + void GEOMAlgo_Builder::AddShape(const TopoDS_Shape& theShape) +{ + if (myMapFence.Add(theShape)) { + myShapes.Append(theShape); + } +} +//======================================================================= +//function : Shapes +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::Shapes()const +{ + return myShapes; +} +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void GEOMAlgo_Builder::Clear() +{ + myShapes.Clear(); + ClearInternals(); +} +//======================================================================= +//function : ClearInternals +//purpose : +//======================================================================= + void GEOMAlgo_Builder::ClearInternals() +{ + Standard_Integer i; + // + for (i=0; iSetCompositeShape(aCS); + pDSF->Perform(); + // + PerformWithFiller(*pDSF); +} +//======================================================================= +//function : PerformWithFiller +//purpose : +//======================================================================= + void GEOMAlgo_Builder::PerformWithFiller(const NMTTools_DSFiller& theDSF) +{ + myErrorStatus=0; + // + Standard_Boolean bIsDone; + // + // 0. myDSFiller + myDSFiller=(NMTTools_DSFiller *)&theDSF; + // + bIsDone=myDSFiller->IsDone(); + if (!bIsDone) { + myErrorStatus=2; // DSFiller is failed + return; + } + // + // 1. Clear Internal fields + ClearInternals(); + // + // 2. Prepare + Prepare(); + if (myErrorStatus) { + return; + } + // + // 3. Fill Images + // + // 3.1 Vertices + FillImagesVertices(); + if (myErrorStatus) { + return; + } + // + BuildResult(TopAbs_VERTEX); + if (myErrorStatus) { + return; + } + // 3.2 Edges + FillImagesEdges(); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_EDGE); + if (myErrorStatus) { + return; + } + // 3.3 Wires + FillImagesContainers(TopAbs_WIRE); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_WIRE); + if (myErrorStatus) { + return; + } + + // 3.4 Faces + FillImagesFaces(); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_FACE); + if (myErrorStatus) { + return; + } + // 3.5 Shells + + FillImagesContainers(TopAbs_SHELL); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_SHELL); + if (myErrorStatus) { + return; + } + // 3.6 Solids + FillImagesSolids(); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_SOLID); + if (myErrorStatus) { + return; + } + // 3.7 CompSolids + FillImagesContainers(TopAbs_COMPSOLID); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_COMPSOLID); + if (myErrorStatus) { + return; + } + // 3.8 Compounds + FillImagesContainers(TopAbs_COMPOUND); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_COMPOUND); + if (myErrorStatus) { + return; + } + // + // 4.History + PrepareHistory(); + // + // 5 Post-treatment + PostTreat(); +} +// +// myErrorStatus +// +// 0 - Ok +// 1 - The object is just initialized +// 2 - DSFiller is failed +// 10 - No shapes to process +// 30 - SolidBuilder failed diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.hxx b/src/GEOMAlgo/GEOMAlgo_Builder.hxx new file mode 100644 index 000000000..b6bc2e9e1 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.hxx @@ -0,0 +1,245 @@ +// 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 + +#ifndef _GEOMAlgo_Builder_HeaderFile +#define _GEOMAlgo_Builder_HeaderFile + +#ifndef _NMTTools_PDSFiller_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TopTools_MapOfShape_HeaderFile +#include +#endif +#ifndef _BRepAlgo_Image_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedDataMapOfShapeShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderShape_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +class NMTTools_DSFiller; +class TopoDS_Shape; +class TopTools_ListOfShape; +class BRepAlgo_Image; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_Builder : public GEOMAlgo_BuilderShape { + +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); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_Builder(); +Standard_EXPORT virtual ~GEOMAlgo_Builder(); + +//! Performs calculations
+Standard_EXPORT virtual void Perform() ; + +//! Performs calculations using prepared DSFiller
+//! object theDSF
+Standard_EXPORT virtual void PerformWithFiller(const NMTTools_DSFiller& theDSF) ; + +//! Adds argument theShape of the operation
+Standard_EXPORT virtual void AddShape(const TopoDS_Shape& theShape) ; + +//! Clears internal fields and arguments
+Standard_EXPORT virtual void Clear() ; + +//! Returns the arguments of the operation
+Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + +//! Returns the list of shapes generated from the
+//! shape theS.
+Standard_EXPORT virtual const TopTools_ListOfShape& Generated(const TopoDS_Shape& theS) ; + +//! Returns the list of shapes modified from the shape
+//! theS.
+Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& theS) ; + +//! Returns true if the shape theS has been deleted.
+Standard_EXPORT virtual Standard_Boolean IsDeleted(const TopoDS_Shape& theS) ; + +//! Adds arguments of the operation as
+//! shapes of upper level of container shape theShape
+Standard_EXPORT void AddCompound(const TopoDS_Shape& theShape) ; + +//! Returns list of arguments of type theType
+Standard_EXPORT const TopTools_ListOfShape& Shapes1(const Standard_Integer theType) const; + +//! Returns image shapes
+Standard_EXPORT const BRepAlgo_Image& Images() const; + +//! Returns split-parts of shapes that have
+//! state IN for the domain of shape theShape
+Standard_EXPORT const TopTools_ListOfShape& InParts(const TopoDS_Shape& theShape) const; + + + + + +protected: + + // Methods PROTECTED + // + +//! Prepare information for history support
+Standard_EXPORT virtual void PrepareHistory() ; + +//! Clears internal fields
+Standard_EXPORT virtual void ClearInternals() ; + +//! Provides preparing actions
+Standard_EXPORT virtual void Prepare() ; + +//! Provides post-tratment actions
+Standard_EXPORT virtual void PostTreat() ; + +//! Append the argument theShape to
+//! typified lists of arguments myShapes1
+Standard_EXPORT void AddShape1(const TopoDS_Shape& theShape) ; + +//! Build the resulting shapes of type theType
+Standard_EXPORT virtual void BuildResult(const TopAbs_ShapeEnum theType) ; + +//! Fill Images for vertices
+Standard_EXPORT void FillImagesVertices() ; + +//! Fill Images for edges
+Standard_EXPORT void FillImagesEdges() ; + +//! Fill Images for faces
+Standard_EXPORT void FillImagesFaces() ; + +//! For each interferred face find split edges
+//! that are in 2-D domain of the face
+Standard_EXPORT void FillIn2DParts() ; + +//! Build draft faces
+Standard_EXPORT void BuildSplitFaces() ; + +//! Among draft faces find same domain faces
+Standard_EXPORT void FillSameDomainFaces() ; + +//! Fill Images for faces
+//! taking into account same domain faces
+Standard_EXPORT void FillImagesFaces1() ; + +//! Update Images for faces by
+//! internal vertices
+Standard_EXPORT void FillInternalVertices() ; + +//! Fill Images for Wires, Shells, Compsolids, Compounds
+Standard_EXPORT void FillImagesContainers(const TopAbs_ShapeEnum theType) ; + +//! Fill Images for solids
+Standard_EXPORT void FillImagesSolids() ; + +//! For each interferred solid find split faces
+//! that are in 3-D domain of the solid
+Standard_EXPORT void FillIn3DParts() ; + +//! Build draft solids
+Standard_EXPORT void BuildSplitSolids() ; + +//! Update draft solids by
+//! internal shells, edges, vertices
+Standard_EXPORT void FillInternalShapes() ; + +//! Build solid theDraftSolid that consists of
+//! non-internal split faces of the solid
+//! theSolid.
+//! All splits of internal faces of
+//! theSolid are in the list: theInternalFaces
+Standard_EXPORT void BuildDraftSolid(const TopoDS_Shape& theSolid,TopoDS_Shape& theDraftSolid,TopTools_ListOfShape& theInternalFaces) ; + + + // Fields PROTECTED + // +NMTTools_PDSFiller myDSFiller; +TopTools_ListOfShape myShapes; +Standard_Integer myNbTypes; +TopTools_MapOfShape myMapFence; +TopTools_ListOfShape myShapes1[9]; +BRepAlgo_Image myImages; +TopTools_IndexedDataMapOfShapeListOfShape myInParts; +BRepAlgo_Image mySplitFaces; +TopTools_IndexedDataMapOfShapeShape mySameDomainShapes; +TopTools_IndexedDataMapOfShapeShape myDraftSolids; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.ixx b/src/GEOMAlgo/GEOMAlgo_Builder.ixx new file mode 100644 index 000000000..510e49dd6 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.jxx b/src/GEOMAlgo/GEOMAlgo_Builder.jxx new file mode 100644 index 000000000..1965f5ec7 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.jxx @@ -0,0 +1,34 @@ +// 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 + +#ifndef _NMTTools_DSFiller_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _BRepAlgo_Image_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Builder_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl new file mode 100755 index 000000000..48ef49f20 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl @@ -0,0 +1,101 @@ +-- 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: ModGlue_BuilderArea.cdl +-- Created: +-- Author: Peter KURNEV + +deferred class BuilderArea from GEOMAlgo + inherits Algo from GEOMAlgo + + ---Purpose: The root class for algorithms to build + -- faces/solids from set of edges/faces + +uses + Shape from TopoDS, + ListOfShape from TopTools, + MapOfOrientedShape from TopTools, + Context from IntTools, + PContext from IntTools + +--raises + +is + Initialize + ---Purpose: Empty constructor + returns BuilderArea from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_BuilderArea();" + + SetContext(me:out; + theContext:Context from IntTools); + ---Purpose: Sets cashed geometrical tools + + SetShapes(me:out; + theLS:ListOfShape from TopTools); + ---Purpose: Sets edges/faces to process + + Shapes(me) + ---Purpose: Returns edges/faces to process + returns ListOfShape from TopTools; + ---C++: return const & + + Loops(me) + ---Purpose: Returns wires/shells that have been built + returns ListOfShape from TopTools; + ---C++: return const & + + Areas(me) + ---Purpose: Returns faces/solids that have been built + returns ListOfShape from TopTools; + ---C++: return const & + + PerformShapesToAvoid(me:out) + ---Purpose: Collect the edges/faces that + -- a) are internal + -- b) are the same and have different orientation + is virtual protected; + + PerformLoops(me:out) + ---Purpose: Build draft faces/shells + -- a)myLoops - draft faces/shells that consist of + -- boundary edges/faces + -- b)myLoopsInternal - draft faces/shells that contains + -- inner edges/faces + is virtual protected; + + PerformAreas(me:out) + ---Purpose: Build draft faces/solids that contains boundary faces + is virtual protected; + + PerformInternalShapes(me:out) + ---Purpose: Build finalized faces/solids with internal wires/shells + is virtual protected; + + +fields + myShapes : ListOfShape from TopTools is protected; + myLoops : ListOfShape from TopTools is protected; + myLoopsInternal : ListOfShape from TopTools is protected; + myShapesToAvoid : MapOfOrientedShape from TopTools is protected; + myAreas : ListOfShape from TopTools is protected; + -- + myContext : PContext from IntTools is protected; + +end BuilderArea; + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx new file mode 100755 index 000000000..98a63c169 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx @@ -0,0 +1,122 @@ +// 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_BuilderArea.cxx +// Created: +// Author: Peter KURNEV + + +#include + +#include +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_BuilderArea::GEOMAlgo_BuilderArea() +: + GEOMAlgo_Algo() +{ + myContext=NULL; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_BuilderArea::~GEOMAlgo_BuilderArea() +{ +} +//======================================================================= +//function : SetContext +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::SetContext(const IntTools_Context& theContext) +{ + myContext=(IntTools_Context*)&theContext; +} +//======================================================================= +//function : SetShapes +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::SetShapes(const TopTools_ListOfShape& theLF) +{ + TopTools_ListIteratorOfListOfShape aIt; + // + myShapes.Clear(); + aIt.Initialize(theLF); + for(; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + myShapes.Append(aF); + } +} +//======================================================================= +//function : Shapes +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderArea::Shapes()const +{ + return myShapes; +} +//======================================================================= +//function : Loops +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderArea::Loops()const +{ + return myLoops; +} +//======================================================================= +//function : Solids +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderArea::Areas()const +{ + return myAreas; +} +//======================================================================= +//function :PerformShapesToAvoid +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::PerformShapesToAvoid() +{ +} +//======================================================================= +//function : PerformLoops +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::PerformLoops() +{ +} +//======================================================================= +//function : PerformAreas +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::PerformAreas() +{ +} +//======================================================================= +//function : PerformInternalShapes +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::PerformInternalShapes() +{ +} + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx new file mode 100644 index 000000000..0a3af4928 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx @@ -0,0 +1,144 @@ +// 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 + +#ifndef _GEOMAlgo_BuilderArea_HeaderFile +#define _GEOMAlgo_BuilderArea_HeaderFile + +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_MapOfOrientedShape_HeaderFile +#include +#endif +#ifndef _IntTools_PContext_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Algo_HeaderFile +#include +#endif +class IntTools_Context; +class TopTools_ListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! The root class for algorithms to build
+//! faces/solids from set of edges/faces
+class GEOMAlgo_BuilderArea : public GEOMAlgo_Algo { + +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); + } + // Methods PUBLIC + // + +//! Sets cashed geometrical tools
+Standard_EXPORT void SetContext(const IntTools_Context& theContext) ; + +//! Sets edges/faces to process
+Standard_EXPORT void SetShapes(const TopTools_ListOfShape& theLS) ; + +//! Returns edges/faces to process
+Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + +//! Returns wires/shells that have been built
+Standard_EXPORT const TopTools_ListOfShape& Loops() const; + +//! Returns faces/solids that have been built
+Standard_EXPORT const TopTools_ListOfShape& Areas() const; + + + + + +protected: + + // Methods PROTECTED + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_BuilderArea(); +Standard_EXPORT virtual ~GEOMAlgo_BuilderArea(); + +//! Collect the edges/faces that
+//! a) are internal
+//! b) are the same and have different orientation
+Standard_EXPORT virtual void PerformShapesToAvoid() ; + +//! Build draft faces/shells
+//! a)myLoops - draft faces/shells that consist of
+//! boundary edges/faces
+//! b)myLoopsInternal - draft faces/shells that contains
+//! inner edges/faces
+Standard_EXPORT virtual void PerformLoops() ; + +//! Build draft faces/solids that contains boundary faces
+Standard_EXPORT virtual void PerformAreas() ; + +//! Build finalized faces/solids with internal wires/shells
+Standard_EXPORT virtual void PerformInternalShapes() ; + + + // Fields PROTECTED + // +TopTools_ListOfShape myShapes; +TopTools_ListOfShape myLoops; +TopTools_ListOfShape myLoopsInternal; +TopTools_MapOfOrientedShape myShapesToAvoid; +TopTools_ListOfShape myAreas; +IntTools_PContext myContext; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx new file mode 100644 index 000000000..0ec206278 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx new file mode 100644 index 000000000..df13a88bf --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx @@ -0,0 +1,28 @@ +// 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 + +#ifndef _IntTools_Context_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderArea_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl new file mode 100755 index 000000000..542a828f3 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl @@ -0,0 +1,82 @@ +-- 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_BuilderFace.cdl +-- Created: +-- Author: Peter KURNEV + + + +class BuilderFace from GEOMAlgo + inherits BuilderArea from GEOMAlgo + + ---Purpose: The algorithm to build faces from set of edges + +uses + Face from TopoDS + +--raises + +is + Create + ---Purpose: Empty constructor + returns BuilderFace from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_BuilderFace();" + + SetFace(me:out; + theFace:Face from TopoDS); + ---Purpose: Sets the face generatix + + Face(me) + ---Purpose: Returns the face generatix + returns Face from TopoDS; + ---C++: return const & + + Perform(me:out) + ---Purpose: Performs the algorithm + is redefined; + + PerformShapesToAvoid(me:out) + ---Purpose: Collect the edges that + -- a) are internal + -- b) are the same and have different orientation + is redefined protected; + + PerformLoops(me:out) + ---Purpose: Build draft wires + -- a)myLoops - draft wires that consist of + -- boundary edges + -- b)myLoopsInternal - draft wires that contains + -- inner edges + is redefined protected; + + PerformAreas(me:out) + ---Purpose: Build draft faces that contains boundary edges + is redefined protected; + + PerformInternalShapes(me:out) + ---Purpose: Build finalized faces with internals + is redefined protected; + + +fields + myFace : Face from TopoDS is protected; + +end BuilderFace; + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx new file mode 100755 index 000000000..a6661075f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx @@ -0,0 +1,676 @@ +// 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_BuilderFace.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +// +static + Standard_Boolean IsGrowthWire(const TopoDS_Shape& , + + const TopTools_IndexedMapOfShape& ); + +static + Standard_Boolean IsInside(const TopoDS_Shape& , + const TopoDS_Shape& , + IntTools_PContext& ); +static + void MakeInternalWires(const TopTools_MapOfShape& , + TopTools_ListOfShape& ); + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_BuilderFace::GEOMAlgo_BuilderFace() +: + GEOMAlgo_BuilderArea() +{ +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_BuilderFace::~GEOMAlgo_BuilderFace() +{ +} +//======================================================================= +//function : SetFace +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::SetFace(const TopoDS_Face& theFace) +{ + myFace=theFace; +} +//======================================================================= +//function : Face +//purpose : +//======================================================================= + const TopoDS_Face& GEOMAlgo_BuilderFace::Face()const +{ + return myFace; +} +//======================================================================= +//function : Perform +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::Perform() +{ + myErrorStatus=0; + // + if (myContext==NULL) { + myErrorStatus=11;// Null Context + return; + } + // + if (myFace.IsNull()) { + myErrorStatus=12;// Null face generix + return; + } + // + PerformShapesToAvoid(); + if (myErrorStatus) { + return; + } + // + PerformLoops(); + if (myErrorStatus) { + return; + } + // + PerformAreas(); + if (myErrorStatus) { + return; + } + // + PerformInternalShapes(); + if (myErrorStatus) { + return; + } +} +//======================================================================= +//function :PerformShapesToAvoid +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::PerformShapesToAvoid() +{ + Standard_Boolean bFound; + Standard_Integer i, iCnt, aNbV, aNbE; + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + TopTools_ListIteratorOfListOfShape aIt; + // + myShapesToAvoid.Clear(); + // + iCnt=0; + while (1) { + ++iCnt; + bFound=Standard_False; + // + // 1. MEF + aMVE.Clear(); + aIt.Initialize (myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (!myShapesToAvoid.Contains(aE)) { + TopExp::MapShapesAndAncestors(aE, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + } + else { + int a=0; + } + } + aNbV=aMVE.Extent(); + // + // 2. myEdgesToAvoid + for (i=1; i<=aNbV; ++i) { + const TopoDS_Vertex& aV=TopoDS::Vertex(aMVE.FindKey(i)); + // + TopTools_ListOfShape& aLE=aMVE.ChangeFromKey(aV); + aNbE=aLE.Extent(); + if (!aNbE) { + continue; + } + // + const TopoDS_Edge& aE1=TopoDS::Edge(aLE.First()); + if (aNbE==1) { + if (BRep_Tool::Degenerated(aE1)) { + continue; + } + if (aV.Orientation()==TopAbs_INTERNAL) { + continue; + } + bFound=Standard_True; + myShapesToAvoid.Add(aE1); + } + else if (aNbE==2) { + const TopoDS_Edge& aE2=TopoDS::Edge(aLE.Last()); + if (aE2.IsSame(aE1)) { + TopoDS_Vertex aV1x, aV2x; + // + TopExp::Vertices(aE1, aV1x, aV2x); + if (aV1x.IsSame(aV2x)) { + continue; + } + bFound=Standard_True; + myShapesToAvoid.Add(aE1); + myShapesToAvoid.Add(aE2); + } + } + }// for (i=1; i<=aNbE; ++i) { + // + if (!bFound) { + break; + } + // + }//while (1) + //printf(" EdgesToAvoid=%d, iCnt=%d\n", EdgesToAvoid.Extent(), iCnt); +} +//======================================================================= +//function : PerformLoops +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::PerformLoops() +{ + myErrorStatus=0; + // + Standard_Boolean bFlag; + Standard_Integer aNbEA; + TopTools_ListIteratorOfListOfShape aIt; + TopTools_MapIteratorOfMapOfOrientedShape aItM; + TopTools_IndexedDataMapOfShapeListOfShape aVEMap; + TopTools_MapOfOrientedShape aMAdded; + BRep_Builder aBB; + GEOMAlgo_WireEdgeSet aWES; + GEOMAlgo_WESCorrector aWESCor; + // + // 1. Usual Wires + myLoops.Clear(); + aWES.SetFace(myFace); + // + aIt.Initialize (myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (!myShapesToAvoid.Contains(aE)) { + aWES.AddStartElement(aE); + } + } + // + aWESCor.SetWES(aWES); + aWESCor.Perform(); + // + GEOMAlgo_WireEdgeSet& aWESN=aWESCor.NewWES(); + const TopTools_ListOfShape& aLW=aWESN.Shapes(); + // + aIt.Initialize (aLW); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aW=aIt.Value(); + myLoops.Append(aW); + } + // + // 2. Internal Wires + myLoopsInternal.Clear(); + // + aNbEA=myShapesToAvoid.Extent(); + aItM.Initialize(myShapesToAvoid); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aEE=aItM.Key(); + TopExp::MapShapesAndAncestors(aEE, TopAbs_VERTEX, TopAbs_EDGE, aVEMap); + } + // + bFlag=Standard_True; + aItM.Initialize(myShapesToAvoid); + for (; aItM.More()&&bFlag; aItM.Next()) { + const TopoDS_Shape& aEE=aItM.Key(); + if (!aMAdded.Add(aEE)) { + continue; + } + // + // make new wire + TopoDS_Wire aW; + aBB.MakeWire(aW); + aBB.Add(aW, aEE); + // + TopoDS_Iterator aItW (aW); + for (; aItW.More()&&bFlag; aItW.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aItW.Value()); + // + TopoDS_Iterator aItE(aE); + for (; aItE.More()&&bFlag; aItE.Next()) { + const TopoDS_Vertex& aV = TopoDS::Vertex(aItE.Value()); + const TopTools_ListOfShape& aLE=aVEMap.FindFromKey(aV); + aIt.Initialize(aLE); + for (; aIt.More()&&bFlag; aIt.Next()) { + const TopoDS_Shape& aEx=aIt.Value(); + if (aMAdded.Add(aEx)) { + aBB.Add(aW, aEx); + if(aMAdded.Extent()==aNbEA) { + bFlag=!bFlag; + } + } + }//for (; aIt.More(); aIt.Next()) { + }//for (; aItE.More(); aItE.Next()) { + }//for (; aItW.More(); aItW.Next()) { + myLoopsInternal.Append(aW); + }//for (; aItM.More(); aItM.Next()) { +} +//======================================================================= +//function : PerformAreas +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::PerformAreas() +{ + myErrorStatus=0; + // + Standard_Boolean bIsGrowth, bIsHole; + Standard_Real aTol; + TopTools_ListOfShape aNewFaces, aHoleWires; + TopoDS_Shape anInfinitePointShape; + TopTools_DataMapOfShapeShape aInOutMap; + TopTools_DataMapOfShapeListOfShape aMSH; + TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItMSH; + TopTools_ListIteratorOfListOfShape aIt1, aIt2; + TopTools_IndexedMapOfShape aMHE; + BRep_Builder aBB; + Handle(Geom_Surface) aS; + TopLoc_Location aLoc; + // + aTol=BRep_Tool::Tolerance(myFace); + aS=BRep_Tool::Surface(myFace, aLoc); + // + myAreas.Clear(); + // + // Draft faces [aNewFaces] + aIt1.Initialize(myLoops); + for ( ; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aWire=aIt1.Value(); + // + bIsGrowth=IsGrowthWire(aWire, aMHE); + if (bIsGrowth) { + // make a growth face from a wire + TopoDS_Face aFace; + aBB.MakeFace(aFace, aS, aLoc, aTol); + aBB.Add (aFace, aWire); + // + aNewFaces.Append (aFace); + } + else{ + // check if a wire is a hole + //XX + //bIsHole=IsHole(aWire, myFace, myContext); + bIsHole=GEOMAlgo_BuilderTools::IsHole(aWire, myFace); + //XX + if (bIsHole) { + aHoleWires.Append(aWire); + TopExp::MapShapes(aWire, TopAbs_EDGE, aMHE); + } + else { + // make a growth face from a wire + TopoDS_Face aFace; + aBB.MakeFace(aFace, aS, aLoc, aTol); + aBB.Add (aFace, aWire); + // + aNewFaces.Append (aFace); + } + } + } + // + // 2. Find outer growth shell that is most close to each hole shell + aIt2.Initialize(aHoleWires); + for (; aIt2.More(); aIt2.Next()) { + const TopoDS_Shape& aHole = aIt2.Value(); + // + aIt1.Initialize(aNewFaces); + for ( ; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aF=aIt1.Value(); + // + if (!IsInside(aHole, aF, myContext)){ + continue; + } + // + if ( aInOutMap.IsBound (aHole)){ + const TopoDS_Shape& aF2=aInOutMap(aHole); + if (IsInside(aF, aF2, myContext)) { + aInOutMap.UnBind(aHole); + aInOutMap.Bind (aHole, aF); + } + } + else{ + aInOutMap.Bind (aHole, aF); + } + } + // + // Add aHole to a map Face/ListOfHoles [aMSH] + if (aInOutMap.IsBound(aHole)){ + const TopoDS_Shape& aF=aInOutMap(aHole); + if (aMSH.IsBound(aF)) { + TopTools_ListOfShape& aLH=aMSH.ChangeFind(aF); + aLH.Append(aHole); + } + else { + TopTools_ListOfShape aLH; + aLH.Append(aHole); + aMSH.Bind(aF, aLH); + } + } + }// for (; aIt2.More(); aIt2.Next()) + // + // 3. Add aHoles to Faces + aItMSH.Initialize(aMSH); + for (; aItMSH.More(); aItMSH.Next()) { + TopoDS_Face aF=TopoDS::Face(aItMSH.Key()); + // + const TopTools_ListOfShape& aLH=aItMSH.Value(); + aIt2.Initialize(aLH); + for (; aIt2.More(); aIt2.Next()) { + const TopoDS_Shape& aHole = aIt2.Value(); + aBB.Add (aF, aHole); + } + // + // update classifier + aTol=BRep_Tool::Tolerance(aF); + IntTools_FClass2d& aClsf=myContext->FClass2d(aF); + aClsf.Init(aF, aTol); + } + // + // These aNewFaces are draft faces that + // do not contain any internal shapes + // + myAreas.Append(aNewFaces); +} +//======================================================================= +//function : PerformInternalShapes +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::PerformInternalShapes() +{ + myErrorStatus=0; + // + Standard_Integer aNbWI=myLoopsInternal.Extent(); + if (!aNbWI) {// nothing to do + return; + } + // + //Standard_Real aTol; + BRep_Builder aBB; + TopTools_ListIteratorOfListOfShape aIt1, aIt2; + TopoDS_Iterator aIt; + TopTools_MapOfShape aME, aMEP; + TopTools_MapIteratorOfMapOfShape aItME; + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + TopTools_ListOfShape aLSI; + // + // 1. All internal edges + aIt1.Initialize(myLoopsInternal); + for (; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aWire=aIt1.Value(); + aIt.Initialize(aWire); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + aME.Add(aE); + } + } + aNbWI=aME.Extent(); + // + // 2 Process faces + aIt2.Initialize(myAreas); + for ( ; aIt2.More(); aIt2.Next()) { + TopoDS_Face& aF=TopoDS::Face(aIt2.Value()); + // + aMVE.Clear(); + TopExp::MapShapesAndAncestors(aF, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + // + // 2.1 Separate faces to process aMEP + aMEP.Clear(); + aItME.Initialize(aME); + for (; aItME.More(); aItME.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aItME.Key()); + if (IsInside(aE, aF, myContext)) { + aMEP.Add(aE); + } + } + // + // 2.2 Make Internal Wires + aLSI.Clear(); + MakeInternalWires(aMEP, aLSI); + // + // 2.3 Add them to aF + aIt1.Initialize(aLSI); + for (; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aSI=aIt1.Value(); + aBB.Add (aF, aSI); + } + // + // 2.4 Remove faces aMFP from aMF + aItME.Initialize(aMEP); + for (; aItME.More(); aItME.Next()) { + const TopoDS_Shape& aE=aItME.Key(); + aME.Remove(aE); + } + // + aNbWI=aME.Extent(); + if (!aNbWI) { + break; + } + } //for ( ; aIt2.More(); aIt2.Next()) { +} +//======================================================================= +//function : MakeInternalWires +//purpose : +//======================================================================= +void MakeInternalWires(const TopTools_MapOfShape& theME, + TopTools_ListOfShape& theWires) +{ + TopTools_MapIteratorOfMapOfShape aItM; + TopTools_MapOfShape aAddedMap; + TopTools_ListIteratorOfListOfShape aItE; + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + BRep_Builder aBB; + // + aItM.Initialize(theME); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aE=aItM.Key(); + TopExp::MapShapesAndAncestors(aE, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + } + // + aItM.Initialize(theME); + for (; aItM.More(); aItM.Next()) { + TopoDS_Shape aEE=aItM.Key(); + if (!aAddedMap.Add(aEE)) { + continue; + } + // + // make a new shell + TopoDS_Wire aW; + aBB.MakeWire(aW); + aEE.Orientation(TopAbs_INTERNAL); + aBB.Add(aW, aEE); + // + TopoDS_Iterator aItAdded (aW); + for (; aItAdded.More(); aItAdded.Next()) { + const TopoDS_Shape& aE =aItAdded.Value(); + // + TopExp_Explorer aExp(aE, TopAbs_VERTEX); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aV =aExp.Current(); + const TopTools_ListOfShape& aLE=aMVE.FindFromKey(aV); + aItE.Initialize(aLE); + for (; aItE.More(); aItE.Next()) { + TopoDS_Shape aEL=aItE.Value(); + if (aAddedMap.Add(aEL)){ + aEL.Orientation(TopAbs_INTERNAL); + aBB.Add(aW, aEL); + } + } + } + } + theWires.Append(aW); + } +} + +//======================================================================= +//function : IsInside +//purpose : +//======================================================================= +Standard_Boolean IsInside(const TopoDS_Shape& theHole, + const TopoDS_Shape& theF2, + IntTools_PContext& theContext) +{ + Standard_Real aT, aU, aV; + TopExp_Explorer aExp; + TopAbs_State aState=TopAbs_UNKNOWN; + gp_Pnt2d aP2D; + // + const TopoDS_Face& aF2=TopoDS::Face(theF2); + // + aExp.Init(theHole, TopAbs_EDGE); + if (aExp.More()){ + const TopoDS_Edge& aE = TopoDS::Edge(aExp.Current()); + aT=BOPTools_Tools2D::IntermediatePoint(aE); + BOPTools_Tools2D::PointOnSurface(aE, aF2, aT, aU, aV); + aP2D.SetCoord(aU, aV); + // + IntTools_FClass2d& aClsf=theContext->FClass2d(aF2); + aState=aClsf.Perform(aP2D); + } + return (aState==TopAbs_IN); +} +//======================================================================= +//function : IsGrowthWire +//purpose : +//======================================================================= +Standard_Boolean IsGrowthWire(const TopoDS_Shape& theWire, + const TopTools_IndexedMapOfShape& theMHE) +{ + Standard_Boolean bRet; + TopoDS_Iterator aIt; + // + bRet=Standard_False; + if (theMHE.Extent()) { + aIt.Initialize(theWire); + for(; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (theMHE.Contains(aE)) { + return !bRet; + } + } + } + return bRet; +} +//modified by NIZNHY-PKV Mon Sep 18 13:18:27 2006f +/* +static + Standard_Boolean IsHole(const TopoDS_Shape& , + const TopoDS_Face& , + IntTools_PContext& ); +*/ +//modified by NIZNHY-PKV Mon Sep 18 13:18:34 2006t +//modified by NIZNHY-PKV Mon Sep 18 13:18:13 2006f +/* +//======================================================================= +//function : IsHole +//purpose : +//======================================================================= +Standard_Boolean IsHole(const TopoDS_Shape& theS2, + const TopoDS_Face& theFace, + IntTools_PContext& theContext) +{ + Standard_Boolean bIsHole; + Standard_Real aTol; + Handle(Geom_Surface) aS; + TopLoc_Location aLoc; + TopoDS_Face aF; + BRep_Builder aBB; + // + aTol=BRep_Tool::Tolerance(theFace); + aS=BRep_Tool::Surface(theFace, aLoc); + aBB.MakeFace(aF, aS, aLoc, aTol); + aBB.Add (aF, theS2); + // + IntTools_FClass2d& aClsf=theContext->FClass2d(aF); + // + bIsHole=aClsf.IsHole(); + // + return bIsHole; + // +} +*/ +//modified by NIZNHY-PKV Mon Sep 18 13:18:06 2006t + +//BRepTools::Write(aFF, "ff"); +// +// ErrorStatus : +// 11 - Null Context +// 12 - Null face generix + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx new file mode 100644 index 000000000..758cc7072 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx @@ -0,0 +1,125 @@ +// 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 + +#ifndef _GEOMAlgo_BuilderFace_HeaderFile +#define _GEOMAlgo_BuilderFace_HeaderFile + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderArea_HeaderFile +#include +#endif +class TopoDS_Face; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! The algorithm to build faces from set of edges
+class GEOMAlgo_BuilderFace : public GEOMAlgo_BuilderArea { + +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); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_BuilderFace(); +Standard_EXPORT virtual ~GEOMAlgo_BuilderFace(); + +//! Sets the face generatix
+Standard_EXPORT void SetFace(const TopoDS_Face& theFace) ; + +//! Returns the face generatix
+Standard_EXPORT const TopoDS_Face& Face() const; + +//! Performs the algorithm
+Standard_EXPORT virtual void Perform() ; + + + + + +protected: + + // Methods PROTECTED + // + +//! Collect the edges that
+//! a) are internal
+//! b) are the same and have different orientation
+Standard_EXPORT virtual void PerformShapesToAvoid() ; + +//! Build draft wires
+//! a)myLoops - draft wires that consist of
+//! boundary edges
+//! b)myLoopsInternal - draft wires that contains
+//! inner edges
+Standard_EXPORT virtual void PerformLoops() ; + +//! Build draft faces that contains boundary edges
+Standard_EXPORT virtual void PerformAreas() ; + +//! Build finalized faces with internals
+Standard_EXPORT virtual void PerformInternalShapes() ; + + + // Fields PROTECTED + // +TopoDS_Face myFace; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx new file mode 100644 index 000000000..66adde68b --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx new file mode 100644 index 000000000..8e533eed8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx @@ -0,0 +1,25 @@ +// 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 + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderFace_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl new file mode 100755 index 000000000..3233fec45 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl @@ -0,0 +1,107 @@ +-- 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_BuilderShape.cdl +-- Created: +-- Author: Peter KURNEV + + + +deferred class BuilderShape from GEOMAlgo + inherits Algo from GEOMAlgo + + ---Purpose: Root class for algorithms that has shape as result + +uses + Shape from TopoDS, + ListOfShape from TopTools, + MapOfShape from TopTools + +--raises + +is + Initialize + ---Purpose: Empty constructor + returns BuilderShape from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_BuilderShape();" + + Shape(me) + ---Purpose: Returns the result of algorithm + returns Shape from TopoDS; + ---C++: return const & + + + ------------------------------------------------------------------ + --- The following methods are not implemented at this level. + -- An empty list is returned. + --- They are optional and can be redefined. + ------------------------------------------------------------------ + Generated (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns the list of shapes generated from the + -- shape theS. + returns ListOfShape from TopTools + is virtual; + ---C++: return const & + + Modified (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns the list of shapes modified from the + -- shape theS. + returns ListOfShape from TopTools + is virtual; + ---C++: return const & + + IsDeleted (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns true if the shape theS has been deleted. + returns Boolean from Standard + is virtual; + + HasDeleted (me) + ---Purpose: Returns true if the at least one shape(or subshape) + -- of arguments has been deleted. + returns Boolean from Standard; + + HasGenerated (me) + ---Purpose: Returns true if the at least one shape(or subshape) + -- of arguments has generated shapes. + returns Boolean from Standard; + + HasModified (me) + ---Purpose: Returns true if the at least one shape(or subshape) + -- of arguments has modified shapes. + returns Boolean from Standard; + + PrepareHistory (me:out) + ---Purpose: Prepare information for history support + is virtual protected; + + +fields + myShape : Shape from TopoDS is protected; + -- + myHistShapes : ListOfShape from TopTools is protected; + myMapShape : MapOfShape from TopTools is protected; + myHasDeleted : Boolean from Standard is protected; + myHasGenerated : Boolean from Standard is protected; + myHasModified : Boolean from Standard is protected; + +end BuilderShape; + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx new file mode 100755 index 000000000..7ced26803 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx @@ -0,0 +1,119 @@ +// 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_BuilderShape.cxx +// Created: +// Author: Peter KURNEV + + +#include +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_BuilderShape::GEOMAlgo_BuilderShape() +: + GEOMAlgo_Algo() +{ + myHasDeleted=Standard_False; + myHasGenerated=Standard_False; + myHasModified=Standard_False; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_BuilderShape::~GEOMAlgo_BuilderShape() +{ +} +//======================================================================= +//function : Shape +//purpose : +//======================================================================= + const TopoDS_Shape& GEOMAlgo_BuilderShape::Shape() const +{ + return myShape; +} +// +//======================================================================= +//function : Generated +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderShape::Generated(const TopoDS_Shape& ) +{ + myHistShapes.Clear(); + return myHistShapes; +} +//======================================================================= +//function : Modified +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderShape::Modified(const TopoDS_Shape& ) +{ + myHistShapes.Clear(); + return myHistShapes; +} +//======================================================================= +//function : IsDeleted +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderShape::IsDeleted(const TopoDS_Shape& theS) +{ + Standard_Boolean bRet; + // + bRet=!myMapShape.Contains(theS); + return bRet; +} +//======================================================================= +//function : HasDeleted +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderShape::HasDeleted()const +{ + return myHasDeleted; +} +//======================================================================= +//function : HasGenerated +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderShape::HasGenerated()const +{ + return myHasGenerated; +} +//======================================================================= +//function : HasModified +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderShape::HasModified()const +{ + return myHasModified; +} +//======================================================================= +//function : PrepareHistory +//purpose : +//======================================================================= + void GEOMAlgo_BuilderShape::PrepareHistory() +{ + myHistShapes.Clear(); + myMapShape.Clear(); + myHasDeleted=Standard_False; + myHasGenerated=Standard_False; + myHasModified=Standard_False; +} + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx new file mode 100644 index 000000000..6d0573564 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx @@ -0,0 +1,142 @@ +// 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 + +#ifndef _GEOMAlgo_BuilderShape_HeaderFile +#define _GEOMAlgo_BuilderShape_HeaderFile + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_MapOfShape_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Algo_HeaderFile +#include +#endif +class TopoDS_Shape; +class TopTools_ListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! Root class for algorithms that has shape as result
+class GEOMAlgo_BuilderShape : public GEOMAlgo_Algo { + +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); + } + // Methods PUBLIC + // + +//! Returns the result of algorithm
+Standard_EXPORT const TopoDS_Shape& Shape() const; + +//! Returns the list of shapes generated from the
+//! shape theS.
+Standard_EXPORT virtual const TopTools_ListOfShape& Generated(const TopoDS_Shape& theS) ; + +//! Returns the list of shapes modified from the
+//! shape theS.
+Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& theS) ; + +//! Returns true if the shape theS has been deleted.
+Standard_EXPORT virtual Standard_Boolean IsDeleted(const TopoDS_Shape& theS) ; + +//! Returns true if the at least one shape(or subshape)
+//! of arguments has been deleted.
+Standard_EXPORT Standard_Boolean HasDeleted() const; + +//! Returns true if the at least one shape(or subshape)
+//! of arguments has generated shapes.
+Standard_EXPORT Standard_Boolean HasGenerated() const; + +//! Returns true if the at least one shape(or subshape)
+//! of arguments has modified shapes.
+Standard_EXPORT Standard_Boolean HasModified() const; + + + + + +protected: + + // Methods PROTECTED + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_BuilderShape(); +Standard_EXPORT virtual ~GEOMAlgo_BuilderShape(); + +//! Prepare information for history support
+Standard_EXPORT virtual void PrepareHistory() ; + + + // Fields PROTECTED + // +TopoDS_Shape myShape; +TopTools_ListOfShape myHistShapes; +TopTools_MapOfShape myMapShape; +Standard_Boolean myHasDeleted; +Standard_Boolean myHasGenerated; +Standard_Boolean myHasModified; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx new file mode 100644 index 000000000..b8d037aa1 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx new file mode 100644 index 000000000..516c355b2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx @@ -0,0 +1,28 @@ +// 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 + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderShape_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl new file mode 100755 index 000000000..7cbebaf80 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl @@ -0,0 +1,67 @@ +-- 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_BuilderSolid.cdl +-- Created: +-- Author: Peter KURNEV + +class BuilderSolid from GEOMAlgo + inherits BuilderArea from GEOMAlgo + + ---Purpose: The algorithm to build solids from set of faces + +--uses +--raises + +is + Create + ---Purpose: Empty constructor + returns BuilderSolid from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_BuilderSolid();" + + + Perform(me:out) + ---Purpose: Performs the algorithm + is redefined; + + PerformShapesToAvoid(me:out) + ---Purpose: Collect the faces that + -- a) are internal + -- b) are the same and have different orientation + is redefined protected; + + PerformLoops(me:out) + ---Purpose: Build draft shells + -- a)myLoops - draft shells that consist of + -- boundary faces + -- b)myLoopsInternal - draft shells that contains + -- inner faces + is redefined protected; + + PerformAreas(me:out) + ---Purpose: Build draft solids that contains boundary faces + is redefined protected; + + PerformInternalShapes(me:out) + ---Purpose: Build finalized solids with internal shells + is redefined protected; + +--fields + +end BuilderSolid; diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx new file mode 100755 index 000000000..1701f3e38 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx @@ -0,0 +1,737 @@ +// 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_BuilderSolid.cxx +// Created: +// Author: Peter KURNEV + + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#include +#include + +// +static + Standard_Boolean IsGrowthShell(const TopoDS_Shape& , + const TopTools_IndexedMapOfShape& ); +static + Standard_Boolean IsHole(const TopoDS_Shape& , + IntTools_PContext& ); +static + Standard_Boolean IsInside(const TopoDS_Shape& , + const TopoDS_Shape& , + IntTools_PContext& ); +static + void MakeInternalShells(const TopTools_MapOfShape& , + TopTools_ListOfShape& ); + + + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_BuilderSolid::GEOMAlgo_BuilderSolid() +: + GEOMAlgo_BuilderArea() +{ +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_BuilderSolid::~GEOMAlgo_BuilderSolid() +{ +} +//======================================================================= +//function : Perform +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::Perform() +{ + myErrorStatus=0; + // + // + TopoDS_Compound aC; + BRep_Builder aBB; + TopTools_ListIteratorOfListOfShape aIt; + + aBB.MakeCompound(aC); + aIt.Initialize(myShapes); + for(; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + aBB.Add(aC, aF); + } + // + // + if (myContext==NULL) { + myErrorStatus=11;// Null Context + return; + } + // + PerformShapesToAvoid(); + if (myErrorStatus) { + return; + } + // + PerformLoops(); + if (myErrorStatus) { + return; + } + PerformAreas(); + if (myErrorStatus) { + return; + } + PerformInternalShapes(); + if (myErrorStatus) { + return; + } +} +//======================================================================= +//function :PerformShapesToAvoid +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::PerformShapesToAvoid() +{ + Standard_Boolean bFound; + Standard_Integer i, iCnt, aNbE, aNbF; + TopAbs_Orientation aOrE; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + TopTools_ListIteratorOfListOfShape aIt; + // + myShapesToAvoid.Clear(); + // + iCnt=0; + while (1) { + ++iCnt; + bFound=Standard_False; + // + // 1. MEF + aMEF.Clear(); + aIt.Initialize (myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + if (!myShapesToAvoid.Contains(aF)) { + TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + else { + int a=0; + } + } + aNbE=aMEF.Extent(); + // + // 2. myFacesToAvoid + for (i=1; i<=aNbE; ++i) { + const TopoDS_Edge& aE=TopoDS::Edge(aMEF.FindKey(i)); + if (BRep_Tool::Degenerated(aE)) { + continue; + } + // + TopTools_ListOfShape& aLF=aMEF.ChangeFromKey(aE); + // + aNbF=aLF.Extent(); + if (!aNbF) { + continue; + } + // + aOrE=aE.Orientation(); + // + const TopoDS_Face& aF1=TopoDS::Face(aLF.First()); + if (aNbF==1) { + if (aOrE==TopAbs_INTERNAL) { + continue; + } + bFound=Standard_True; + myShapesToAvoid.Add(aF1); + } + else if (aNbF==2) { + const TopoDS_Face& aF2=TopoDS::Face(aLF.Last()); + if (aF2.IsSame(aF1)) { + if (BRep_Tool::IsClosed(aE, aF1)) { + continue; + } + // + if (aOrE==TopAbs_INTERNAL) { + continue; + } + // + bFound=Standard_True; + myShapesToAvoid.Add(aF1); + myShapesToAvoid.Add(aF2); + } + } + }// for (i=1; i<=aNbE; ++i) { + // + if (!bFound) { + break; + } + // + }//while (1) +} +//======================================================================= +//function : PerformLoops +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::PerformLoops() +{ + myErrorStatus=0; + // + myLoops.Clear(); + // + Standard_Integer aNbLF, aNbOff, aNbFP; + TopAbs_Orientation anOr; + TopoDS_Edge aEL; + BRep_Builder aBB; + NMTTools_CoupleOfShape aCSOff; + TopTools_MapOfOrientedShape AddedFacesMap; + TopTools_IndexedDataMapOfShapeListOfShape aEFMap, aMEFP; + TopTools_ListIteratorOfListOfShape aItF; + // + //================================================= + // + // 1. Shells Usual + // + aItF.Initialize (myShapes); + for (; aItF.More(); aItF.Next()) { + const TopoDS_Shape& aFF = aItF.Value(); + TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aEFMap); + } + // + aItF.Initialize (myShapes); + for (; aItF.More(); aItF.Next()) { + const TopoDS_Shape& aFF = aItF.Value(); + if (myShapesToAvoid.Contains(aFF)) { + continue; + } + if (!AddedFacesMap.Add(aFF)) { + continue; + } + // + // make a new shell + TopoDS_Shell aShell; + aBB.MakeShell(aShell); + aBB.Add(aShell, aFF); + // + aMEFP.Clear(); + TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aMEFP); + // + // loop on faces added to Shell; add their neighbor faces to Shell and so on + TopoDS_Iterator aItAddedF (aShell); + for (; aItAddedF.More(); aItAddedF.Next()) { + const TopoDS_Face& aF = TopoDS::Face(aItAddedF.Value()); + // + // loop on edges of aF; find a good neighbor face of aF by aE + TopExp_Explorer aEdgeExp(aF, TopAbs_EDGE); + for (; aEdgeExp.More(); aEdgeExp.Next()) { + const TopoDS_Edge& aE = TopoDS::Edge(aEdgeExp.Current()); + // + //1 + if (aMEFP.Contains(aE)) { + const TopTools_ListOfShape& aLFP=aMEFP.FindFromKey(aE); + aNbFP=aLFP.Extent(); + if (aNbFP>1) { + continue; + } + } + //2 + anOr=aE.Orientation(); + if (anOr==TopAbs_INTERNAL) { + continue; + } + //3 + if (BRep_Tool::Degenerated(aE)) { + continue; + } + // + // candidate faces list + const TopTools_ListOfShape& aLF=aEFMap.FindFromKey(aE); + aNbLF=aLF.Extent(); + if (!aNbLF) { + continue; + } + // + // try to select one of neighbors + // check if a face already added to Shell shares E + Standard_Boolean bFound; + TopTools_ListIteratorOfListOfShape aItLF; + NMTTools_ListOfCoupleOfShape aLCSOff; + // + aItLF.Initialize(aLF); + for (; aItLF.More(); aItLF.Next()) { + const TopoDS_Face& aFL=TopoDS::Face(aItLF.Value()); + if (myShapesToAvoid.Contains(aFL)) { + continue; + } + if (aF.IsSame(aFL)) { + continue; + } + if (AddedFacesMap.Contains(aFL)){ + continue; + } + // + bFound=GEOMAlgo_Tools3D::GetEdgeOff(aE, aFL, aEL); + if (!bFound) { + continue; + } + // + aCSOff.SetShape1(aEL); + aCSOff.SetShape2(aFL); + aLCSOff.Append(aCSOff); + }//for (; aItLF.More(); aItLF.Next()) { + // + aNbOff=aLCSOff.Extent(); + if (!aNbOff){ + continue; + } + // + TopoDS_Face aSelF; + if (aNbOff==1) { + aSelF=TopoDS::Face(aLCSOff.First().Shape2()); + } + else if (aNbOff>1){ + GEOMAlgo_Tools3D::GetFaceOff(aE, aF, aLCSOff, aSelF); + } + // + if (!aSelF.IsNull() && AddedFacesMap.Add(aSelF)) { + aBB.Add(aShell, aSelF); + TopExp::MapShapesAndAncestors(aSelF, TopAbs_EDGE, TopAbs_FACE, aMEFP); + } + } // for (; aEdgeExp.More(); aEdgeExp.Next()) { + } //for (; aItAddedF.More(); aItAddedF.Next()) { + myLoops.Append(aShell); + } // for (; aItF.More(); aItF.Next()) { + //================================================= + // + // 2.Internal Shells + // + myLoopsInternal.Clear(); + // + Standard_Integer aNbFA; + TopTools_MapIteratorOfMapOfOrientedShape aItM; + // + aEFMap.Clear(); + AddedFacesMap.Clear(); + // + aNbFA=myShapesToAvoid.Extent(); + // + aItM.Initialize(myShapesToAvoid); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aFF=aItM.Key(); + TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aEFMap); + } + // + aItM.Initialize(myShapesToAvoid); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aFF=aItM.Key(); + if (!AddedFacesMap.Add(aFF)) { + continue; + } + // + // make a new shell + TopoDS_Shell aShell; + aBB.MakeShell(aShell); + aBB.Add(aShell, aFF); + // + TopoDS_Iterator aItAddedF (aShell); + for (; aItAddedF.More(); aItAddedF.Next()) { + const TopoDS_Face& aF = TopoDS::Face(aItAddedF.Value()); + // + TopExp_Explorer aEdgeExp(aF, TopAbs_EDGE); + for (; aEdgeExp.More(); aEdgeExp.Next()) { + const TopoDS_Edge& aE = TopoDS::Edge(aEdgeExp.Current()); + const TopTools_ListOfShape& aLF=aEFMap.FindFromKey(aE); + aItF.Initialize(aLF); + for (; aItF.More(); aItF.Next()) { + const TopoDS_Face& aFL=TopoDS::Face(aItF.Value()); + if (AddedFacesMap.Add(aFL)){ + aBB.Add(aShell, aFL); + } + } + } + } + myLoopsInternal.Append(aShell); + } +} +//======================================================================= +//function : PerformAreas +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::PerformAreas() +{ + myErrorStatus=0; + // + Standard_Boolean bIsGrowthShell, bIsHole; + TopTools_ListOfShape aNewSolids, aHoleShells; + TopoDS_Shape anInfinitePointShape; + TopTools_DataMapOfShapeShape aInOutMap; + TopTools_DataMapOfShapeListOfShape aMSH; + TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItMSH; + TopTools_ListIteratorOfListOfShape aShellIt, aSolidIt; + TopTools_IndexedMapOfShape aMHF; + BRep_Builder aBB; + // + myAreas.Clear(); + // + // Draft solids [aNewSolids] + aShellIt.Initialize(myLoops); + for ( ; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aShell = aShellIt.Value(); + // + bIsGrowthShell=IsGrowthShell(aShell, aMHF); + if (bIsGrowthShell) { + // make a growth solid from a shell + TopoDS_Solid Solid; + aBB.MakeSolid(Solid); + aBB.Add (Solid, aShell); + // + aNewSolids.Append (Solid); + } + else{ + // check if a shell is a hole + //XX + bIsHole=IsHole(aShell, myContext); + //bIsHole=GEOMAlgo_BuilderTools::IsHole(aShell); + //XX + if (bIsHole) { + aHoleShells.Append(aShell); + TopExp::MapShapes(aShell, TopAbs_FACE, aMHF); + } + else { + // make a growth solid from a shell + TopoDS_Solid Solid; + aBB.MakeSolid(Solid); + aBB.Add (Solid, aShell); + // + aNewSolids.Append (Solid); + } + } + } + // + // 2. Find outer growth shell that is most close to each hole shell + aShellIt.Initialize(aHoleShells); + for (; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aHole = aShellIt.Value(); + // + aSolidIt.Initialize(aNewSolids); + for ( ; aSolidIt.More(); aSolidIt.Next()) { + const TopoDS_Shape& aSolid = aSolidIt.Value(); + // + if (!IsInside(aHole, aSolid, myContext)){ + continue; + } + // + if ( aInOutMap.IsBound (aHole)){ + const TopoDS_Shape& aSolid2 = aInOutMap(aHole); + if (IsInside(aSolid, aSolid2, myContext)) { + aInOutMap.UnBind(aHole); + aInOutMap.Bind (aHole, aSolid); + } + } + else{ + aInOutMap.Bind (aHole, aSolid); + } + } + // + // Add aHole to a map Solid/ListOfHoles [aMSH] + if (aInOutMap.IsBound(aHole)){ + const TopoDS_Shape& aSolid=aInOutMap(aHole); + if (aMSH.IsBound(aSolid)) { + TopTools_ListOfShape& aLH=aMSH.ChangeFind(aSolid); + aLH.Append(aHole); + } + else { + TopTools_ListOfShape aLH; + aLH.Append(aHole); + aMSH.Bind(aSolid, aLH); + } + //aBB.Add (aSolid, aHole); + } + }// for (; aShellIt.More(); aShellIt.Next()) { + // + // 3. Add aHoles to Solids + aItMSH.Initialize(aMSH); + for (; aItMSH.More(); aItMSH.Next()) { + TopoDS_Solid aSolid=TopoDS::Solid(aItMSH.Key()); + // + const TopTools_ListOfShape& aLH=aItMSH.Value(); + aShellIt.Initialize(aLH); + for (; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aHole = aShellIt.Value(); + aBB.Add (aSolid, aHole); + } + // + // update classifier + BRepClass3d_SolidClassifier& aSC=myContext->SolidClassifier(aSolid); + aSC.Load(aSolid); + // + } + // + // These aNewSolids are draft solids that + // do not contain any internal shapes + // + myAreas.Append(aNewSolids); +} +//======================================================================= +//function : PerformInternalShapes +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::PerformInternalShapes() +{ + myErrorStatus=0; + // + Standard_Integer aNbFI=myLoopsInternal.Extent(); + if (!aNbFI) {// nothing to do + return; + } + // + BRep_Builder aBB; + TopTools_ListIteratorOfListOfShape aShellIt, aSolidIt; + TopoDS_Iterator aIt; + TopTools_MapOfShape aMF, aMFP; + TopTools_MapIteratorOfMapOfShape aItMF; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + TopTools_ListOfShape aLSI; + // + // 1. All internal faces + aShellIt.Initialize(myLoopsInternal); + for (; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aShell=aShellIt.Value(); + aIt.Initialize(aShell); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + aMF.Add(aF); + } + } + aNbFI=aMF.Extent(); + // + // 2 Process solids + aSolidIt.Initialize(myAreas); + for ( ; aSolidIt.More(); aSolidIt.Next()) { + TopoDS_Solid& aSolid=TopoDS::Solid(aSolidIt.Value()); + // + aMEF.Clear(); + TopExp::MapShapesAndAncestors(aSolid, TopAbs_EDGE, TopAbs_FACE, aMEF); + // + // 2.1 Separate faces to process aMFP + aMFP.Clear(); + aItMF.Initialize(aMF); + for (; aItMF.More(); aItMF.Next()) { + const TopoDS_Face& aF=TopoDS::Face(aItMF.Key()); + if (GEOMAlgo_Tools3D::IsInternalFace(aF, aSolid, aMEF, 1.e-14, *myContext)) { + aMFP.Add(aF); + } + } + // + // 2.2 Make Internal Shells + aLSI.Clear(); + MakeInternalShells(aMFP, aLSI); + // + // 2.3 Add them to aSolid + aShellIt.Initialize(aLSI); + for (; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aSI=aShellIt.Value(); + aBB.Add (aSolid, aSI); + } + // + // 2.4 Remove faces aMFP from aMF + aItMF.Initialize(aMFP); + for (; aItMF.More(); aItMF.Next()) { + const TopoDS_Shape& aF=aItMF.Key(); + aMF.Remove(aF); + } + // + aNbFI=aMF.Extent(); + if (!aNbFI) { + break; + } + } //for ( ; aSolidIt.More(); aSolidIt.Next()) { +} + +//======================================================================= +//function : MakeInternalShells +//purpose : +//======================================================================= +void MakeInternalShells(const TopTools_MapOfShape& theMF, + TopTools_ListOfShape& theShells) +{ + TopTools_MapIteratorOfMapOfShape aItM; + TopTools_MapOfShape aAddedFacesMap; + TopTools_ListIteratorOfListOfShape aItF; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + BRep_Builder aBB; + // + aItM.Initialize(theMF); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aF=aItM.Key(); + TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + // + aItM.Initialize(theMF); + for (; aItM.More(); aItM.Next()) { + TopoDS_Shape aFF=aItM.Key(); + if (!aAddedFacesMap.Add(aFF)) { + continue; + } + // + // make a new shell + TopoDS_Shell aShell; + aBB.MakeShell(aShell); + aFF.Orientation(TopAbs_INTERNAL); + aBB.Add(aShell, aFF); + // + TopoDS_Iterator aItAddedF (aShell); + for (; aItAddedF.More(); aItAddedF.Next()) { + const TopoDS_Shape& aF =aItAddedF.Value(); + // + TopExp_Explorer aEdgeExp(aF, TopAbs_EDGE); + for (; aEdgeExp.More(); aEdgeExp.Next()) { + const TopoDS_Shape& aE =aEdgeExp.Current(); + const TopTools_ListOfShape& aLF=aMEF.FindFromKey(aE); + aItF.Initialize(aLF); + for (; aItF.More(); aItF.Next()) { + TopoDS_Shape aFL=aItF.Value(); + if (aAddedFacesMap.Add(aFL)){ + aFL.Orientation(TopAbs_INTERNAL); + aBB.Add(aShell, aFL); + } + } + } + } + theShells.Append(aShell); + } +} +//======================================================================= +//function : IsHole +//purpose : +//======================================================================= +Standard_Boolean IsHole(const TopoDS_Shape& theS2, + IntTools_PContext& theContext) +{ + TopoDS_Solid *pS2=(TopoDS_Solid *)&theS2; + BRepClass3d_SolidClassifier& aClsf=theContext->SolidClassifier(*pS2); + // + aClsf.PerformInfinitePoint(::RealSmall()); + // + return (aClsf.State()==TopAbs_IN); +} +//======================================================================= +//function : IsInside +//purpose : +//======================================================================= +Standard_Boolean IsInside(const TopoDS_Shape& theS1, + const TopoDS_Shape& theS2, + IntTools_PContext& theContext) +{ + TopExp_Explorer aExp; + TopAbs_State aState; + // + TopoDS_Solid *pS2=(TopoDS_Solid *)&theS2; + // + aExp.Init(theS1, TopAbs_FACE); + if (!aExp.More()){ + BRepClass3d_SolidClassifier& aClsf=theContext->SolidClassifier(*pS2); + aClsf.PerformInfinitePoint(::RealSmall()); + aState=aClsf.State(); + } + else { + TopTools_IndexedMapOfShape aBounds; + const TopoDS_Face& aF = TopoDS::Face(aExp.Current()); + aState=GEOMAlgo_Tools3D::ComputeState(aF, *pS2, 1.e-14, aBounds, *theContext); + } + return (aState==TopAbs_IN); +} +//======================================================================= +//function : IsGrowthShell +//purpose : +//======================================================================= +Standard_Boolean IsGrowthShell(const TopoDS_Shape& theShell, + const TopTools_IndexedMapOfShape& theMHF) +{ + Standard_Boolean bRet; + TopoDS_Iterator aIt; + // + bRet=Standard_False; + if (theMHF.Extent()) { + aIt.Initialize(theShell); + for(; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + if (theMHF.Contains(aF)) { + return !bRet; + } + } + } + return bRet; +} + +//BRepTools::Write(aFF, "ff"); +// +// ErrorStatus : +// 11 - Null Context diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx new file mode 100644 index 000000000..d317a5cdc --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx @@ -0,0 +1,114 @@ +// 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 + +#ifndef _GEOMAlgo_BuilderSolid_HeaderFile +#define _GEOMAlgo_BuilderSolid_HeaderFile + +#ifndef _GEOMAlgo_BuilderArea_HeaderFile +#include +#endif + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! The algorithm to build solids from set of faces
+class GEOMAlgo_BuilderSolid : public GEOMAlgo_BuilderArea { + +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); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_BuilderSolid(); +Standard_EXPORT virtual ~GEOMAlgo_BuilderSolid(); + +//! Performs the algorithm
+Standard_EXPORT virtual void Perform() ; + + + + + +protected: + + // Methods PROTECTED + // + +//! Collect the faces that
+//! a) are internal
+//! b) are the same and have different orientation
+Standard_EXPORT virtual void PerformShapesToAvoid() ; + +//! Build draft shells
+//! a)myLoops - draft shells that consist of
+//! boundary faces
+//! b)myLoopsInternal - draft shells that contains
+//! inner faces
+Standard_EXPORT virtual void PerformLoops() ; + +//! Build draft solids that contains boundary faces
+Standard_EXPORT virtual void PerformAreas() ; + +//! Build finalized solids with internal shells
+Standard_EXPORT virtual void PerformInternalShapes() ; + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx new file mode 100644 index 000000000..1d54ca3ce --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx new file mode 100644 index 000000000..db2175f6c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx @@ -0,0 +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 + +#ifndef _GEOMAlgo_BuilderSolid_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl new file mode 100755 index 000000000..949e81d5a --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl @@ -0,0 +1,47 @@ +-- 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_BuilderTools.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class BuilderTools from GEOMAlgo + + ---Purpose: + +uses + Shape from TopoDS + +--raises + +is + IsHole(myclass; + aW: Shape from TopoDS; + aF: Shape from TopoDS) + returns Boolean from Standard; + + IsHole(myclass; + aShell: Shape from TopoDS) + returns Boolean from Standard; + +--fields + +end BuilderTools; diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx new file mode 100755 index 000000000..0d537dff2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx @@ -0,0 +1,278 @@ +// 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_BuilderTools.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +static + Standard_Integer ComputeProps(const TopoDS_Face& aF, + Standard_Real& aA, + Standard_Real& aV); +static + void BuildTriangulation(const TopoDS_Face& aF); + +//======================================================================= +//function : IsHole +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderTools::IsHole(const TopoDS_Shape& aW, + const TopoDS_Shape& aFace) +{ + Standard_Boolean bIsHole; + Standard_Integer i, aNbS; + Standard_Real aT1, aT2, aS; + Standard_Real aU1, aU2, aU, dU; + Standard_Real aX1, aY1, aX0, aY0; + TopAbs_Orientation aOr; + + gp_Pnt2d aP2D0, aP2D1; + Handle(Geom2d_Curve) aC2D; + TopoDS_Face aF, aFF; + TopoDS_Iterator aItW; + // + bIsHole=Standard_False; + // + aF=TopoDS::Face(aFace); + aFF=aF; + aFF.Orientation(TopAbs_FORWARD); + // + aS=0.; + aItW.Initialize(aW); + for (; aItW.More(); aItW.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aItW.Value()); + aOr=aE.Orientation(); + if (!(aOr==TopAbs_FORWARD || + aOr==TopAbs_REVERSED)) { + continue; + } + // + aC2D=BRep_Tool::CurveOnSurface(aE, aFF, aT1, aT2); + if (aC2D.IsNull()) { + break; //xx + } + // + BRepAdaptor_Curve2d aBAC2D(aE, aFF); + aNbS=Geom2dInt_Geom2dCurveTool::NbSamples(aBAC2D); + if (aNbS>2) { + aNbS*=4; + } + // + dU=(aT2-aT1)/(Standard_Real)(aNbS-1); + aU =aT1; + aU1=aT1; + aU2=aT2; + if (aOr==TopAbs_REVERSED) { + aU =aT2; + aU1=aT2; + aU2=aT1; + dU=-dU; + } + // + aC2D->D0(aU, aP2D0); + for(i=2; i<=aNbS; i++) { + aU=aU1+(i-1)*dU; + aC2D->D0(aU, aP2D1); + aP2D0.Coord(aX0, aY0); + aP2D1.Coord(aX1, aY1); + // + aS=aS+(aY0+aY1)*(aX1-aX0); + // + aP2D0=aP2D1; + } + }//for (; aItW.More(); aItW.Next()) { + bIsHole=(aS>0.); + return bIsHole; +} +//======================================================================= +//function : IsHole +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderTools::IsHole(const TopoDS_Shape& aShell) +{ + Standard_Boolean bIsHole; + Standard_Integer iRet; + Standard_Real aAi, aA, aV, aVi; + TopExp_Explorer aExp; + // + aA=0.; + aV=0.; + aExp.Init(aShell, TopAbs_FACE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Face& aF=TopoDS::Face(aExp.Current()); + iRet=ComputeProps(aF, aAi, aVi); + if (!iRet) { + aA+=aAi; + aV+=aVi; + } + } + // + bIsHole=aV<0.; + return bIsHole; +} +//======================================================================= +//function : ComputeProps +//purpose : +//======================================================================= +Standard_Integer ComputeProps(const TopoDS_Face& aF, + Standard_Real& aA, + Standard_Real& aV) +{ + Standard_Integer j, i, i1, i2, aNbNodes, aNbTrigs, n[3]; + Standard_Real aAi, aVi; + gp_Pnt aP[3], aGC, aGC1; + TopLoc_Location aLoc; + TopAbs_Orientation aOr; + Handle(Poly_Triangulation) aTri; + // + aA=0.; + aV=0.; + // + aTri=BRep_Tool::Triangulation(aF, aLoc); + if(aTri.IsNull()) { + BuildTriangulation(aF); + aTri=BRep_Tool::Triangulation(aF, aLoc); + if(aTri.IsNull()) { + return 1;// a face is without triangulation + } + } + // + aNbNodes=aTri->NbNodes(); + aNbTrigs=aTri->NbTriangles(); + if (!aNbTrigs){ + return 2;//no triangles + } + // + aOr=aF.Orientation(); + // + const TColgp_Array1OfPnt& aNodes=aTri->Nodes(); + const Poly_Array1OfTriangle& aTriangles=aTri->Triangles(); + // + i1=aTriangles.Lower(); + i2=aTriangles.Upper(); + // + for (i=i1; i<=i2; ++i){ + const Poly_Triangle& aTriangle=aTriangles.Value(i); + aTriangle.Get(n[0], n[1], n[2]); + aGC.SetCoord(0.,0.,0.); + for (j=0; j<3; ++j) { + aP[j]=aNodes.Value(n[j]); + aGC.ChangeCoord()+=aP[j].XYZ(); + } + aGC.ChangeCoord()*=0.333333333333; + // + // Normal + gp_Vec aV01(aP[0], aP[1]); + gp_Vec aV12(aP[1], aP[2]); + gp_Vec aVN=aV01^aV12; + aAi=aVN.Magnitude(); + aA=aA+aAi; + // + if (aAi>0.0000001) { + Standard_Real aSx, aZx; + gp_Dir aDN(aVN); + if (aOr==TopAbs_REVERSED) { + aDN.Reverse(); + } + // + aSx=aAi*aDN.Z(); + aZx=aGC.Z(); + aVi=aZx*aSx; + aV=aV+aVi; + } + } + return 0; +} +//======================================================================= +//function : BuildTriangulation +//purpose : +//======================================================================= +void BuildTriangulation(const TopoDS_Face& aF) +{ + Standard_Boolean bWithShare; + Standard_Real aDiscret, aXmin, aYmin, aZmin, aXmax, aYmax, aZmax; + Standard_Real dX, dY, dZ, dMax, aCoeff, aAngle; + Bnd_Box aBox; + // + bWithShare=Standard_False; + aAngle=0.5; + // + BRepBndLib::Add(aF, aBox); + // + // aDiscret + aBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax); + dX=aXmax-aXmin; + dY=aYmax-aYmin; + dZ=aZmax-aZmin; + dMax=dX; + if (dY>dMax) { + dMax=dY; + } + if (dZ>dMax) { + dMax=dZ; + } + // + aCoeff=0.1; + aDiscret=aCoeff*dMax; + // + BRepMesh_FastDiscret aMesher(aDiscret, + aAngle, + aBox, + bWithShare, + Standard_True, + Standard_False, + Standard_True); + aMesher.Add(aF); +} diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx new file mode 100644 index 000000000..43bd9486f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx @@ -0,0 +1,96 @@ +// 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 + +#ifndef _GEOMAlgo_BuilderTools_HeaderFile +#define _GEOMAlgo_BuilderTools_HeaderFile + +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class TopoDS_Shape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_BuilderTools { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT static Standard_Boolean IsHole(const TopoDS_Shape& aW,const TopoDS_Shape& aF) ; + + +Standard_EXPORT static Standard_Boolean IsHole(const TopoDS_Shape& aShell) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx new file mode 100644 index 000000000..352fdb068 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx new file mode 100644 index 000000000..fc2050189 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx @@ -0,0 +1,25 @@ +// 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 + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderTools_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_0.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_0.cxx new file mode 100644 index 000000000..72a8b39dc --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_0.cxx @@ -0,0 +1,61 @@ +// 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 + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//function : Shapes1 +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::Shapes1(const Standard_Integer theType)const +{ + return myShapes1[theType]; +} +//======================================================================= +//function : Images +//purpose : +//======================================================================= + const BRepAlgo_Image& GEOMAlgo_Builder::Images()const +{ + return myImages; +} +//======================================================================= +//function : InParts +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::InParts(const TopoDS_Shape& theS)const +{ + static TopTools_ListOfShape sLS; + // + if (myInParts.Contains(theS)) { + return myInParts.FindFromKey(theS); + } + return sLS; +} diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_1.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_1.cxx new file mode 100755 index 000000000..d42da67e2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_1.cxx @@ -0,0 +1,354 @@ +// 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_Builder_1.cxx +// Created: +// Author: Peter KURNEV + +#include +// +#include + +#include +#include +#include +#include +#include +#include +// +#include +#include +#include +#include +// +#include +#include +// +#include +#include +#include +#include +// +#include +// +#include +#include +#include +#include +#include +#include +#include +#include +// +#include +#include + + + +static + void FillImagesCompounds(const TopTools_MapOfShape& , + BRepAlgo_Image& ); + +static + void FillImagesCompound(const TopoDS_Shape& , + BRepAlgo_Image& , + TopTools_MapOfShape& ); + +//======================================================================= +//function : FillImagesVertices +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillImagesVertices() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + // + Standard_Integer i, aNb, iV; + // + aNb=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aV=aDS.Shape(i); + if (aV.ShapeType()==TopAbs_VERTEX) { + iV=pPF->FindSDVertex(i); + if (iV) { + const TopoDS_Shape& aVSD=aDS.Shape(iV); + if (!myImages.HasImage(aV)) { + myImages.Bind(aV, aVSD); + // + mySameDomainShapes.Add(aV, aVSD); + // + } + } + } + } +} +//======================================================================= +// function: FillImagesEdges +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillImagesEdges() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + const BOPTools_SplitShapesPool& aSSP=pPF->SplitShapesPool(); + NMTTools_CommonBlockPool& aCBP=pPF->ChangeCommonBlockPool(); + IntTools_Context& aCtx=pPF->ChangeContext(); + // + Standard_Boolean bToReverse; + Standard_Integer i, aNb, aNbSp, nSp, nSpR, nSpx; + TColStd_ListIteratorOfListOfInteger aItLB; + TColStd_ListOfInteger aLB; + TopoDS_Edge aEE, aESpR; + TopTools_MapOfShape aMFence; + TopTools_ListOfShape aLSp; + TopTools_ListIteratorOfListOfShape aIt1; + BOPTools_ListIteratorOfListOfPaveBlock aIt; + // + aNb=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aE=aDS.Shape(i); + if (aE.ShapeType()!=TopAbs_EDGE) { + continue; + } + // + if (!aMFence.Add(aE)) { + continue; + } + // + const BOPTools_ListOfPaveBlock& aLPB=aSSP(aDS.RefEdge(i)); + aNbSp=aLPB.Extent(); + if (!aNbSp) { + continue; + } + // + aEE=TopoDS::Edge(aE); + aLSp.Clear(); + // + if (aNbSp==1) { + const BOPTools_PaveBlock& aPB=aLPB.First(); + nSp=aPB.Edge(); + const TopoDS_Shape& aSp=aDS.Shape(nSp); + // + const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB); + nSpR=aPBR.Edge(); + const TopoDS_Shape& aSpR=aDS.Shape(nSpR); + if (aSpR.IsSame(aSp) && aSpR.IsSame(aE)) { + continue; + } + // + aESpR=TopoDS::Edge(aSpR); + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aESpR, aEE, aCtx); + if (bToReverse) { + aESpR.Reverse(); + } + aLSp.Append(aESpR); + // + aItLB.Initialize(aLB); + for (; aItLB.More(); aItLB.Next()) { + nSpx=aItLB.Value(); + const TopoDS_Shape& aSpx=aDS.Shape(nSpx); + mySameDomainShapes.Add(aSpx ,aSpR); + } + // + // + }// if (aNbSp==1) { + else { + aIt.Initialize(aLPB); + for (; aIt.More(); aIt.Next()) { + const BOPTools_PaveBlock& aPB=aIt.Value(); + const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB); + nSpR=aPBR.Edge(); + const TopoDS_Shape& aSpR=aDS.Shape(nSpR); + // + aESpR=TopoDS::Edge(aSpR); + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aESpR, aEE, aCtx); + if (bToReverse) { + aESpR.Reverse(); + } + aLSp.Append(aESpR); + // + aItLB.Initialize(aLB); + for (; aItLB.More(); aItLB.Next()) { + nSpx=aItLB.Value(); + const TopoDS_Shape& aSpx=aDS.Shape(nSpx); + mySameDomainShapes.Add(aSpx ,aSpR); + } + // + } + } + // + myImages.Bind(aE, aLSp); + + }//for (i=1; i<=aNb; ++i) +} +//======================================================================= +// function: FillImagesContainers +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillImagesContainers(const TopAbs_ShapeEnum theType) +{ + myErrorStatus=0; + // + Standard_Boolean bInterferred, bToReverse; + Standard_Integer i, aNbS; + TopAbs_ShapeEnum aType; + BRep_Builder aBB; + TopoDS_Iterator aIt; + TopTools_ListIteratorOfListOfShape aItIm; + TopTools_MapOfShape aMS; + TopTools_MapIteratorOfMapOfShape aItS; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aC=aDS.Shape(i); + aType=aC.ShapeType(); + if (aType==theType) { + aMS.Add(aC); + } + } + // + if (theType==TopAbs_COMPOUND) { + FillImagesCompounds(aMS, myImages); + return; + } + // + aItS.Initialize(aMS); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aC=aItS.Key(); + // whether the shape has image + bInterferred=Standard_False; + aIt.Initialize(aC); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + if (myImages.HasImage(aF)) { + bInterferred=!bInterferred; + break; + } + } + if (!bInterferred){ + continue; + } + // + TopoDS_Shape aCIm; + GEOMAlgo_Tools3D::MakeContainer(theType, aCIm); + // + aIt.Initialize(aC); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + if (myImages.HasImage(aF)) { + const TopTools_ListOfShape& aLFIm=myImages.Image(aF); + aItIm.Initialize(aLFIm); + for (; aItIm.More(); aItIm.Next()) { + TopoDS_Shape aFIm=aItIm.Value(); + // + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aFIm, aF, aCtx); + if (bToReverse) { + aFIm.Reverse(); + } + aBB.Add(aCIm, aFIm); + } + } + else { + aBB.Add(aCIm, aF); + } + } + myImages.Bind(aC, aCIm); + }// for (; aItS.More(); aItS.Next()) { +} +//======================================================================= +// function: FillImagesCompounds +// purpose: +//======================================================================= +void FillImagesCompounds(const TopTools_MapOfShape& theMS, + BRepAlgo_Image& theImages) +{ + TopTools_MapOfShape aMFP; + TopTools_MapIteratorOfMapOfShape aItS; + // + aItS.Initialize(theMS); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aC=aItS.Key(); + FillImagesCompound(aC, theImages, aMFP); + } +} +//======================================================================= +//function : FillImagesCompound +//purpose : +//======================================================================= +void FillImagesCompound(const TopoDS_Shape& theS, + BRepAlgo_Image& theImages, + TopTools_MapOfShape& theMFP) +{ + Standard_Boolean bInterferred; + TopAbs_ShapeEnum aTypeX; + TopAbs_Orientation aOrX; + TopoDS_Iterator aIt; + BRep_Builder aBB; + TopTools_ListIteratorOfListOfShape aItIm; + // + if (!theMFP.Add(theS)) { + return; + } + // + bInterferred=Standard_False; + aIt.Initialize(theS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSX=aIt.Value(); + aTypeX=aSX.ShapeType(); + if (aTypeX==TopAbs_COMPOUND) { + FillImagesCompound(aSX, theImages, theMFP); + } + if (theImages.HasImage(aSX)) { + bInterferred=Standard_True; + } + } + if (!bInterferred){ + return; + } + // + TopoDS_Shape aCIm; + GEOMAlgo_Tools3D::MakeContainer(TopAbs_COMPOUND, aCIm); + // + aIt.Initialize(theS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSX=aIt.Value(); + aOrX=aSX.Orientation(); + if (theImages.HasImage(aSX)) { + const TopTools_ListOfShape& aLFIm=theImages.Image(aSX); + aItIm.Initialize(aLFIm); + for (; aItIm.More(); aItIm.Next()) { + TopoDS_Shape aSXIm=aItIm.Value(); + aSXIm.Orientation(aOrX); + aBB.Add(aCIm, aSXIm); + } + } + else { + aBB.Add(aCIm, aSX); + } + } + theImages.Bind(theS, aCIm); +} diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_2.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_2.cxx new file mode 100755 index 000000000..068fbc564 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_2.cxx @@ -0,0 +1,783 @@ +// 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_Builder_2.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// +#include +#include +#include + +static + void UpdateCandidates(const Standard_Integer , + const Standard_Integer , + NMTTools_IndexedDataMapOfIndexedMapOfInteger& ); + +//======================================================================= +//function : FillImagesFaces +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillImagesFaces() +{ + myErrorStatus=0; + // + FillIn2DParts(); + BuildSplitFaces(); + FillSameDomainFaces(); + FillImagesFaces1(); + FillInternalVertices(); +} +//======================================================================= +// function: FillIn2DParts +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillIn2DParts() +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); + BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); + NMTTools_CommonBlockPool& aCBP=pPF->ChangeCommonBlockPool(); + // + Standard_Integer j, nSpIn, nSpSc, aNbCurves; + Standard_Integer aNbS, nF, aNbCBP, n1, n2, aNbFFs, aNbSpIn; + TopTools_MapOfShape aMFence; + TopTools_ListOfShape aLSpIn; + TopoDS_Face aF; + NMTTools_ListIteratorOfListOfCommonBlock aItCB; + BOPTools_ListIteratorOfListOfPaveBlock aItPB; + // + myInParts.Clear(); + // + aNbFFs=aFFs.Extent(); + aNbCBP=aCBP.Extent(); + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (nF=1; nF<=aNbS; ++nF) { + if (aDS.GetShapeType(nF)!=TopAbs_FACE) { + continue; + } + // + aF=TopoDS::Face(aDS.Shape(nF)); + // + aMFence.Clear(); + aLSpIn.Clear(); + // + // 1. In Parts + for (j=1; j<=aNbCBP; ++j) { + NMTTools_ListOfCommonBlock& aLCB=aCBP(j); + aItCB.Initialize(aLCB); + for (; aItCB.More(); aItCB.Next()) { + NMTTools_CommonBlock& aCB=aItCB.Value(); + if (aCB.IsPaveBlockOnFace(nF)) { + const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(); + nSpIn=aPB1.Edge(); + const TopoDS_Shape& aSpIn=aDS.Shape(nSpIn); + if (aMFence.Add(aSpIn)){ + aLSpIn.Append(aSpIn); + } + } + } + } + // + // 2. Section Parts + for (j=1; j<=aNbFFs; ++j) { + BOPTools_SSInterference& aFF=aFFs(j); + aFF.Indices(n1, n2); + if (!(n1==nF || n2==nF)) { + continue; + } + BOPTools_SequenceOfCurves& aSC=aFF.Curves(); + aNbCurves=aSC.Length(); + if (!aNbCurves) { + continue; + } + // + const BOPTools_Curve& aBC=aSC(1); + const BOPTools_ListOfPaveBlock& aLPB=aBC.NewPaveBlocks(); + aItPB.Initialize(aLPB); + for (; aItPB.More(); aItPB.Next()) { + const BOPTools_PaveBlock& aPBSc=aItPB.Value(); + nSpSc=aPBSc.Edge(); + const TopoDS_Shape& aSpSc=aDS.Shape(nSpSc); + if (aMFence.Add(aSpSc)){ + aLSpIn.Append(aSpSc); + } + } + } + aNbSpIn=aLSpIn.Extent(); + if (aNbSpIn) { + myInParts.Add(aF, aLSpIn); + } + }//for (nF=1; nF<=aNbS; ++nF) { +} +//======================================================================= +// function: BuildSplitFaces +// purpose: +//======================================================================= + void GEOMAlgo_Builder::BuildSplitFaces() +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); + BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Boolean bToReverse, bIsClosed, bIsDegenerated; + Standard_Integer i, aNb, aNbF, nF; + TopTools_MapOfShape aMFence; + TColStd_IndexedMapOfInteger aMFP; + TopExp_Explorer anExp; + TopoDS_Face aFF; + TopoDS_Edge aSp, aEE; + TopTools_ListIteratorOfListOfShape aIt; + TopAbs_Orientation anOriF, anOriE; + // + mySplitFaces.Clear(); + // + // 1. Select Faces to process (MFP) + aNb=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aF=aDS.Shape(i); + if (aF.ShapeType()!=TopAbs_FACE) { + continue; + } + if (!aMFence.Add(aF)) { + continue; + } + // + if (myInParts.Contains(aF)) { + aMFP.Add(i); + continue; + } + // + anExp.Init(aF, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + const TopoDS_Shape& aE=anExp.Current(); + if (myImages.HasImage(aE)) { + aMFP.Add(i); + break; + } + } + // + //=== + { + Standard_Integer aNbFFs, aNbSE, j, n1, n2; + // + aNbFFs=aFFs.Extent(); + for (j=1; j<=aNbFFs; ++j) { + BOPTools_SSInterference& aFFj=aFFs(j); + aFFj.Indices(n1, n2); + if (!(n1==i || n2==i)) { + continue; + } + // + const TColStd_ListOfInteger& aLSE=aFFj.SharedEdges(); + aNbSE=aLSE.Extent(); + if (aNbSE) { + aMFP.Add(i); + } + } + } + //=== + // + }// for (i=1; i<=aNb; ++i) + // + // 2. ProcessFaces + aNbF=aMFP.Extent(); + for (i=1; i<=aNbF; ++i) { + nF=aMFP(i); + const TopoDS_Face& aF=TopoDS::Face(aDS.Shape(nF)); + anOriF=aF.Orientation(); + aFF=aF; + aFF.Orientation(TopAbs_FORWARD); + // + aMFence.Clear(); + // + // 2.1. Fill WES + GEOMAlgo_WireEdgeSet aWES; + aWES.SetFace(aFF); + // + // 2.1.1. Add Split parts + anExp.Init(aFF, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(anExp.Current()); + anOriE=aE.Orientation(); + // + if (!myImages.HasImage(aE)) { + if (anOriE==TopAbs_INTERNAL) { + aEE=aE; + aEE.Orientation(TopAbs_FORWARD); + aWES.AddStartElement(aEE); + aEE.Orientation(TopAbs_REVERSED); + aWES.AddStartElement(aEE); + } + else { + aWES.AddStartElement(aE); + } + continue; + } + // + bIsDegenerated=BRep_Tool::Degenerated(aE); + bIsClosed=BRep_Tool::IsClosed(aE, aF); + // + const TopTools_ListOfShape& aLIE=myImages.Image(aE); + aIt.Initialize(aLIE); + for (; aIt.More(); aIt.Next()) { + aSp=TopoDS::Edge(aIt.Value()); + // + if (bIsDegenerated) { + aSp.Orientation(anOriE); + aWES.AddStartElement(aSp); + continue; + } + // + if (anOriE==TopAbs_INTERNAL) { + aSp.Orientation(TopAbs_FORWARD); + aWES.AddStartElement(aSp); + aSp.Orientation(TopAbs_REVERSED); + aWES.AddStartElement(aSp); + continue; + } + // + if (bIsClosed){ + if (aMFence.Add(aSp)) { + // + if (!BRep_Tool::IsClosed(aSp, aF)){ + BOPTools_Tools3D::DoSplitSEAMOnFace(aSp, aF); + } + // + aSp.Orientation(TopAbs_FORWARD); + aWES.AddStartElement(aSp); + aSp.Orientation(TopAbs_REVERSED); + aWES.AddStartElement(aSp); + } + continue; + }// if (aMFence.Add(aSp)) + // + aSp.Orientation(anOriE); + bToReverse=BOPTools_Tools3D::IsSplitToReverse1(aSp, aE, aCtx); + if (bToReverse) { + aSp.Reverse(); + } + aWES.AddStartElement(aSp); + }// for (; aIt.More(); aIt.Next()) { + }// for (; anExp.More(); anExp.Next()) { + // + // 2.1.2. Add In2D Parts + if (myInParts.Contains(aF)) { + const TopTools_ListOfShape& aLE=myInParts.FindFromKey(aF); + aIt.Initialize(aLE); + for (; aIt.More(); aIt.Next()) { + aSp=TopoDS::Edge(aIt.Value()); + // + aSp.Orientation(TopAbs_FORWARD); + aWES.AddStartElement(aSp); + // + aSp.Orientation(TopAbs_REVERSED); + aWES.AddStartElement(aSp); + } + } + // + // 2.2. Build images Faces + GEOMAlgo_BuilderFace aBF; + // + aBF.SetFace(aFF); + aBF.SetContext(aCtx); + const TopTools_ListOfShape& aSE=aWES.StartElements(); + aBF.SetShapes(aSE); + // + aBF.Perform(); + // + const TopTools_ListOfShape& aLF=aBF.Areas(); + // + TopTools_ListOfShape aLFR; + // + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + TopoDS_Shape& aFR=aIt.Value(); + if (anOriF==TopAbs_REVERSED) { + aFR.Orientation(TopAbs_REVERSED); + } + aLFR.Append(aFR); + } + // + // 2.3. Collect draft images Faces + mySplitFaces.Bind(aF, aLFR); + }//for (i=1; i<=aNbF; ++i) +} +//======================================================================= +// function: FillSameDomainFaces +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillSameDomainFaces() +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); + BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Boolean bIsSDF; + Standard_Integer i, j, aNbFF, nF1, nF2, aNbPBInOn, aNbC, aNbSE; + TopTools_MapOfShape aMFence; + TopTools_ListIteratorOfListOfShape aItF1, aItF2; + NMTTools_ListOfCoupleOfShape aLCS; + // + //mySameDomainShapes.Clear(); + // + // 1. For each FF find among images of faces + // all pairs of same domain faces (SDF) [=> aLCS] + aNbFF=aFFs.Extent(); + for (i=1; i<=aNbFF; ++i) { + BOPTools_SSInterference& aFF=aFFs(i); + aFF.Indices(nF1, nF2); + // + const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(nF1)); + const TopoDS_Face& aF2=TopoDS::Face(aDS.Shape(nF2)); + // + // if there are no in/on 2D split parts the faces nF1, nF2 + // can not be SDF + const BOPTools_ListOfPaveBlock& aLPBInOn=aFF.PaveBlocks(); + aNbPBInOn=aLPBInOn.Extent(); + // + //=== + const TColStd_ListOfInteger& aLSE=aFF.SharedEdges(); + aNbSE=aLSE.Extent(); + if (!aNbPBInOn && !aNbSE) { + continue; + } + //=== + // + // if there is at least one section edge between faces nF1, nF2 + // they can not be SDF + BOPTools_SequenceOfCurves& aSC=aFF.Curves(); + aNbC=aSC.Length(); + if (aNbC) { + continue; + } + // + // the faces are suspected to be SDF. + // Try to find SDF among images of nF1, nF2 + aMFence.Clear(); + const TopTools_ListOfShape& aLF1=mySplitFaces.Image(aF1); + const TopTools_ListOfShape& aLF2=mySplitFaces.Image(aF2); + // + aItF1.Initialize(aLF1); + for (; aItF1.More(); aItF1.Next()) { + const TopoDS_Face& aF1x=TopoDS::Face(aItF1.Value()); + // + aItF2.Initialize(aLF2); + for (; aItF2.More(); aItF2.Next()) { + const TopoDS_Face& aF2y=TopoDS::Face(aItF2.Value()); + bIsSDF=NMTTools_Tools::AreFacesSameDomain(aF1x, aF2y, aCtx); + if (bIsSDF) { + if (aMFence.Contains(aF1x) || + aMFence.Contains(aF2y)) { + continue; + } + aMFence.Add(aF1x); + aMFence.Add(aF2y); + // + NMTTools_CoupleOfShape aCS; + // + aCS.SetShape1(aF1x); + aCS.SetShape2(aF2y); + aLCS.Append(aCS); + // + if (aF1x==aF1) { + if (!mySplitFaces.HasImage(aF1)) { + mySplitFaces.Bind(aF1, aF1); + } + } + if (aF2y==aF2) { + if (!mySplitFaces.HasImage(aF2)) { + mySplitFaces.Bind(aF2, aF2); + } + } + // + + } + } + } + }//for (i=1; i<=aNbFF; ++i) + // + aNbC=aLCS.Extent(); + if (!aNbC) { + return; + } + // + // 2. Find Chains + NMTTools_IndexedDataMapOfShapeIndexedMapOfShape aMC; + // + NMTTools_Tools::FindChains(aLCS, aMC); + // + // 3. Fill the map of SDF mySameDomainFaces + aNbC=aMC.Extent(); + for (i=1; i<=aNbC; ++i) { + const TopoDS_Shape& aF=aMC.FindKey(i); + const TopTools_IndexedMapOfShape& aMSDF=aMC(i); + // + aNbFF=aMSDF.Extent(); + for (j=1; j<=aNbFF; ++j) { + const TopoDS_Shape& aFSD=aMSDF(j); + mySameDomainShapes.Add(aFSD, aF); + } + } + // +} +//======================================================================= +// function: FillImagesFaces1 +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillImagesFaces1() +{ + Standard_Integer i, aNb, iSense; + TopoDS_Face aF, aFSp, aFSD; + TopTools_ListOfShape aLFx; + TopTools_ListIteratorOfListOfShape aIt; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + // + aNb=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + if (aS.ShapeType()!=TopAbs_FACE) { + continue; + } + // + if (!mySplitFaces.HasImage(aS)) { + continue; + } + // + aF=TopoDS::Face(aS); + // + aLFx.Clear(); + const TopTools_ListOfShape& aLF=mySplitFaces.Image(aF); + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + aFSp=TopoDS::Face(aIt.Value()); + if (!mySameDomainShapes.Contains(aFSp)) { + aLFx.Append(aFSp); + } + else { + const TopoDS_Shape& aSx=mySameDomainShapes.FindFromKey(aFSp); + aFSD=TopoDS::Face(aSx); + iSense=GEOMAlgo_Tools3D::Sense(aFSp, aFSD); + if (iSense<0) { + aFSD.Reverse(); + } + aLFx.Append(aFSD); + } + } + if (!myImages.HasImage(aF)) {//XX + myImages.Bind(aF, aLFx); + } + } +} +//======================================================================= +// function: FillInternalVertices +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillInternalVertices() +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); + BOPTools_CArray1OfVSInterference& aVFs=pIP->VSInterferences(); + BOPTools_CArray1OfESInterference& aEFs=pIP->ESInterferences(); + const NMTTools_IndexedDataMapOfIndexedMapOfInteger& aMAV=pPF->AloneVertices(); + // + Standard_Boolean bHasImage; + Standard_Integer i, j, nF, aNbS, nV, nVSD, n1, n2, iFlag; + Standard_Integer aNbVFs, aNbAVF, aNbEFs, aNbVC, aNbE, aNbV; + Standard_Real aU1, aU2, aTol; + NMTTools_IndexedDataMapOfIndexedMapOfInteger aMFMV; + TopTools_MapOfShape aMFence; + TopTools_ListIteratorOfListOfShape aIt, aItV; + BRep_Builder aBB; + // + // 1. Collect face-vertex candidates [aMFMV] + // + // 1.1. VFs + aNbVFs=aVFs.Extent(); + for (i=1; i<=aNbVFs; ++i) { + const BOPTools_VSInterference& aVS=aVFs(i); + aVS.Indices(n1, n2); + nF=n2; + nV=n1; + if (aDS.Shape(n1).ShapeType()==TopAbs_FACE) { + nF=n1; + nV=n2; + } + nVSD=pPF->FindSDVertex(nV); + if (nVSD) { + nV=nVSD; + } + // + UpdateCandidates(nF, nV, aMFMV); + } + // + // 1.2 EFs + aNbEFs=aEFs.Extent(); + for (i=1; i<=aNbEFs; ++i) { + const BOPTools_ESInterference& aEF=aEFs(i); + aEF.Indices(n1, n2); + nV=aEF.NewShape(); + if (!nV) { + continue; + } + const TopoDS_Shape& aSnew=aDS.Shape(nV); + if (aSnew.ShapeType()!=TopAbs_VERTEX) { + continue; + } + // + nF=(aDS.Shape(n1).ShapeType()==TopAbs_FACE) ? n1 : n2; + nVSD=pPF->FindSDVertex(nV); + if (nVSD) { + nV=nVSD; + } + UpdateCandidates(nF, nV, aMFMV); + } + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (nF=1; nF<=aNbS; ++nF) { + const TopoDS_Shape& aF=aDS.Shape(nF); + // + if (aF.ShapeType()!=TopAbs_FACE) { + continue; + } + if (!aMFence.Add(aF)) { + continue; + } + // + const TopoDS_Face& aFF=TopoDS::Face(aF); + aTol=BRep_Tool::Tolerance(aFF); + // + // 1.3 FFs + if (aMAV.Contains(nF)) { + const TColStd_IndexedMapOfInteger& aMAVF=aMAV.FindFromKey(nF); + aNbAVF=aMAVF.Extent(); + for (j=1; j<=aNbAVF; ++j) { + nV=aMAVF(j); + nVSD=pPF->FindSDVertex(nV); + if (nVSD) { + nV=nVSD; + } + // + UpdateCandidates(nF, nV, aMFMV); + } + } + // + // 1.4 Internal vertices of the face nF + BooleanOperations_OnceExplorer aExp(aDS); + aExp.Init(nF, TopAbs_VERTEX); + for (; aExp.More(); aExp.Next()) { + nV=aExp.Current(); + const TopoDS_Shape& aV=aDS.Shape(nV); + if (aV.Orientation()==TopAbs_INTERNAL) { + nVSD=pPF->FindSDVertex(nV); + if (nVSD) { + nV=nVSD; + } + // + UpdateCandidates(nF, nV, aMFMV); + } + } + // + // 2. Process face nF + if (!aMFMV.Contains(nF)) { + continue; + } + // + const TColStd_IndexedMapOfInteger& aMVC=aMFMV.FindFromKey(nF); + aNbVC=aMVC.Extent(); + if (!aNbVC) { + continue; + } + // + // 2.1 Refine candidates + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + TopTools_ListOfShape aLV; + // + bHasImage=myImages.HasImage(aF); + if (bHasImage) { + const TopTools_ListOfShape& aLFx=myImages.Image(aF); + aIt.Initialize(aLFx); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aFx=aIt.Value(); + TopExp::MapShapesAndAncestors(aFx, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + } + } + else { + Standard_Boolean bFaceToProcess; + // + TopExp::MapShapesAndAncestors(aF, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + bFaceToProcess=Standard_False; + for (j=1; j<=aNbVC; ++j) { + nV=aMVC(j); + const TopoDS_Shape& aV=aDS.Shape(nV); + if (!aMVE.Contains(aV)) { + bFaceToProcess=!bFaceToProcess; + break; + } + } + if (!bFaceToProcess) { + continue; + } + }// else + // + for (j=1; j<=aNbVC; ++j) { + nV=aMVC(j); + const TopoDS_Shape& aV=aDS.Shape(nV); + if (aMVE.Contains(aV)) { + const TopTools_ListOfShape& aLE=aMVE.FindFromKey(aV); + aNbE=aLE.Extent(); + if (aNbE) { + continue; + } + } + aLV.Append(aV); + } + // + aNbV=aLV.Extent(); + if (aNbV) { + // 3. Try to put vertices into the face(s) + aItV.Initialize(aLV); + for (; aItV.More(); aItV.Next()) { + TopoDS_Vertex aV=TopoDS::Vertex(aItV.Value()); + aV.Orientation(TopAbs_INTERNAL); + // + bHasImage=myImages.HasImage(aF); + if (bHasImage) { + const TopTools_ListOfShape& aLFx=myImages.Image(aF); + aIt.Initialize(aLFx); + for (; aIt.More(); aIt.Next()) { + TopoDS_Face aFx=TopoDS::Face(aIt.Value()); + // update classifier + IntTools_FClass2d& aClsf=aCtx.FClass2d(aFx); + aClsf.Init(aFx, aTol); + // + iFlag=aCtx.ComputeVS (aV, aFx, aU1, aU2); + if (!iFlag) { + aBB.Add(aFx, aV); + break; + } + } + } + else { + const TopoDS_Face& aFx=TopoDS::Face(aF); + // update classifier + IntTools_FClass2d& aClsf=aCtx.FClass2d(aFx); + aClsf.Init(aFx, aTol); + // + iFlag=aCtx.ComputeVS (aV, aFx, aU1, aU2); + if (!iFlag) { + TopoDS_Face aFz; + // + GEOMAlgo_Tools3D::CopyFace(aFx, aFz); + aBB.Add(aFz, aV); + myImages.Bind(aF, aFz); + } + } + }// for (; aItV.More(); aItV.Next()) { + }// if (aNbV) { + }// for (nF=1; nF<=aNb; ++nF) { +} +//======================================================================= +// function: UpdateCandidates +// purpose: +//======================================================================= +void UpdateCandidates(const Standard_Integer theNF, + const Standard_Integer theNV, + NMTTools_IndexedDataMapOfIndexedMapOfInteger& theMFMV) +{ + if (theMFMV.Contains(theNF)) { + TColStd_IndexedMapOfInteger& aMV=theMFMV.ChangeFromKey(theNF); + aMV.Add(theNV); + } + else { + TColStd_IndexedMapOfInteger aMV; + aMV.Add(theNV); + theMFMV.Add(theNF, aMV); + } +} diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_3.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_3.cxx new file mode 100755 index 000000000..5da0c28e1 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_3.cxx @@ -0,0 +1,769 @@ +// 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_Builder_3.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + + + +static + void OwnInternalShapes(const TopoDS_Shape& , + TopTools_IndexedMapOfShape& ); + +//======================================================================= +//function : FillImagesSolids +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillImagesSolids() +{ + myErrorStatus=0; + // + FillIn3DParts(); + BuildSplitSolids(); + FillInternalShapes(); +} +//======================================================================= +//function : BuildDraftSolid +//purpose : +//======================================================================= + void GEOMAlgo_Builder::BuildDraftSolid(const TopoDS_Shape& theSolid, + TopoDS_Shape& theDraftSolid, + TopTools_ListOfShape& theLIF) +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Boolean bToReverse; + Standard_Integer iFlag; + TopAbs_Orientation aOrF, aOrSh, aOrSd; + TopoDS_Iterator aIt1, aIt2; + TopTools_ListIteratorOfListOfShape aItS; + BRep_Builder aBB; + TopoDS_Shell aShD; + TopoDS_Shape aFSDx, aFx; + // + aOrSd=theSolid.Orientation(); + theDraftSolid.Orientation(aOrSd); + // + aIt1.Initialize(theSolid); + for (; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aSh=aIt1.Value(); + if(aSh.ShapeType()!=TopAbs_SHELL) { + continue; // mb internal edges,vertices + } + // + aOrSh=aSh.Orientation(); + aBB.MakeShell(aShD); + aShD.Orientation(aOrSh); + iFlag=0; + // + aIt2.Initialize(aSh); + for (; aIt2.More(); aIt2.Next()) { + const TopoDS_Shape& aF=aIt2.Value(); + aOrF=aF.Orientation(); + // + if (myImages.HasImage(aF)) { + const TopTools_ListOfShape& aLSp=myImages.Image(aF); + aItS.Initialize(aLSp); + for (; aItS.More(); aItS.Next()) { + aFx=aItS.Value(); + // + if (mySameDomainShapes.Contains(aFx)) { + aFSDx=mySameDomainShapes.FindFromKey(aFx); + // + if (aOrF==TopAbs_INTERNAL) { + aFSDx.Orientation(aOrF); + theLIF.Append(aFSDx); + } + else { + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aFSDx, aF, aCtx); + if (bToReverse) { + aFSDx.Reverse(); + } + // + iFlag=1; + aBB.Add(aShD, aFSDx); + } + }// if (mySameDomainShapes.Contains(aFx)) { + else { + aFx.Orientation(aOrF); + if (aOrF==TopAbs_INTERNAL) { + theLIF.Append(aFx); + } + else{ + iFlag=1; + aBB.Add(aShD, aFx); + } + } + } + } //if (myImages.HasImage(aF)) { + // + else { + if (aOrF==TopAbs_INTERNAL) { + theLIF.Append(aF); + } + else{ + iFlag=1; + aBB.Add(aShD, aF); + } + } + } //for (; aIt2.More(); aIt2.Next()) { + // + if (iFlag) { + aBB.Add(theDraftSolid, aShD); + } + } //for (; aIt1.More(); aIt1.Next()) { +} +//======================================================================= +//function : FillIn3DParts +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillIn3DParts() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Boolean bIsIN, bHasImage; + Standard_Integer aNbS, aNbSolids, i, j, aNbFaces, aNbFP, aNbFPx, aNbFIN, aNbLIF;// k, + TopAbs_ShapeEnum aType; + TopAbs_State aState; + TopTools_IndexedMapOfShape aMSolids, aMS, aMFaces, aMFIN; + TopTools_MapOfShape aMFDone; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + TopTools_ListIteratorOfListOfShape aItS; + TopoDS_Iterator aIt, aItF; + BRep_Builder aBB; + TopoDS_Solid aSolidSp; + TopoDS_Face aFP; + // + myDraftSolids.Clear(); + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + // + aType=aS.ShapeType(); + if (aType==TopAbs_SOLID) { + // all solids from DS + aMSolids.Add(aS); + } + else if (aType==TopAbs_FACE) { + // all faces (originals from DS or theirs images) + if (myImages.HasImage(aS)) { + const TopTools_ListOfShape& aLS=myImages.Image(aS); + aItS.Initialize(aLS); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aFx=aItS.Value(); + // + if (mySameDomainShapes.Contains(aFx)) { + const TopoDS_Shape& aFSDx=mySameDomainShapes.FindFromKey(aFx); + aMFaces.Add(aFSDx); + } + else { + aMFaces.Add(aFx); + } + } + } + else { + if (mySameDomainShapes.Contains(aS)) { + const TopoDS_Shape& aFSDx=mySameDomainShapes.FindFromKey(aS); + aMFaces.Add(aFSDx); + } + else { + aMFaces.Add(aS); + } + } + } + } + // + aNbFaces=aMFaces.Extent(); + aNbSolids=aMSolids.Extent(); + // + for (i=1; i<=aNbSolids; ++i) { + const TopoDS_Solid& aSolid=TopoDS::Solid(aMSolids(i)); + aMFDone.Clear(); + aMFIN.Clear(); + aMEF.Clear(); + // + aBB.MakeSolid(aSolidSp); + // + TopTools_ListOfShape aLIF; + // + BuildDraftSolid(aSolid, aSolidSp, aLIF); + aNbLIF=aLIF.Extent(); + // + // 1 all faces/edges from aSolid [ aMS ] + bHasImage=Standard_False; + aMS.Clear(); + aIt.Initialize(aSolid); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aShell=aIt.Value(); + // + if (myImages.HasImage(aShell)) { + bHasImage=Standard_True; + // + const TopTools_ListOfShape& aLS=myImages.Image(aShell); + aItS.Initialize(aLS); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aSx=aItS.Value(); + aMS.Add(aSx); + TopExp::MapShapes(aSx, TopAbs_FACE, aMS); + TopExp::MapShapes(aSx, TopAbs_EDGE, aMS); + TopExp::MapShapesAndAncestors(aSx, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + } + else { + //aMS.Add(aShell); + TopExp::MapShapes(aShell, TopAbs_FACE, aMS); + TopExp::MapShapesAndAncestors(aShell, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + } + // + // 2 all faces that are not from aSolid [ aLFP1 ] + Standard_Integer aNbEFP; + TopTools_IndexedDataMapOfShapeListOfShape aMEFP; + TopTools_ListIteratorOfListOfShape aItFP, aItEx; + TopTools_MapOfShape aMFence; + TopTools_ListOfShape aLFP1, aLFP2, aLFP, aLCBF, aLFIN, aLEx;//*pLFP, + // + // for all non-solid faces build EF map [ aMEFP ] + for (j=1; j<=aNbFaces; ++j) { + const TopoDS_Shape& aFace=aMFaces(j); + if (!aMS.Contains(aFace)) { + TopExp::MapShapesAndAncestors(aFace, TopAbs_EDGE, TopAbs_FACE, aMEFP); + } + } + // + // among all faces from aMEFP select these that have same edges + // with the solid (i.e aMEF). These faces will be treated first + // to prevent the usage of 3D classifier. + // The full list of faces to process is aLFP1. + aNbEFP=aMEFP.Extent(); + for (j=1; j<=aNbEFP; ++j) { + const TopoDS_Shape& aE=aMEFP.FindKey(j); + // + if (aMEF.Contains(aE)) { // !! + const TopTools_ListOfShape& aLF=aMEFP(j); + aItFP.Initialize(aLF); + for (; aItFP.More(); aItFP.Next()) { + const TopoDS_Shape& aF=aItFP.Value(); + if (aMFence.Add(aF)) { + aLFP1.Append(aF); + } + } + } + else { + aLEx.Append(aE); + } + } + // + aItEx.Initialize(aLEx); + for (; aItEx.More(); aItEx.Next()) { + const TopoDS_Shape& aE=aItEx.Value(); + const TopTools_ListOfShape& aLF=aMEFP.FindFromKey(aE); + aItFP.Initialize(aLF); + for (; aItFP.More(); aItFP.Next()) { + const TopoDS_Shape& aF=aItFP.Value(); + if (aMFence.Add(aF)) { + aLFP2.Append(aF); + } + } + } + aLFP1.Append(aLFP2); + //========== + // + // 3 Process faces aLFP1 + aNbFP=aLFP1.Extent(); + aItFP.Initialize(aLFP1); + for (; aItFP.More(); aItFP.Next()) { + const TopoDS_Shape& aSP=aItFP.Value(); + if (!aMFDone.Add(aSP)) { + continue; + } + + // + // first face to process + aFP=TopoDS::Face(aSP); + bIsIN= GEOMAlgo_Tools3D::IsInternalFace(aFP, aSolidSp, aMEF, 1.e-14, aCtx); + aState=(bIsIN) ? TopAbs_IN : TopAbs_OUT; + // + // collect faces to process [ aFP is the first ] + aLFP.Clear(); + aLFP.Append(aFP); + aItS.Initialize(aLFP1); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aSk=aItS.Value(); + if (!aMFDone.Contains(aSk)) { + aLFP.Append(aSk); + } + } + // + // Connexity Block that spreads from aFP the Bound + // or till the end of the block itself + aLCBF.Clear(); + GEOMAlgo_Tools3D::MakeConnexityBlock(aLFP, aMS, aLCBF); + // + // fill states for the Connexity Block + aItS.Initialize(aLCBF); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aSx=aItS.Value(); + aMFDone.Add(aSx); + if (aState==TopAbs_IN) { + aMFIN.Add(aSx); + } + } + // + aNbFPx=aMFDone.Extent(); + if (aNbFPx==aNbFP) { + break; + } + }//for (; aItFP.More(); aItFP.Next()) + // + // faces Inside aSolid + aLFIN.Clear(); + aNbFIN=aMFIN.Extent(); + if (aNbFIN || aNbLIF) { + for (j=1; j<=aNbFIN; ++j) { + const TopoDS_Shape& aFIN=aMFIN(j); + aLFIN.Append(aFIN); + } + // + aItS.Initialize(aLIF); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aFIN=aItS.Value(); + aLFIN.Append(aFIN); + } + // + myInParts.Add(aSolid, aLFIN); + } + if (aNbFIN || bHasImage) { + myDraftSolids.Add(aSolid, aSolidSp); + } + }//for (i=1; i<=aNbSolids; ++i) { // next solid +} +//======================================================================= +//function : BuildSplitSolids +//purpose : +//======================================================================= + void GEOMAlgo_Builder::BuildSplitSolids() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Integer i, aNbS, iErr; + TopExp_Explorer aExp; + TopTools_ListOfShape aSFS, aLSEmpty; + TopTools_MapOfShape aMFence; + TopTools_ListIteratorOfListOfShape aIt; + GEOMAlgo_BuilderSolid aSB; + GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet aItSS; + GEOMAlgo_DataMapOfShapeShapeSet aMSS; + GEOMAlgo_ShapeSet aSSi; + // + aSB.SetContext(aCtx); + // + // 1. Build solids for interferred source solids + // + aNbS=myDraftSolids.Extent(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS =myDraftSolids.FindKey(i); + const TopoDS_Shape& aSD=myDraftSolids.FindFromIndex(i); + const TopTools_ListOfShape& aLFIN= + (myInParts.Contains(aS)) ? myInParts.FindFromKey(aS) : aLSEmpty; + // + // 1.1 Fill Shell Faces Set + aSFS.Clear(); + + aExp.Init(aSD, TopAbs_FACE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aF=aExp.Current(); + aSFS.Append(aF); + } + // + aIt.Initialize(aLFIN); + for (; aIt.More(); aIt.Next()) { + TopoDS_Shape aF=aIt.Value(); + // + aF.Orientation(TopAbs_FORWARD); + aSFS.Append(aF); + aF.Orientation(TopAbs_REVERSED); + aSFS.Append(aF); + } + // + Standard_Integer aNbSFS; + aNbSFS=aSFS.Extent(); + // + // 1.2 + // Check whether aSFS contains a subsets of faces + // of solids that have been already built. + // If yes, shrink aSFS by these subsets. + aSSi.Clear(); + aSSi.Add(aSFS); + // + aItSS.Initialize(aMSS); + for (; aItSS.More(); aItSS.Next()) { + const TopoDS_Shape& aSR=aItSS.Key(); + const GEOMAlgo_ShapeSet& aSSR=aItSS.Value(); + if (aSSi.Contains(aSSR)) { + // the aSR is SD solid for aS + aSSi.Subtract(aSSR); + // update images + if(myImages.HasImage(aS)) { + myImages.Add(aS, aSR); + } + else { + myImages.Bind(aS, aSR); + } + // + // update SD Shapes + mySameDomainShapes.Add(aSR, aSR); + } + } + const TopTools_ListOfShape& aSFS1=aSSi.GetSet(); + aNbSFS=aSFS1.Extent(); + // + // 1.3 Build new solids + aSB.SetShapes(aSFS1); + aSB.Perform(); + iErr=aSB.ErrorStatus(); + if (iErr) { + myErrorStatus=30; // SolidBuilder failed + return; + } + // + const TopTools_ListOfShape& aLSR=aSB.Areas(); + // + // 1.4 Collect resulting solids and theirs set of faces + aIt.Initialize(aLSR); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSR=aIt.Value(); + // + aSSi.Clear(); + aExp.Init(aSR, TopAbs_FACE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aF=aExp.Current(); + aSSi.Add(aF); + } + aMSS.Bind(aSR, aSSi); + } + // + // Update images + if (myImages.HasImage(aS)) { + myImages.Add(aS, aLSR); + } + else { + myImages.Bind(aS, aLSR); + } + } // for (i=1; i<=aNbS; ++i) { + // + // 2. Find same domain solids for non-interferred solids + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + if (aS.ShapeType()!=TopAbs_SOLID) { + continue; + } + if (!aMFence.Add(aS)) { + continue; + } + if(myImages.HasImage(aS)) { + continue; + } + // + aSSi.Clear(); + aSSi.Add(aS, TopAbs_FACE); + // + aItSS.Initialize(aMSS); + for (; aItSS.More(); aItSS.Next()) { + const TopoDS_Shape& aSR=aItSS.Key(); + const GEOMAlgo_ShapeSet& aSSR=aItSS.Value(); + if (aSSi.Contains(aSSR)) { + myImages.Bind(aS, aSR); + break; + } + } + } //for (i=1; i<=aNbS; ++i) +} +//======================================================================= +//function :FillInternalShapes +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillInternalShapes() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + //Standard_Boolean bHasImage; + Standard_Integer i, j, jT, aNbS, aNbSI, aNbSx, aNbSd; + TopAbs_ShapeEnum aType, aT[]={ TopAbs_VERTEX, TopAbs_EDGE }; + TopAbs_State aState; + TopTools_ListIteratorOfListOfShape aIt, aIt1; + TopTools_IndexedDataMapOfShapeListOfShape aMSx; + TopTools_IndexedMapOfShape aMx; + TopTools_MapOfShape aMSI, aMFence, aMSOr; + TopTools_MapIteratorOfMapOfShape aItM; + TopTools_ListOfShape aLSI, aLSd; + TopoDS_Iterator aItS; + BRep_Builder aBB; + // + // 1. Shapes to process + // + // 1.1 Shapes from pure arguments aMSI + // 1.1.1 vertex, edge + for (i=0; i<2; ++i) { + jT=(Standard_Integer)aT[i]; + const TopTools_ListOfShape &aLS=myShapes1[jT]; + aIt.Initialize(aLS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + if (aMFence.Add(aS)) { + aLSI.Append(aS); + } + } + } + // 1.1.2 wire + { + jT=(Standard_Integer)TopAbs_WIRE; + const TopTools_ListOfShape &aLW=myShapes1[jT]; + aIt.Initialize(aLW); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aW=aIt.Value(); + aItS.Initialize(aW); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aE=aItS.Value(); + if (aMFence.Add(aE)) { + aLSI.Append(aE); + } + } + } + } + // 1.1.3 theirs images/sources + aIt1.Initialize(aLSI); + for (; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aS=aIt1.Value(); + if (myImages.HasImage(aS)) { + const TopTools_ListOfShape &aLSp=myImages.Image(aS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSI=aIt.Value(); + aMSI.Add(aSI); + } + } + else { + aMSI.Add(aS); + } + } + aLSI.Clear(); + aNbSI=aMSI.Extent(); + // + // 2. Internal vertices, edges from source solids + aMFence.Clear(); + aLSd.Clear(); + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + aType=aS.ShapeType(); + if (aType==TopAbs_SOLID) { + // + aMx.Clear(); + OwnInternalShapes(aS, aMx); + // + aNbSx=aMx.Extent(); + for (j=1; j<=aNbSx; ++j) { + const TopoDS_Shape& aSI=aMx(j); + if (myImages.HasImage(aSI)) { + const TopTools_ListOfShape &aLSp=myImages.Image(aSI); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + aMSI.Add(aSp); + } + } + else { + aMSI.Add(aSI); + } + } + // + // build aux map from splits of solids + if (myImages.HasImage(aS)) { + const TopTools_ListOfShape &aLSp=myImages.Image(aS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + if (aMFence.Add(aSp)) { + TopExp::MapShapesAndAncestors(aSp, TopAbs_VERTEX, TopAbs_EDGE, aMSx); + TopExp::MapShapesAndAncestors(aSp, TopAbs_VERTEX, TopAbs_FACE, aMSx); + TopExp::MapShapesAndAncestors(aSp, TopAbs_EDGE , TopAbs_FACE, aMSx); + aLSd.Append(aSp); + } + } + } + else { + if (aMFence.Add(aS)) { + TopExp::MapShapesAndAncestors(aS, TopAbs_VERTEX, TopAbs_EDGE, aMSx); + TopExp::MapShapesAndAncestors(aS, TopAbs_VERTEX, TopAbs_FACE, aMSx); + TopExp::MapShapesAndAncestors(aS, TopAbs_EDGE , TopAbs_FACE, aMSx); + aLSd.Append(aS); + aMSOr.Add(aS); + } + } + }//if (aType==TopAbs_SOLID) + } + // + aNbSd=aLSd.Extent(); + // + // 3. Some shapes of aMSI can be already tied with faces of + // split solids + aItM.Initialize(aMSI); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aSI=aItM.Key(); + if (aMSx.Contains(aSI)) { + const TopTools_ListOfShape &aLSx=aMSx.FindFromKey(aSI); + aNbSx=aLSx.Extent(); + if (aNbSx) { + aMSI.Remove(aSI); + } + } + } + // + // 4. Just check it + aNbSI=aMSI.Extent(); + if (!aNbSI) { + return; + } + // + // 5 Settle internal vertices and edges into solids + aMx.Clear(); + aIt.Initialize(aLSd); + for (; aIt.More(); aIt.Next()) { + TopoDS_Solid aSd=TopoDS::Solid(aIt.Value()); + // + aItM.Initialize(aMSI); + for (; aItM.More(); aItM.Next()) { + TopoDS_Shape aSI=aItM.Key(); + aSI.Orientation(TopAbs_INTERNAL); + // + aState=GEOMAlgo_Tools3D::ComputeStateByOnePoint(aSI, aSd, 1.e-11, aCtx); + if (aState==TopAbs_IN) { + // + if(aMSOr.Contains(aSd)) { + // + TopoDS_Solid aSdx; + // + aBB.MakeSolid(aSdx); + aItS.Initialize(aSd); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aSh=aItS.Value(); + aBB.Add(aSdx, aSh); + } + // + aBB.Add(aSdx, aSI); + // + myImages.Bind(aSd, aSdx); + aMSOr.Remove(aSd); + aSd=aSdx; + } + else { + aBB.Add(aSd, aSI); + } + // + aMSI.Remove(aSI); + } //if (aState==TopAbs_IN) { + }// for (; aItM.More(); aItM.Next()) { + }//for (; aIt1.More(); aIt1.Next()) { +} +//======================================================================= +//function : OwnInternalShapes +//purpose : +//======================================================================= + void OwnInternalShapes(const TopoDS_Shape& theS, + TopTools_IndexedMapOfShape& theMx) +{ + TopoDS_Iterator aIt; + // + aIt.Initialize(theS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSx=aIt.Value(); + if (aSx.ShapeType()!=TopAbs_SHELL) { + theMx.Add(aSx); + } + } +} +// +// ErrorStatus +// 30 - SolidBuilder failed + diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_4.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_4.cxx new file mode 100755 index 000000000..3d887107d --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_4.cxx @@ -0,0 +1,289 @@ +// 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_Builder_4.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include + +#include +#include +#include +#include + +#include + +#include + +#include +#include + +#include + + +static + void MapShapes(const TopoDS_Shape& aS, + TopTools_MapOfShape& aM); + +//======================================================================= +//function : Generated +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::Generated(const TopoDS_Shape& theS) +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx=pPF->ChangeContext(); + // + Standard_Boolean bHasImage, bToReverse; + TopAbs_ShapeEnum aType; + TopTools_ListIteratorOfListOfShape aIt; + // + myHistShapes.Clear(); + // + if (theS.IsNull()) { + return myHistShapes; + } + // + bHasImage=myImages.HasImage(theS); + if (!bHasImage) { + return myHistShapes; + } + // + aType=theS.ShapeType(); + // + if (aType==TopAbs_EDGE || aType==TopAbs_FACE || + aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + const TopTools_ListOfShape& aLSp=myImages.Image(theS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + if (mySameDomainShapes.Contains(aSp)) { + if (myMapShape.Contains(aSp)) { + TopoDS_Shape aSpR=mySameDomainShapes.FindFromKey(aSp); + // + if (aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + aSpR.Orientation(theS.Orientation()); + } + else { + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aSpR, theS, aCtx); + if (bToReverse) { + aSpR.Reverse(); + } + } + // + myHistShapes.Append(aSpR); + } + } + } + } + // + return myHistShapes; +} +//======================================================================= +//function : Modified +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::Modified(const TopoDS_Shape& theS) +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx=pPF->ChangeContext(); + // + Standard_Boolean bHasImage, bToReverse; + TopAbs_ShapeEnum aType; + TopTools_ListIteratorOfListOfShape aIt; + // + myHistShapes.Clear(); + // + if (theS.IsNull()) { + return myHistShapes; + } + // + bHasImage=myImages.HasImage(theS); + if (!bHasImage) { + return myHistShapes; + } + // + aType=theS.ShapeType(); + // + if (aType==TopAbs_EDGE || aType==TopAbs_FACE || + aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + const TopTools_ListOfShape& aLSp=myImages.Image(theS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + TopoDS_Shape aSp=aIt.Value(); + if (!mySameDomainShapes.Contains(aSp)) { + if (myMapShape.Contains(aSp)) { + // + if (aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + aSp.Orientation(theS.Orientation()); + } + else { + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aSp, theS, aCtx); + if (bToReverse) { + aSp.Reverse(); + } + } + // + myHistShapes.Append(aSp); + } + } + } + } + // + return myHistShapes; +} +//======================================================================= +//function : IsDeleted +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Builder::IsDeleted(const TopoDS_Shape& theS) +{ + Standard_Boolean bRet, bHasImage, bContains; + TopAbs_ShapeEnum aType; + TopTools_ListIteratorOfListOfShape aIt; + // + bRet=Standard_False; + // + if (theS.IsNull()) { + return !bRet; //true + } + // + bContains=myMapShape.Contains(theS); + if (bContains) { + return bRet; //false + } + // + bHasImage=myImages.HasImage(theS); + if (!bHasImage) { + return !bRet; //true + } + // + aType=theS.ShapeType(); + if (aType==TopAbs_EDGE || aType==TopAbs_FACE || + aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + const TopTools_ListOfShape& aLSp=myImages.Image(theS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + TopoDS_Shape aSp=aIt.Value(); + // + if (!mySameDomainShapes.Contains(aSp)) { + if (myMapShape.Contains(aSp)) { + return bRet; //false + } + } + else { + TopoDS_Shape aSpR=mySameDomainShapes.FindFromKey(aSp); + if (myMapShape.Contains(aSpR)) { + return bRet; //false + } + } + } + } + return !bRet; // true +} +//======================================================================= +//function : PrepareHistory +//purpose : +//======================================================================= + void GEOMAlgo_Builder::PrepareHistory() +{ + myHistShapes.Clear(); + myMapShape.Clear(); + myHasDeleted=Standard_False; + myHasGenerated=Standard_False; + myHasModified=Standard_False; + // + if(myShape.IsNull()) { + return; + } + // + MapShapes(myShape, myMapShape); + // + Standard_Boolean bHasImage, bContainsSD; + TopAbs_ShapeEnum aType; + TopTools_MapOfShape aMS; + TopTools_ListIteratorOfListOfShape aIt; + TopTools_MapIteratorOfMapOfShape aItM; + // + aIt.Initialize(myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + MapShapes(aS, aMS); + } + // + aItM.Initialize(aMS); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aSx=aItM.Key(); + aType=aSx.ShapeType(); + // + if (!myHasDeleted) { + myHasDeleted=IsDeleted(aSx);//xx + } + // + if (!myHasGenerated || !myHasModified) { + if (aType==TopAbs_EDGE || aType==TopAbs_FACE || + aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + bHasImage=myImages.HasImage(aSx); + if (bHasImage) { + const TopTools_ListOfShape& aLSp=myImages.Image(aSx); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + // + if (myMapShape.Contains(aSp)) { + bContainsSD=mySameDomainShapes.Contains(aSp); + // + if (!myHasGenerated) { + if (bContainsSD) { + myHasGenerated=Standard_True; + } + } + if (!myHasModified) { + if (!bContainsSD) { + myHasModified=Standard_True; + } + } + } // if (myMapShape.Contains(aSp)) + } + } + } + } + } + +} +//======================================================================= +//function : MapShapes +//purpose : +//======================================================================= + void MapShapes(const TopoDS_Shape& theS, + TopTools_MapOfShape& theM) +{ + theM.Add(theS); + TopoDS_Iterator anIt; + anIt.Initialize(theS); + for (; anIt.More(); anIt.Next()) { + const TopoDS_Shape& aSx=anIt.Value(); + MapShapes(aSx, theM); + } +} diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl index 4cabe930d..9314a0888 100644 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl +++ b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl @@ -1,22 +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 -// +-- 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_CoupleOfShapes.cdl -- Created: Wed Dec 15 13:00:10 2004 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx index 289489482..2505f8049 100644 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx +++ b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -33,6 +33,7 @@ class TopoDS_Shape; #include #endif + class GEOMAlgo_CoupleOfShapes { public: @@ -51,12 +52,26 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_CoupleOfShapes(); + + Standard_EXPORT void SetShapes(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ; + + Standard_EXPORT void SetShape1(const TopoDS_Shape& aS1) ; + + Standard_EXPORT void SetShape2(const TopoDS_Shape& aS2) ; + + Standard_EXPORT void Shapes(TopoDS_Shape& aS1,TopoDS_Shape& aS2) const; + + Standard_EXPORT const TopoDS_Shape& Shape1() const; + + Standard_EXPORT const TopoDS_Shape& Shape2() const; diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx index 39c41d630..7d793c838 100644 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx +++ b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx index bae26f1de..9caff71ab 100644 --- a/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx +++ b/src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopoDS_Shape_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx index 431229248..cd9006ab1 100644 --- a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -43,6 +43,7 @@ class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger; #include #endif + class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger : public TCollection_BasicMapIterator { public: @@ -61,10 +62,20 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger(); + + Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger(const GEOMAlgo_DataMapOfPassKeyInteger& aMap); + + Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfPassKeyInteger& aMap) ; + + Standard_EXPORT const GEOMAlgo_PassKey& Key() const; + + Standard_EXPORT const Standard_Integer& Value() const; diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx index 2c786bb3b..fea43de70 100644 --- a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx new file mode 100644 index 000000000..0864e681c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx @@ -0,0 +1,115 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile +#define _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class TopTools_ListOfShape; +class TColStd_MapRealHasher; +class GEOMAlgo_DataMapOfRealListOfShape; +class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape : public TCollection_BasicMapIterator { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape(); + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape(const GEOMAlgo_DataMapOfRealListOfShape& aMap); + + +Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfRealListOfShape& aMap) ; + + +Standard_EXPORT const Standard_Real& Key() const; + + +Standard_EXPORT const TopTools_ListOfShape& Value() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx new file mode 100644 index 000000000..6ad2f1860 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx @@ -0,0 +1,54 @@ +// 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 + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TColStd_MapRealHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif + + +#define TheKey Standard_Real +#define TheKey_hxx +#define TheItem TopTools_ListOfShape +#define TheItem_hxx +#define Hasher TColStd_MapRealHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx new file mode 100644 index 000000000..bea5ce80f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx @@ -0,0 +1,115 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile +#define _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class TopoDS_Shape; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapOfShapeReal; +class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal : public TCollection_BasicMapIterator { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal(); + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal(const GEOMAlgo_DataMapOfShapeReal& aMap); + + +Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfShapeReal& aMap) ; + + +Standard_EXPORT const TopoDS_Shape& Key() const; + + +Standard_EXPORT const Standard_Real& Value() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx new file mode 100644 index 000000000..0e1748b67 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx @@ -0,0 +1,54 @@ +// 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 + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfShapeReal_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Standard_Real +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx new file mode 100644 index 000000000..67260a8a1 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx @@ -0,0 +1,113 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile +#define _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class TopoDS_Shape; +class GEOMAlgo_ShapeSet; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapOfShapeShapeSet; +class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet : public TCollection_BasicMapIterator { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet(); + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet(const GEOMAlgo_DataMapOfShapeShapeSet& aMap); + + +Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfShapeShapeSet& aMap) ; + + +Standard_EXPORT const TopoDS_Shape& Key() const; + + +Standard_EXPORT const GEOMAlgo_ShapeSet& Value() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx new file mode 100644 index 000000000..56f780149 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx @@ -0,0 +1,57 @@ +// 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 + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem GEOMAlgo_ShapeSet +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx index e57928773..eda806e2b 100644 --- a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -45,37 +45,27 @@ class GEOMAlgo_DataMapOfPassKeyInteger; class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger; + class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger : public TCollection_MapNode { 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); - } // Methods PUBLIC // + GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger(const GEOMAlgo_PassKey& K,const Standard_Integer& I,const TCollection_MapNodePtr& n); + GEOMAlgo_PassKey& Key() const; + Standard_Integer& Value() const; -Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger(); +//Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx index 8d06859ec..6dd49b86c 100644 --- a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -35,7 +35,7 @@ #ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile #include #endif -GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger() {} +//GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger() {} @@ -43,11 +43,8 @@ Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInte { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -80,11 +77,11 @@ const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::Dyna { return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) ; } -Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger() {} +//Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger() {} #define TheKey GEOMAlgo_PassKey #define TheKey_hxx #define TheItem Standard_Integer diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx new file mode 100644 index 000000000..3d61106de --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx @@ -0,0 +1,131 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#define _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif + +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class TopTools_ListOfShape; +class TColStd_MapRealHasher; +class GEOMAlgo_DataMapOfRealListOfShape; +class GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape; + + + +class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape(const Standard_Real& K,const TopTools_ListOfShape& I,const TCollection_MapNodePtr& n); + + Standard_Real& Key() const; + + TopTools_ListOfShape& Value() const; +//Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +Standard_Real myKey; +TopTools_ListOfShape myValue; + + +}; + +#define TheKey Standard_Real +#define TheKey_hxx +#define TheItem TopTools_ListOfShape +#define TheItem_hxx +#define Hasher TColStd_MapRealHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape +#define TCollection_DataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_DataMapNode +#undef TCollection_DataMapNode_hxx +#undef TCollection_DataMapIterator +#undef TCollection_DataMapIterator_hxx +#undef Handle_TCollection_DataMapNode +#undef TCollection_DataMapNode_Type_ +#undef TCollection_DataMap +#undef TCollection_DataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx new file mode 100644 index 000000000..39f3ac1dd --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx @@ -0,0 +1,100 @@ +// 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 + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TColStd_MapRealHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile +#include +#endif +//GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape::~GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape", + sizeof(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape))) { + _anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) ; +} +//Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape() {} +#define TheKey Standard_Real +#define TheKey_hxx +#define TheItem TopTools_ListOfShape +#define TheItem_hxx +#define Hasher TColStd_MapRealHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx new file mode 100644 index 000000000..d2ac36be9 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx @@ -0,0 +1,131 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#define _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class TopoDS_Shape; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapOfShapeReal; +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal; + + + +class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +GEOMAlgo_DataMapNodeOfDataMapOfShapeReal(const TopoDS_Shape& K,const Standard_Real& I,const TCollection_MapNodePtr& n); + + TopoDS_Shape& Key() const; + + Standard_Real& Value() const; +//Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfShapeReal(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +TopoDS_Shape myKey; +Standard_Real myValue; + + +}; + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Standard_Real +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal +#define TCollection_DataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_DataMapNode +#undef TCollection_DataMapNode_hxx +#undef TCollection_DataMapIterator +#undef TCollection_DataMapIterator_hxx +#undef Handle_TCollection_DataMapNode +#undef TCollection_DataMapNode_Type_ +#undef TCollection_DataMap +#undef TCollection_DataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx new file mode 100644 index 000000000..f44a0c520 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx @@ -0,0 +1,100 @@ +// 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 + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfShapeReal_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile +#include +#endif +//GEOMAlgo_DataMapNodeOfDataMapOfShapeReal::~GEOMAlgo_DataMapNodeOfDataMapOfShapeReal() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfShapeReal", + sizeof(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal))) { + _anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfShapeReal::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) ; +} +//Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfShapeReal::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal() {} +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Standard_Real +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx new file mode 100644 index 000000000..fdcdfb4bc --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx @@ -0,0 +1,132 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#define _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class TopoDS_Shape; +class GEOMAlgo_ShapeSet; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapOfShapeShapeSet; +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet; + + + +class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet(const TopoDS_Shape& K,const GEOMAlgo_ShapeSet& I,const TCollection_MapNodePtr& n); + + TopoDS_Shape& Key() const; + + GEOMAlgo_ShapeSet& Value() const; +//Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +TopoDS_Shape myKey; +GEOMAlgo_ShapeSet myValue; + + +}; + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem GEOMAlgo_ShapeSet +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet +#define TCollection_DataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_DataMapNode +#undef TCollection_DataMapNode_hxx +#undef TCollection_DataMapIterator +#undef TCollection_DataMapIterator_hxx +#undef Handle_TCollection_DataMapNode +#undef TCollection_DataMapNode_Type_ +#undef TCollection_DataMap +#undef TCollection_DataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx new file mode 100644 index 000000000..6d4e37236 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx @@ -0,0 +1,103 @@ +// 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 + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif +//GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet::~GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet", + sizeof(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet))) { + _anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) ; +} +//Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet() {} +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem GEOMAlgo_ShapeSet +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx index 60cb6712a..b847a7345 100644 --- a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -47,6 +47,7 @@ class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger; #include #endif + class GEOMAlgo_DataMapOfPassKeyInteger : public TCollection_BasicMap { public: @@ -65,29 +66,47 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_DataMapOfPassKeyInteger(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT GEOMAlgo_DataMapOfPassKeyInteger& Assign(const GEOMAlgo_DataMapOfPassKeyInteger& Other) ; GEOMAlgo_DataMapOfPassKeyInteger& operator =(const GEOMAlgo_DataMapOfPassKeyInteger& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~GEOMAlgo_DataMapOfPassKeyInteger() { Clear(); } + + Standard_EXPORT Standard_Boolean Bind(const GEOMAlgo_PassKey& K,const Standard_Integer& I) ; + + Standard_EXPORT Standard_Boolean IsBound(const GEOMAlgo_PassKey& K) const; + + Standard_EXPORT Standard_Boolean UnBind(const GEOMAlgo_PassKey& K) ; + + Standard_EXPORT const Standard_Integer& Find(const GEOMAlgo_PassKey& K) const; const Standard_Integer& operator()(const GEOMAlgo_PassKey& K) const { return Find(K); } + + Standard_EXPORT Standard_Integer& ChangeFind(const GEOMAlgo_PassKey& K) ; Standard_Integer& operator()(const GEOMAlgo_PassKey& K) { @@ -113,6 +132,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT GEOMAlgo_DataMapOfPassKeyInteger(const GEOMAlgo_DataMapOfPassKeyInteger& Other); diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx index 8cd1a4f52..0a831e442 100644 --- a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx new file mode 100644 index 000000000..601edc17c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx @@ -0,0 +1,157 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile +#define _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_NoSuchObject; +class TopTools_ListOfShape; +class TColStd_MapRealHasher; +class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape; +class GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapOfRealListOfShape : public TCollection_BasicMap { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapOfRealListOfShape(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT GEOMAlgo_DataMapOfRealListOfShape& Assign(const GEOMAlgo_DataMapOfRealListOfShape& Other) ; + GEOMAlgo_DataMapOfRealListOfShape& operator =(const GEOMAlgo_DataMapOfRealListOfShape& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~GEOMAlgo_DataMapOfRealListOfShape() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Bind(const Standard_Real& K,const TopTools_ListOfShape& I) ; + + +Standard_EXPORT Standard_Boolean IsBound(const Standard_Real& K) const; + + +Standard_EXPORT Standard_Boolean UnBind(const Standard_Real& K) ; + + +Standard_EXPORT const TopTools_ListOfShape& Find(const Standard_Real& K) const; + const TopTools_ListOfShape& operator()(const Standard_Real& K) const +{ + return Find(K); +} + + + +Standard_EXPORT TopTools_ListOfShape& ChangeFind(const Standard_Real& K) ; + TopTools_ListOfShape& operator()(const Standard_Real& K) +{ + return ChangeFind(K); +} + + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT GEOMAlgo_DataMapOfRealListOfShape(const GEOMAlgo_DataMapOfRealListOfShape& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx new file mode 100644 index 000000000..e1d5ca6e8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx @@ -0,0 +1,57 @@ +// 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 + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TColStd_MapRealHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile +#include +#endif + + +#define TheKey Standard_Real +#define TheKey_hxx +#define TheItem TopTools_ListOfShape +#define TheItem_hxx +#define Hasher TColStd_MapRealHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx new file mode 100644 index 000000000..94be38772 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx @@ -0,0 +1,157 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapOfShapeReal_HeaderFile +#define _GEOMAlgo_DataMapOfShapeReal_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_NoSuchObject; +class TopoDS_Shape; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal; +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapOfShapeReal : public TCollection_BasicMap { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeReal(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeReal& Assign(const GEOMAlgo_DataMapOfShapeReal& Other) ; + GEOMAlgo_DataMapOfShapeReal& operator =(const GEOMAlgo_DataMapOfShapeReal& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~GEOMAlgo_DataMapOfShapeReal() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Bind(const TopoDS_Shape& K,const Standard_Real& I) ; + + +Standard_EXPORT Standard_Boolean IsBound(const TopoDS_Shape& K) const; + + +Standard_EXPORT Standard_Boolean UnBind(const TopoDS_Shape& K) ; + + +Standard_EXPORT const Standard_Real& Find(const TopoDS_Shape& K) const; + const Standard_Real& operator()(const TopoDS_Shape& K) const +{ + return Find(K); +} + + + +Standard_EXPORT Standard_Real& ChangeFind(const TopoDS_Shape& K) ; + Standard_Real& operator()(const TopoDS_Shape& K) +{ + return ChangeFind(K); +} + + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeReal(const GEOMAlgo_DataMapOfShapeReal& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx new file mode 100644 index 000000000..06abae332 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx @@ -0,0 +1,57 @@ +// 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 + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Standard_Real +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx new file mode 100644 index 000000000..f7947802b --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx @@ -0,0 +1,155 @@ +// 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 + +#ifndef _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile +#define _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_NoSuchObject; +class TopoDS_Shape; +class GEOMAlgo_ShapeSet; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet; +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapOfShapeShapeSet : public TCollection_BasicMap { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeShapeSet(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeShapeSet& Assign(const GEOMAlgo_DataMapOfShapeShapeSet& Other) ; + GEOMAlgo_DataMapOfShapeShapeSet& operator =(const GEOMAlgo_DataMapOfShapeShapeSet& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~GEOMAlgo_DataMapOfShapeShapeSet() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Bind(const TopoDS_Shape& K,const GEOMAlgo_ShapeSet& I) ; + + +Standard_EXPORT Standard_Boolean IsBound(const TopoDS_Shape& K) const; + + +Standard_EXPORT Standard_Boolean UnBind(const TopoDS_Shape& K) ; + + +Standard_EXPORT const GEOMAlgo_ShapeSet& Find(const TopoDS_Shape& K) const; + const GEOMAlgo_ShapeSet& operator()(const TopoDS_Shape& K) const +{ + return Find(K); +} + + + +Standard_EXPORT GEOMAlgo_ShapeSet& ChangeFind(const TopoDS_Shape& K) ; + GEOMAlgo_ShapeSet& operator()(const TopoDS_Shape& K) +{ + return ChangeFind(K); +} + + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeShapeSet(const GEOMAlgo_DataMapOfShapeShapeSet& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx new file mode 100644 index 000000000..96d931bf2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx @@ -0,0 +1,60 @@ +// 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 + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem GEOMAlgo_ShapeSet +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl index b5c0a5d36..9f30dab59 100644 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl @@ -1,22 +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 -// +-- 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_FinderShapeOn.cdl -- Created: Tue Jan 11 14:35:52 2005 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx index 5d9cfe4d8..fbc85f0d9 100644 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -60,6 +60,7 @@ class TopTools_DataMapOfShapeShape; #include #endif + class GEOMAlgo_FinderShapeOn : public GEOMAlgo_ShapeAlgo { public: @@ -78,16 +79,36 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_FinderShapeOn(); Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn(); + + Standard_EXPORT virtual void Perform() ; + + Standard_EXPORT void SetSurface(const Handle(Geom_Surface)& aS) ; + + Standard_EXPORT void SetShapeType(const TopAbs_ShapeEnum aST) ; + + Standard_EXPORT void SetState(const GEOMAlgo_State aSF) ; + + Standard_EXPORT const Handle_Geom_Surface& Surface() const; + + Standard_EXPORT TopAbs_ShapeEnum ShapeType() const; + + Standard_EXPORT GEOMAlgo_State State() const; + + Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + + Standard_EXPORT static void CopySource(const TopoDS_Shape& aS,TopTools_DataMapOfShapeShape& aImages,TopTools_DataMapOfShapeShape& aOriginals,TopoDS_Shape& aSC) ; @@ -98,11 +119,23 @@ protected: // Methods PROTECTED // + + Standard_EXPORT virtual void CheckData() ; + + Standard_EXPORT void MakeArgument1() ; + + Standard_EXPORT void MakeArgument2() ; + + Standard_EXPORT void Find() ; + + Standard_EXPORT void Find(const TopoDS_Shape& aS) ; + + Standard_EXPORT void FindVertices() ; diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx index 37310e691..514a8fe3b 100644 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx index a0204f414..6b45d4c1f 100644 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _Geom_Surface_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl index 0629101be..6a0b72e5b 100644 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl @@ -1,22 +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 -// +-- 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_FinderShapeOn1.cdl -- Created: Fri Mar 4 10:26:54 2005 -- Author: Peter KURNEV @@ -29,7 +29,8 @@ class FinderShapeOn1 from GEOMAlgo ---Purpose: -uses +uses + Pnt from gp,-- Surface from Geom, Surface from GeomAdaptor, diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx index 267f191e1..d07cda45c 100644 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -44,12 +44,16 @@ #ifndef _GEOMAlgo_ShapeAlgo_HeaderFile #include #endif +#ifndef _TopAbs_State_HeaderFile +#include +#endif class Geom_Surface; class TopTools_ListOfShape; class TopoDS_Face; class GEOMAlgo_ListOfPnt; class TopoDS_Edge; class GEOMAlgo_IndexedDataMapOfShapeState; +class gp_Pnt; #ifndef _Standard_HeaderFile @@ -59,6 +63,7 @@ class GEOMAlgo_IndexedDataMapOfShapeState; #include #endif + class GEOMAlgo_FinderShapeOn1 : public GEOMAlgo_ShapeAlgo { public: @@ -77,20 +82,48 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_FinderShapeOn1(); Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn1(); + + Standard_EXPORT void SetSurface(const Handle(Geom_Surface)& aS) ; + + Standard_EXPORT void SetShapeType(const TopAbs_ShapeEnum aST) ; + + Standard_EXPORT void SetState(const GEOMAlgo_State aSF) ; + + Standard_EXPORT void SetNbPntsMin(const Standard_Integer aNb) ; + + Standard_EXPORT Standard_Integer NbPntsMin() const; + + Standard_EXPORT void SetNbPntsMax(const Standard_Integer aNb) ; + + Standard_EXPORT Standard_Integer NbPntsMax() const; + + Standard_EXPORT const Handle_Geom_Surface& Surface() const; + + Standard_EXPORT TopAbs_ShapeEnum ShapeType() const; + + Standard_EXPORT GEOMAlgo_State State() const; + + Standard_EXPORT virtual void Perform() ; + + Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + + Standard_EXPORT const GEOMAlgo_IndexedDataMapOfShapeState& MSS() const; @@ -101,15 +134,33 @@ protected: // Methods PROTECTED // + + Standard_EXPORT virtual void CheckData() ; + + Standard_EXPORT void ProcessVertices() ; + + Standard_EXPORT void ProcessEdges() ; + + Standard_EXPORT void ProcessFaces() ; + + Standard_EXPORT void ProcessSolids() ; + + Standard_EXPORT void InnerPoints(const TopoDS_Face& aF,GEOMAlgo_ListOfPnt& aLP) ; + + Standard_EXPORT void InnerPoints(const TopoDS_Edge& aE,GEOMAlgo_ListOfPnt& aLP) ; + + Standard_EXPORT void InnerPoints(const TopoDS_Edge& aE,const Standard_Integer aNbPnts,GEOMAlgo_ListOfPnt& aLP) ; -Standard_EXPORT virtual TopAbs_State GetPointState(const gp_Pnt& aP) ; + + +Standard_EXPORT virtual TopAbs_State GetPointState(const gp_Pnt& aP) ; // Fields PROTECTED diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx index a0f3b96d8..da80e4d18 100644 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx index 93dc321dc..db9c4b7f7 100644 --- a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _Geom_Surface_HeaderFile #include #endif @@ -35,6 +35,9 @@ #ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile #include #endif +#ifndef _gp_Pnt_HeaderFile +#include +#endif #ifndef _GEOMAlgo_FinderShapeOn1_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl index 569314e4a..26fadda0a 100644 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl +++ b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl @@ -1,22 +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 -// +-- 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_GlueAnalyser.cdl -- Created: Wed Dec 15 11:03:03 2004 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx index e87223a53..8b815072f 100644 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx +++ b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -46,6 +46,7 @@ class TopTools_ListOfShape; #include #endif + class GEOMAlgo_GlueAnalyser : public GEOMAlgo_Gluer { public: @@ -64,12 +65,24 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_GlueAnalyser(); Standard_EXPORT virtual ~GEOMAlgo_GlueAnalyser(); + + Standard_EXPORT virtual void Perform() ; + + Standard_EXPORT Standard_Boolean HasSolidsToGlue() const; + + Standard_EXPORT const GEOMAlgo_ListOfCoupleOfShapes& SolidsToGlue() const; + + Standard_EXPORT Standard_Boolean HasSolidsAlone() const; + + Standard_EXPORT const TopTools_ListOfShape& SolidsAlone() const; @@ -80,10 +93,20 @@ protected: // Methods PROTECTED // + + Standard_EXPORT void DetectVertices() ; + + Standard_EXPORT void DetectEdges() ; + + Standard_EXPORT void DetectFaces() ; + + Standard_EXPORT void DetectShapes(const TopAbs_ShapeEnum aType) ; + + Standard_EXPORT void DetectSolids() ; diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx index 833d4d8bd..d7456f060 100644 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx +++ b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx index bc6681f5b..f89777323 100644 --- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx +++ b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _GEOMAlgo_ListOfCoupleOfShapes_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.cdl b/src/GEOMAlgo/GEOMAlgo_Gluer.cdl index 442f05305..9b213cb3e 100755 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.cdl +++ b/src/GEOMAlgo/GEOMAlgo_Gluer.cdl @@ -1,22 +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 -// +-- 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_Gluer.cdl -- Created: Sat Dec 04 12:41:32 2004 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.hxx b/src/GEOMAlgo/GEOMAlgo_Gluer.hxx index 7d9b77348..0f8a871ab 100644 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.hxx +++ b/src/GEOMAlgo/GEOMAlgo_Gluer.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -61,6 +61,7 @@ class TopTools_DataMapOfShapeShape; #include #endif + class GEOMAlgo_Gluer : public GEOMAlgo_ShapeAlgo { public: @@ -79,16 +80,36 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_Gluer(); Standard_EXPORT virtual ~GEOMAlgo_Gluer(); + + Standard_EXPORT void SetCheckGeometry(const Standard_Boolean aFlag) ; + + Standard_EXPORT Standard_Boolean CheckGeometry() const; + + Standard_EXPORT virtual void Perform() ; + + Standard_EXPORT Standard_Integer AloneShapes() const; + + Standard_EXPORT const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ; + + Standard_EXPORT const TopTools_ListOfShape& Generated(const TopoDS_Shape& S) ; + + Standard_EXPORT Standard_Boolean IsDeleted(const TopoDS_Shape& S) ; + + Standard_EXPORT const TopTools_DataMapOfShapeListOfShape& Images() const; + + Standard_EXPORT const TopTools_DataMapOfShapeShape& Origins() const; @@ -99,21 +120,53 @@ protected: // Methods PROTECTED // + + Standard_EXPORT virtual void CheckData() ; + + Standard_EXPORT virtual void CheckResult() ; + + Standard_EXPORT void MakeVertices() ; + + Standard_EXPORT void MakeEdges() ; + + Standard_EXPORT void MakeFaces() ; + + Standard_EXPORT void MakeShapes(const TopAbs_ShapeEnum aType) ; + + Standard_EXPORT void MakeShells() ; + + Standard_EXPORT void MakeSolids() ; + + Standard_EXPORT void InnerTolerance() ; + + Standard_EXPORT void EdgePassKey(const TopoDS_Edge& aE,GEOMAlgo_PassKeyShape& aPK) ; + + Standard_EXPORT void FacePassKey(const TopoDS_Face& aF,GEOMAlgo_PassKeyShape& aPK) ; + + Standard_EXPORT void MakeVertex(const TopTools_ListOfShape& aLV,TopoDS_Vertex& aNewV) ; + + Standard_EXPORT void MakeEdge(const TopoDS_Edge& aEdge,TopoDS_Edge& aNewEdge) ; + + Standard_EXPORT void MakeFace(const TopoDS_Face& aFace,TopoDS_Face& aNewEdge) ; + + Standard_EXPORT Standard_Boolean IsToReverse(const TopoDS_Face& aFR,const TopoDS_Face& aF) ; + + Standard_EXPORT Standard_Boolean HasNewSubShape(const TopoDS_Shape& aS) const; diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.ixx b/src/GEOMAlgo/GEOMAlgo_Gluer.ixx index b27442421..8fe0fabdf 100644 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.ixx +++ b/src/GEOMAlgo/GEOMAlgo_Gluer.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.jxx b/src/GEOMAlgo/GEOMAlgo_Gluer.jxx index 52df5103a..254e050e8 100644 --- a/src/GEOMAlgo/GEOMAlgo_Gluer.jxx +++ b/src/GEOMAlgo/GEOMAlgo_Gluer.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopTools_ListOfShape_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx index 8f6683ad5..bb87ad0a1 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -44,39 +44,31 @@ class TColStd_MapIntegerHasher; class GEOMAlgo_IndexedDataMapOfIntegerShape; + class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape : public TCollection_MapNode { 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); - } // Methods PUBLIC // + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(const Standard_Integer& K1,const Standard_Integer K2,const TopoDS_Shape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + Standard_Integer& Key1() const; + Standard_Integer& Key2() const; + TCollection_MapNodePtr& Next2() const; + TopoDS_Shape& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(); +//Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx index 84e494ec5..42561ece4 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _GEOMAlgo_IndexedDataMapOfIntegerShape_HeaderFile #include #endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} +//GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMa { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntege { return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) ; } -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} +//Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} #define TheKey Standard_Integer #define TheKey_hxx #define TheItem TopoDS_Shape diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx index f8310d70a..4d5556d0d 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,39 +48,31 @@ class GEOMAlgo_PassKeyMapHasher; class GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape; + class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape : public TCollection_MapNode { 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); - } // Methods PUBLIC // + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape(const GEOMAlgo_PassKeyShape& K1,const Standard_Integer K2,const TopTools_ListOfShape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + GEOMAlgo_PassKeyShape& Key1() const; + Standard_Integer& Key2() const; + TCollection_MapNodePtr& Next2() const; + TopTools_ListOfShape& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape(); +//Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx index f2a471ddb..dbdb8ae8a 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -35,7 +35,7 @@ #ifndef _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile #include #endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape() {} +//GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape() {} @@ -43,11 +43,8 @@ Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMa { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -80,11 +77,11 @@ const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKe { return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) ; } -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape() {} +//Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape() {} #define TheKey GEOMAlgo_PassKeyShape #define TheKey_hxx #define TheItem TopTools_ListOfShape diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx index 084701c5a..b88bbcd3d 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,39 +48,31 @@ class TopTools_ShapeMapHasher; class GEOMAlgo_IndexedDataMapOfShapeBox; + class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox : public TCollection_MapNode { 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); - } // Methods PUBLIC // + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(const TopoDS_Shape& K1,const Standard_Integer K2,const Bnd_Box& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + TopoDS_Shape& Key1() const; + Standard_Integer& Key2() const; + TCollection_MapNodePtr& Next2() const; + Bnd_Box& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(); +//Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx index 16eda4fb5..e2efeae43 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -35,7 +35,7 @@ #ifndef _GEOMAlgo_IndexedDataMapOfShapeBox_HeaderFile #include #endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} +//GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} @@ -43,11 +43,8 @@ Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMa { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -80,11 +77,11 @@ const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeB { return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) ; } -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} +//Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} #define TheKey TopoDS_Shape #define TheKey_hxx #define TheItem Bnd_Box diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx index 427dd9533..b7f8701e1 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -47,39 +47,31 @@ class TopTools_ShapeMapHasher; class GEOMAlgo_IndexedDataMapOfShapeState; + class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState : public TCollection_MapNode { 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); - } // Methods PUBLIC // + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState(const TopoDS_Shape& K1,const Standard_Integer K2,const TopAbs_State& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + TopoDS_Shape& Key1() const; + Standard_Integer& Key2() const; + TCollection_MapNodePtr& Next2() const; + TopAbs_State& Value() const; -Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState(); +//Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx index 8bf0d942a..fec6e37ca 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile #include #endif -GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState() {} +//GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMa { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeS { return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) ; } -Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState() {} +//Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState() {} #define TheKey TopoDS_Shape #define TheKey_hxx #define TheItem TopAbs_State diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx index d615873d1..513ac78bf 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -47,6 +47,7 @@ class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape; #include #endif + class GEOMAlgo_IndexedDataMapOfIntegerShape : public TCollection_BasicMap { public: @@ -65,39 +66,67 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfIntegerShape(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfIntegerShape& Assign(const GEOMAlgo_IndexedDataMapOfIntegerShape& Other) ; GEOMAlgo_IndexedDataMapOfIntegerShape& operator =(const GEOMAlgo_IndexedDataMapOfIntegerShape& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~GEOMAlgo_IndexedDataMapOfIntegerShape() { Clear(); } + + Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const TopoDS_Shape& I) ; + + Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const TopoDS_Shape& T) ; + + Standard_EXPORT void RemoveLast() ; + + Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; + + Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; + + Standard_EXPORT const TopoDS_Shape& FindFromIndex(const Standard_Integer I) const; const TopoDS_Shape& operator ()(const Standard_Integer I) const { return FindFromIndex(I); } + + Standard_EXPORT TopoDS_Shape& ChangeFromIndex(const Standard_Integer I) ; TopoDS_Shape& operator ()(const Standard_Integer I) { return ChangeFromIndex(I); } + + Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; + + Standard_EXPORT const TopoDS_Shape& FindFromKey(const Standard_Integer& K) const; + + Standard_EXPORT TopoDS_Shape& ChangeFromKey(const Standard_Integer& K) ; @@ -118,6 +147,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfIntegerShape(const GEOMAlgo_IndexedDataMapOfIntegerShape& Other); diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx index 4b63205c8..8ec0d0daa 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx index a77707d37..df92465d1 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,6 +48,7 @@ class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape; #include #endif + class GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape : public TCollection_BasicMap { public: @@ -66,39 +67,67 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Assign(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other) ; GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& operator =(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape() { Clear(); } + + Standard_EXPORT Standard_Integer Add(const GEOMAlgo_PassKeyShape& K,const TopTools_ListOfShape& I) ; + + Standard_EXPORT void Substitute(const Standard_Integer I,const GEOMAlgo_PassKeyShape& K,const TopTools_ListOfShape& T) ; + + Standard_EXPORT void RemoveLast() ; + + Standard_EXPORT Standard_Boolean Contains(const GEOMAlgo_PassKeyShape& K) const; + + Standard_EXPORT const GEOMAlgo_PassKeyShape& FindKey(const Standard_Integer I) const; + + Standard_EXPORT const TopTools_ListOfShape& FindFromIndex(const Standard_Integer I) const; const TopTools_ListOfShape& operator ()(const Standard_Integer I) const { return FindFromIndex(I); } + + Standard_EXPORT TopTools_ListOfShape& ChangeFromIndex(const Standard_Integer I) ; TopTools_ListOfShape& operator ()(const Standard_Integer I) { return ChangeFromIndex(I); } + + Standard_EXPORT Standard_Integer FindIndex(const GEOMAlgo_PassKeyShape& K) const; + + Standard_EXPORT const TopTools_ListOfShape& FindFromKey(const GEOMAlgo_PassKeyShape& K) const; + + Standard_EXPORT TopTools_ListOfShape& ChangeFromKey(const GEOMAlgo_PassKeyShape& K) ; @@ -119,6 +148,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other); diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx index 0fa671f46..cbd20e4f0 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx index bd0d1e0ec..9b05242de 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,6 +48,7 @@ class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox; #include #endif + class GEOMAlgo_IndexedDataMapOfShapeBox : public TCollection_BasicMap { public: @@ -66,39 +67,67 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeBox(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeBox& Assign(const GEOMAlgo_IndexedDataMapOfShapeBox& Other) ; GEOMAlgo_IndexedDataMapOfShapeBox& operator =(const GEOMAlgo_IndexedDataMapOfShapeBox& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~GEOMAlgo_IndexedDataMapOfShapeBox() { Clear(); } + + Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const Bnd_Box& I) ; + + Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const Bnd_Box& T) ; + + Standard_EXPORT void RemoveLast() ; + + Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; + + Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; + + Standard_EXPORT const Bnd_Box& FindFromIndex(const Standard_Integer I) const; const Bnd_Box& operator ()(const Standard_Integer I) const { return FindFromIndex(I); } + + Standard_EXPORT Bnd_Box& ChangeFromIndex(const Standard_Integer I) ; Bnd_Box& operator ()(const Standard_Integer I) { return ChangeFromIndex(I); } + + Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; + + Standard_EXPORT const Bnd_Box& FindFromKey(const TopoDS_Shape& K) const; + + Standard_EXPORT Bnd_Box& ChangeFromKey(const TopoDS_Shape& K) ; @@ -119,6 +148,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeBox(const GEOMAlgo_IndexedDataMapOfShapeBox& Other); diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx index ed71748a5..c4add9933 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx index 1f15ba495..d7f988310 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -50,6 +50,7 @@ class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState; #include #endif + class GEOMAlgo_IndexedDataMapOfShapeState : public TCollection_BasicMap { public: @@ -68,39 +69,67 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeState(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeState& Assign(const GEOMAlgo_IndexedDataMapOfShapeState& Other) ; GEOMAlgo_IndexedDataMapOfShapeState& operator =(const GEOMAlgo_IndexedDataMapOfShapeState& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~GEOMAlgo_IndexedDataMapOfShapeState() { Clear(); } + + Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const TopAbs_State& I) ; + + Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const TopAbs_State& T) ; + + Standard_EXPORT void RemoveLast() ; + + Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; + + Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; + + Standard_EXPORT const TopAbs_State& FindFromIndex(const Standard_Integer I) const; const TopAbs_State& operator ()(const Standard_Integer I) const { return FindFromIndex(I); } + + Standard_EXPORT TopAbs_State& ChangeFromIndex(const Standard_Integer I) ; TopAbs_State& operator ()(const Standard_Integer I) { return ChangeFromIndex(I); } + + Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; + + Standard_EXPORT const TopAbs_State& FindFromKey(const TopoDS_Shape& K) const; + + Standard_EXPORT TopAbs_State& ChangeFromKey(const TopoDS_Shape& K) ; @@ -121,6 +150,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT GEOMAlgo_IndexedDataMapOfShapeState(const GEOMAlgo_IndexedDataMapOfShapeState& Other); diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx index 0dd967834..92ab03801 100644 --- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx index 93a423bbb..738875828 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -43,6 +43,7 @@ class GEOMAlgo_ListNodeOfListOfCoupleOfShapes; #include #endif + class GEOMAlgo_ListIteratorOfListOfCoupleOfShapes { public: @@ -61,11 +62,22 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_ListIteratorOfListOfCoupleOfShapes(); + + Standard_EXPORT GEOMAlgo_ListIteratorOfListOfCoupleOfShapes(const GEOMAlgo_ListOfCoupleOfShapes& L); + + Standard_EXPORT void Initialize(const GEOMAlgo_ListOfCoupleOfShapes& L) ; + Standard_Boolean More() const; + + Standard_EXPORT void Next() ; + + Standard_EXPORT GEOMAlgo_CoupleOfShapes& Value() const; diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx index 51af2be73..ab548e32e 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx index ade23aa45..43bd2f9d0 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -43,6 +43,7 @@ class GEOMAlgo_ListNodeOfListOfPnt; #include #endif + class GEOMAlgo_ListIteratorOfListOfPnt { public: @@ -61,11 +62,22 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_ListIteratorOfListOfPnt(); + + Standard_EXPORT GEOMAlgo_ListIteratorOfListOfPnt(const GEOMAlgo_ListOfPnt& L); + + Standard_EXPORT void Initialize(const GEOMAlgo_ListOfPnt& L) ; + Standard_Boolean More() const; + + Standard_EXPORT void Next() ; + + Standard_EXPORT gp_Pnt& Value() const; diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx index b46afbab3..179cdce45 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx index 3addadf19..8f8dd4b42 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -41,36 +41,25 @@ class GEOMAlgo_ListOfCoupleOfShapes; class GEOMAlgo_ListIteratorOfListOfCoupleOfShapes; + class GEOMAlgo_ListNodeOfListOfCoupleOfShapes : public TCollection_MapNode { 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); - } // Methods PUBLIC // + GEOMAlgo_ListNodeOfListOfCoupleOfShapes(const GEOMAlgo_CoupleOfShapes& I,const TCollection_MapNodePtr& n); + GEOMAlgo_CoupleOfShapes& Value() const; -Standard_EXPORT ~GEOMAlgo_ListNodeOfListOfCoupleOfShapes(); +//Standard_EXPORT ~GEOMAlgo_ListNodeOfListOfCoupleOfShapes(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx index 65de62b3d..2ce4cb14b 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_HeaderFile #include #endif -GEOMAlgo_ListNodeOfListOfCoupleOfShapes::~GEOMAlgo_ListNodeOfListOfCoupleOfShapes() {} +//GEOMAlgo_ListNodeOfListOfCoupleOfShapes::~GEOMAlgo_ListNodeOfListOfCoupleOfShapes() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfCoupleOfShapes_Ty { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& GEOMAlgo_ListNodeOfListOfCoupleOfShapes::DynamicTyp { return STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) ; } -Standard_Boolean GEOMAlgo_ListNodeOfListOfCoupleOfShapes::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes::~Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes() {} +//Standard_Boolean GEOMAlgo_ListNodeOfListOfCoupleOfShapes::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes::~Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes() {} #define Item GEOMAlgo_CoupleOfShapes #define Item_hxx #define TCollection_ListNode GEOMAlgo_ListNodeOfListOfCoupleOfShapes diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx index 24d004406..5fb729abd 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -41,36 +41,25 @@ class GEOMAlgo_ListOfPnt; class GEOMAlgo_ListIteratorOfListOfPnt; + class GEOMAlgo_ListNodeOfListOfPnt : public TCollection_MapNode { 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); - } // Methods PUBLIC // + GEOMAlgo_ListNodeOfListOfPnt(const gp_Pnt& I,const TCollection_MapNodePtr& n); + gp_Pnt& Value() const; -Standard_EXPORT ~GEOMAlgo_ListNodeOfListOfPnt(); +//Standard_EXPORT ~GEOMAlgo_ListNodeOfListOfPnt(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfPnt_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx index fb7f104f6..4514c4898 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile #include #endif -GEOMAlgo_ListNodeOfListOfPnt::~GEOMAlgo_ListNodeOfListOfPnt() {} +//GEOMAlgo_ListNodeOfListOfPnt::~GEOMAlgo_ListNodeOfListOfPnt() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfPnt_Type_() { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& GEOMAlgo_ListNodeOfListOfPnt::DynamicType() const { return STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt) ; } -Standard_Boolean GEOMAlgo_ListNodeOfListOfPnt::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_GEOMAlgo_ListNodeOfListOfPnt::~Handle_GEOMAlgo_ListNodeOfListOfPnt() {} +//Standard_Boolean GEOMAlgo_ListNodeOfListOfPnt::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_ListNodeOfListOfPnt::~Handle_GEOMAlgo_ListNodeOfListOfPnt() {} #define Item gp_Pnt #define Item_hxx #define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx b/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx index b3325c16b..a535c2261 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -45,6 +45,7 @@ class GEOMAlgo_ListNodeOfListOfCoupleOfShapes; #include #endif + class GEOMAlgo_ListOfCoupleOfShapes { public: @@ -63,34 +64,71 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_ListOfCoupleOfShapes(); + + Standard_EXPORT void Assign(const GEOMAlgo_ListOfCoupleOfShapes& Other) ; void operator=(const GEOMAlgo_ListOfCoupleOfShapes& Other) { Assign(Other); } + + Standard_EXPORT Standard_Integer Extent() const; + + Standard_EXPORT void Clear() ; ~GEOMAlgo_ListOfCoupleOfShapes() { Clear(); } + Standard_Boolean IsEmpty() const; + + Standard_EXPORT void Prepend(const GEOMAlgo_CoupleOfShapes& I) ; + + Standard_EXPORT void Prepend(const GEOMAlgo_CoupleOfShapes& I,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& theIt) ; + + Standard_EXPORT void Prepend(GEOMAlgo_ListOfCoupleOfShapes& Other) ; + + Standard_EXPORT void Append(const GEOMAlgo_CoupleOfShapes& I) ; + + Standard_EXPORT void Append(const GEOMAlgo_CoupleOfShapes& I,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& theIt) ; + + Standard_EXPORT void Append(GEOMAlgo_ListOfCoupleOfShapes& Other) ; + + Standard_EXPORT GEOMAlgo_CoupleOfShapes& First() const; + + Standard_EXPORT GEOMAlgo_CoupleOfShapes& Last() const; + + Standard_EXPORT void RemoveFirst() ; + + Standard_EXPORT void Remove(GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; + + Standard_EXPORT void InsertBefore(const GEOMAlgo_CoupleOfShapes& I,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; + + Standard_EXPORT void InsertBefore(GEOMAlgo_ListOfCoupleOfShapes& Other,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; + + Standard_EXPORT void InsertAfter(const GEOMAlgo_CoupleOfShapes& I,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; + + Standard_EXPORT void InsertAfter(GEOMAlgo_ListOfCoupleOfShapes& Other,GEOMAlgo_ListIteratorOfListOfCoupleOfShapes& It) ; @@ -112,6 +150,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT GEOMAlgo_ListOfCoupleOfShapes(const GEOMAlgo_ListOfCoupleOfShapes& Other); diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx index 8a77286c7..838464db1 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx index d7958521f..94a8be445 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -45,6 +45,7 @@ class GEOMAlgo_ListNodeOfListOfPnt; #include #endif + class GEOMAlgo_ListOfPnt { public: @@ -63,34 +64,71 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_ListOfPnt(); + + Standard_EXPORT void Assign(const GEOMAlgo_ListOfPnt& Other) ; void operator=(const GEOMAlgo_ListOfPnt& Other) { Assign(Other); } + + Standard_EXPORT Standard_Integer Extent() const; + + Standard_EXPORT void Clear() ; ~GEOMAlgo_ListOfPnt() { Clear(); } + Standard_Boolean IsEmpty() const; + + Standard_EXPORT void Prepend(const gp_Pnt& I) ; + + Standard_EXPORT void Prepend(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& theIt) ; + + Standard_EXPORT void Prepend(GEOMAlgo_ListOfPnt& Other) ; + + Standard_EXPORT void Append(const gp_Pnt& I) ; + + Standard_EXPORT void Append(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& theIt) ; + + Standard_EXPORT void Append(GEOMAlgo_ListOfPnt& Other) ; + + Standard_EXPORT gp_Pnt& First() const; + + Standard_EXPORT gp_Pnt& Last() const; + + Standard_EXPORT void RemoveFirst() ; + + Standard_EXPORT void Remove(GEOMAlgo_ListIteratorOfListOfPnt& It) ; + + Standard_EXPORT void InsertBefore(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& It) ; + + Standard_EXPORT void InsertBefore(GEOMAlgo_ListOfPnt& Other,GEOMAlgo_ListIteratorOfListOfPnt& It) ; + + Standard_EXPORT void InsertAfter(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& It) ; + + Standard_EXPORT void InsertAfter(GEOMAlgo_ListOfPnt& Other,GEOMAlgo_ListIteratorOfListOfPnt& It) ; @@ -112,6 +150,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT GEOMAlgo_ListOfPnt(const GEOMAlgo_ListOfPnt& Other); diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx index c663efc01..295d9ef59 100644 --- a/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx +++ b/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx b/src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx new file mode 100644 index 000000000..1340244b4 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx @@ -0,0 +1,27 @@ +// 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 + +#ifndef _GEOMAlgo_PWireEdgeSet_HeaderFile +#define _GEOMAlgo_PWireEdgeSet_HeaderFile + +class GEOMAlgo_WireEdgeSet; + +typedef GEOMAlgo_WireEdgeSet* GEOMAlgo_PWireEdgeSet; + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.cdl b/src/GEOMAlgo/GEOMAlgo_PassKey.cdl index 5644a07ff..91aa09751 100755 --- a/src/GEOMAlgo/GEOMAlgo_PassKey.cdl +++ b/src/GEOMAlgo/GEOMAlgo_PassKey.cdl @@ -1,22 +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 -// +-- 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_PassKey.cdl -- Created: -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.hxx b/src/GEOMAlgo/GEOMAlgo_PassKey.hxx index 54051e170..b040fb0f4 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKey.hxx +++ b/src/GEOMAlgo/GEOMAlgo_PassKey.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,6 +39,7 @@ class TColStd_ListOfInteger; #include #endif + class GEOMAlgo_PassKey { public: @@ -57,25 +58,55 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_PassKey(); + + Standard_EXPORT GEOMAlgo_PassKey& Assign(const GEOMAlgo_PassKey& Other) ; GEOMAlgo_PassKey& operator =(const GEOMAlgo_PassKey& Other) { return Assign(Other); } + + Standard_EXPORT void SetIds(const Standard_Integer aI1) ; + + Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2) ; + + Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3) ; + + Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3,const Standard_Integer aI4) ; + + Standard_EXPORT void SetIds(const TColStd_ListOfInteger& aLS) ; + + Standard_EXPORT Standard_Integer NbMax() const; + + Standard_EXPORT void Clear() ; + + Standard_EXPORT void Compute() ; + + Standard_EXPORT Standard_Boolean IsEqual(const GEOMAlgo_PassKey& aOther) const; + + Standard_EXPORT Standard_Address Key() const; + + Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const; + + Standard_EXPORT Standard_Integer Id(const Standard_Integer aIndex) const; + + Standard_EXPORT void Dump() const; diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.ixx b/src/GEOMAlgo/GEOMAlgo_PassKey.ixx index 5d1d1e3ca..d935f86ec 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKey.ixx +++ b/src/GEOMAlgo/GEOMAlgo_PassKey.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.jxx b/src/GEOMAlgo/GEOMAlgo_PassKey.jxx index ed5b193d1..6363a879e 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKey.jxx +++ b/src/GEOMAlgo/GEOMAlgo_PassKey.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TColStd_ListOfInteger_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl index e16dae0e9..92e4d599b 100755 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl @@ -1,22 +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 -// +-- 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_PassKeyMapHasher.cdl -- Created: -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx index 6cf2510ab..2e0287ee6 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -36,6 +36,7 @@ class GEOMAlgo_PassKey; #include #endif + class GEOMAlgo_PassKeyMapHasher { public: @@ -54,7 +55,11 @@ public: } // Methods PUBLIC // + + Standard_EXPORT static Standard_Integer HashCode(const GEOMAlgo_PassKey& aPKey,const Standard_Integer Upper) ; + + Standard_EXPORT static Standard_Boolean IsEqual(const GEOMAlgo_PassKey& aPKey1,const GEOMAlgo_PassKey& aPKey2) ; diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx index 6bb118e58..331c4d8e9 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx index 5edadebd2..f1bedbdd8 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _GEOMAlgo_PassKey_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl index 523f5898e..d5d47c0bd 100755 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl @@ -1,22 +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 -// +-- 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_PassKeyShape.cdl -- Created: -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx index 0e4d113a3..ad06f55c4 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -37,6 +37,7 @@ class TopTools_ListOfShape; #include #endif + class GEOMAlgo_PassKeyShape : public GEOMAlgo_PassKey { public: @@ -55,11 +56,23 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_PassKeyShape(); + + Standard_EXPORT void SetIds(const TopoDS_Shape& aS) ; + + Standard_EXPORT void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ; + + Standard_EXPORT void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3) ; + + Standard_EXPORT void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3,const TopoDS_Shape& aS4) ; + + Standard_EXPORT void SetIds(const TopTools_ListOfShape& aLS) ; diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx index 2f34c7cf1..9934607fc 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx index ecc2db93f..06b1a9edb 100644 --- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopoDS_Shape_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl index 640176e39..26b5c27a9 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl +++ b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl @@ -1,22 +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 -// +-- 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_ShapeAlgo.cdl -- Created: Tue Dec 7 12:05:19 2004 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx index 27e6afad6..7647c9bf2 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -42,6 +42,7 @@ class TopoDS_Shape; #include #endif + class GEOMAlgo_ShapeAlgo : public GEOMAlgo_Algo { public: @@ -60,10 +61,20 @@ public: } // Methods PUBLIC // + + Standard_EXPORT void SetShape(const TopoDS_Shape& aS) ; + + Standard_EXPORT void SetTolerance(const Standard_Real aT) ; + + Standard_EXPORT const TopoDS_Shape& Shape() const; + + Standard_EXPORT Standard_Real Tolerance() const; + + Standard_EXPORT const TopoDS_Shape& Result() const; @@ -74,6 +85,8 @@ protected: // Methods PROTECTED // + + Standard_EXPORT GEOMAlgo_ShapeAlgo(); Standard_EXPORT virtual ~GEOMAlgo_ShapeAlgo(); diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx index 6e2441ab5..f1a56c8ff 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx +++ b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx index d5c10358d..94b9d0c30 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx +++ b/src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopoDS_Shape_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl b/src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl new file mode 100755 index 000000000..49ee9295c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl @@ -0,0 +1,78 @@ +-- 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_ShapeSet.cdl +-- Created: +-- Author: Peter KURNEV + +class ShapeSet from GEOMAlgo + + ---Purpose: Implementation some formal + -- opereations with Set of shapes + +uses + Shape from TopoDS, + MapOfOrientedShape from TopTools, + ListOfShape from TopTools, + ShapeEnum from TopAbs + +--raises + +is + Create + ---Purpose: Empty constructor + returns ShapeSet from GEOMAlgo; + + Add(me:out; + theLS:ListOfShape from TopTools); + ---Purpose: Adds shapes from the list theLS to the Set + + Add(me:out; + theShape:Shape from TopoDS); + ---Purpose: Adds shape theShape to the Set + + Add(me:out; + theShape:Shape from TopoDS; + theType :ShapeEnum from TopAbs); + ---Purpose: Adds sub-shapes of shape theShape, + -- that have type theType to the Set + + Subtract(me:out; + theSet:ShapeSet from GEOMAlgo); + ---Purpose: Removes shapes of theSet from the Set + + Clear(me:out); + ---Purpose: Clears internal fields + + Contains(me; + theSet:ShapeSet from GEOMAlgo) + ---Purpose: Returns True if the Set contains + -- all shapes of theSet + returns Boolean from Standard; + + GetSet(me) + ---Purpose: Returns the Set + returns ListOfShape from TopTools; + ---C++: return const & + +fields + myMap : MapOfOrientedShape from TopTools is protected; + myList : ListOfShape from TopTools is protected; + +end ShapeSet; diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx b/src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx new file mode 100755 index 000000000..dd2d5f7a6 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx @@ -0,0 +1,140 @@ +// 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_ShapeSet.cxx +// Created: +// Author: Peter KURNEV + + + +#include + +#include + +#include +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_ShapeSet::GEOMAlgo_ShapeSet() +{ +} +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Clear() +{ + myMap.Clear(); + myList.Clear(); +} +//======================================================================= +//function : Add +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Add(const TopoDS_Shape& theShape) +{ + myMap.Add(theShape); +} +//======================================================================= +//function : Add +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Add(const TopoDS_Shape& theShape, + const TopAbs_ShapeEnum theType) +{ + TopExp_Explorer aExp; + // + aExp.Init(theShape, theType); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aS=aExp.Current(); + myMap.Add(aS); + } +} +//======================================================================= +//function : Add +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Add(const TopTools_ListOfShape& theLS) +{ + TopTools_ListIteratorOfListOfShape aIt; + // + aIt.Initialize(theLS); + for (; aIt.More(); aIt.Next()) { + myMap.Add(aIt.Value()); + } +} +//======================================================================= +//function :GetSet +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_ShapeSet::GetSet()const +{ + TopTools_ListOfShape *pL; + TopTools_MapIteratorOfMapOfOrientedShape aIt; + // + pL=(TopTools_ListOfShape *)&myList; + pL->Clear(); + aIt.Initialize(myMap); + for (; aIt.More(); aIt.Next()) { + pL->Append(aIt.Key()); + } + return myList; +} +//======================================================================= +//function : Contains +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_ShapeSet::Contains(const GEOMAlgo_ShapeSet& theOther)const +{ + Standard_Boolean bRet; + TopAbs_Orientation aOr; + TopTools_ListIteratorOfListOfShape aIt; + // + bRet=Standard_True; + const TopTools_ListOfShape& aLS=theOther.GetSet(); + aIt.Initialize(aLS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + aOr=aF.Orientation(); + if (aOr==TopAbs_FORWARD||aOr==TopAbs_REVERSED) { + bRet=myMap.Contains(aF); + if (!bRet) { + break; + } + } + } + return bRet; +} +//======================================================================= +//function : Subtract +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Subtract(const GEOMAlgo_ShapeSet& theOther) +{ + TopTools_MapIteratorOfMapOfOrientedShape aIt; + // + aIt.Initialize(theOther.myMap); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Key(); + myMap.Remove(aS); + } +} diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx b/src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx new file mode 100644 index 000000000..98fb46415 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx @@ -0,0 +1,129 @@ +// 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 + +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#define _GEOMAlgo_ShapeSet_HeaderFile + +#ifndef _TopTools_MapOfOrientedShape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class TopTools_ListOfShape; +class TopoDS_Shape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! Implementation some formal
+//! opereations with Set of shapes
+class GEOMAlgo_ShapeSet { + +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); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_ShapeSet(); + +//! Adds shapes from the list theLS to the Set
+Standard_EXPORT void Add(const TopTools_ListOfShape& theLS) ; + +//! Adds shape theShape to the Set
+Standard_EXPORT void Add(const TopoDS_Shape& theShape) ; + +//! Adds sub-shapes of shape theShape,
+//! that have type theType to the Set
+Standard_EXPORT void Add(const TopoDS_Shape& theShape,const TopAbs_ShapeEnum theType) ; + +//! Removes shapes of theSet from the Set
+Standard_EXPORT void Subtract(const GEOMAlgo_ShapeSet& theSet) ; + +//! Clears internal fields
+Standard_EXPORT void Clear() ; + +//! Returns True if the Set contains
+//! all shapes of theSet
+Standard_EXPORT Standard_Boolean Contains(const GEOMAlgo_ShapeSet& theSet) const; + +//! Returns the Set
+Standard_EXPORT const TopTools_ListOfShape& GetSet() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +TopTools_MapOfOrientedShape myMap; +TopTools_ListOfShape myList; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx b/src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx new file mode 100644 index 000000000..445af6936 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx b/src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx new file mode 100644 index 000000000..b76eeb906 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx @@ -0,0 +1,28 @@ +// 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 + +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl index caf91063e..b26e74093 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl @@ -1,22 +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 -// +-- 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_ShapeSolid.cdl -- Created: Thu Jan 13 12:44:07 2005 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx index da207056c..fa7d823b7 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -46,6 +46,7 @@ class TopTools_ListOfShape; #include #endif + class GEOMAlgo_ShapeSolid : public GEOMAlgo_Algo { public: @@ -64,8 +65,12 @@ public: } // Methods PUBLIC // + + Standard_EXPORT void SetFiller(const BOPTools_DSFiller& aDSF) ; Standard_EXPORT virtual ~GEOMAlgo_ShapeSolid(); + + Standard_EXPORT const TopTools_ListOfShape& Shapes(const TopAbs_State aState) const; @@ -76,8 +81,14 @@ protected: // Methods PROTECTED // + + Standard_EXPORT GEOMAlgo_ShapeSolid(); + + Standard_EXPORT virtual void BuildResult() = 0; + + Standard_EXPORT virtual void Prepare() = 0; diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx index 7e682ae14..2ef2ca6ef 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx index 76fc8fce0..665e84a1a 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _BOPTools_DSFiller_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl b/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl index 22959a271..15d47e504 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl +++ b/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl @@ -1,22 +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 -// +-- 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_ShellSolid.cdl -- Created: Wed Jan 12 12:45:20 2005 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx index 2eb5a6c59..a074965c8 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx +++ b/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,6 +32,7 @@ #include #endif + class GEOMAlgo_ShellSolid : public GEOMAlgo_ShapeSolid { public: @@ -50,8 +51,12 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_ShellSolid(); Standard_EXPORT virtual ~GEOMAlgo_ShellSolid(); + + Standard_EXPORT virtual void Perform() ; @@ -62,8 +67,14 @@ protected: // Methods PROTECTED // + + Standard_EXPORT virtual void Prepare() ; + + Standard_EXPORT virtual void BuildResult() ; + + Standard_EXPORT void DetectSDFaces() ; diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx index dcadd3ef6..2be64c012 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx +++ b/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx index 79b529b94..c2e95da40 100644 --- a/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx +++ b/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _GEOMAlgo_ShellSolid_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl b/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl index cf105ffa1..aef1c1ae6 100644 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl +++ b/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl @@ -1,22 +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 -// +-- 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_SolidSolid.cdl -- Created: Wed Jan 26 12:05:14 2005 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx index fa1895c7b..7dcef534f 100644 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx +++ b/src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -36,6 +36,7 @@ class TopoDS_Shape; #include #endif + class GEOMAlgo_SolidSolid : public GEOMAlgo_ShellSolid { public: @@ -54,10 +55,18 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_SolidSolid(); Standard_EXPORT virtual ~GEOMAlgo_SolidSolid(); + + Standard_EXPORT virtual void Perform() ; + + Standard_EXPORT void SetShape2(const TopoDS_Shape& aS) ; + + Standard_EXPORT const TopoDS_Shape& Shape2() const; @@ -68,6 +77,8 @@ protected: // Methods PROTECTED // + + Standard_EXPORT virtual void BuildResult() ; diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx index af6eda6ac..fae2b9509 100644 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx +++ b/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx index f6711df29..1fa87e792 100644 --- a/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx +++ b/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopoDS_Shape_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.cdl b/src/GEOMAlgo/GEOMAlgo_Splitter.cdl new file mode 100755 index 000000000..a67c8e222 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.cdl @@ -0,0 +1,93 @@ +-- 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_Splitter.cdl +-- Created: +-- Author: Peter KURNEV +-- +-- Copyright: + +class Splitter from GEOMAlgo + inherits Builder from GEOMAlgo + + ---Purpose: Implementation of Gluing Operation Algorithm (GA) + +uses + + ShapeEnum from TopAbs, + Shape from TopoDS, + ListOfShape from TopTools, + MapOfShape from TopTools + +--raises + +is + + Create + ---Purpose: Empty constructor + returns Splitter from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_Splitter();" + + Clear(me:out) + ---Purpose: Clears internal fields and arguments + is redefined; + + AddTool (me:out; + theShape: Shape from TopoDS) + ---Purpose: Adds Tool argument theShape of the operation + is virtual; + + Tools(me) + ---Purpose: Returns the arguments of the operation + returns ListOfShape from TopTools; + ---C++: return const & + + SetLimit(me:out; + aLimit:ShapeEnum from TopAbs); + + Limit(me) + returns ShapeEnum from TopAbs; + -- + -- Protected methods + -- + BuildResult(me:out; + theType: ShapeEnum from TopAbs) + ---Purpose: Build the resulting shapes of type theType + is redefined protected; + + PostTreat(me:out) + ---Purpose: Provides post-tratment actions + is redefined protected; + + -- ===================================================== + -- + -- Debug methods + -- + AddToolCompound (me:out; + theShape: Shape from TopoDS); + ---Purpose: Adds Tool arguments of the operation as + -- shapes of upper level of container shape theShape + -- ===================================================== + +fields + myTools : ListOfShape from TopTools is protected; + myMapTools : MapOfShape from TopTools is protected; + myLimit : ShapeEnum from TopAbs is protected; +end Splitter; + diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.cxx b/src/GEOMAlgo/GEOMAlgo_Splitter.cxx new file mode 100755 index 000000000..7ea27c32f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.cxx @@ -0,0 +1,194 @@ +// 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_Splitter.cxx +// Created: +// Author: Peter KURNEV +// + +#include + +#include + +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_Splitter::GEOMAlgo_Splitter() +: + GEOMAlgo_Builder() +{ + myLimit=TopAbs_SHAPE; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_Splitter::~GEOMAlgo_Splitter() +{ +} +//======================================================================= +//function : AddToolCompound +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::AddToolCompound(const TopoDS_Shape& theShape) +{ + TopoDS_Iterator aIt; + // + aIt.Initialize(theShape); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + AddTool(aS); + } +} +//======================================================================= +//function : AddTool +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::AddTool(const TopoDS_Shape& theShape) +{ + if (myMapTools.Add(theShape)) { + myTools.Append(theShape); + // + AddShape(theShape); + } +} +//======================================================================= +//function : Tools +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Splitter::Tools()const +{ + return myTools; +} +//======================================================================= +//function : SetLimit +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::SetLimit(const TopAbs_ShapeEnum aLimit) +{ + myLimit=aLimit; +} +//======================================================================= +//function : Limit +//purpose : +//======================================================================= + TopAbs_ShapeEnum GEOMAlgo_Splitter::Limit()const +{ + return myLimit; +} +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::Clear() +{ + myTools.Clear(); + myMapTools.Clear(); + myLimit=TopAbs_SHAPE; + GEOMAlgo_Builder::Clear(); +} +//======================================================================= +//function : BuildResult +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType) +{ + myErrorStatus=0; + // + TopAbs_ShapeEnum aType; + BRep_Builder aBB; + TopTools_MapOfShape aM; + TopTools_ListIteratorOfListOfShape aIt, aItIm; + // + aIt.Initialize(myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + aType=aS.ShapeType(); + if (aType==theType && !myMapTools.Contains(aS)) { + if (myImages.HasImage(aS)) { + const TopTools_ListOfShape& aLSIm=myImages.Image(aS); + aItIm.Initialize(aLSIm); + for (; aItIm.More(); aItIm.Next()) { + const TopoDS_Shape& aSIm=aItIm.Value(); + if (aM.Add(aSIm)) { + aBB.Add(myShape, aSIm); + } + } + } + else { + if (aM.Add(aS)) { + aBB.Add(myShape, aS); + } + } + } + } +} +//======================================================================= +//function : PostTreat +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::PostTreat() +{ + if (myLimit!=TopAbs_SHAPE) { + Standard_Integer i, aNbS; + BRep_Builder aBB; + TopoDS_Compound aC; + TopTools_IndexedMapOfShape aM; + // + aBB.MakeCompound(aC); + // + TopExp::MapShapes(myShape, myLimit, aM); + aNbS=aM.Extent(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aM(i); + aBB.Add(aC, aS); + } + myShape=aC; + } + // + GEOMAlgo_Builder::PostTreat(); + // +} +// +// myErrorStatus +// +// 0 - Ok +// 1 - The object is just initialized +// 2 - DSFiller is failed +// 10 - No shapes to process +// 30 - SolidBuilder failed diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.hxx b/src/GEOMAlgo/GEOMAlgo_Splitter.hxx new file mode 100644 index 000000000..6ef1e92ac --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.hxx @@ -0,0 +1,133 @@ +// 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 + +#ifndef _GEOMAlgo_Splitter_HeaderFile +#define _GEOMAlgo_Splitter_HeaderFile + +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_MapOfShape_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Builder_HeaderFile +#include +#endif +class TopoDS_Shape; +class TopTools_ListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! Implementation of Gluing Operation Algorithm (GA)
+class GEOMAlgo_Splitter : public GEOMAlgo_Builder { + +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); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_Splitter(); +Standard_EXPORT virtual ~GEOMAlgo_Splitter(); + +//! Clears internal fields and arguments
+Standard_EXPORT virtual void Clear() ; + +//! Adds Tool argument theShape of the operation
+Standard_EXPORT virtual void AddTool(const TopoDS_Shape& theShape) ; + +//! Returns the arguments of the operation
+Standard_EXPORT const TopTools_ListOfShape& Tools() const; + + +Standard_EXPORT void SetLimit(const TopAbs_ShapeEnum aLimit) ; + + +Standard_EXPORT TopAbs_ShapeEnum Limit() const; + +//! Adds Tool arguments of the operation as
+//! shapes of upper level of container shape theShape
+//! =====================================================
+Standard_EXPORT void AddToolCompound(const TopoDS_Shape& theShape) ; + + + + + +protected: + + // Methods PROTECTED + // + +//! Build the resulting shapes of type theType
+Standard_EXPORT virtual void BuildResult(const TopAbs_ShapeEnum theType) ; + +//! Provides post-tratment actions
+Standard_EXPORT virtual void PostTreat() ; + + + // Fields PROTECTED + // +TopTools_ListOfShape myTools; +TopTools_MapOfShape myMapTools; +TopAbs_ShapeEnum myLimit; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.ixx b/src/GEOMAlgo/GEOMAlgo_Splitter.ixx new file mode 100644 index 000000000..ed917a680 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.jxx b/src/GEOMAlgo/GEOMAlgo_Splitter.jxx new file mode 100644 index 000000000..a15ed2864 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.jxx @@ -0,0 +1,28 @@ +// 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 + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Splitter_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_State.hxx b/src/GEOMAlgo/GEOMAlgo_State.hxx index 8d4707bd4..1824b18bb 100644 --- a/src/GEOMAlgo/GEOMAlgo_State.hxx +++ b/src/GEOMAlgo/GEOMAlgo_State.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -20,6 +20,7 @@ #ifndef _GEOMAlgo_State_HeaderFile #define _GEOMAlgo_State_HeaderFile + enum GEOMAlgo_State { GEOMAlgo_ST_UNKNOWN, GEOMAlgo_ST_IN, diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl b/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl index a9ae5dcae..15e89c8d1 100644 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl +++ b/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl @@ -1,22 +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 -// +-- 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_StateCollector.cdl -- Created: Thu Mar 10 09:39:25 2005 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx b/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx index e0c109af2..0bd3e756f 100644 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx +++ b/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -38,6 +38,7 @@ #include #endif + class GEOMAlgo_StateCollector { public: @@ -56,8 +57,14 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_StateCollector(); + + Standard_EXPORT Standard_Boolean AppendState(const TopAbs_State aSt) ; + + Standard_EXPORT TopAbs_State State() const; diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx b/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx index 50d4ab6ee..542bc6eb1 100644 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx +++ b/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx b/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx index 585231ea2..1a00e015a 100644 --- a/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx +++ b/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _GEOMAlgo_StateCollector_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl index 9035638b5..d0fa19382 100644 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl +++ b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl @@ -1,22 +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 -// +-- 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_SurfaceTools.cdl -- Created: Thu Jan 27 11:03:49 2005 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx index f11a7ce96..5703def26 100644 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx +++ b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -53,6 +53,7 @@ class gp_Sphere; #include #endif + class GEOMAlgo_SurfaceTools { public: @@ -71,14 +72,32 @@ public: } // Methods PUBLIC // + + Standard_EXPORT static Standard_Boolean IsAnalytic(const Handle(Geom_Surface)& aS) ; + + Standard_EXPORT static Standard_Boolean IsCoaxial(const gp_Pnt& aP1,const gp_Pnt& aP2,const gp_Cylinder& aCyl,const Standard_Real aTol) ; + + Standard_EXPORT static Standard_Boolean IsConformState(const TopAbs_State aST1,const GEOMAlgo_State aST2) ; + + Standard_EXPORT static Standard_Integer GetState(const gp_Pnt& aP,const GeomAdaptor_Surface& aS,const Standard_Real aTol,TopAbs_State& aSt) ; + + Standard_EXPORT static Standard_Integer GetState(const gp_Pnt& aP,const Handle(Geom_Surface)& aS,const Standard_Real aTol,TopAbs_State& aSt) ; + + Standard_EXPORT static Standard_Real Distance(const gp_Pnt& aP,const gp_Pln& aPln) ; + + Standard_EXPORT static Standard_Real Distance(const gp_Pnt& aP,const gp_Cylinder& aCyl) ; + + Standard_EXPORT static Standard_Real Distance(const gp_Pnt& aP,const gp_Sphere& aSph) ; + + Standard_EXPORT static TopAbs_State ReverseState(const TopAbs_State aSt) ; diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx index 7911ef34c..520fe97a3 100644 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx +++ b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx index a0ed3b986..2837fd50f 100644 --- a/src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx +++ b/src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _Geom_Surface_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.cdl b/src/GEOMAlgo/GEOMAlgo_Tools.cdl index 53d3d7cf2..e2c6b1a31 100644 --- a/src/GEOMAlgo/GEOMAlgo_Tools.cdl +++ b/src/GEOMAlgo/GEOMAlgo_Tools.cdl @@ -1,22 +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 -// +-- 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.cdl -- Created: Mon Dec 6 11:26:02 2004 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.hxx b/src/GEOMAlgo/GEOMAlgo_Tools.hxx index b566f21c0..5ca79dd40 100644 --- a/src/GEOMAlgo/GEOMAlgo_Tools.hxx +++ b/src/GEOMAlgo/GEOMAlgo_Tools.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -50,6 +50,7 @@ class Geom_Surface; #include #endif + class GEOMAlgo_Tools { public: @@ -68,17 +69,41 @@ public: } // Methods PUBLIC // + + Standard_EXPORT static Standard_Boolean IsCompositeShape(const TopoDS_Shape& aS) ; + + Standard_EXPORT static Standard_Integer RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& aMSD,const Standard_Real aTol,IntTools_Context& aCtx) ; + + Standard_EXPORT static Standard_Integer FindSDShapes(const TopTools_ListOfShape& aLE,const Standard_Real aTol,TopTools_IndexedDataMapOfShapeListOfShape& aMEE,IntTools_Context& aCtx) ; + + Standard_EXPORT static Standard_Integer FindSDShapes(const TopoDS_Shape& aE1,const TopTools_ListOfShape& aLE,const Standard_Real aTol,TopTools_ListOfShape& aLESD,IntTools_Context& aCtx) ; + + Standard_EXPORT static Standard_Boolean ProjectPointOnShape(const gp_Pnt& aP1,const TopoDS_Shape& aS,gp_Pnt& aP2,IntTools_Context& aCtx) ; + + Standard_EXPORT static void PointOnShape(const TopoDS_Shape& aS,gp_Pnt& aP3D) ; + + Standard_EXPORT static void PointOnEdge(const TopoDS_Edge& aE,gp_Pnt& aP3D) ; + + Standard_EXPORT static void PointOnEdge(const TopoDS_Edge& aE,const Standard_Real aT,gp_Pnt& aP3D) ; + + Standard_EXPORT static void PointOnFace(const TopoDS_Face& aF,gp_Pnt& aP3D) ; + + Standard_EXPORT static void PointOnFace(const TopoDS_Face& aF,const Standard_Real aU,const Standard_Real aV,gp_Pnt& aP3D) ; + + Standard_EXPORT static void RefinePCurveForEdgeOnFace(const TopoDS_Edge& aE,const TopoDS_Face& aF,const Standard_Real aU1,const Standard_Real aU2) ; + + Standard_EXPORT static Standard_Boolean IsUPeriodic(const Handle(Geom_Surface)& aS) ; diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.ixx b/src/GEOMAlgo/GEOMAlgo_Tools.ixx index 708109157..1a731d46c 100644 --- a/src/GEOMAlgo/GEOMAlgo_Tools.ixx +++ b/src/GEOMAlgo/GEOMAlgo_Tools.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_Tools.jxx b/src/GEOMAlgo/GEOMAlgo_Tools.jxx index af7450af9..e4986dba8 100644 --- a/src/GEOMAlgo/GEOMAlgo_Tools.jxx +++ b/src/GEOMAlgo/GEOMAlgo_Tools.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopoDS_Shape_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.cdl b/src/GEOMAlgo/GEOMAlgo_Tools3D.cdl new file mode 100755 index 000000000..e781a9439 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.cdl @@ -0,0 +1,236 @@ +-- 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_Tools3D.cdl +-- Created: +-- Author: Peter KURNEV + +class Tools3D from GEOMAlgo + + ---Purpose: Auxiliary tools for Algorithms + +uses + State from TopAbs, + ShapeEnum from TopAbs, + Pnt from gp, + Shape from TopoDS, + Vertex from TopoDS, + Edge from TopoDS, + Face from TopoDS, + Solid from TopoDS, + + ListOfShape from TopTools, + IndexedMapOfShape from TopTools, + IndexedDataMapOfShapeListOfShape from TopTools, + Context from IntTools, + ListOfCoupleOfShape from NMTTools + +--raises + +is + IsSplitToReverse(myclass; + theSplit : Shape from TopoDS; + theShape : Shape from TopoDS; + theContext:out Context from IntTools) + ---Purpose: Returns True if the shape theSplit has opposite + -- direction than theShape + -- theContext - cashed geometrical tools + returns Boolean from Standard; + + IsSplitToReverse(myclass; + theSplit : Face from TopoDS; + theShape : Face from TopoDS; + theContext:out Context from IntTools) + ---Purpose: Returns True if normal direction of the face + -- theShape is not the same as for the face + -- theSplit + -- theContext - cashed geometrical tools + returns Boolean from Standard; + + IsSplitToReverse(myclass; + theEdge : Edge from TopoDS; + theSplit : Edge from TopoDS; + theContext:out Context from IntTools) + ---Purpose: Returns True if tangent direction of the edge + -- theEdge is not the same as for the edge + -- theSplit + -- theContext - cashed geometrical tools + returns Boolean from Standard; + + Sense (myclass; + theF1: Face from TopoDS; + theF2: Face from TopoDS) + ---Purpose: For the couple of faces theF1, theF2 + -- computes sense value + -- Returns 0 if the faces are not sensible + -- Returns 1 if the faces have same sense + -- Returns 2 if the faces have opposite sense + returns Integer from Standard; + + CopyFace(myclass; + theF1: Face from TopoDS; + theF2:out Face from TopoDS); + ---Purpose: Makes new face theF2 from surface and wires + -- of the face theF1 + + MakeContainer(myclass; + theType:ShapeEnum from TopAbs; + theShape:out Shape from TopoDS); + ---Purpose: Makes empty shape theShape of the type theType + + + MakeConnexityBlock(myclass; + theLS :ListOfShape from TopTools; + theMapAvoid:IndexedMapOfShape from TopTools; + theLSCB :out ListOfShape from TopTools); + ---Purpose: For the list of faces theLS build block + -- theLSCB in terms of connexity by edges + -- theMapAvoid - set of edges to avoid for + -- the treatment + + ComputeStateByOnePoint(myclass; + theShape :Shape from TopoDS; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the shape theShape + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + ComputeState(myclass; + thePoint :Pnt from gp; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the point thePoint + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + ComputeState(myclass; + theVertex:Vertex from TopoDS; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the vertex theVertex + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + ComputeState(myclass; + theEdge :Edge from TopoDS; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the edge theEdge + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + ComputeState(myclass; + theFace :Face from TopoDS; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theBounds:IndexedMapOfShape from TopTools; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the face theFace + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theBounds - set of edges of theFace to avoid + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + IsInternalFace(myclass; + theFace :Face from TopoDS; + theEdge :Edge from TopoDS; + theFace1 :Face from TopoDS; + theFace2 :Face from TopoDS) + ---Purpose: Returns True if the face theFace is inside of the + -- couple of faces theFace1, theFace2. + -- The faces theFace, theFace1, theFace2 must + -- share the edge theEdge + returns Boolean from Standard; + + IsInternalFace(myclass; + theFace :Face from TopoDS; + theEdge :Edge from TopoDS; + theLF :ListOfShape from TopTools) + ---Purpose: Returns True if the face theFace is inside of the + -- appropriate couple of faces (from the set theLF) . + -- The faces of the set theLF and theFace must + -- share the edge theEdge + returns Boolean from Standard; + + IsInternalFace(myclass; + theFace :Face from TopoDS; + theSolid :Solid from TopoDS; + theMEF :IndexedDataMapOfShapeListOfShape from TopTools; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Returns True if the face theFace is inside the + -- solid theSolid. + -- theMEF - Map Edge/Faces for theSolid + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + returns Boolean from Standard; + + + GetFaceOff(myclass; + theEdge :Edge from TopoDS; + theFace :Face from TopoDS; + theLCEF :ListOfCoupleOfShape from NMTTools; + theFaceOff :out Face from TopoDS); + ---Purpose: For the face theFace and its edge theEdge + -- finds the face suitable to produce shell. + -- theLCEF - set of faces to search. All faces + -- from theLCEF must share edge theEdge + + GetEdgeOnFace (myclass; + theEdge :Edge from TopoDS; + theFace :Face from TopoDS; + theEdgeOnF :out Edge from TopoDS) + ---Purpose: For the face theFace gets the edge theEdgeOnF + -- that is the same as theEdge + -- Returns True if such edge exists + -- Returns False if there is no such edge + returns Boolean from Standard; + + GetEdgeOff (myclass; + theEdge :Edge from TopoDS; + theFace :Face from TopoDS; + theEdgeOff :out Edge from TopoDS) + ---Purpose: Returns True if the face theFace contains + -- the edge theEdge but with opposite orientation. + -- If the method returns True theEdgeOff is the + -- edge founded + returns Boolean from Standard; + +--fields +end Tools3D; + diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.cxx b/src/GEOMAlgo/GEOMAlgo_Tools3D.cxx new file mode 100755 index 000000000..296163184 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.cxx @@ -0,0 +1,1022 @@ +// 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_Tools3D.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +// +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include +// + +static + Standard_Boolean FindFacePairs (const TopoDS_Edge& , + const TopTools_ListOfShape& , + NMTTools_ListOfCoupleOfShape& ); + +static + void Path(const TopoDS_Shape& , + const TopoDS_Shape& , + const TopTools_IndexedDataMapOfShapeListOfShape& , + const TopTools_IndexedMapOfShape& , + TopTools_IndexedMapOfShape& ); +static + Standard_Real AngleWithRef(const gp_Dir& , + const gp_Dir& , + const gp_Dir& ); + +//======================================================================= +//function : IsInternalFace +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsInternalFace(const TopoDS_Face& theFace, + const TopoDS_Solid& theSolid, + const TopTools_IndexedDataMapOfShapeListOfShape& theMEF, + const Standard_Real theTol, + IntTools_Context& theContext) +{ + Standard_Boolean bRet; + Standard_Integer aNbF; + TopoDS_Edge aEL; + TopExp_Explorer aExp; + TopTools_ListIteratorOfListOfShape aItF; + // + bRet=Standard_False; + // + // 1 Try to find an edge from theFace in theMEF + aExp.Init(theFace, TopAbs_EDGE); + for(; aExp.More(); aExp.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aExp.Current()); + if (!theMEF.Contains(aE)) { + continue; + } + // + const TopTools_ListOfShape& aLF=theMEF.FindFromKey(aE); + aNbF=aLF.Extent(); + if (!aNbF) { + return bRet; // it can not be so + } + else if (aNbF==1) { + // aE is internal edge on aLF.First() + const TopoDS_Face& aF1=TopoDS::Face(aLF.First()); + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, aE, aF1, aF1); + return bRet; + } + else if (aNbF==2) { + const TopoDS_Face& aF1=TopoDS::Face(aLF.First()); + const TopoDS_Face& aF2=TopoDS::Face(aLF.Last()); + // + if (aF2.IsSame(aF1) && BRep_Tool::IsClosed(aE, aF1)) { + // treat as it was for 1 face + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, aE, aF1, aF2); + return bRet; + } + } + if (aNbF%2) { + return bRet; // it can not be so + } + else { // aNbF=2,4,6,8,... + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, aE, aLF); + return bRet; + } + }//for(; aExp.More(); aExp.Next()) { + // + //======================================== + // 2. Classify face using classifier + // + TopAbs_State aState; + TopTools_IndexedMapOfShape aBounds; + // + aState=GEOMAlgo_Tools3D::ComputeState(theFace, theSolid, theTol, aBounds, theContext); + bRet=(aState==TopAbs_IN); + // + return bRet; +} +//======================================================================= +//function : IsInternalFace +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsInternalFace(const TopoDS_Face& theFace, + const TopoDS_Edge& theEdge, + const TopTools_ListOfShape& theLF) +{ + Standard_Boolean bRet; + Standard_Boolean aNbF; + // + bRet=Standard_False; + // + aNbF=theLF.Extent(); + if (aNbF==2) { + const TopoDS_Face& aF1=TopoDS::Face(theLF.First()); + const TopoDS_Face& aF2=TopoDS::Face(theLF.Last()); + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, theEdge, aF1, aF2); + return bRet; + } + // + else { + NMTTools_ListOfCoupleOfShape aLCFF; + NMTTools_ListIteratorOfListOfCoupleOfShape aIt; + // + FindFacePairs(theEdge, theLF, aLCFF); + // + aIt.Initialize(aLCFF); + for (; aIt.More(); aIt.Next()) { + const NMTTools_CoupleOfShape& aCSFF=aIt.Value(); + // + const TopoDS_Face& aF1=TopoDS::Face(aCSFF.Shape1()); + const TopoDS_Face& aF2=TopoDS::Face(aCSFF.Shape2()); + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, theEdge, aF1, aF2); + if (bRet) { + return bRet; + } + } + } + return bRet; +} +//======================================================================= +//function : IsInternalFace +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsInternalFace(const TopoDS_Face& theFace, + const TopoDS_Edge& theEdge, + const TopoDS_Face& theFace1, + const TopoDS_Face& theFace2) +{ + Standard_Boolean bRet; + Standard_Real aT1, aT2, aT, aDt2D, aD1, aD2, aDt2Dx; + gp_Pnt aPx, aPF, aPF1, aPF2; + gp_Pnt2d aP2D, aPF2D; + gp_Dir aDNF1, aDNF2; + TopoDS_Edge aE1, aE2; + Handle(Geom_Curve)aC3D; + // + aC3D =BRep_Tool::Curve(theEdge, aT1, aT2); + aT=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); + aC3D->D0(aT, aPx); + // + // 1. PF + aDt2D=BOPTools_Tools3D::MinStepIn2d(); + aDt2Dx=10.*aDt2D; + BOPTools_Tools3D::PointNearEdge (theEdge, theFace, aT, aDt2Dx, aPF2D, aPF); + // + // 2. E1, E2 + GEOMAlgo_Tools3D::GetEdgeOnFace(theEdge, theFace1, aE1); + if (aE1.Orientation()==TopAbs_INTERNAL) { + aE2=aE1; + aE1.Orientation(TopAbs_FORWARD); + aE2.Orientation(TopAbs_REVERSED); + } + else if (theFace1==theFace2) { + aE2=aE1; + aE1.Orientation(TopAbs_FORWARD); + aE2.Orientation(TopAbs_REVERSED); + } + else { + GEOMAlgo_Tools3D::GetEdgeOnFace(theEdge, theFace2, aE2); + } + // + // 3 + bRet=Standard_False; + // + BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (aE1, theFace1, aT, aPF1, aDNF1); + gp_Pln aPlnF1(aPx, aDNF1); + // + aD1=BOPTools_Tools3D::SignDistance(aPF, aPlnF1); + if (aD1<=0.) { + BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (aE2, theFace2, aT, aPF2, aDNF2); + gp_Pln aPlnF2(aPx, aDNF2); + // + aD2=BOPTools_Tools3D::SignDistance(aPF, aPlnF2); + if (aD2<=0.) { + bRet=!bRet; //TopAbs_IN; + } + } + return bRet; +} +//======================================================================= +//function : GetFaceOff +//purpose : +//======================================================================= + void GEOMAlgo_Tools3D::GetFaceOff(const TopoDS_Edge& theE1, + const TopoDS_Face& theF1, + const NMTTools_ListOfCoupleOfShape& theLCSOff, + TopoDS_Face& theFOff) +{ + Standard_Real aT, aT1, aT2, aAngle, aTwoPI, aAngleMin; + gp_Pnt aPn1, aPn2; + gp_Vec aVTgt; + gp_Dir aDN1, aDN2; + NMTTools_ListIteratorOfListOfCoupleOfShape aIt; + // + aAngleMin=100.; + aTwoPI=PI+PI; + BRep_Tool::Range(theE1, aT1, aT2); + aT=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); + // Ref + BOPTools_Tools2D::EdgeTangent(theE1, aT, aVTgt); + gp_Dir aDTtgt(aVTgt); + aDTtgt.Reverse(); + // N1 + BOPTools_Tools3D::GetApproxNormalToFaceOnEdge(theE1, theF1, aT, aPn1, aDN1); + // + aIt.Initialize(theLCSOff); + for (; aIt.More(); aIt.Next()) { + const NMTTools_CoupleOfShape& aCS=aIt.Value(); + const TopoDS_Edge& aE2=TopoDS::Edge(aCS.Shape1()); + const TopoDS_Face& aF2=TopoDS::Face(aCS.Shape2()); + // + if (aF2==theF1) { + aAngle=PI; + } + else if (aF2.IsSame(theF1)) { + aAngle=aTwoPI; + } + else { + BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (aE2, aF2, aT, aPn2, aDN2); + aDN2.Reverse(); + // Angle + // + //aAngle=aDN1.AngleWithRef(aDN2, aDTtgt); + aAngle=AngleWithRef(aDN1, aDN2, aDTtgt); + // + if(aAngle<0.) { + aAngle=aTwoPI+aAngle; + } + } + + if (aAngleD0(aT, aP3D); + } + // + aState=GEOMAlgo_Tools3D::ComputeState(aP3D, theRef, theTol, theCtx); + // + return aState; +} +//======================================================================= +// function: ComputeState +// purpose: +//======================================================================= + TopAbs_State GEOMAlgo_Tools3D::ComputeState(const gp_Pnt& theP, + const TopoDS_Solid& theRef, + const Standard_Real theTol, + IntTools_Context& theCtx) +{ + TopAbs_State aState; + // + BRepClass3d_SolidClassifier& aSC=theCtx.SolidClassifier(theRef); + aSC.Perform(theP, theTol); + // + aState=aSC.State(); + // + return aState; +} +//======================================================================= +// function: IsSplitToReverse +// purpose: +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsSplitToReverse(const TopoDS_Shape& theSp, + const TopoDS_Shape& theSr, + IntTools_Context& theCtx) +{ + Standard_Boolean bRet; + TopAbs_ShapeEnum aType; + // + bRet=Standard_False; + // + aType=theSp.ShapeType(); + switch (aType) { + case TopAbs_EDGE: { + const TopoDS_Edge& aESp=TopoDS::Edge(theSp); + const TopoDS_Edge& aESr=TopoDS::Edge(theSr); + bRet=GEOMAlgo_Tools3D::IsSplitToReverse(aESp, aESr, theCtx); + } + break; + // + case TopAbs_FACE: { + const TopoDS_Face& aFSp=TopoDS::Face(theSp); + const TopoDS_Face& aFSr=TopoDS::Face(theSr); + bRet=GEOMAlgo_Tools3D::IsSplitToReverse(aFSp, aFSr, theCtx); + } + break; + // + default: + break; + } + return bRet; +} +//======================================================================= +//function :IsSplitToReverse +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsSplitToReverse(const TopoDS_Face& theFSp, + const TopoDS_Face& theFSr, + IntTools_Context& theContext) +{ + Standard_Boolean bRet, bFound, bInFace; + Standard_Real aT1, aT2, aT, aU, aV, aScPr; + gp_Pnt aPFSp, aPFSr; + gp_Dir aDNFSp; + gp_Vec aD1U, aD1V; + Handle(Geom_Surface) aSr, aSp; + TopAbs_Orientation aOrSr, aOrSp; + TopExp_Explorer anExp; + TopoDS_Edge aESp; + // + bRet=Standard_False; + // + aSr=BRep_Tool::Surface(theFSr); + aSp=BRep_Tool::Surface(theFSp); + if (aSr==aSp) { + aOrSr=theFSr.Orientation(); + aOrSp=theFSp.Orientation(); + bRet=(aOrSr!=aOrSp); + return bRet; + } + // + bFound=Standard_False; + anExp.Init(theFSp, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + aESp=TopoDS::Edge(anExp.Current()); + if (!BRep_Tool::Degenerated(aESp)) { + if (!BRep_Tool::IsClosed(aESp, theFSp)) { + bFound=!bFound; + break; + } + } + } + if (!bFound) { + return bRet; + } + // + BRep_Tool::Range(aESp, aT1, aT2); + aT=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); + BOPTools_Tools3D::GetApproxNormalToFaceOnEdge(aESp, theFSp, aT, aPFSp, aDNFSp); + // + // Parts of theContext.ComputeVS(..) + GeomAPI_ProjectPointOnSurf& aProjector=theContext.ProjPS(theFSr); + aProjector.Perform(aPFSp); + if (!aProjector.IsDone()) { + return bRet; + } + // + aProjector.LowerDistanceParameters(aU, aV); + gp_Pnt2d aP2D(aU, aV); + bInFace=theContext.IsPointInFace (theFSr, aP2D); + if (!bInFace) { + return bRet; + } + // + aSr->D1(aU, aV, aPFSr, aD1U, aD1V); + gp_Dir aDD1U(aD1U); + gp_Dir aDD1V(aD1V); + gp_Dir aDNFSr=aDD1U^aDD1V; + if (theFSr.Orientation()==TopAbs_REVERSED){ + aDNFSr.Reverse(); + } + // + aScPr=aDNFSp*aDNFSr; + bRet=(aScPr<0.); + // + return bRet; +} +//======================================================================= +//function :IsSplitToReverse +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsSplitToReverse(const TopoDS_Edge& theSplit, + const TopoDS_Edge& theEdge, + IntTools_Context& theContext) +{ + Standard_Boolean bRet, aFlag, bIsDegenerated; + Standard_Real aTE, aTS, aScPr, aTa, aTb, aT1, aT2; + TopAbs_Orientation aOrSr, aOrSp; + Handle(Geom_Curve) aCEdge, aCSplit; + gp_Vec aVE, aVS; + gp_Pnt aP; + // + bRet=Standard_False; + // + bIsDegenerated=(BRep_Tool::Degenerated(theSplit) || + BRep_Tool::Degenerated(theEdge)); + if (bIsDegenerated) { + return bRet; + } + // + aCEdge =BRep_Tool::Curve(theEdge , aT1, aT2); + aCSplit=BRep_Tool::Curve(theSplit, aTa, aTb); + // + if (aCEdge==aCSplit) { + aOrSr=theEdge.Orientation(); + aOrSp=theSplit.Orientation(); + bRet=(aOrSr!=aOrSp); + return bRet; + } + // + aTS=BOPTools_Tools2D::IntermediatePoint(aTa, aTb); + aCSplit->D0(aTS, aP); + aFlag=BOPTools_Tools2D::EdgeTangent(theSplit, aTS, aVS); + gp_Dir aDTS(aVS); + // + aFlag=theContext.ProjectPointOnEdge(aP, theEdge, aTE); + aFlag=BOPTools_Tools2D::EdgeTangent(theEdge, aTE, aVE); + gp_Dir aDTE(aVE); + // + aScPr=aDTS*aDTE; + bRet=(aScPr<0.); + // + return bRet; +} + +//======================================================================= +// function: Sense +// purpose: +//======================================================================= + Standard_Integer GEOMAlgo_Tools3D::Sense (const TopoDS_Face& theF1, + const TopoDS_Face& theF2) +{ + Standard_Integer iSense=0; + gp_Dir aDNF1, aDNF2; + TopoDS_Edge aE1, aE2; + TopExp_Explorer anExp; + // + anExp.Init(theF1, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + aE1=TopoDS::Edge(anExp.Current()); + if (!BRep_Tool::Degenerated(aE1)) { + if (!BRep_Tool::IsClosed(aE1, theF1)) { + break; + } + } + } + // + anExp.Init(theF2, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + aE2=TopoDS::Edge(anExp.Current()); + if (!BRep_Tool::Degenerated(aE2)) { + if (!BRep_Tool::IsClosed(aE2, theF2)) { + if (aE2.IsSame(aE1)) { + iSense=1; + break; + } + } + } + } + // + if (!iSense) { + return iSense; + } + // + BOPTools_Tools3D::GetNormalToFaceOnEdge(aE1, theF1, aDNF1); + BOPTools_Tools3D::GetNormalToFaceOnEdge(aE2, theF2, aDNF2); + // + iSense=BOPTools_Tools3D::SenseFlag(aDNF1, aDNF2); + // + return iSense; +} +//======================================================================= +// function: CopyFace +// purpose: +//======================================================================= + void GEOMAlgo_Tools3D::CopyFace (const TopoDS_Face& theF1, + TopoDS_Face& theF2) +{ + Standard_Real aTol; + TopLoc_Location aLoc; + TopAbs_Orientation aOr; + TopoDS_Iterator aIt; + BRep_Builder aBB; + // + Handle(Geom_Surface) aSurface=BRep_Tool::Surface(theF1, aLoc); + aTol=BRep_Tool::Tolerance(theF1); + aOr=theF1.Orientation(); + // + aBB.MakeFace (theF2, aSurface, aLoc, aTol); + theF2.Orientation(aOr); + // + aIt.Initialize(theF1); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aW=aIt.Value(); + aBB.Add(theF2, aW); + } +} +//======================================================================= +// function: MakeContainer +// purpose: +//======================================================================= + void GEOMAlgo_Tools3D::MakeContainer(const TopAbs_ShapeEnum theType, + TopoDS_Shape& theC) +{ + BRep_Builder aBB; + // + switch(theType) { + case TopAbs_COMPOUND:{ + TopoDS_Compound aC; + aBB.MakeCompound(aC); + theC=aC; + } + break; + // + case TopAbs_COMPSOLID:{ + TopoDS_CompSolid aCS; + aBB.MakeCompSolid(aCS); + theC=aCS; + } + break; + // + case TopAbs_SOLID:{ + TopoDS_Solid aSolid; + aBB.MakeSolid(aSolid); + theC=aSolid; + } + break; + // + // + case TopAbs_SHELL:{ + TopoDS_Shell aShell; + aBB.MakeShell(aShell); + theC=aShell; + } + break; + // + case TopAbs_WIRE: { + TopoDS_Wire aWire; + aBB.MakeWire(aWire); + theC=aWire; + } + break; + // + default: + break; + } +} +//======================================================================= +// function: MakeConnexityBlock. +// purpose: +//======================================================================= + void GEOMAlgo_Tools3D::MakeConnexityBlock (const TopTools_ListOfShape& theLFIn, + const TopTools_IndexedMapOfShape& theMEAvoid, + TopTools_ListOfShape& theLCB) +{ + Standard_Integer j, aNbF; + TopTools_IndexedDataMapOfShapeListOfShape aEFMap; + TopTools_IndexedMapOfShape aMFP, aCBMap; + TopTools_ListIteratorOfListOfShape aIt; + TopExp_Explorer aExp; + TopAbs_ShapeEnum aType; + // + aIt.Initialize(theLFIn); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + aType=aF.ShapeType(); + TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aEFMap); + } + // + aCBMap.Clear(); + const TopoDS_Shape& aF=theLFIn.First(); + // + aCBMap.Add(aF); + // + aExp.Init(aF, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()){ + const TopoDS_Shape& aE=aExp.Current(); + if (theMEAvoid.Contains(aE)){ + continue; + } + // + const TopTools_ListOfShape& aLF=aEFMap.FindFromKey(aE); + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF1=aIt.Value(); + if (!aF1.IsSame(aF)) { + Path (aE, aF1, aEFMap, theMEAvoid, aCBMap); + } + } + } + // + aNbF=aCBMap.Extent(); + for (j=1; j<=aNbF; ++j) { + const TopoDS_Shape& aFx=aCBMap(j); + theLCB.Append(aFx); + } +} +//======================================================================= +// function: Path +// purpose: +//======================================================================= +void Path(const TopoDS_Shape& theE1, + const TopoDS_Shape& theF1, + const TopTools_IndexedDataMapOfShapeListOfShape& theEFMap, + const TopTools_IndexedMapOfShape& theMEAvoid, + TopTools_IndexedMapOfShape& theCBMap) +{ + TopTools_ListIteratorOfListOfShape aIt; + TopExp_Explorer aExp; + // + if (theCBMap.Contains(theF1)){ + return; + } + theCBMap.Add(theF1); + // + aExp.Init(theF1, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()){ + const TopoDS_Shape& aE=aExp.Current(); + if (!aE.IsSame(theE1)){ + if (theMEAvoid.Contains(aE)) { + continue; + } + // + const TopTools_ListOfShape& aLF=theEFMap.FindFromKey(aE); + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + Path (aE, aF, theEFMap, theMEAvoid, theCBMap); + } + } + } +} +//======================================================================= +//function : FindFacePairs +//purpose : +//======================================================================= +Standard_Boolean FindFacePairs (const TopoDS_Edge& theE, + const TopTools_ListOfShape& thLF, + NMTTools_ListOfCoupleOfShape& theLCFF) +{ + Standard_Boolean bFound; + Standard_Integer i, aNbCEF; + TopAbs_Orientation aOr, aOrC; + TopTools_MapOfShape aMFP; + TopoDS_Face aF1, aF2; + TopoDS_Edge aEL, aE1; + TopTools_ListIteratorOfListOfShape aItLF; + NMTTools_CoupleOfShape aCEF, aCFF; + NMTTools_ListOfCoupleOfShape aLCEF, aLCEFx; + NMTTools_ListIteratorOfListOfCoupleOfShape aIt; + // + bFound=Standard_True; + // + // Preface aLCEF + aItLF.Initialize(thLF); + for (; aItLF.More(); aItLF.Next()) { + const TopoDS_Face& aFL=TopoDS::Face(aItLF.Value()); + // + bFound=GEOMAlgo_Tools3D::GetEdgeOnFace(theE, aFL, aEL); + if (!bFound) { + return bFound; // it can not be so + } + // + aCEF.SetShape1(aEL); + aCEF.SetShape2(aFL); + aLCEF.Append(aCEF); + } + // + aNbCEF=aLCEF.Extent(); + while(aNbCEF) { + // + // aLCEFx + aLCEFx.Clear(); + aIt.Initialize(aLCEF); + for (i=0; aIt.More(); aIt.Next(), ++i) { + const NMTTools_CoupleOfShape& aCSx=aIt.Value(); + const TopoDS_Shape& aEx=aCSx.Shape1(); + const TopoDS_Shape& aFx=aCSx.Shape2(); + // + aOr=aEx.Orientation(); + // + if (!i) { + aOrC=TopAbs::Reverse(aOr); + aE1=TopoDS::Edge(aEx); + aF1=TopoDS::Face(aFx); + aMFP.Add(aFx); + continue; + } + // + if (aOr==aOrC) { + aLCEFx.Append(aCSx); + aMFP.Add(aFx); + } + } + // + // F2 + GEOMAlgo_Tools3D::GetFaceOff(aE1, aF1, aLCEFx, aF2); + // + aCFF.SetShape1(aF1); + aCFF.SetShape2(aF2); + theLCFF.Append(aCFF); + // + aMFP.Add(aF1); + aMFP.Add(aF2); + // + // refine aLCEF + aLCEFx.Clear(); + aLCEFx=aLCEF; + aLCEF.Clear(); + aIt.Initialize(aLCEFx); + for (; aIt.More(); aIt.Next()) { + const NMTTools_CoupleOfShape& aCSx=aIt.Value(); + const TopoDS_Shape& aFx=aCSx.Shape2(); + if (!aMFP.Contains(aFx)) { + aLCEF.Append(aCSx); + } + } + // + aNbCEF=aLCEF.Extent(); + }//while(aNbCEF) { + // + return bFound; +} +// +//======================================================================= +//function : AngleWithRef +//purpose : +//======================================================================= +Standard_Real AngleWithRef(const gp_Dir& theD1, + const gp_Dir& theD2, + const gp_Dir& theDRef) +{ + Standard_Real aCosinus, aSinus, aBeta, aHalfPI, aScPr; + gp_XYZ aXYZ; + // + aHalfPI=0.5*PI; + // + const gp_XYZ& aXYZ1=theD1.XYZ(); + const gp_XYZ& aXYZ2=theD2.XYZ(); + aXYZ=aXYZ1.Crossed(aXYZ2); + aSinus=aXYZ.Modulus(); + aCosinus=theD1*theD2; + // + aBeta=0.; + if (aSinus>=0.) { + aBeta=aHalfPI*(1.-aCosinus); + } + else { + aBeta=2.*PI-aHalfPI*(3.+aCosinus); + } + // + aScPr=aXYZ.Dot(theDRef.XYZ()); + if (aScPr<0.) { + aBeta=-aBeta; + } + return aBeta; +} +// diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.hxx b/src/GEOMAlgo/GEOMAlgo_Tools3D.hxx new file mode 100644 index 000000000..934cfa4fa --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.hxx @@ -0,0 +1,222 @@ +// 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 + +#ifndef _GEOMAlgo_Tools3D_HeaderFile +#define _GEOMAlgo_Tools3D_HeaderFile + +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _TopAbs_State_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +class TopoDS_Shape; +class IntTools_Context; +class TopoDS_Face; +class TopoDS_Edge; +class TopTools_ListOfShape; +class TopTools_IndexedMapOfShape; +class TopoDS_Solid; +class gp_Pnt; +class TopoDS_Vertex; +class TopTools_IndexedDataMapOfShapeListOfShape; +class NMTTools_ListOfCoupleOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! Auxiliary tools for Algorithms
+class GEOMAlgo_Tools3D { + +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); + } + // Methods PUBLIC + // + +//! Returns True if the shape theSplit has opposite
+//! direction than theShape
+//! theContext - cashed geometrical tools
+Standard_EXPORT static Standard_Boolean IsSplitToReverse(const TopoDS_Shape& theSplit,const TopoDS_Shape& theShape,IntTools_Context& theContext) ; + +//! Returns True if normal direction of the face
+//! theShape is not the same as for the face
+//! theSplit
+//! theContext - cashed geometrical tools
+Standard_EXPORT static Standard_Boolean IsSplitToReverse(const TopoDS_Face& theSplit,const TopoDS_Face& theShape,IntTools_Context& theContext) ; + +//! Returns True if tangent direction of the edge
+//! theEdge is not the same as for the edge
+//! theSplit
+//! theContext - cashed geometrical tools
+Standard_EXPORT static Standard_Boolean IsSplitToReverse(const TopoDS_Edge& theEdge,const TopoDS_Edge& theSplit,IntTools_Context& theContext) ; + +//! For the couple of faces theF1, theF2
+//! computes sense value
+//! Returns 0 if the faces are not sensible
+//! Returns 1 if the faces have same sense
+//! Returns 2 if the faces have opposite sense
+Standard_EXPORT static Standard_Integer Sense(const TopoDS_Face& theF1,const TopoDS_Face& theF2) ; + +//! Makes new face theF2 from surface and wires
+//! of the face theF1
+Standard_EXPORT static void CopyFace(const TopoDS_Face& theF1,TopoDS_Face& theF2) ; + +//! Makes empty shape theShape of the type theType
+Standard_EXPORT static void MakeContainer(const TopAbs_ShapeEnum theType,TopoDS_Shape& theShape) ; + +//! For the list of faces theLS build block
+//! theLSCB in terms of connexity by edges
+//! theMapAvoid - set of edges to avoid for
+//! the treatment
+Standard_EXPORT static void MakeConnexityBlock(const TopTools_ListOfShape& theLS,const TopTools_IndexedMapOfShape& theMapAvoid,TopTools_ListOfShape& theLSCB) ; + +//! Computes the 3-D state of the shape theShape
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeStateByOnePoint(const TopoDS_Shape& theShape,const TopoDS_Solid& theSolid,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! Computes the 3-D state of the point thePoint
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeState(const gp_Pnt& thePoint,const TopoDS_Solid& theSolid,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! Computes the 3-D state of the vertex theVertex
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeState(const TopoDS_Vertex& theVertex,const TopoDS_Solid& theSolid,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! Computes the 3-D state of the edge theEdge
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeState(const TopoDS_Edge& theEdge,const TopoDS_Solid& theSolid,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! Computes the 3-D state of the face theFace
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theBounds - set of edges of theFace to avoid
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeState(const TopoDS_Face& theFace,const TopoDS_Solid& theSolid,const Standard_Real theTol,const TopTools_IndexedMapOfShape& theBounds,IntTools_Context& theContext) ; + +//! Returns True if the face theFace is inside of the
+//! couple of faces theFace1, theFace2.
+//! The faces theFace, theFace1, theFace2 must
+//! share the edge theEdge
+Standard_EXPORT static Standard_Boolean IsInternalFace(const TopoDS_Face& theFace,const TopoDS_Edge& theEdge,const TopoDS_Face& theFace1,const TopoDS_Face& theFace2) ; + +//! Returns True if the face theFace is inside of the
+//! appropriate couple of faces (from the set theLF) .
+//! The faces of the set theLF and theFace must
+//! share the edge theEdge
+Standard_EXPORT static Standard_Boolean IsInternalFace(const TopoDS_Face& theFace,const TopoDS_Edge& theEdge,const TopTools_ListOfShape& theLF) ; + +//! Returns True if the face theFace is inside the
+//! solid theSolid.
+//! theMEF - Map Edge/Faces for theSolid
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+Standard_EXPORT static Standard_Boolean IsInternalFace(const TopoDS_Face& theFace,const TopoDS_Solid& theSolid,const TopTools_IndexedDataMapOfShapeListOfShape& theMEF,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! For the face theFace and its edge theEdge
+//! finds the face suitable to produce shell.
+//! theLCEF - set of faces to search. All faces
+//! from theLCEF must share edge theEdge
+Standard_EXPORT static void GetFaceOff(const TopoDS_Edge& theEdge,const TopoDS_Face& theFace,const NMTTools_ListOfCoupleOfShape& theLCEF,TopoDS_Face& theFaceOff) ; + +//! For the face theFace gets the edge theEdgeOnF
+//! that is the same as theEdge
+//! Returns True if such edge exists
+//! Returns False if there is no such edge
+Standard_EXPORT static Standard_Boolean GetEdgeOnFace(const TopoDS_Edge& theEdge,const TopoDS_Face& theFace,TopoDS_Edge& theEdgeOnF) ; + +//! Returns True if the face theFace contains
+//! the edge theEdge but with opposite orientation.
+//! If the method returns True theEdgeOff is the
+//! edge founded
+Standard_EXPORT static Standard_Boolean GetEdgeOff(const TopoDS_Edge& theEdge,const TopoDS_Face& theFace,TopoDS_Edge& theEdgeOff) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.ixx b/src/GEOMAlgo/GEOMAlgo_Tools3D.ixx new file mode 100644 index 000000000..52bb882c4 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.jxx b/src/GEOMAlgo/GEOMAlgo_Tools3D.jxx new file mode 100644 index 000000000..22ac3268f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.jxx @@ -0,0 +1,55 @@ +// 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 + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _IntTools_Context_HeaderFile +#include +#endif +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _TopoDS_Edge_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedMapOfShape_HeaderFile +#include +#endif +#ifndef _TopoDS_Solid_HeaderFile +#include +#endif +#ifndef _gp_Pnt_HeaderFile +#include +#endif +#ifndef _TopoDS_Vertex_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile +#include +#endif +#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Tools3D_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl b/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl index a4d9c01d0..9e83db59a 100644 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl +++ b/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl @@ -1,22 +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 -// +-- 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_VertexSolid.cdl -- Created: Wed Jan 12 16:34:53 2005 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx index 941104ec7..7c77c2fa9 100644 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx +++ b/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,6 +32,7 @@ #include #endif + class GEOMAlgo_VertexSolid : public GEOMAlgo_ShapeSolid { public: @@ -50,8 +51,12 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_VertexSolid(); Standard_EXPORT virtual ~GEOMAlgo_VertexSolid(); + + Standard_EXPORT virtual void Perform() ; @@ -62,7 +67,11 @@ protected: // Methods PROTECTED // + + Standard_EXPORT virtual void Prepare() ; + + Standard_EXPORT virtual void BuildResult() ; diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx index 335d706b7..32c7746f2 100644 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx +++ b/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx index 38f0ad644..8925ddd34 100644 --- a/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx +++ b/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _GEOMAlgo_VertexSolid_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl b/src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl new file mode 100755 index 000000000..d9f19b9d7 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl @@ -0,0 +1,82 @@ +-- 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_WESCorrector.cdl +-- Created: +-- Author: Peter KURNEV + + +class WESCorrector from GEOMAlgo + inherits Algo from GEOMAlgo + + ---Purpose: + --- The algorithm to change the Wire Edges Set (WES) contents. + -- The NewWES will contain only wires instead of wires and edges. + -- +uses + WireEdgeSet from GEOMAlgo, + PWireEdgeSet from GEOMAlgo, + ListOfConnexityBlock from BOP + +is + Create + returns WESCorrector from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_WESCorrector();" + ---Purpose: + -- Empty constructor; + -- + + SetWES (me:out; + aWES: WireEdgeSet from GEOMAlgo); + ---Purpose: + -- Modifier + -- + Perform (me:out) + is redefined; + ---Purpose: + --- Performs the algorithm that consists of two steps + --- 1. Make conexity blocks ( DoConnexityBlocks() ) + --- 2. Make corrections ( DoCorrections() ) + --- + + WES (me:out) + returns WireEdgeSet from GEOMAlgo; + ---C++: return & + ---Purpose: + --- Selector + --- + NewWES (me:out) + returns WireEdgeSet from GEOMAlgo; + ---C++: return & + ---Purpose: + --- Selector + --- + DoConnexityBlocks(me:out) + is protected; + + DoCorrections(me:out) + is protected; + +fields + + myWES : PWireEdgeSet from GEOMAlgo is protected; + myNewWES : WireEdgeSet from GEOMAlgo is protected; + myConnexityBlocks : ListOfConnexityBlock from BOP is protected; + +end WESCorrector; diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx b/src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx new file mode 100755 index 000000000..6079a637c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx @@ -0,0 +1,337 @@ +// 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: NMTAlgo_WESCorrector.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + +static + void Path(const TopoDS_Shape& aV1, + const TopTools_IndexedDataMapOfShapeListOfShape& aMVE, + TopTools_MapOfShape& aMVP, + TopTools_MapOfShape& aMEP, + TopTools_MapOfShape& aMEC); +static + void MakeWire(const TopTools_ListOfShape& aLE, + TopoDS_Wire& newWire); + +//======================================================================= +// function: +// purpose: +//======================================================================= + GEOMAlgo_WESCorrector::GEOMAlgo_WESCorrector() +: + GEOMAlgo_Algo() +{ +} +//======================================================================= +// function: ~ +// purpose: +//======================================================================= + GEOMAlgo_WESCorrector::~GEOMAlgo_WESCorrector() +{ +} +//======================================================================= +// function: SetWES +// purpose: +//======================================================================= + void GEOMAlgo_WESCorrector::SetWES (const GEOMAlgo_WireEdgeSet& aWES) +{ + GEOMAlgo_WireEdgeSet* pWES=(GEOMAlgo_WireEdgeSet*) &aWES; + myWES=pWES; +} +//======================================================================= +// function: WES +// purpose: +//======================================================================= + GEOMAlgo_WireEdgeSet& GEOMAlgo_WESCorrector::WES () +{ + return *myWES; +} +//======================================================================= +// function: NewWES +// purpose: +//======================================================================= + GEOMAlgo_WireEdgeSet& GEOMAlgo_WESCorrector::NewWES () +{ + return myNewWES; +} +//======================================================================= +// function: Perform +// purpose: +//======================================================================= + void GEOMAlgo_WESCorrector::Perform() +{ + myErrorStatus=0; + // + DoConnexityBlocks(); + DoCorrections(); +} +//======================================================================= +// function: DoConnexityBlocks +// purpose: +//======================================================================= + void GEOMAlgo_WESCorrector::DoConnexityBlocks() +{ + Standard_Boolean bRegular; + Standard_Integer i, aNbV; + TopTools_ListIteratorOfListOfShape aIt; + TopoDS_Iterator aItE; + TopoDS_Shape aER; + TopTools_MapOfShape aMER, aMEP, aMEC, aMVP; + TopTools_MapIteratorOfMapOfShape aItM; + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + // + // 1. aMVE; + const TopTools_ListOfShape& aLE=myWES->StartElements(); + aIt.Initialize(aLE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (aMEP.Add(aE)) { + TopExp::MapShapesAndAncestors(aE, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + } + else { + aMER.Add(aE); + } + } + // + aMEP.Clear(); + // + // 2. + aNbV=aMVE.Extent(); + for (i=1; i<=aNbV; ++i) { + const TopoDS_Shape& aV=aMVE.FindKey(i); + if (aMVP.Contains(aV)) { + continue; + } + aMVP.Add(aV); + // + const TopTools_ListOfShape& aLEi=aMVE(i); + aIt.Initialize(aLEi); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (aMEP.Contains(aE)) { + continue; + } + // + aMEP.Add(aE); + aMEC.Add(aE); + aItE.Initialize(aE); + for (; aItE.More(); aItE.Next()) { + const TopoDS_Shape& aVE=aItE.Value(); + Path(aVE, aMVE, aMVP, aMEP, aMEC); + } + }//for (; aIt.More(); aIt.Next()) { + // + BOP_ConnexityBlock aCB; + TopTools_ListOfShape aLEC; + TopTools_IndexedDataMapOfShapeListOfShape aMVER; + // + bRegular=Standard_True; + aItM.Initialize(aMEC); + for (; aItM.More(); aItM.Next()) { + aER=aItM.Key(); + // + if (aMER.Contains(aER)) { + Standard_Boolean bClosed; + // + aER.Orientation(TopAbs_FORWARD); + aLEC.Append(aER); + aER.Orientation(TopAbs_REVERSED); + aLEC.Append(aER); + // + bClosed=BRep_Tool::IsClosed(TopoDS::Edge(aER), myWES->Face()); + if (!bClosed) { + bRegular=Standard_False; + } + } + else { + aLEC.Append(aER); + } + // + if (bRegular) { + TopExp::MapShapesAndAncestors(aER, TopAbs_VERTEX, TopAbs_EDGE, aMVER); + } + } + // + if (bRegular) { + Standard_Integer j, aNbVR, aNbER; + // + aNbVR=aMVER.Extent(); + for (j=1; j<=aNbVR; ++j) { + const TopTools_ListOfShape& aLER=aMVE(j); + aNbER=aLER.Extent(); + if (aNbER==1) { + const TopoDS_Edge& aEx=TopoDS::Edge(aER); + if (!BRep_Tool::IsClosed(aEx, myWES->Face())) { + bRegular=!bRegular; + break; + } + } + if (aNbER>2) { + bRegular=!bRegular; + break; + } + } + } + // + aCB.SetShapes(aLEC); + aCB.SetRegularity(bRegular); + myConnexityBlocks.Append(aCB); + aMEC.Clear(); + }//for (i=1; i<=aNbV; ++i) { +} +//======================================================================= +// function: Path +// purpose: +//======================================================================= +void Path(const TopoDS_Shape& aV1, + const TopTools_IndexedDataMapOfShapeListOfShape& aMVE, + TopTools_MapOfShape& aMVP, + TopTools_MapOfShape& aMEP, + TopTools_MapOfShape& aMEC) +{ + TopoDS_Iterator aItE; + TopTools_ListIteratorOfListOfShape aIt; + // + if (aMVP.Contains(aV1)) { + return; + } + aMVP.Add(aV1); + // + const TopTools_ListOfShape& aLE=aMVE.FindFromKey(aV1); + aIt.Initialize(aLE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (aMEP.Contains(aE)) { + continue; + } + aMEP.Add(aE); + aMEC.Add(aE); + // + aItE.Initialize(aE); + for (; aItE.More(); aItE.Next()) { + const TopoDS_Shape& aVE=aItE.Value(); + Path(aVE, aMVE, aMVP, aMEP, aMEC); + } + } +} +//======================================================================= +// function: DoCorrections +// purpose: +//======================================================================= + void GEOMAlgo_WESCorrector::DoCorrections() +{ + Standard_Boolean bIsRegular, bIsNothingToDo; + Standard_Integer iErr; + TopoDS_Wire aW; + BOP_ListIteratorOfListOfConnexityBlock aCBIt; + // + const TopoDS_Face& aF=myWES->Face(); + // + myNewWES.SetFace(aF); + aCBIt.Initialize(myConnexityBlocks); + for (; aCBIt.More(); aCBIt.Next()) { + const BOP_ConnexityBlock& aCB=aCBIt.Value(); + const TopTools_ListOfShape& aLE=aCB.Shapes(); + + bIsRegular=aCB.IsRegular(); + + if (bIsRegular) { + MakeWire(aLE, aW); + myNewWES.AddShape (aW); + continue; + } + // + GEOMAlgo_WireSplitter aWS; + // + aWS.SetFace(aF); + aWS.SetEdges(aLE); + // + aWS.Perform(); + iErr=aWS.ErrorStatus(); + if (iErr) { + continue; + } + bIsNothingToDo=aWS.IsNothingToDo(); + if (bIsNothingToDo) { + MakeWire(aLE, aW); + myNewWES.AddShape (aW); + continue; + } + // + const BOPTColStd_ListOfListOfShape& aSSS=aWS.Shapes(); + + BOPTColStd_ListIteratorOfListOfListOfShape aWireIt(aSSS); + for (; aWireIt.More(); aWireIt.Next()) { + const TopTools_ListOfShape& aLEx=aWireIt.Value(); + // + MakeWire(aLEx, aW); + myNewWES.AddShape (aW); + } + } +} +//======================================================================= +// function: MakeWire +// purpose: +//======================================================================= + void MakeWire(const TopTools_ListOfShape& aLE, + TopoDS_Wire& newWire) +{ + BRep_Builder aBB; + aBB.MakeWire(newWire); + + TopTools_ListIteratorOfListOfShape anIt(aLE); + for (; anIt.More(); anIt.Next()){ + const TopoDS_Edge& aE=TopoDS::Edge(anIt.Value()); + aBB.Add(newWire, aE); + } +} diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx b/src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx new file mode 100644 index 000000000..42e53af59 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx @@ -0,0 +1,134 @@ +// 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 + +#ifndef _GEOMAlgo_WESCorrector_HeaderFile +#define _GEOMAlgo_WESCorrector_HeaderFile + +#ifndef _GEOMAlgo_PWireEdgeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile +#include +#endif +#ifndef _BOP_ListOfConnexityBlock_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Algo_HeaderFile +#include +#endif +class GEOMAlgo_WireEdgeSet; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +//! The algorithm to change the Wire Edges Set (WES) contents.
+//! The NewWES will contain only wires instead of wires and edges.
+class GEOMAlgo_WESCorrector : public GEOMAlgo_Algo { + +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); + } + // Methods PUBLIC + // + + +//! Empty constructor;
+//!
+Standard_EXPORT GEOMAlgo_WESCorrector(); +Standard_EXPORT virtual ~GEOMAlgo_WESCorrector(); + + +//! Modifier
+Standard_EXPORT void SetWES(const GEOMAlgo_WireEdgeSet& aWES) ; + + +//! Performs the algorithm that consists of two steps
+//! 1. Make conexity blocks ( DoConnexityBlocks() )
+//! 2. Make corrections ( DoCorrections() )
+Standard_EXPORT virtual void Perform() ; + + +//! Selector
+Standard_EXPORT GEOMAlgo_WireEdgeSet& WES() ; + + +//! Selector
+Standard_EXPORT GEOMAlgo_WireEdgeSet& NewWES() ; + + + + + +protected: + + // Methods PROTECTED + // + + +Standard_EXPORT void DoConnexityBlocks() ; + + +Standard_EXPORT void DoCorrections() ; + + + // Fields PROTECTED + // +GEOMAlgo_PWireEdgeSet myWES; +GEOMAlgo_WireEdgeSet myNewWES; +BOP_ListOfConnexityBlock myConnexityBlocks; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx b/src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx new file mode 100644 index 000000000..a2b071b1f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx b/src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx new file mode 100644 index 000000000..236296f94 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx @@ -0,0 +1,25 @@ +// 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 + +#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_WESCorrector_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl new file mode 100755 index 000000000..1fe60ad75 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl @@ -0,0 +1,68 @@ +-- 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_WireEdgeSet.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class WireEdgeSet from GEOMAlgo + + ---Purpose: + +uses + Face from TopoDS, + Shape from TopoDS, + ListOfShape from TopTools +--raises + +is + Create + returns WireEdgeSet from GEOMAlgo; + + Clear(me:out); + + SetFace(me:out; + aF:Face from TopoDS); + + Face(me) + returns Face from TopoDS; + ---C++: return const & + + AddStartElement(me:out; + sS: Shape from TopoDS); + + StartElements(me) + returns ListOfShape from TopTools; + ---C++: return const & + + AddShape(me:out; + sS:Shape from TopoDS); + + Shapes(me) + returns ListOfShape from TopTools; + ---C++: return const & + +fields + myFace : Face from TopoDS is protected; + myStartShapes : ListOfShape from TopTools is protected; + myShapes : ListOfShape from TopTools is protected; + +end WireEdgeSet; diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx new file mode 100755 index 000000000..bcae26b8f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx @@ -0,0 +1,92 @@ +// 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_WireEdgeSet.cxx +// Created: +// Author: Peter KURNEV +// + +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_WireEdgeSet::GEOMAlgo_WireEdgeSet() +{ + Clear(); +} + +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void GEOMAlgo_WireEdgeSet::Clear() +{ + myStartShapes.Clear(); + myShapes.Clear(); +} +//======================================================================= +//function : SetFace +//purpose : +//======================================================================= + void GEOMAlgo_WireEdgeSet::SetFace(const TopoDS_Face& aF) +{ + myFace=aF; +} +//======================================================================= +//function : Face +//purpose : +//======================================================================= + const TopoDS_Face& GEOMAlgo_WireEdgeSet::Face()const +{ + return myFace; +} +//======================================================================= +//function : AddStartElement +//purpose : +//======================================================================= + void GEOMAlgo_WireEdgeSet::AddStartElement(const TopoDS_Shape& aE) +{ + myStartShapes.Append(aE); +} +//======================================================================= +//function : StartElements +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_WireEdgeSet::StartElements()const +{ + return myStartShapes; +} +//======================================================================= +//function : AddShape +//purpose : +//======================================================================= + void GEOMAlgo_WireEdgeSet::AddShape(const TopoDS_Shape& aW) +{ + myShapes.Append(aW); +} +//======================================================================= +//function : Shapes +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_WireEdgeSet::Shapes()const +{ + return myShapes; +} diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx new file mode 100644 index 000000000..0a0416438 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx @@ -0,0 +1,122 @@ +// 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 + +#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile +#define _GEOMAlgo_WireEdgeSet_HeaderFile + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +class TopoDS_Face; +class TopoDS_Shape; +class TopTools_ListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_WireEdgeSet { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_WireEdgeSet(); + + +Standard_EXPORT void Clear() ; + + +Standard_EXPORT void SetFace(const TopoDS_Face& aF) ; + + +Standard_EXPORT const TopoDS_Face& Face() const; + + +Standard_EXPORT void AddStartElement(const TopoDS_Shape& sS) ; + + +Standard_EXPORT const TopTools_ListOfShape& StartElements() const; + + +Standard_EXPORT void AddShape(const TopoDS_Shape& sS) ; + + +Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +TopoDS_Face myFace; +TopTools_ListOfShape myStartShapes; +TopTools_ListOfShape myShapes; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx new file mode 100644 index 000000000..70dbac598 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx new file mode 100644 index 000000000..68885c47e --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx @@ -0,0 +1,31 @@ +// 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 + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl b/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl index a24418a8a..1fa98cd39 100644 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl +++ b/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl @@ -1,22 +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 -// +-- 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_WireSolid.cdl -- Created: Wed Jan 12 10:17:00 2005 -- Author: Peter KURNEV diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx index ef9ec1470..867cc561e 100644 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx +++ b/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,6 +32,7 @@ #include #endif + class GEOMAlgo_WireSolid : public GEOMAlgo_ShapeSolid { public: @@ -50,8 +51,12 @@ public: } // Methods PUBLIC // + + Standard_EXPORT GEOMAlgo_WireSolid(); Standard_EXPORT virtual ~GEOMAlgo_WireSolid(); + + Standard_EXPORT virtual void Perform() ; @@ -62,7 +67,11 @@ protected: // Methods PROTECTED // + + Standard_EXPORT virtual void Prepare() ; + + Standard_EXPORT virtual void BuildResult() ; diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx b/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx index ff86f06f7..d4943559c 100644 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx +++ b/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx index c4d2a32b2..4409553d2 100644 --- a/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx +++ b/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _GEOMAlgo_WireSolid_HeaderFile #include #endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl b/src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl new file mode 100755 index 000000000..ed3669b25 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl @@ -0,0 +1,87 @@ +-- 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_WireSplitter.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class WireSplitter from GEOMAlgo + inherits Algo from GEOMAlgo + + ---Purpose: + --- the algorithm to split multiconnexed set of edges + --- wires on a face onto simple connexed wires + --- . +uses + Face from TopoDS, + Vertex from TopoDS, + Edge from TopoDS, + + SequenceOfPnt2d from TColgp, + SequenceOfShape from TopTools, + ListOfShape from TopTools, + + ListOfListOfShape from BOPTColStd, + + EdgeInfo from BOP, + IndexedDataMapOfVertexListEdgeInfo from BOP + +--raises + +is + Create + returns WireSplitter from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_WireSplitter();" + + SetFace (me:out; + aF: Face from TopoDS); + + SetEdges (me:out; + aLE:ListOfShape from TopTools); + + Edges (me) + returns ListOfShape from TopTools; + ---C++: return const & + + Perform (me:out) + is redefined; + + IsNothingToDo (me) + returns Boolean from Standard; + + Face (me) + returns Face from TopoDS; + ---C++: return const & + + Shapes (me) + returns ListOfListOfShape from BOPTColStd; + ---C++: return const & + +fields + myFace : Face from TopoDS is protected; + myIsDone : Boolean from Standard is protected; + myNothingToDo: Boolean from Standard is protected; + myShapes : ListOfListOfShape from BOPTColStd is protected; + mySmartMap : IndexedDataMapOfVertexListEdgeInfo from BOP is protected; + myEdges : ListOfShape from TopTools is protected; + +end WireSplitter; + diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx b/src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx new file mode 100755 index 000000000..201c6d0f0 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx @@ -0,0 +1,909 @@ +// 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_WireSplitter.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + + +#include +#include +#include + +#include +#include + + + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +static + void Path (const GeomAdaptor_Surface& aGAS, + const TopoDS_Face& myFace, + const TopoDS_Vertex& aVa, + const TopoDS_Edge& aEOuta, + BOP_EdgeInfo& anEdgeInfo, + TopTools_SequenceOfShape& aLS, + TopTools_SequenceOfShape& aVertVa, + TColgp_SequenceOfPnt2d& aCoordVa, + BOPTColStd_ListOfListOfShape& myShapes, + BOP_IndexedDataMapOfVertexListEdgeInfo& mySmartMap); + + +static + Standard_Real Angle (const gp_Dir2d& aDir2D); + + +static + void GetNextVertex(const TopoDS_Vertex& aV, + const TopoDS_Edge& aE, + TopoDS_Vertex& aV1); +static + Standard_Real ClockWiseAngle(const Standard_Real aAngleIn, + const Standard_Real aAngleOut); + +static + Standard_Real AngleIn(const TopoDS_Edge& aEIn, + const BOP_ListOfEdgeInfo& aLEInfo); + +static + Standard_Real Angle2D (const TopoDS_Vertex& aV, + const TopoDS_Edge& anEdge, + const TopoDS_Face& myFace, + const GeomAdaptor_Surface& aGAS, + const Standard_Boolean aFlag); +static + gp_Pnt2d Coord2d (const TopoDS_Vertex& aV1, + const TopoDS_Edge& aE1, + const TopoDS_Face& aF); +static + gp_Pnt2d Coord2dVf (const TopoDS_Edge& aE, + const TopoDS_Face& aF); +static + Standard_Real Tolerance2D (const TopoDS_Vertex& aV, + const GeomAdaptor_Surface& aGAS); + +static + void UVTolerance2D (const TopoDS_Vertex& aV, + const GeomAdaptor_Surface& aGAS, + Standard_Real& aTolU, + Standard_Real& aTolV); +static + Standard_Integer NbWaysOut(const BOP_ListOfEdgeInfo& ); +// + +//======================================================================= +// function: +// purpose: +//======================================================================= + GEOMAlgo_WireSplitter::GEOMAlgo_WireSplitter() +: + GEOMAlgo_Algo(), + myNothingToDo(Standard_False) +{ +} +//======================================================================= +// function: ~ +// purpose: +//======================================================================= + GEOMAlgo_WireSplitter::~GEOMAlgo_WireSplitter() +{ +} +//======================================================================= +// function: SetFace +// purpose: +//======================================================================= + void GEOMAlgo_WireSplitter::SetFace(const TopoDS_Face& aFace) +{ + myFace=aFace; +} +//======================================================================= +// function: Face +// purpose: +//======================================================================= + const TopoDS_Face& GEOMAlgo_WireSplitter::Face()const +{ + return myFace; +} +//======================================================================= +// function: SetEdges +// purpose: +//======================================================================= + void GEOMAlgo_WireSplitter::SetEdges(const TopTools_ListOfShape& aLE) +{ + TopTools_ListIteratorOfListOfShape anIt; + // + myEdges.Clear(); + anIt.Initialize(aLE); + for (; anIt.More(); anIt.Next()) { + const TopoDS_Shape& aE =anIt.Value(); + // + if (aE.Orientation()==TopAbs_INTERNAL){ + continue; + } + // + myEdges.Append(aE); + } +} +//======================================================================= +// function: Edges +// purpose: +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_WireSplitter::Edges()const +{ + return myEdges; +} +//======================================================================= +// function: IsNothingToDo +// purpose: +//======================================================================= + Standard_Boolean GEOMAlgo_WireSplitter::IsNothingToDo()const +{ + return myNothingToDo; +} +//======================================================================= +// function: Shapes +// purpose: +//======================================================================= + const BOPTColStd_ListOfListOfShape& GEOMAlgo_WireSplitter::Shapes()const +{ + return myShapes; +} +//======================================================================= +// function: Perform +// purpose: +//======================================================================= + void GEOMAlgo_WireSplitter::Perform() +{ + myErrorStatus=2; + myNothingToDo=Standard_True; + + Standard_Integer index, i, aNb, aCntIn, aCntOut; + Standard_Boolean anIsIn; + Standard_Real anAngle; + + BOP_ListOfEdgeInfo emptyInfo; + TopTools_ListIteratorOfListOfShape anItList; + // + // 1.Filling mySmartMap + mySmartMap.Clear(); + + anItList.Initialize(myEdges); + for (; anItList.More(); anItList.Next()) { + const TopoDS_Edge& anEdge = TopoDS::Edge(anItList.Value()); + // + if (!BOPTools_Tools2D::HasCurveOnSurface (anEdge, myFace)) { + continue; + } + // + TopExp_Explorer anExpVerts (anEdge, TopAbs_VERTEX); + for (; anExpVerts.More(); anExpVerts.Next()) { + const TopoDS_Shape& aVertex= anExpVerts.Current(); + + index = mySmartMap.FindIndex(aVertex); + if (!index) { + index=mySmartMap.Add(aVertex, emptyInfo); + } + + BOP_ListOfEdgeInfo& aListOfEInfo=mySmartMap(index); + + BOP_EdgeInfo aEInfo; + aEInfo.SetEdge(anEdge); + + TopAbs_Orientation anOr=aVertex.Orientation(); + + if (anOr==TopAbs_FORWARD) { + aEInfo.SetInFlag(Standard_False); + } + + else if (anOr==TopAbs_REVERSED) { + aEInfo.SetInFlag(Standard_True); + } + + aListOfEInfo.Append(aEInfo); + } + } + // + aNb=mySmartMap.Extent(); + // + // 2. myNothingToDo + myNothingToDo=Standard_True; + + for (i=1; i<=aNb; i++) { + aCntIn=0; + aCntOut=0; + const BOP_ListOfEdgeInfo& aLEInfo= mySmartMap(i); + BOP_ListIteratorOfListOfEdgeInfo anIt(aLEInfo); + for (; anIt.More(); anIt.Next()) { + const BOP_EdgeInfo& anEdgeInfo=anIt.Value(); + anIsIn=anEdgeInfo.IsIn(); + if (anIsIn) { + aCntIn++; + } + else { + aCntOut++; + } + } + if (aCntIn!=1 || aCntOut!=1) { + myNothingToDo=Standard_False; + break; + } + } + // + // Each vertex has one edge In and one - Out. Good. But it is not enought + // to consider that nothing to do with this. We must check edges on TShape + // coinsidence. If there are such edges there is something to do with. + // + if (myNothingToDo) { + Standard_Integer aNbE, aNbMapEE; + TopTools_IndexedDataMapOfShapeListOfShape aMapEE; + aNbE=myEdges.Extent(); + + anItList.Initialize(myEdges); + for (; anItList.More(); anItList.Next()) { + const TopoDS_Shape& aE = anItList.Value(); + + if (!aMapEE.Contains(aE)) { + TopTools_ListOfShape aLEx; + aLEx.Append(aE); + aMapEE.Add(aE, aLEx); + } + else { + TopTools_ListOfShape& aLEx=aMapEE.ChangeFromKey(aE); + aLEx.Append(aE); + } + } + + Standard_Boolean bFlag; + bFlag=Standard_True; + aNbMapEE=aMapEE.Extent(); + for (i=1; i<=aNbMapEE; i++) { + const TopTools_ListOfShape& aLEx=aMapEE(i); + aNbE=aLEx.Extent(); + if (aNbE==1) { + // usual case + continue; + } + else if (aNbE==2){ + const TopoDS_Shape& aE1=aLEx.First(); + const TopoDS_Shape& aE2=aLEx.Last(); + if (aE1.IsSame(aE2)) { + bFlag=Standard_False; + break; + } + } + else { + bFlag=Standard_False; + break; + } + } + myNothingToDo=myNothingToDo && bFlag; + } + // + // + if (myNothingToDo) { + myErrorStatus=0; + return; + } + // + // 3. Angles in mySmartMap + BRepAdaptor_Surface aBAS(myFace); + const GeomAdaptor_Surface& aGAS=aBAS.Surface(); + for (i=1; i<=aNb; i++) { + const TopoDS_Vertex& aV=TopoDS::Vertex (mySmartMap.FindKey(i)); + const BOP_ListOfEdgeInfo& aLEInfo= mySmartMap(i); + + BOP_ListIteratorOfListOfEdgeInfo anIt(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEdgeInfo=anIt.Value(); + const TopoDS_Edge& aE=anEdgeInfo.Edge(); + // + TopoDS_Vertex aVV=aV; + // + anIsIn=anEdgeInfo.IsIn(); + if (anIsIn) { + // + aVV.Orientation(TopAbs_REVERSED); + anAngle=Angle2D (aVV, aE, myFace, aGAS, Standard_True); + } + // + else { // OUT + // + aVV.Orientation(TopAbs_FORWARD); + anAngle=Angle2D (aVV, aE, myFace, aGAS, Standard_False); + } + anEdgeInfo.SetAngle(anAngle); + + } + } + // + // 4. Do + // + Standard_Boolean anIsOut, anIsNotPassed; + + TopTools_SequenceOfShape aLS, aVertVa; + TColgp_SequenceOfPnt2d aCoordVa; + + BOP_ListIteratorOfListOfEdgeInfo anIt; + + for (i=1; i<=aNb; i++) { + const TopoDS_Vertex aVa=TopoDS::Vertex (mySmartMap.FindKey(i)); + const BOP_ListOfEdgeInfo& aLEInfo=mySmartMap(i); + + anIt.Initialize(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEdgeInfo=anIt.Value(); + const TopoDS_Edge& aEOuta=anEdgeInfo.Edge(); + + anIsOut=!anEdgeInfo.IsIn(); + anIsNotPassed=!anEdgeInfo.Passed(); + + if (anIsOut && anIsNotPassed) { + // + aLS.Clear(); + aVertVa.Clear(); + aCoordVa.Clear(); + // + Path(aGAS, myFace, aVa, aEOuta, anEdgeInfo, aLS, + aVertVa, aCoordVa, myShapes, mySmartMap); + } + } + } + // + { + Standard_Integer aNbV, aNbE; + TopoDS_Vertex aV1, aV2; + BOPTColStd_ListOfListOfShape aShapes; + BOPTColStd_ListIteratorOfListOfListOfShape anItW(myShapes); + + for (; anItW.More(); anItW.Next()) { + TopTools_IndexedMapOfShape aMV, aME; + const TopTools_ListOfShape& aLE=anItW.Value(); + TopTools_ListIteratorOfListOfShape anItE(aLE); + for (; anItE.More(); anItE.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(anItE.Value()); + aME.Add(aE); + TopExp::Vertices(aE, aV1, aV2); + aMV.Add(aV1); + aMV.Add(aV2); + } + aNbV=aMV.Extent(); + aNbE=aME.Extent(); + if (aNbV<=aNbE) { + aShapes.Append(aLE); + } + } + // + myShapes.Clear(); + anItW.Initialize(aShapes); + for (; anItW.More(); anItW.Next()) { + const TopTools_ListOfShape& aLE=anItW.Value(); + myShapes.Append(aLE); + } + } + // + myErrorStatus=0; +} +//======================================================================= +// function: Path +// purpose: +//======================================================================= + void Path (const GeomAdaptor_Surface& aGAS, + const TopoDS_Face& myFace, + const TopoDS_Vertex& aVa, + const TopoDS_Edge& aEOuta, + BOP_EdgeInfo& anEdgeInfo, + TopTools_SequenceOfShape& aLS, + TopTools_SequenceOfShape& aVertVa, + TColgp_SequenceOfPnt2d& aCoordVa, + BOPTColStd_ListOfListOfShape& myShapes, + BOP_IndexedDataMapOfVertexListEdgeInfo& mySmartMap) + +{ + Standard_Integer i,j, aNb, aNbj; + Standard_Real aTol, anAngleIn, anAngleOut, anAngle, aMinAngle; + Standard_Real aTol2D, aTol2D2; + Standard_Real aTol2, aD2, aTolUVb, aTolVVb; + Standard_Boolean anIsSameV2d, anIsSameV, anIsFound, anIsOut, anIsNotPassed; + BOP_ListIteratorOfListOfEdgeInfo anIt; + TopoDS_Vertex aVb; + TopoDS_Edge aEOutb; + // + aTol=1.e-7; + // + // append block + // + // Do not escape through edge from which you enter + aNb=aLS.Length(); + if (aNb==1) { + const TopoDS_Shape& anEPrev=aLS(aNb); + if (anEPrev.IsSame(aEOuta)) { + return; + } + } + // + // + anEdgeInfo.SetPassed(Standard_True); + aLS.Append(aEOuta); + aVertVa.Append(aVa); + + TopoDS_Vertex pVa=aVa; + pVa.Orientation(TopAbs_FORWARD); + gp_Pnt2d aPa=Coord2d(pVa, aEOuta, myFace); + aCoordVa.Append(aPa); + + GetNextVertex (pVa, aEOuta, aVb); + + gp_Pnt2d aPb=Coord2d(aVb, aEOuta, myFace); + + const BOP_ListOfEdgeInfo& aLEInfoVb=mySmartMap.FindFromKey(aVb); + // + aTol=2.*Tolerance2D(aVb, aGAS); + aTol2=aTol*aTol; + // + UVTolerance2D(aVb, aGAS, aTolUVb, aTolVVb); + aTolUVb = 2.*aTolUVb; + aTolVVb = 2.*aTolVVb; + // + aNb=aLS.Length(); + if (aNb>0) { + // + TopTools_ListOfShape aBuf; + // + for (i=aNb; i>0; i--) { + const TopoDS_Shape& aVPrev=aVertVa(i); + const gp_Pnt2d& aPaPrev=aCoordVa(i); + const TopoDS_Shape& aEPrev=aLS(i); + + aBuf.Append(aEPrev); + + anIsSameV=aVPrev.IsSame(aVb); + anIsSameV2d = Standard_False; + + if (anIsSameV) { + anIsSameV2d = Standard_True; + // + aD2=aPaPrev.SquareDistance(aPb); + anIsSameV2d =aD2 aTolUVb) || (vdist > aTolVVb)) { + anIsSameV2d=!anIsSameV2d; + } + } + }//if (anIsSameV) { + // + if (anIsSameV && anIsSameV2d) { + myShapes.Append(aBuf); + // + TopTools_SequenceOfShape aLSt, aVertVat; + TColgp_SequenceOfPnt2d aCoordVat; + // + aNbj=i-1; + if (aNbj<1) { + // + aLS.Clear(); + aVertVa.Clear(); + aCoordVa.Clear(); + // + return; + } + + aVb=TopoDS::Vertex(aVertVa(i)); + + for (j=1; j<=aNbj; j++) { + aLSt.Append(aLS(j)); + aVertVat.Append(aVertVa(j)); + aCoordVat.Append(aCoordVa(j)); + } + // + aLS.Clear(); + aVertVa.Clear(); + aCoordVa.Clear(); + + aLS=aLSt; + aVertVa=aVertVat; + aCoordVa=aCoordVat; + // + break; + } + } + } + // + aTol2D=2.*Tolerance2D(aVb, aGAS); + aTol2D2=aTol2D*aTol2D; + // + // anAngleIn in Vb from edge aEOuta + const BOP_ListOfEdgeInfo& aLEInfo=mySmartMap.FindFromKey(aVb); + // + anAngleIn=AngleIn(aEOuta, aLEInfo); + // + // aEOutb + BOP_EdgeInfo *pEdgeInfo=NULL; + + aMinAngle=100.; + anIsFound=Standard_False; + + Standard_Integer aCurIndexE = 0; + + anIt.Initialize(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEI=anIt.Value(); + const TopoDS_Edge& aE=anEI.Edge(); + anIsOut=!anEI.IsIn(); + anIsNotPassed=!anEI.Passed(); + + if (anIsOut && anIsNotPassed) { + aCurIndexE++; + // + // Is there one way to go out of the vertex + // we have to use it only. + Standard_Integer iCnt; + iCnt=NbWaysOut (aLEInfo); + // + if (!iCnt) { + // no way to go . (Error) + return ; + } + // + if (iCnt==1) { + // the one and only way to go out . + pEdgeInfo=&anEI; + anIsFound=Standard_True; + break; + } + // + // Look for minimal angle and make the choice. + gp_Pnt2d aP2Dx; + // + aP2Dx=Coord2dVf(aE, myFace); + // + aD2=aP2Dx.SquareDistance(aPb); + if (aD2 > aTol2D2){ + continue; + } + // + // + anAngleOut=anEI.Angle(); + // + anAngle=ClockWiseAngle(anAngleIn, anAngleOut); + if (anAngle < aMinAngle) { + aMinAngle=anAngle; + pEdgeInfo=&anEI; + anIsFound=Standard_True; + } + } + } // for (; anIt.More(); anIt.Next()) + // + if (!anIsFound) { + // no way to go . (Error) + return; + } + + aEOutb=pEdgeInfo->Edge(); + // + Path (aGAS, myFace, aVb, aEOutb, *pEdgeInfo, aLS, + aVertVa, aCoordVa, myShapes, mySmartMap); +} +//======================================================================= +// function: Coord2dVf +// purpose: +//======================================================================= + gp_Pnt2d Coord2dVf (const TopoDS_Edge& aE, + const TopoDS_Face& aF) +{ + Standard_Real aCoord=99.; + gp_Pnt2d aP2D1(aCoord, aCoord); + TopoDS_Iterator aIt; + // + aIt.Initialize(aE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aVx=aIt.Value(); + if (aVx.Orientation()==TopAbs_FORWARD) { + const TopoDS_Vertex& aVxx=TopoDS::Vertex(aVx); + aP2D1=Coord2d(aVxx, aE, aF); + return aP2D1; + } + } + return aP2D1; +} +//======================================================================= +// function: Tolerance2D +// purpose: +//======================================================================= + Standard_Real Tolerance2D (const TopoDS_Vertex& aV, + const GeomAdaptor_Surface& aGAS) +{ + Standard_Real aTol2D, anUr, aVr, aTolV3D; + GeomAbs_SurfaceType aType; + // + aType=aGAS.GetType(); + aTolV3D=BRep_Tool::Tolerance(aV); + + anUr=aGAS.UResolution(aTolV3D); + aVr =aGAS.VResolution(aTolV3D); + aTol2D=(aVr>anUr) ? aVr : anUr; + // + if (aType==GeomAbs_BSplineSurface|| + aType==GeomAbs_Sphere) { + if (aTol2D < aTolV3D) { + aTol2D=aTolV3D; + } + } + if (aType==GeomAbs_BSplineSurface) { + aTol2D=1.1*aTol2D; + } + // + return aTol2D; +} + +//======================================================================= +// function: Coord2d +// purpose: +//======================================================================= + gp_Pnt2d Coord2d (const TopoDS_Vertex& aV1, + const TopoDS_Edge& aE1, + const TopoDS_Face& aF) +{ + Standard_Real aT, aFirst, aLast; + Handle(Geom2d_Curve) aC2D; + gp_Pnt2d aP2D1; + // + aT=BRep_Tool::Parameter (aV1, aE1, aF); + aC2D=BRep_Tool::CurveOnSurface(aE1, aF, aFirst, aLast); + aC2D->D0 (aT, aP2D1); + // + return aP2D1; +} +//======================================================================= +// function: AngleIn +// purpose: +//======================================================================= + Standard_Real AngleIn(const TopoDS_Edge& aEIn, + const BOP_ListOfEdgeInfo& aLEInfo) +{ + Standard_Real anAngleIn; + Standard_Boolean anIsIn; + BOP_ListIteratorOfListOfEdgeInfo anIt; + + anIt.Initialize(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEdgeInfo=anIt.Value(); + const TopoDS_Edge& aE=anEdgeInfo.Edge(); + anIsIn=anEdgeInfo.IsIn(); + // + if (anIsIn && aE==aEIn) { + anAngleIn=anEdgeInfo.Angle(); + return anAngleIn; + } + } + anAngleIn=0.; + return anAngleIn; +} +//======================================================================= +// function: ClockWiseAngle +// purpose: +//======================================================================= + Standard_Real ClockWiseAngle(const Standard_Real aAngleIn, + const Standard_Real aAngleOut) +{ + Standard_Real aTwoPi=Standard_PI+Standard_PI; + Standard_Real dA, A1, A2, AIn, AOut ; + + AIn=aAngleIn; + AOut=aAngleOut; + if (AIn >= aTwoPi) { + AIn=AIn-aTwoPi; + } + + if (AOut >= aTwoPi) { + AOut=AOut-aTwoPi; + } + + A1=AIn+Standard_PI; + + if (A1 >= aTwoPi) { + A1=A1-aTwoPi; + } + + A2=AOut; + + dA=A1-A2; + if (dA <= 0.) { + dA=aTwoPi+dA; + } + //xx + //else if (dA <= 1.e-15) { + else if (dA <= 1.e-14) { + dA=aTwoPi; + } + return dA; +} +//======================================================================= +// function: GetNextVertex +// purpose: +//======================================================================= + void GetNextVertex(const TopoDS_Vertex& aV, + const TopoDS_Edge& aE, + TopoDS_Vertex& aV1) +{ + TopoDS_Iterator aIt; + // + aIt.Initialize(aE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aVx=aIt.Value(); + if (!aVx.IsEqual(aV)) { + aV1=TopoDS::Vertex(aVx); + return ; + } + } + aV1=aV; +} +//======================================================================= +// function: Angle2D +// purpose: +//======================================================================= + Standard_Real Angle2D (const TopoDS_Vertex& aV, + const TopoDS_Edge& anEdge, + const TopoDS_Face& myFace, + const GeomAdaptor_Surface& aGAS, + const Standard_Boolean aFlag) +{ + Standard_Real aFirst, aLast, aToler, dt, aTV, aTV1, anAngle; + + Handle(Geom2d_Curve) aC2D; + + BOPTools_Tools2D::CurveOnSurface (anEdge, myFace, aC2D, + aFirst, aLast, aToler, Standard_True); + + aTV=BRep_Tool::Parameter (aV, anEdge, myFace); + if (Precision::IsInfinite(aTV)) + return 0.; + + //dt=1.e-7; + dt=Tolerance2D(aV, aGAS); + + if(dt > (aLast - aFirst) * 0.25) { + // to save direction of the curve as much as it possible + // in the case of big tolerances + dt = (aLast - aFirst) * 0.25; + } + // + if (fabs (aTV-aFirst) < fabs(aTV - aLast)) { + aTV1=aTV + dt; + } + else { + aTV1=aTV - dt; + } + + gp_Pnt2d aPV, aPV1; + aC2D->D0 (aTV, aPV); + aC2D->D0 (aTV1, aPV1); + + gp_Vec2d aV2D; + // + if (aFlag) {//IN + gp_Vec2d aV2DIn(aPV1, aPV); + // + aV2D=aV2DIn; + } + + else { + gp_Vec2d aV2DOut(aPV, aPV1); + aV2D=aV2DOut; + } + + gp_Dir2d aDir2D(aV2D); + anAngle=Angle(aDir2D); + + return anAngle; +} +//======================================================================= +// function: Angle +// purpose: +//======================================================================= +Standard_Real Angle (const gp_Dir2d& aDir2D) +{ + gp_Dir2d aRefDir(1., 0.); + Standard_Real anAngle = aRefDir.Angle(aDir2D); + + if (anAngle < 0.) + anAngle += Standard_PI + Standard_PI; + + return anAngle; +} +// +//======================================================================= +// function: NbWaysOut +// purpose: +//======================================================================= +Standard_Integer NbWaysOut(const BOP_ListOfEdgeInfo& aLEInfo) +{ + Standard_Boolean bIsOut, bIsNotPassed; + Standard_Integer iCnt=0; + BOP_ListIteratorOfListOfEdgeInfo anIt; + // + anIt.Initialize(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEI=anIt.Value(); + // + bIsOut=!anEI.IsIn(); + bIsNotPassed=!anEI.Passed(); + if (bIsOut && bIsNotPassed) { + iCnt++; + } + } + return iCnt; +} +//======================================================================= +//function : UVTolerance2D +//purpose : +//======================================================================= +void UVTolerance2D (const TopoDS_Vertex& aV, + const GeomAdaptor_Surface& aGAS, + Standard_Real& aTolU, + Standard_Real& aTolV) +{ + Standard_Real aTolV3D; + // + aTolV3D = BRep_Tool::Tolerance(aV); + aTolU=aGAS.UResolution(aTolV3D); + aTolV=aGAS.VResolution(aTolV3D); +} diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx b/src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx new file mode 100644 index 000000000..f2bb54361 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx @@ -0,0 +1,141 @@ +// 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 + +#ifndef _GEOMAlgo_WireSplitter_HeaderFile +#define _GEOMAlgo_WireSplitter_HeaderFile + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _BOPTColStd_ListOfListOfShape_HeaderFile +#include +#endif +#ifndef _BOP_IndexedDataMapOfVertexListEdgeInfo_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Algo_HeaderFile +#include +#endif +class TopoDS_Face; +class TopTools_ListOfShape; +class BOPTColStd_ListOfListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +//! the algorithm to split multiconnexed set of edges
+//! wires on a face onto simple connexed wires
+//! .
+class GEOMAlgo_WireSplitter : public GEOMAlgo_Algo { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_WireSplitter(); +Standard_EXPORT virtual ~GEOMAlgo_WireSplitter(); + + +Standard_EXPORT void SetFace(const TopoDS_Face& aF) ; + + +Standard_EXPORT void SetEdges(const TopTools_ListOfShape& aLE) ; + + +Standard_EXPORT const TopTools_ListOfShape& Edges() const; + + +Standard_EXPORT virtual void Perform() ; + + +Standard_EXPORT Standard_Boolean IsNothingToDo() const; + + +Standard_EXPORT const TopoDS_Face& Face() const; + + +Standard_EXPORT const BOPTColStd_ListOfListOfShape& Shapes() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +TopoDS_Face myFace; +Standard_Boolean myIsDone; +Standard_Boolean myNothingToDo; +BOPTColStd_ListOfListOfShape myShapes; +BOP_IndexedDataMapOfVertexListEdgeInfo mySmartMap; +TopTools_ListOfShape myEdges; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx b/src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx new file mode 100644 index 000000000..fa8f559f8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx b/src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx new file mode 100644 index 000000000..235db1835 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx @@ -0,0 +1,31 @@ +// 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 + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _BOPTColStd_ListOfListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_WireSplitter_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx index cf0ed1eec..738d8abac 100644 --- a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx +++ b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMa class Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) : public Handle(TCollection_MapNode) { 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); - } Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)():Handle(TCollection_MapNode)() {} Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) : public Handle(TCol return *this; } - GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* operator->() - { - return (GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger *)ControlAccess(); - } - - GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* operator->() const + GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* operator->() const { return (GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger *)ControlAccess(); } - Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)(); +// Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)(); Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx new file mode 100644 index 000000000..b8439ed91 --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx @@ -0,0 +1,72 @@ +// 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 + +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#define _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape); + +class Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) : public Handle(TCollection_MapNode) { + public: + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)():Handle(TCollection_MapNode)() {} + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)(const GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)& operator=(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)& operator=(const GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape* operator->() const + { + return (GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)(); + + Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx new file mode 100644 index 000000000..f6956a7c1 --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx @@ -0,0 +1,72 @@ +// 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 + +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#define _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal); + +class Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) : public Handle(TCollection_MapNode) { + public: + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)():Handle(TCollection_MapNode)() {} + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)(const GEOMAlgo_DataMapNodeOfDataMapOfShapeReal* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)& operator=(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)& operator=(const GEOMAlgo_DataMapNodeOfDataMapOfShapeReal* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_DataMapNodeOfDataMapOfShapeReal* operator->() const + { + return (GEOMAlgo_DataMapNodeOfDataMapOfShapeReal *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)(); + + Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx new file mode 100644 index 000000000..3a26aeace --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx @@ -0,0 +1,72 @@ +// 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 + +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#define _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet); + +class Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) : public Handle(TCollection_MapNode) { + public: + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)():Handle(TCollection_MapNode)() {} + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)(const GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)& operator=(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)& operator=(const GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet* operator->() const + { + return (GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)(); + + Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx index ba87e481d..d1003aab3 100644 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx +++ b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeO class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) : public Handle(TCollection_MapNode) { 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); - } Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)():Handle(TCollection_MapNode)() {} Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) : public return *this; } - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* operator->() const + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* operator->() const { return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape *)ControlAccess(); } - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(); +// Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(); Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx index 82502e38a..019555891 100644 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx +++ b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeO class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) : public Handle(TCollection_MapNode) { 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); - } Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)():Handle(TCollection_MapNode)() {} Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShap return *this; } - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* operator->() const + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* operator->() const { return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape *)ControlAccess(); } - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)(); +// Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)(); Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx index ef5aae2c2..1c53e213a 100644 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx +++ b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeO class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) : public Handle(TCollection_MapNode) { 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); - } Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)():Handle(TCollection_MapNode)() {} Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) : public Han return *this; } - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* operator->() const + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* operator->() const { return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox *)ControlAccess(); } - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(); +// Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(); Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx index 3c50ad124..f218abeae 100644 --- a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx +++ b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeO class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) : public Handle(TCollection_MapNode) { 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); - } Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)():Handle(TCollection_MapNode)() {} Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) : public H return *this; } - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState* operator->() - { - return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState *)ControlAccess(); - } - - GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState* operator->() const + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState* operator->() const { return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState *)ControlAccess(); } - Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)(); +// Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState)(); Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx index 072614382..6be59702f 100644 --- a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx +++ b/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfCou class Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) : public Handle(TCollection_MapNode) { 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); - } Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)():Handle(TCollection_MapNode)() {} Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)(const Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) : public Handle(TCollectio return *this; } - GEOMAlgo_ListNodeOfListOfCoupleOfShapes* operator->() - { - return (GEOMAlgo_ListNodeOfListOfCoupleOfShapes *)ControlAccess(); - } - - GEOMAlgo_ListNodeOfListOfCoupleOfShapes* operator->() const + GEOMAlgo_ListNodeOfListOfCoupleOfShapes* operator->() const { return (GEOMAlgo_ListNodeOfListOfCoupleOfShapes *)ControlAccess(); } - Standard_EXPORT ~Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)(); +// Standard_EXPORT ~Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes)(); Standard_EXPORT static const Handle(GEOMAlgo_ListNodeOfListOfCoupleOfShapes) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx index f773bfd3e..de9397fc9 100644 --- a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx +++ b/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt class Handle(GEOMAlgo_ListNodeOfListOfPnt) : public Handle(TCollection_MapNode) { 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); - } Handle(GEOMAlgo_ListNodeOfListOfPnt)():Handle(TCollection_MapNode)() {} Handle(GEOMAlgo_ListNodeOfListOfPnt)(const Handle(GEOMAlgo_ListNodeOfListOfPnt)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(GEOMAlgo_ListNodeOfListOfPnt) : public Handle(TCollection_MapNode) return *this; } - GEOMAlgo_ListNodeOfListOfPnt* operator->() - { - return (GEOMAlgo_ListNodeOfListOfPnt *)ControlAccess(); - } - - GEOMAlgo_ListNodeOfListOfPnt* operator->() const + GEOMAlgo_ListNodeOfListOfPnt* operator->() const { return (GEOMAlgo_ListNodeOfListOfPnt *)ControlAccess(); } - Standard_EXPORT ~Handle(GEOMAlgo_ListNodeOfListOfPnt)(); +// Standard_EXPORT ~Handle(GEOMAlgo_ListNodeOfListOfPnt)(); Standard_EXPORT static const Handle(GEOMAlgo_ListNodeOfListOfPnt) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/GEOMAlgo/Makefile.in b/src/GEOMAlgo/Makefile.in index a0c7e45a4..0ea15e24a 100644 --- a/src/GEOMAlgo/Makefile.in +++ b/src/GEOMAlgo/Makefile.in @@ -44,19 +44,42 @@ LIB_SRC = \ BlockFix_UnionEdges.cxx \ BlockFix_UnionFaces.cxx \ GEOMAlgo_Algo.cxx \ + GEOMAlgo_Builder_0.cxx \ + GEOMAlgo_Builder_1.cxx \ + GEOMAlgo_Builder_2.cxx \ + GEOMAlgo_Builder_3.cxx \ + GEOMAlgo_Builder_4.cxx \ + GEOMAlgo_BuilderArea.cxx \ + GEOMAlgo_Builder.cxx \ + GEOMAlgo_BuilderFace.cxx \ + GEOMAlgo_BuilderShape.cxx \ + GEOMAlgo_BuilderSolid.cxx \ + GEOMAlgo_BuilderTools.cxx \ GEOMAlgo_CoupleOfShapes.cxx \ GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx \ + GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx \ + GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx \ + GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx \ GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx \ + GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx \ + GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx \ + GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx \ GEOMAlgo_DataMapOfPassKeyInteger_0.cxx \ + GEOMAlgo_DataMapOfRealListOfShape_0.cxx \ + GEOMAlgo_DataMapOfShapeReal_0.cxx \ + GEOMAlgo_DataMapOfShapeShapeSet_0.cxx \ GEOMAlgo_FinderShapeOn1.cxx \ + GEOMAlgo_FinderShapeOn.cxx \ GEOMAlgo_FinderShapeOnQuad.cxx \ GEOMAlgo_GlueAnalyser.cxx \ GEOMAlgo_Gluer.cxx \ GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx \ + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx \ GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx \ GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx \ GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx \ GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx \ + GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx \ GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx \ GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx \ GEOMAlgo_IndexedDataMapOfShapeState_0.cxx \ @@ -70,9 +93,20 @@ LIB_SRC = \ GEOMAlgo_PassKeyMapHasher.cxx \ GEOMAlgo_PassKeyShape.cxx \ GEOMAlgo_ShapeAlgo.cxx \ + GEOMAlgo_ShapeSet.cxx \ + GEOMAlgo_ShapeSolid.cxx \ + GEOMAlgo_ShellSolid.cxx \ + GEOMAlgo_SolidSolid.cxx \ + GEOMAlgo_Splitter.cxx \ GEOMAlgo_StateCollector.cxx \ GEOMAlgo_SurfaceTools.cxx \ - GEOMAlgo_Tools.cxx + GEOMAlgo_Tools3D.cxx \ + GEOMAlgo_Tools.cxx \ + GEOMAlgo_VertexSolid.cxx \ + GEOMAlgo_WESCorrector.cxx \ + GEOMAlgo_WireEdgeSet.cxx \ + GEOMAlgo_WireSolid.cxx \ + GEOMAlgo_WireSplitter.cxx LIB_CLIENT_IDL = LIB_SERVER_IDL = @@ -84,18 +118,77 @@ EXPORT_HEADERS = \ BlockFix_CheckTool.hxx \ Handle_BlockFix_BlockFixAPI.hxx \ GEOMAlgo_Algo.hxx \ + GEOMAlgo_BuilderArea.hxx \ + GEOMAlgo_BuilderFace.hxx \ + GEOMAlgo_Builder.hxx \ + GEOMAlgo_BuilderShape.hxx \ + GEOMAlgo_BuilderSolid.hxx \ + GEOMAlgo_BuilderTools.hxx \ GEOMAlgo_CoupleOfShapes.hxx \ - GEOMAlgo_GlueAnalyser.hxx \ - GEOMAlgo_Gluer.hxx \ + GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx \ + GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx \ + GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx \ + GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx \ + GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx \ + GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx \ + GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx \ + GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx \ + GEOMAlgo_DataMapOfPassKeyInteger.hxx \ + GEOMAlgo_DataMapOfRealListOfShape.hxx \ + GEOMAlgo_DataMapOfShapeReal.hxx \ + GEOMAlgo_DataMapOfShapeShapeSet.hxx \ GEOMAlgo_FinderShapeOn1.hxx \ + GEOMAlgo_FinderShapeOn.hxx \ GEOMAlgo_FinderShapeOnQuad.hxx \ + GEOMAlgo_GlueAnalyser.hxx \ + GEOMAlgo_Gluer.hxx \ + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx \ + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx \ + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx \ + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx \ + GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx \ + GEOMAlgo_IndexedDataMapOfIntegerShape.hxx \ + GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx \ + GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx \ + GEOMAlgo_IndexedDataMapOfShapeBox.hxx \ GEOMAlgo_IndexedDataMapOfShapeState.hxx \ GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx \ + GEOMAlgo_ListIteratorOfListOfPnt.hxx \ + GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx \ + GEOMAlgo_ListNodeOfListOfPnt.hxx \ GEOMAlgo_ListOfCoupleOfShapes.hxx \ + GEOMAlgo_ListOfPnt.hxx \ + GEOMAlgo_PassKey.hxx \ + GEOMAlgo_PassKeyMapHasher.hxx \ + GEOMAlgo_PassKeyShape.hxx \ + GEOMAlgo_PWireEdgeSet.hxx \ GEOMAlgo_ShapeAlgo.hxx \ + GEOMAlgo_ShapeSet.hxx \ + GEOMAlgo_ShapeSolid.hxx \ + GEOMAlgo_ShellSolid.hxx \ + GEOMAlgo_SolidSolid.hxx \ + GEOMAlgo_Splitter.hxx \ + GEOMAlgo_StateCollector.hxx \ GEOMAlgo_State.hxx \ + GEOMAlgo_SurfaceTools.hxx \ + GEOMAlgo_Tools3D.hxx \ + GEOMAlgo_Tools.hxx \ + GEOMAlgo_VertexSolid.hxx \ + GEOMAlgo_WESCorrector.hxx \ + GEOMAlgo_WireEdgeSet.hxx \ + GEOMAlgo_WireSolid.hxx \ + GEOMAlgo_WireSplitter.hxx \ + Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx \ + Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx \ + Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx \ + Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx \ + Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx \ + Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx \ + Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx \ + Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx \ Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx \ - Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx + Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx \ + Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx # idl files EXPORT_IDLS= diff --git a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx index f036a1f10..3499864cc 100644 --- a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIn class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)():Handle(TCollection_MapNode)() {} Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfSh return *this; } - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() const + NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() const { return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(); +// Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(); Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx index 8ffb2d9b2..48ce73f8a 100644 --- a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexe class Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)():Handle(TCollection_MapNode)() {} Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) : p return *this; } - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() - { - return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); - } - - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() const + NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() const { return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(); +// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(); Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx new file mode 100644 index 000000000..eca4f179e --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx @@ -0,0 +1,72 @@ +// 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 + +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile +#define _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_ListNodeOfListOfPassKey; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey); + +class Handle(NMTDS_ListNodeOfListOfPassKey) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_ListNodeOfListOfPassKey)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_ListNodeOfListOfPassKey)(const Handle(NMTDS_ListNodeOfListOfPassKey)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_ListNodeOfListOfPassKey)(const NMTDS_ListNodeOfListOfPassKey* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_ListNodeOfListOfPassKey)& operator=(const Handle(NMTDS_ListNodeOfListOfPassKey)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_ListNodeOfListOfPassKey)& operator=(const NMTDS_ListNodeOfListOfPassKey* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_ListNodeOfListOfPassKey* operator->() const + { + return (NMTDS_ListNodeOfListOfPassKey *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfPassKey)(); + + Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfPassKey) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx new file mode 100644 index 000000000..202965e9d --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx @@ -0,0 +1,72 @@ +// 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 + +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#define _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_ListNodeOfListOfPassKeyBoolean; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean); + +class Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(const NMTDS_ListNodeOfListOfPassKeyBoolean* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& operator=(const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& operator=(const NMTDS_ListNodeOfListOfPassKeyBoolean* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_ListNodeOfListOfPassKeyBoolean* operator->() const + { + return (NMTDS_ListNodeOfListOfPassKeyBoolean *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(); + + Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx new file mode 100644 index 000000000..fbea2a6fe --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx @@ -0,0 +1,72 @@ +// 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 + +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#define _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_StdMapNodeOfMapOfPassKey; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey); + +class Handle(NMTDS_StdMapNodeOfMapOfPassKey) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_StdMapNodeOfMapOfPassKey)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_StdMapNodeOfMapOfPassKey)(const Handle(NMTDS_StdMapNodeOfMapOfPassKey)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKey)(const NMTDS_StdMapNodeOfMapOfPassKey* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKey)& operator=(const Handle(NMTDS_StdMapNodeOfMapOfPassKey)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKey)& operator=(const NMTDS_StdMapNodeOfMapOfPassKey* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_StdMapNodeOfMapOfPassKey* operator->() const + { + return (NMTDS_StdMapNodeOfMapOfPassKey *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_StdMapNodeOfMapOfPassKey)(); + + Standard_EXPORT static const Handle(NMTDS_StdMapNodeOfMapOfPassKey) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx new file mode 100644 index 000000000..4cf323559 --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx @@ -0,0 +1,72 @@ +// 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 + +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#define _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean); + +class Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(const NMTDS_StdMapNodeOfMapOfPassKeyBoolean* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& operator=(const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& operator=(const NMTDS_StdMapNodeOfMapOfPassKeyBoolean* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_StdMapNodeOfMapOfPassKeyBoolean* operator->() const + { + return (NMTDS_StdMapNodeOfMapOfPassKeyBoolean *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(); + + Standard_EXPORT static const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Makefile.in b/src/NMTDS/Makefile.in index 10be7fd90..0fbc92e6f 100644 --- a/src/NMTDS/Makefile.in +++ b/src/NMTDS/Makefile.in @@ -42,21 +42,63 @@ LIB_SRC = \ NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx \ NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx \ NMTDS_IndexRange.cxx \ + NMTDS_Iterator.cxx \ NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ + NMTDS_ListIteratorOfListOfPassKey_0.cxx \ + NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx \ NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ + NMTDS_ListNodeOfListOfPassKey_0.cxx \ + NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx \ NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ - NMTDS_ShapesDataStructure.cxx + NMTDS_ListOfPassKey_0.cxx \ + NMTDS_ListOfPassKeyBoolean_0.cxx \ + NMTDS_MapIteratorOfMapOfPassKey_0.cxx \ + NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx \ + NMTDS_MapOfPassKey_0.cxx \ + NMTDS_MapOfPassKeyBoolean_0.cxx \ + NMTDS_PassKeyBoolean.cxx \ + NMTDS_PassKey.cxx \ + NMTDS_PassKeyMapHasher.cxx \ + NMTDS_ShapesDataStructure.cxx \ + NMTDS_StdMapNodeOfMapOfPassKey_0.cxx \ + NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx LIB_CLIENT_IDL = LIB_SERVER_IDL = # header files EXPORT_HEADERS = \ - NMTDS_ShapesDataStructure.hxx \ - NMTDS_PShapesDataStructure.hxx \ + Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \ + Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ + Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx \ + Handle_NMTDS_ListNodeOfListOfPassKey.hxx \ + Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx \ + Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx \ NMTDS_CArray1OfIndexRange.hxx \ + NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \ NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \ - Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx + NMTDS_IndexRange.hxx \ + NMTDS_Iterator.hxx \ + NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ + NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx \ + NMTDS_ListIteratorOfListOfPassKey.hxx \ + NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ + NMTDS_ListNodeOfListOfPassKeyBoolean.hxx \ + NMTDS_ListNodeOfListOfPassKey.hxx \ + NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ + NMTDS_ListOfPassKeyBoolean.hxx \ + NMTDS_ListOfPassKey.hxx \ + NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx \ + NMTDS_MapIteratorOfMapOfPassKey.hxx \ + NMTDS_MapOfPassKeyBoolean.hxx \ + NMTDS_MapOfPassKey.hxx \ + NMTDS_PassKeyBoolean.hxx \ + NMTDS_PassKey.hxx \ + NMTDS_PassKeyMapHasher.hxx \ + NMTDS_PShapesDataStructure.hxx \ + NMTDS_ShapesDataStructure.hxx \ + NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx \ + NMTDS_StdMapNodeOfMapOfPassKey.hxx # idl files EXPORT_IDLS= diff --git a/src/NMTDS/NMTDS.cdl b/src/NMTDS/NMTDS.cdl index 6eb4abbd8..fed7a96b6 100644 --- a/src/NMTDS/NMTDS.cdl +++ b/src/NMTDS/NMTDS.cdl @@ -1,27 +1,26 @@ -// 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 -// +-- 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: NMTDS.cdl -- Created: Fri Nov 28 10:13:19 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 package NMTDS @@ -40,8 +39,16 @@ uses BOPTColStd is class ShapesDataStructure; - class IndexRange; - + class IndexRange; + + -- Modified to Add new classes Thu Sep 14 14:35:18 2006 + -- Contribution of Samtech www.samcef.com BEGIN + class Iterator; + class PassKey; + class PassKeyBoolean; + class PassKeyMapHasher; + -- Contribution of Samtech www.samcef.com END + pointer PShapesDataStructure to ShapesDataStructure from NMTDS; class CArray1OfIndexRange instantiates @@ -54,5 +61,21 @@ is IndexedDataMap from TCollection(Integer from Standard, IndexedDataMapOfShapeInteger from BooleanOperations, MapIntegerHasher from TColStd); - + + -- Modified to Add new classes Thu Sep 14 14:35:18 2006 + -- Contribution of Samtech www.samcef.com BEGIN + class ListOfPassKey instantiates + List from TCollection(PassKey from NMTDS); + + class MapOfPassKey instantiates + Map from TCollection(PassKey from NMTDS, + PassKeyMapHasher from NMTDS); + + class ListOfPassKeyBoolean instantiates + List from TCollection(PassKeyBoolean from NMTDS); + + class MapOfPassKeyBoolean instantiates + Map from TCollection(PassKeyBoolean from NMTDS, + PassKeyMapHasher from NMTDS); + -- Contribution of Samtech www.samcef.com END end NMTDS; diff --git a/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx b/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx index 26e553190..120e3030c 100644 --- a/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx +++ b/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -41,6 +41,7 @@ class NMTDS_IndexRange; #include #endif + class NMTDS_CArray1OfIndexRange { public: @@ -59,32 +60,56 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTDS_CArray1OfIndexRange(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5); + + Standard_EXPORT void Resize(const Standard_Integer theNewLength) ; + + Standard_EXPORT void Destroy() ; ~NMTDS_CArray1OfIndexRange() { Destroy(); } + + Standard_EXPORT Standard_Integer Length() const; + + Standard_EXPORT Standard_Integer Extent() const; + + Standard_EXPORT Standard_Integer FactLength() const; + + Standard_EXPORT Standard_Integer Append(const NMTDS_IndexRange& Value) ; + + Standard_EXPORT void Remove(const Standard_Integer Index) ; + + Standard_EXPORT const NMTDS_IndexRange& Value(const Standard_Integer Index) const; const NMTDS_IndexRange& operator ()(const Standard_Integer Index) const { return Value(Index); } + + Standard_EXPORT NMTDS_IndexRange& ChangeValue(const Standard_Integer Index) ; NMTDS_IndexRange& operator ()(const Standard_Integer Index) { return ChangeValue(Index); } + + Standard_EXPORT void SetBlockLength(const Standard_Integer aBL) ; + + Standard_EXPORT Standard_Integer BlockLength() const; @@ -105,13 +130,19 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTDS_CArray1OfIndexRange(const NMTDS_CArray1OfIndexRange& AnArray); + + Standard_EXPORT NMTDS_CArray1OfIndexRange& Assign(const NMTDS_CArray1OfIndexRange& Other) ; NMTDS_CArray1OfIndexRange& operator =(const NMTDS_CArray1OfIndexRange& Other) { return Assign(Other); } + + Standard_EXPORT Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; diff --git a/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx b/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx index fa29895c7..6bd7e3df2 100644 --- a/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx +++ b/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTDS/NMTDS_IndexRange.cdl b/src/NMTDS/NMTDS_IndexRange.cdl index 459404a04..70458ed5d 100644 --- a/src/NMTDS/NMTDS_IndexRange.cdl +++ b/src/NMTDS/NMTDS_IndexRange.cdl @@ -1,28 +1,26 @@ -// 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 -// +-- 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: NMTDS_IndexRange.cdl -- Created: Fri Nov 28 10:31:05 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 - class IndexRange from NMTDS diff --git a/src/NMTDS/NMTDS_IndexRange.hxx b/src/NMTDS/NMTDS_IndexRange.hxx index fd1c1cd76..1e9f76065 100644 --- a/src/NMTDS/NMTDS_IndexRange.hxx +++ b/src/NMTDS/NMTDS_IndexRange.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -35,6 +35,7 @@ #include #endif + class NMTDS_IndexRange { public: @@ -53,11 +54,23 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTDS_IndexRange(); + + Standard_EXPORT void SetFirst(const Standard_Integer aFirst) ; + + Standard_EXPORT void SetLast(const Standard_Integer aLast) ; + + Standard_EXPORT Standard_Integer First() const; + + Standard_EXPORT Standard_Integer Last() const; + + Standard_EXPORT Standard_Boolean IsInRange(const Standard_Integer aIndex) const; diff --git a/src/NMTDS/NMTDS_IndexRange.ixx b/src/NMTDS/NMTDS_IndexRange.ixx index beb598c02..44ea38a5a 100644 --- a/src/NMTDS/NMTDS_IndexRange.ixx +++ b/src/NMTDS/NMTDS_IndexRange.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTDS/NMTDS_IndexRange.jxx b/src/NMTDS/NMTDS_IndexRange.jxx index d52e44e24..936832bdc 100644 --- a/src/NMTDS/NMTDS_IndexRange.jxx +++ b/src/NMTDS/NMTDS_IndexRange.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _NMTDS_IndexRange_HeaderFile #include #endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx index 49d1fb437..179895110 100644 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -44,39 +44,31 @@ class TColStd_MapIntegerHasher; class NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger; + class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger : public TCollection_MapNode { 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); - } // Methods PUBLIC // + NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const Standard_Integer& K1,const Standard_Integer K2,const BooleanOperations_IndexedDataMapOfShapeInteger& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + Standard_Integer& Key1() const; + Standard_Integer& Key2() const; + TCollection_MapNodePtr& Next2() const; + BooleanOperations_IndexedDataMapOfShapeInteger& Value() const; -Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(); +//Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx index 454f87a63..4467ed2db 100644 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx +++ b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile #include #endif -NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() {} +//NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOf { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIn { return STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) ; } -Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() {} +//Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() {} #define TheKey Standard_Integer #define TheKey_hxx #define TheItem BooleanOperations_IndexedDataMapOfShapeInteger diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx index 4899fb0e0..0b1fef8e9 100644 --- a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -47,6 +47,7 @@ class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInte #include #endif + class NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger : public TCollection_BasicMap { public: @@ -65,39 +66,67 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Assign(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other) ; NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& operator =(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() { Clear(); } + + Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const BooleanOperations_IndexedDataMapOfShapeInteger& I) ; + + Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const BooleanOperations_IndexedDataMapOfShapeInteger& T) ; + + Standard_EXPORT void RemoveLast() ; + + Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; + + Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; + + Standard_EXPORT const BooleanOperations_IndexedDataMapOfShapeInteger& FindFromIndex(const Standard_Integer I) const; const BooleanOperations_IndexedDataMapOfShapeInteger& operator ()(const Standard_Integer I) const { return FindFromIndex(I); } + + Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeInteger& ChangeFromIndex(const Standard_Integer I) ; BooleanOperations_IndexedDataMapOfShapeInteger& operator ()(const Standard_Integer I) { return ChangeFromIndex(I); } + + Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; + + Standard_EXPORT const BooleanOperations_IndexedDataMapOfShapeInteger& FindFromKey(const Standard_Integer& K) const; + + Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeInteger& ChangeFromKey(const Standard_Integer& K) ; @@ -118,6 +147,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other); diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx index b3eb5d360..95760dc49 100644 --- a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx +++ b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTDS/NMTDS_Iterator.cdl b/src/NMTDS/NMTDS_Iterator.cdl new file mode 100755 index 000000000..1f6d5a00f --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.cdl @@ -0,0 +1,75 @@ +-- Copyright (C) 2006 SAMTECH +-- +-- 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: NMTDS_Iterator.cdl +-- Created: Sun May 07 14:58:16 2006 +-- Author: Peter KURNEV +-- + + + +class Iterator from NMTDS + + ---Purpose: + +uses + ShapeEnum from TopAbs, + ShapesDataStructure from NMTDS, + PShapesDataStructure from NMTDS, + ListOfPassKeyBoolean from NMTDS, + ListIteratorOfListOfPassKeyBoolean from NMTDS +--raises + +is + Create + returns Iterator from NMTDS; + ---C++: alias "Standard_EXPORT virtual ~NMTDS_Iterator();" + + + SetDS(me:out; + pDS:PShapesDataStructure from NMTDS); + + DS(me) + returns ShapesDataStructure from NMTDS; + ---C++:return const & + + Initialize(me: out; + aType1: ShapeEnum from TopAbs; + aType2: ShapeEnum from TopAbs); + More(me) + returns Boolean from Standard; + + Next(me: out); + + Current(me; aIndex1:out Integer from Standard; + aIndex2:out Integer from Standard; + aWithSubShape: out Boolean from Standard); + + Prepare(me:out); + + ExpectedLength(me) + returns Integer from Standard; + +fields + myPDS :PShapesDataStructure from NMTDS is protected; + myLists :ListOfPassKeyBoolean from NMTDS [6] is protected; + myIterator :ListIteratorOfListOfPassKeyBoolean from NMTDS is protected; + myEmptyList:ListOfPassKeyBoolean from NMTDS is protected; + myLength :Integer from Standard is protected; + +end Iterator; diff --git a/src/NMTDS/NMTDS_Iterator.cxx b/src/NMTDS/NMTDS_Iterator.cxx new file mode 100755 index 000000000..3dd885bd4 --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.cxx @@ -0,0 +1,446 @@ +// Copyright (C) 2006 SAMTECH +// +// 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: NMTDS_Iterator.cxx +// Created: Sun May 07 15:04:41 2006 +// Author: Peter KURNEV +// + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static + Bnd_Box& ComputeBoxEx(const Standard_Integer iX, + NMTDS_ShapesDataStructure* pDS, + Bnd_Box* pBoxes); +static + Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType); + +static + Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2); +static + void PropagateState(const Standard_Integer aIDS1, + const Standard_Integer aIDS2, + const Standard_Integer iStatus, + const Standard_Integer aNb, + NMTDS_ShapesDataStructure* pDS, + Standard_Integer *pTable); +static + void FillSuccessors(const Standard_Integer aIDS, + NMTDS_ShapesDataStructure* pDS, + TColStd_MapOfInteger& aMS); + +//======================================================================= +//function : NMTDS_Iterator +//purpose : +//======================================================================= + NMTDS_Iterator::NMTDS_Iterator() +{ + myPDS=NULL; + myLength=0; +} +//======================================================================= +//function : ~NMTDS_Iterator +//purpose : +//======================================================================= + NMTDS_Iterator::~NMTDS_Iterator() +{ +} +//======================================================================= +// function: SetDS +// purpose: +//======================================================================= + void NMTDS_Iterator::SetDS(const NMTDS_PShapesDataStructure& aDS) +{ + myPDS=aDS; +} +//======================================================================= +// function: DS +// purpose: +//======================================================================= + const NMTDS_ShapesDataStructure& NMTDS_Iterator::DS()const +{ + return *myPDS; +} +//======================================================================= +// function: ExpectedLength +// purpose: +//======================================================================= + Standard_Integer NMTDS_Iterator::ExpectedLength() const +{ + return myLength; +} +//======================================================================= +// function: Initialize +// purpose: +//======================================================================= + void NMTDS_Iterator::Initialize(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2) +{ + Standard_Integer iX; + // + iX=TypeToInteger(aType1, aType2); + if (iX>=0) { + myIterator.Initialize(myLists[iX]); + myLength=myLists[iX].Extent(); + } + else { + myIterator.Initialize(myEmptyList); + myLength=0; + } +} +//======================================================================= +// function: More +// purpose: +//======================================================================= + Standard_Boolean NMTDS_Iterator::More()const +{ + return myIterator.More(); +} +//======================================================================= +// function: Next +// purpose: +//======================================================================= + void NMTDS_Iterator::Next() +{ + myIterator.Next(); +} +//======================================================================= +// function: Current +// purpose: +//======================================================================= + void NMTDS_Iterator::Current(Standard_Integer& aIndex1, + Standard_Integer& aIndex2, + Standard_Boolean& aWithSubShape) const +{ + const NMTDS_PassKeyBoolean& aPKB=myIterator.Value(); + aPKB.Ids(aIndex1, aIndex2); + aWithSubShape=aPKB.Flag(); +} +//======================================================================= +// function: Prepare +// purpose: +//======================================================================= + void NMTDS_Iterator::Prepare() +{ + Standard_Boolean bFlag; + Standard_Integer aNb, aNb2, aNbR, iR, jR1, jR2, jR; + Standard_Integer *pTable, i, j, k, iT1, iT2, i1, i2, j1, j2, iT, jT; + Standard_Integer iStatus, iX; + Bnd_Box *pBoxes, aBox; + TColStd_ListIteratorOfListOfInteger aItIT, aItJT; + TopAbs_ShapeEnum aTi, aTj; + NMTDS_PassKeyBoolean aPKXB; + NMTDS_MapOfPassKeyBoolean aMPKXB; + // + if (myPDS==NULL){ + return; + } + // + myLength=0; + for (i=0; i<6; ++i) { + myLists[i].Clear(); + } + // + aNb=myPDS->NumberOfShapesOfTheObject(); + aNb2=aNb*aNb; + // + pTable=new Standard_Integer [aNb2]; + pBoxes=new Bnd_Box [aNb]; + // + // 1. Set status to Unknown + for (i=0; iRanges(); + aNbR=aRanges.Extent(); + for (iR=1; iR<=aNbR; ++iR) { + const NMTDS_IndexRange& aRange=aRanges(iR); + jR1=aRange.First(); + jR2=aRange.Last(); + for (i=jR1; i<=jR2; ++i) { + for (j=i; j<=jR2; ++j) { + k=(i-1)*aNb+(j-1); + pTable[k]=4; //SameRange + } + // + ComputeBoxEx(i, myPDS, pBoxes); + } + } + // + // 3. Intersect shapes by ranges + iT1=TypeToInteger(TopAbs_COMPOUND); + iT2=TypeToInteger(TopAbs_VERTEX); + // + for (iR=1; iRGetShapeType(i))).Append(i); + } + // + for (jR=2; jR<=aNbR; ++jR) { + const NMTDS_IndexRange& aRj=aRanges(jR); + j1=aRj.First(); + j2=aRj.Last(); + for (j=j1; j<=j2; ++j) { + aALJR(TypeToInteger(myPDS->GetShapeType(j))).Append(j); + } + } + // + for (iT=iT1; iT<=iT2; ++iT) { + const TColStd_ListOfInteger& aLIT=aALIR(iT); + if (aLIT.IsEmpty()) { + continue; + } + for (jT=iT1; jT<=iT2; ++jT) { + const TColStd_ListOfInteger& aLJT=aALJR(jT); + if (aLJT.IsEmpty()) { + continue; + } + // + aItIT.Initialize(aLIT); + for (; aItIT.More(); aItIT.Next()) { + aItJT.Initialize(aLJT); + for (; aItJT.More(); aItJT.Next()) { + i1=aItIT.Value(); + j1=aItJT.Value(); + if (i1>j1) { + iX=i1; + i1=j1; + j1=iX; + } + // + i=i1-1; + j=j1-1; + k=i*aNb+j; + // + if (pTable[k]!=0 && pTable[k]!=2) { + continue; + } + // enlarged boxes + const Bnd_Box& aBoxEi=pBoxes[i]; + const Bnd_Box& aBoxEj=pBoxes[j]; + if (aBoxEi.IsOut(aBoxEj)) { + iStatus=3; // Non-intersected + PropagateState(i1, j1, iStatus, aNb, myPDS, pTable); + } + else { + iStatus=1; // Bounding boxes are intersected + const Bnd_Box& aBoxi=myPDS->GetBoundingBox(i1); + const Bnd_Box& aBoxj=myPDS->GetBoundingBox(j1); + if (aBoxi.IsOut(aBoxj)) { + iStatus=2; // Bounding boxes of Sub-shapes are intersected + } + pTable[k]=iStatus; + // + aTi=myPDS->GetShapeType(i1); + aTj=myPDS->GetShapeType(j1); + iX=TypeToInteger(aTi, aTj); + // + if (iX>=0) { + aPKXB.SetIds(i1, j1); + if (aMPKXB.Add(aPKXB)) { + bFlag=Standard_False; + if(iStatus==2) { + bFlag=!bFlag; + } + aPKXB.SetFlag(bFlag); + myLists[iX].Append(aPKXB); + } + }//if (iX>=0) { + }// else { + }//for (; aItJT.More(); aItJT.Next()) { + }//for (; aItIT.More(); aItIT.Next()) { + }//for (jT=iT1; jT<=iT2; ++jT) { + }//for (iT=iT1; iT<=iT2; ++iT) { + } + // + // + delete [] (Bnd_Box*)pBoxes; + delete [] (Standard_Integer*)pTable; +} +//======================================================================= +// function: PropagateState +// purpose: +//======================================================================= +void PropagateState(const Standard_Integer aIDS1, + const Standard_Integer aIDS2, + const Standard_Integer iStatus, + const Standard_Integer aNb, + NMTDS_ShapesDataStructure* pDS, + Standard_Integer *pTable) +{ + Standard_Integer i, j, k, i1, j1, iX, i11, j11; + TColStd_MapOfInteger aMS1, aMS2; + TColStd_MapIteratorOfMapOfInteger aIt1, aIt2; + // + FillSuccessors(aIDS1, pDS, aMS1); + FillSuccessors(aIDS2, pDS, aMS2); + // + aIt1.Initialize(aMS1); + for (; aIt1.More(); aIt1.Next()) { + i1=aIt1.Key(); + // + aIt2.Initialize(aMS2); + for (; aIt2.More(); aIt2.Next()) { + j1=aIt2.Key(); + // + i11=i1; + j11=j1; + // + if (i1>j1) { + iX=i11; + i11=j11; + j11=iX; + } + i=i11-1; + j=j11-1; + k=i*aNb+j; + if (!pTable[k]) { + pTable[k]=iStatus; + } + } + } +} +//======================================================================= +// function: FillSuccessors +// purpose: +//======================================================================= +void FillSuccessors(const Standard_Integer aIDS, + NMTDS_ShapesDataStructure* pDS, + TColStd_MapOfInteger& aMS) +{ + Standard_Integer i, aNbS, iDS1; + // + aMS.Add(aIDS); + aNbS=pDS->NumberOfSuccessors(aIDS); + for (i=1; i<=aNbS; ++i) { + iDS1=pDS->GetSuccessor(aIDS, i); + FillSuccessors(iDS1, pDS, aMS); + } +} +//======================================================================= +// function: ComputeBoxEx +// purpose: +//======================================================================= +Bnd_Box& ComputeBoxEx(const Standard_Integer aIndexDS, + NMTDS_ShapesDataStructure* pDS, + Bnd_Box* pBoxes) +{ + Standard_Boolean bIsVoid; + Standard_Integer iX; + // + iX=aIndexDS-1; + Bnd_Box& aBoxEx=pBoxes[iX]; + // + bIsVoid=aBoxEx.IsVoid(); + if (bIsVoid) { + Standard_Integer i, aNb, iS; + // + const Bnd_Box& aBox=pDS->GetBoundingBox(aIndexDS); + aBoxEx.Add(aBox); + // + aNb=pDS->NumberOfSuccessors(aIndexDS); + for (i=1; i<=aNb; ++i) { + iS=pDS->GetSuccessor(aIndexDS, i); + Bnd_Box& aBoxS=ComputeBoxEx(iS, pDS, pBoxes); + aBoxEx.Add(aBoxS); + } + } + return aBoxEx; +} +//======================================================================= +// function: TypeToInteger +// purpose: +//======================================================================= +Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType) +{ + return (Standard_Integer)aType; +} +//======================================================================= +// function: TypeToInteger +// purpose: +//======================================================================= +Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2) +{ + Standard_Integer iRet, iT1, iT2, iX; + // + iRet=-1; + iT1=(Standard_Integer)aType1; + iT2=(Standard_Integer)aType2; + // + iX=iT2*10+iT1; + switch (iX) { + case 77: + iRet=5; // VV + break; + case 76: + case 67: + iRet=4; // VE + break; + case 74: + case 47: + iRet=2; // VF + break; + case 66: + iRet=3; // EE + break; + case 64: + case 46: + iRet=1; // EF + break; + case 44: + iRet=0; // FF + break; + default: + break; + } + return iRet; +} + +/* + printf(" *** pTable ***\n"); + for (i=0; i +#endif +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class NMTDS_ShapesDataStructure; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_Iterator { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_Iterator(); +Standard_EXPORT virtual ~NMTDS_Iterator(); + + +Standard_EXPORT void SetDS(const NMTDS_PShapesDataStructure& pDS) ; + + +Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; + + +Standard_EXPORT void Initialize(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; + + +Standard_EXPORT Standard_Boolean More() const; + + +Standard_EXPORT void Next() ; + + +Standard_EXPORT void Current(Standard_Integer& aIndex1,Standard_Integer& aIndex2,Standard_Boolean& aWithSubShape) const; + + +Standard_EXPORT void Prepare() ; + + +Standard_EXPORT Standard_Integer ExpectedLength() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +NMTDS_PShapesDataStructure myPDS; +NMTDS_ListOfPassKeyBoolean myLists[6]; +NMTDS_ListIteratorOfListOfPassKeyBoolean myIterator; +NMTDS_ListOfPassKeyBoolean myEmptyList; +Standard_Integer myLength; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_Iterator.ixx b/src/NMTDS/NMTDS_Iterator.ixx new file mode 100644 index 000000000..adb6c909f --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/NMTDS/NMTDS_Iterator.jxx b/src/NMTDS/NMTDS_Iterator.jxx new file mode 100644 index 000000000..dfe46d0cb --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.jxx @@ -0,0 +1,25 @@ +// 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 + +#ifndef _NMTDS_ShapesDataStructure_HeaderFile +#include +#endif +#ifndef _NMTDS_Iterator_HeaderFile +#include +#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx index 767db6c4e..3316ee82c 100644 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -43,6 +43,7 @@ class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; #include #endif + class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors { public: @@ -61,11 +62,22 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors(); + + Standard_EXPORT NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& L); + + Standard_EXPORT void Initialize(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& L) ; + Standard_Boolean More() const; + + Standard_EXPORT void Next() ; + + Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Value() const; diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx index 4698ffe4a..e3884deaa 100644 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx new file mode 100644 index 000000000..bf3646a40 --- /dev/null +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx @@ -0,0 +1,141 @@ +// 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 + +#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile +#define _NMTDS_ListIteratorOfListOfPassKey_HeaderFile + +#ifndef _Standard_Address_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_NoMoreObject; +class Standard_NoSuchObject; +class NMTDS_ListOfPassKey; +class NMTDS_PassKey; +class NMTDS_ListNodeOfListOfPassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_ListIteratorOfListOfPassKey { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_ListIteratorOfListOfPassKey(); + + +Standard_EXPORT NMTDS_ListIteratorOfListOfPassKey(const NMTDS_ListOfPassKey& L); + + +Standard_EXPORT void Initialize(const NMTDS_ListOfPassKey& L) ; + + Standard_Boolean More() const; + + +Standard_EXPORT void Next() ; + + +Standard_EXPORT NMTDS_PassKey& Value() const; + + +friend class NMTDS_ListOfPassKey; + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +Standard_Address current; +Standard_Address previous; + + +}; + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx new file mode 100644 index 000000000..bd2e0e03b --- /dev/null +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx @@ -0,0 +1,141 @@ +// 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 + +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#define _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_Address_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_NoMoreObject; +class Standard_NoSuchObject; +class NMTDS_ListOfPassKeyBoolean; +class NMTDS_PassKeyBoolean; +class NMTDS_ListNodeOfListOfPassKeyBoolean; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_ListIteratorOfListOfPassKeyBoolean { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_ListIteratorOfListOfPassKeyBoolean(); + + +Standard_EXPORT NMTDS_ListIteratorOfListOfPassKeyBoolean(const NMTDS_ListOfPassKeyBoolean& L); + + +Standard_EXPORT void Initialize(const NMTDS_ListOfPassKeyBoolean& L) ; + + Standard_Boolean More() const; + + +Standard_EXPORT void Next() ; + + +Standard_EXPORT NMTDS_PassKeyBoolean& Value() const; + + +friend class NMTDS_ListOfPassKeyBoolean; + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +Standard_Address current; +Standard_Address previous; + + +}; + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..a0daa155d --- /dev/null +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx @@ -0,0 +1,50 @@ +// 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 + +#include + +#ifndef _Standard_NoMoreObject_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif + + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx new file mode 100644 index 000000000..de084cc19 --- /dev/null +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx @@ -0,0 +1,50 @@ +// 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 + +#include + +#ifndef _Standard_NoMoreObject_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif + + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx index 13b7a121c..05fe687bb 100644 --- a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ b/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -41,36 +41,25 @@ class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; + class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors : public TCollection_MapNode { 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); - } // Methods PUBLIC // + NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,const TCollection_MapNodePtr& n); + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Value() const; -Standard_EXPORT ~NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors(); +//Standard_EXPORT ~NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx index 49e69a396..f354af531 100644 --- a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ b/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile #include #endif -NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::~NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors() {} +//NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::~NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfIndexedDataMapOfShap { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestor { return STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) ; } -Standard_Boolean NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::~Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors() {} +//Standard_Boolean NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::~Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors() {} #define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors #define Item_hxx #define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx new file mode 100644 index 000000000..160d2fbd3 --- /dev/null +++ b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx @@ -0,0 +1,116 @@ +// 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 + +#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile +#define _NMTDS_ListNodeOfListOfPassKey_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class NMTDS_PassKey; +class NMTDS_ListOfPassKey; +class NMTDS_ListIteratorOfListOfPassKey; + + + +class NMTDS_ListNodeOfListOfPassKey : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_ListNodeOfListOfPassKey(const NMTDS_PassKey& I,const TCollection_MapNodePtr& n); + + NMTDS_PassKey& Value() const; +//Standard_EXPORT ~NMTDS_ListNodeOfListOfPassKey(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +NMTDS_PassKey myValue; + + +}; + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx new file mode 100644 index 000000000..a6e96e655 --- /dev/null +++ b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx @@ -0,0 +1,116 @@ +// 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 + +#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#define _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class NMTDS_PassKeyBoolean; +class NMTDS_ListOfPassKeyBoolean; +class NMTDS_ListIteratorOfListOfPassKeyBoolean; + + + +class NMTDS_ListNodeOfListOfPassKeyBoolean : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_ListNodeOfListOfPassKeyBoolean(const NMTDS_PassKeyBoolean& I,const TCollection_MapNodePtr& n); + + NMTDS_PassKeyBoolean& Value() const; +//Standard_EXPORT ~NMTDS_ListNodeOfListOfPassKeyBoolean(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +NMTDS_PassKeyBoolean myValue; + + +}; + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..e84d51f5b --- /dev/null +++ b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx @@ -0,0 +1,93 @@ +// 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 + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#include +#endif +//NMTDS_ListNodeOfListOfPassKeyBoolean::~NMTDS_ListNodeOfListOfPassKeyBoolean() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_ListNodeOfListOfPassKeyBoolean", + sizeof(NMTDS_ListNodeOfListOfPassKeyBoolean), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean))) { + _anOtherObject = Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)((Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_ListNodeOfListOfPassKeyBoolean::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean) ; +} +//Standard_Boolean NMTDS_ListNodeOfListOfPassKeyBoolean::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_ListNodeOfListOfPassKeyBoolean::~Handle_NMTDS_ListNodeOfListOfPassKeyBoolean() {} +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx new file mode 100644 index 000000000..a85b03bc1 --- /dev/null +++ b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx @@ -0,0 +1,93 @@ +// 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 + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile +#include +#endif +//NMTDS_ListNodeOfListOfPassKey::~NMTDS_ListNodeOfListOfPassKey() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfPassKey_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_ListNodeOfListOfPassKey", + sizeof(NMTDS_ListNodeOfListOfPassKey), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_ListNodeOfListOfPassKey) Handle(NMTDS_ListNodeOfListOfPassKey)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_ListNodeOfListOfPassKey) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey))) { + _anOtherObject = Handle(NMTDS_ListNodeOfListOfPassKey)((Handle(NMTDS_ListNodeOfListOfPassKey)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_ListNodeOfListOfPassKey::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey) ; +} +//Standard_Boolean NMTDS_ListNodeOfListOfPassKey::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_ListNodeOfListOfPassKey::~Handle_NMTDS_ListNodeOfListOfPassKey() {} +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx index 382994b64..7664fc4ea 100644 --- a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -45,6 +45,7 @@ class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; #include #endif + class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors { public: @@ -63,34 +64,71 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors(); + + Standard_EXPORT void Assign(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; void operator=(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) { Assign(Other); } + + Standard_EXPORT Standard_Integer Extent() const; + + Standard_EXPORT void Clear() ; ~NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors() { Clear(); } + Standard_Boolean IsEmpty() const; + + Standard_EXPORT void Prepend(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I) ; + + Standard_EXPORT void Prepend(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& theIt) ; + + Standard_EXPORT void Prepend(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; + + Standard_EXPORT void Append(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I) ; + + Standard_EXPORT void Append(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& theIt) ; + + Standard_EXPORT void Append(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; + + Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& First() const; + + Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Last() const; + + Standard_EXPORT void RemoveFirst() ; + + Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; + + Standard_EXPORT void InsertBefore(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; + + Standard_EXPORT void InsertBefore(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; + + Standard_EXPORT void InsertAfter(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; + + Standard_EXPORT void InsertAfter(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; @@ -112,6 +150,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other); diff --git a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx index 1647253a4..f85f6d9d5 100644 --- a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTDS/NMTDS_ListOfPassKey.hxx b/src/NMTDS/NMTDS_ListOfPassKey.hxx new file mode 100644 index 000000000..207251094 --- /dev/null +++ b/src/NMTDS/NMTDS_ListOfPassKey.hxx @@ -0,0 +1,195 @@ +// 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 + +#ifndef _NMTDS_ListOfPassKey_HeaderFile +#define _NMTDS_ListOfPassKey_HeaderFile + +#ifndef _Standard_Address_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class NMTDS_ListIteratorOfListOfPassKey; +class NMTDS_PassKey; +class NMTDS_ListNodeOfListOfPassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_ListOfPassKey { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_ListOfPassKey(); + + +Standard_EXPORT void Assign(const NMTDS_ListOfPassKey& Other) ; + void operator=(const NMTDS_ListOfPassKey& Other) +{ + Assign(Other); +} + + + +Standard_EXPORT Standard_Integer Extent() const; + + +Standard_EXPORT void Clear() ; +~NMTDS_ListOfPassKey() +{ + Clear(); +} + + + Standard_Boolean IsEmpty() const; + + +Standard_EXPORT void Prepend(const NMTDS_PassKey& I) ; + + +Standard_EXPORT void Prepend(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& theIt) ; + + +Standard_EXPORT void Prepend(NMTDS_ListOfPassKey& Other) ; + + +Standard_EXPORT void Append(const NMTDS_PassKey& I) ; + + +Standard_EXPORT void Append(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& theIt) ; + + +Standard_EXPORT void Append(NMTDS_ListOfPassKey& Other) ; + + +Standard_EXPORT NMTDS_PassKey& First() const; + + +Standard_EXPORT NMTDS_PassKey& Last() const; + + +Standard_EXPORT void RemoveFirst() ; + + +Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfPassKey& It) ; + + +Standard_EXPORT void InsertBefore(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& It) ; + + +Standard_EXPORT void InsertBefore(NMTDS_ListOfPassKey& Other,NMTDS_ListIteratorOfListOfPassKey& It) ; + + +Standard_EXPORT void InsertAfter(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& It) ; + + +Standard_EXPORT void InsertAfter(NMTDS_ListOfPassKey& Other,NMTDS_ListIteratorOfListOfPassKey& It) ; + + +friend class NMTDS_ListIteratorOfListOfPassKey; + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_ListOfPassKey(const NMTDS_ListOfPassKey& Other); + + + // Fields PRIVATE + // +Standard_Address myFirst; +Standard_Address myLast; + + +}; + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx new file mode 100644 index 000000000..3ca9a39ab --- /dev/null +++ b/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx @@ -0,0 +1,195 @@ +// 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 + +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#define _NMTDS_ListOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_Address_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class NMTDS_ListIteratorOfListOfPassKeyBoolean; +class NMTDS_PassKeyBoolean; +class NMTDS_ListNodeOfListOfPassKeyBoolean; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_ListOfPassKeyBoolean { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_ListOfPassKeyBoolean(); + + +Standard_EXPORT void Assign(const NMTDS_ListOfPassKeyBoolean& Other) ; + void operator=(const NMTDS_ListOfPassKeyBoolean& Other) +{ + Assign(Other); +} + + + +Standard_EXPORT Standard_Integer Extent() const; + + +Standard_EXPORT void Clear() ; +~NMTDS_ListOfPassKeyBoolean() +{ + Clear(); +} + + + Standard_Boolean IsEmpty() const; + + +Standard_EXPORT void Prepend(const NMTDS_PassKeyBoolean& I) ; + + +Standard_EXPORT void Prepend(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& theIt) ; + + +Standard_EXPORT void Prepend(NMTDS_ListOfPassKeyBoolean& Other) ; + + +Standard_EXPORT void Append(const NMTDS_PassKeyBoolean& I) ; + + +Standard_EXPORT void Append(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& theIt) ; + + +Standard_EXPORT void Append(NMTDS_ListOfPassKeyBoolean& Other) ; + + +Standard_EXPORT NMTDS_PassKeyBoolean& First() const; + + +Standard_EXPORT NMTDS_PassKeyBoolean& Last() const; + + +Standard_EXPORT void RemoveFirst() ; + + +Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +Standard_EXPORT void InsertBefore(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +Standard_EXPORT void InsertBefore(NMTDS_ListOfPassKeyBoolean& Other,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +Standard_EXPORT void InsertAfter(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +Standard_EXPORT void InsertAfter(NMTDS_ListOfPassKeyBoolean& Other,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +friend class NMTDS_ListIteratorOfListOfPassKeyBoolean; + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_ListOfPassKeyBoolean(const NMTDS_ListOfPassKeyBoolean& Other); + + + // Fields PRIVATE + // +Standard_Address myFirst; +Standard_Address myLast; + + +}; + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..846661e5f --- /dev/null +++ b/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx @@ -0,0 +1,47 @@ +// 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 + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif + + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListOfPassKey_0.cxx new file mode 100644 index 000000000..f87d96c3b --- /dev/null +++ b/src/NMTDS/NMTDS_ListOfPassKey_0.cxx @@ -0,0 +1,47 @@ +// 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 + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif + + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx new file mode 100644 index 000000000..71b372604 --- /dev/null +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx @@ -0,0 +1,109 @@ +// 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 + +#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile +#define _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class NMTDS_PassKey; +class NMTDS_PassKeyMapHasher; +class NMTDS_MapOfPassKey; +class NMTDS_StdMapNodeOfMapOfPassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_MapIteratorOfMapOfPassKey : public TCollection_BasicMapIterator { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKey(); + + +Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKey(const NMTDS_MapOfPassKey& aMap); + + +Standard_EXPORT void Initialize(const NMTDS_MapOfPassKey& aMap) ; + + +Standard_EXPORT const NMTDS_PassKey& Key() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx new file mode 100644 index 000000000..dbff06524 --- /dev/null +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx @@ -0,0 +1,109 @@ +// 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 + +#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile +#define _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class NMTDS_PassKeyBoolean; +class NMTDS_PassKeyMapHasher; +class NMTDS_MapOfPassKeyBoolean; +class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_MapIteratorOfMapOfPassKeyBoolean : public TCollection_BasicMapIterator { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKeyBoolean(); + + +Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKeyBoolean(const NMTDS_MapOfPassKeyBoolean& aMap); + + +Standard_EXPORT void Initialize(const NMTDS_MapOfPassKeyBoolean& aMap) ; + + +Standard_EXPORT const NMTDS_PassKeyBoolean& Key() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..68c88970e --- /dev/null +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx @@ -0,0 +1,52 @@ +// 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 + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif + + +#define TheKey NMTDS_PassKeyBoolean +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +#define TCollection_Map NMTDS_MapOfPassKeyBoolean +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx new file mode 100644 index 000000000..c96965f87 --- /dev/null +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx @@ -0,0 +1,52 @@ +// 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 + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_MapOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif + + +#define TheKey NMTDS_PassKey +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() +#define TCollection_Map NMTDS_MapOfPassKey +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_MapOfPassKey.hxx b/src/NMTDS/NMTDS_MapOfPassKey.hxx new file mode 100644 index 000000000..b9360dd20 --- /dev/null +++ b/src/NMTDS/NMTDS_MapOfPassKey.hxx @@ -0,0 +1,137 @@ +// 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 + +#ifndef _NMTDS_MapOfPassKey_HeaderFile +#define _NMTDS_MapOfPassKey_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class NMTDS_PassKey; +class NMTDS_PassKeyMapHasher; +class NMTDS_StdMapNodeOfMapOfPassKey; +class NMTDS_MapIteratorOfMapOfPassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_MapOfPassKey : public TCollection_BasicMap { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_MapOfPassKey(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT NMTDS_MapOfPassKey& Assign(const NMTDS_MapOfPassKey& Other) ; + NMTDS_MapOfPassKey& operator =(const NMTDS_MapOfPassKey& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~NMTDS_MapOfPassKey() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Add(const NMTDS_PassKey& aKey) ; + + +Standard_EXPORT Standard_Boolean Contains(const NMTDS_PassKey& aKey) const; + + +Standard_EXPORT Standard_Boolean Remove(const NMTDS_PassKey& aKey) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_MapOfPassKey(const NMTDS_MapOfPassKey& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx new file mode 100644 index 000000000..8f0312b63 --- /dev/null +++ b/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx @@ -0,0 +1,137 @@ +// 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 + +#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile +#define _NMTDS_MapOfPassKeyBoolean_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class NMTDS_PassKeyBoolean; +class NMTDS_PassKeyMapHasher; +class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; +class NMTDS_MapIteratorOfMapOfPassKeyBoolean; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_MapOfPassKeyBoolean : public TCollection_BasicMap { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_MapOfPassKeyBoolean(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT NMTDS_MapOfPassKeyBoolean& Assign(const NMTDS_MapOfPassKeyBoolean& Other) ; + NMTDS_MapOfPassKeyBoolean& operator =(const NMTDS_MapOfPassKeyBoolean& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~NMTDS_MapOfPassKeyBoolean() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Add(const NMTDS_PassKeyBoolean& aKey) ; + + +Standard_EXPORT Standard_Boolean Contains(const NMTDS_PassKeyBoolean& aKey) const; + + +Standard_EXPORT Standard_Boolean Remove(const NMTDS_PassKeyBoolean& aKey) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_MapOfPassKeyBoolean(const NMTDS_MapOfPassKeyBoolean& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..4c9ac2a3f --- /dev/null +++ b/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx @@ -0,0 +1,52 @@ +// 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 + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile +#include +#endif + + +#define TheKey NMTDS_PassKeyBoolean +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +#define TCollection_Map NMTDS_MapOfPassKeyBoolean +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_MapOfPassKey_0.cxx b/src/NMTDS/NMTDS_MapOfPassKey_0.cxx new file mode 100644 index 000000000..12f3a2289 --- /dev/null +++ b/src/NMTDS/NMTDS_MapOfPassKey_0.cxx @@ -0,0 +1,52 @@ +// 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 + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile +#include +#endif + + +#define TheKey NMTDS_PassKey +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() +#define TCollection_Map NMTDS_MapOfPassKey +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_PShapesDataStructure.hxx b/src/NMTDS/NMTDS_PShapesDataStructure.hxx index 75e09af84..128b45862 100644 --- a/src/NMTDS/NMTDS_PShapesDataStructure.hxx +++ b/src/NMTDS/NMTDS_PShapesDataStructure.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTDS/NMTDS_PassKey.cdl b/src/NMTDS/NMTDS_PassKey.cdl new file mode 100755 index 000000000..e9a637a46 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKey.cdl @@ -0,0 +1,80 @@ +-- Copyright (C) 2006 SAMTECH +-- +-- 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: NMTDS_PassKey.cdl +-- Created: +-- Author: Peter KURNEV +-- + +class PassKey from NMTDS + + ---Purpose: + +uses + Shape from TopoDS, + ListOfInteger from TColStd + +--raises + +is + Create + returns PassKey from NMTDS; + + Assign(me:out; + Other : PassKey from NMTDS) + returns PassKey from NMTDS; + ---C++: alias operator = + ---C++: return & +-- + SetIds(me:out; + aI1 :Integer from Standard; + aI2 :Integer from Standard); + + NbMax(me) + returns Integer from Standard; + + Clear(me:out); + + Compute(me:out); + + IsEqual(me; + aOther:PassKey from NMTDS) + returns Boolean from Standard; + + Key(me) + returns Address from Standard; + + HashCode(me; + Upper : Integer from Standard) + returns Integer from Standard; + + + Ids(me; + aI1 :out Integer from Standard; + aI2 :out Integer from Standard); + + Dump(me); + +fields + + myNbIds: Integer from Standard is protected; + myNbMax: Integer from Standard is protected; + mySum : Integer from Standard is protected; + myIds : Integer from Standard [2] is protected; + +end PassKey; diff --git a/src/NMTDS/NMTDS_PassKey.cxx b/src/NMTDS/NMTDS_PassKey.cxx new file mode 100755 index 000000000..910400cd6 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKey.cxx @@ -0,0 +1,216 @@ +// Copyright (C) 2006 SAMTECH +// +// 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: NMTDS_PassKey.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +#include +#include +#include + +#ifdef WNT +#pragma warning( disable : 4101) +#endif + +static + void SortShell(const int n, int* a); +static + Standard_Integer NormalizedId(const Standard_Integer aId, + const Standard_Integer aDiv); + +//======================================================================= +//function : +//purpose : +//======================================================================= + NMTDS_PassKey::NMTDS_PassKey() +{ + Clear(); +} +//======================================================================= +//function :Assign +//purpose : +//======================================================================= + NMTDS_PassKey& NMTDS_PassKey::Assign(const NMTDS_PassKey& anOther) +{ + myNbIds=anOther.myNbIds; + myNbMax=anOther.myNbMax; + mySum=anOther.mySum; + memcpy(myIds, anOther.myIds, sizeof(myIds)); + return *this; +} +//======================================================================= +//function :Clear +//purpose : +//======================================================================= + void NMTDS_PassKey::Clear() +{ + Standard_Integer i; + // + myNbIds=0; + myNbMax=2; + mySum=0; + for (i=0; iaTresh) { + aIdRet=aId%aTresh; + } + return aIdRet; +} +//======================================================================= +// function: SortShell +// purpose : +//======================================================================= +void SortShell(const int n, int* a) +{ + int x, nd, i, j, l, d=1; + // + while(d<=n) { + d*=2; + } + // + while (d) { + d=(d-1)/2; + // + nd=n-d; + for (i=0; i -1) goto m30; + }//if (a[l] < a[j]){ + }//for (i=0; i +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _Standard_Address_HeaderFile +#include +#endif + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_PassKey { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_PassKey(); + + +Standard_EXPORT NMTDS_PassKey& Assign(const NMTDS_PassKey& Other) ; + NMTDS_PassKey& operator =(const NMTDS_PassKey& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2) ; + + +Standard_EXPORT Standard_Integer NbMax() const; + + +Standard_EXPORT void Clear() ; + + +Standard_EXPORT void Compute() ; + + +Standard_EXPORT Standard_Boolean IsEqual(const NMTDS_PassKey& aOther) const; + + +Standard_EXPORT Standard_Address Key() const; + + +Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const; + + +Standard_EXPORT void Ids(Standard_Integer& aI1,Standard_Integer& aI2) const; + + +Standard_EXPORT void Dump() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +Standard_Integer myNbIds; +Standard_Integer myNbMax; +Standard_Integer mySum; +Standard_Integer myIds[2]; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_PassKey.ixx b/src/NMTDS/NMTDS_PassKey.ixx new file mode 100644 index 000000000..906d159d0 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKey.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/NMTDS/NMTDS_PassKey.jxx b/src/NMTDS/NMTDS_PassKey.jxx new file mode 100644 index 000000000..02ef906d3 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKey.jxx @@ -0,0 +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 + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.cdl b/src/NMTDS/NMTDS_PassKeyBoolean.cdl new file mode 100755 index 000000000..2ad7871a0 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.cdl @@ -0,0 +1,56 @@ +-- Copyright (C) 2006 SAMTECH +-- +-- 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: NMTDS_PassKeyBoolean.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class PassKeyBoolean from NMTDS + inherits PassKey from NMTDS + + ---Purpose: + +uses + Shape from TopoDS, + ListOfInteger from TColStd + +--raises + +is + Create + returns PassKeyBoolean from NMTDS; + + Assign(me:out; + Other : PassKeyBoolean from NMTDS) + returns PassKeyBoolean from NMTDS; + ---C++: alias operator = + ---C++: return & +-- + SetFlag(me:out; + aFlag: Boolean from Standard); + + Flag(me) + returns Boolean from Standard; + +fields + + myFlag: Boolean from Standard is protected; + +end PassKeyBoolean; diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.cxx b/src/NMTDS/NMTDS_PassKeyBoolean.cxx new file mode 100755 index 000000000..11f90ee79 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.cxx @@ -0,0 +1,62 @@ +// Copyright (C) 2006 SAMTECH +// +// 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: NMTDS_PassKeyBoolean.cxx +// Created: Mon May 15 14:31:05 2006 +// Author: Peter KURNEV +// + + +#include + +//======================================================================= +//function : NMTDS_PassKeyBoolean +//purpose : +//======================================================================= + NMTDS_PassKeyBoolean::NMTDS_PassKeyBoolean() +: + myFlag(Standard_False), + NMTDS_PassKey() +{ +} +//======================================================================= +//function :Assign +//purpose : +//======================================================================= + NMTDS_PassKeyBoolean& NMTDS_PassKeyBoolean::Assign(const NMTDS_PassKeyBoolean& anOther) +{ + myFlag=anOther.myFlag; + NMTDS_PassKey::Assign(anOther); + return *this; +} +//======================================================================= +//function :SetFlag +//purpose : +//======================================================================= + void NMTDS_PassKeyBoolean::SetFlag(const Standard_Boolean aFlag) +{ + myFlag=aFlag; +} +//======================================================================= +//function :Flag +//purpose : +//======================================================================= + Standard_Boolean NMTDS_PassKeyBoolean::Flag()const +{ + return myFlag; +} diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.hxx b/src/NMTDS/NMTDS_PassKeyBoolean.hxx new file mode 100644 index 000000000..0ac2e06b6 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.hxx @@ -0,0 +1,110 @@ +// 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 + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#define _NMTDS_PassKeyBoolean_HeaderFile + +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_PassKeyBoolean : public NMTDS_PassKey { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_PassKeyBoolean(); + + +Standard_EXPORT NMTDS_PassKeyBoolean& Assign(const NMTDS_PassKeyBoolean& Other) ; + NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void SetFlag(const Standard_Boolean aFlag) ; + + +Standard_EXPORT Standard_Boolean Flag() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +Standard_Boolean myFlag; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.ixx b/src/NMTDS/NMTDS_PassKeyBoolean.ixx new file mode 100644 index 000000000..88cae8df2 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.jxx b/src/NMTDS/NMTDS_PassKeyBoolean.jxx new file mode 100644 index 000000000..4291273e9 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.jxx @@ -0,0 +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 + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.cdl b/src/NMTDS/NMTDS_PassKeyMapHasher.cdl new file mode 100755 index 000000000..ae537d787 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.cdl @@ -0,0 +1,46 @@ +-- Copyright (C) 2006 SAMTECH +-- +-- 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: NMTDS_PassKeyMapHasher.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class PassKeyMapHasher from NMTDS + + ---Purpose: + +uses + PassKey from NMTDS + +--raises + +is + HashCode(myclass; + aPKey : PassKey from NMTDS; + Upper : Integer from Standard) + returns Integer from Standard; + + + IsEqual(myclass; + aPKey1 : PassKey from NMTDS; + aPKey2 : PassKey from NMTDS) + returns Boolean from Standard; + +end PassKeyMapHasher; diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.cxx b/src/NMTDS/NMTDS_PassKeyMapHasher.cxx new file mode 100755 index 000000000..09e4ad047 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.cxx @@ -0,0 +1,44 @@ +// Copyright (C) 2006 SAMTECH +// +// 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: NMTDS_PassKeyMapHasher.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +//======================================================================= +//function : HashCode +//purpose : +//======================================================================= + Standard_Integer NMTDS_PassKeyMapHasher::HashCode(const NMTDS_PassKey& aPKey, + const Standard_Integer Upper) +{ + return aPKey.HashCode(Upper); +} +//======================================================================= +//function :IsEqual +//purpose : +//======================================================================= + Standard_Boolean NMTDS_PassKeyMapHasher::IsEqual(const NMTDS_PassKey& aPKey1, + const NMTDS_PassKey& aPKey2) +{ + return aPKey1.IsEqual(aPKey2); +} diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.hxx b/src/NMTDS/NMTDS_PassKeyMapHasher.hxx new file mode 100644 index 000000000..b22d6e8f7 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.hxx @@ -0,0 +1,99 @@ +// 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 + +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#define _NMTDS_PassKeyMapHasher_HeaderFile + +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class NMTDS_PassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_PassKeyMapHasher { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT static Standard_Integer HashCode(const NMTDS_PassKey& aPKey,const Standard_Integer Upper) ; + + +Standard_EXPORT static Standard_Boolean IsEqual(const NMTDS_PassKey& aPKey1,const NMTDS_PassKey& aPKey2) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.ixx b/src/NMTDS/NMTDS_PassKeyMapHasher.ixx new file mode 100644 index 000000000..177c4e352 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.ixx @@ -0,0 +1,24 @@ +// 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 + +#include + + + + diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.jxx b/src/NMTDS/NMTDS_PassKeyMapHasher.jxx new file mode 100644 index 000000000..ab0e61052 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.jxx @@ -0,0 +1,25 @@ +// 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 + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.cdl b/src/NMTDS/NMTDS_ShapesDataStructure.cdl index d6341bdf7..1922b4861 100644 --- a/src/NMTDS/NMTDS_ShapesDataStructure.cdl +++ b/src/NMTDS/NMTDS_ShapesDataStructure.cdl @@ -1,28 +1,26 @@ -// 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 -// +-- 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: NMTDS_ShapesDataStructure.cdl -- Created: Mon Dec 1 10:17:05 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 - class ShapesDataStructure from NMTDS inherits ShapesDataStructure from BooleanOperations @@ -30,7 +28,8 @@ class ShapesDataStructure from NMTDS ---Purpose: uses - Shape from TopoDS, + Shape from TopoDS, + IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations, CArray1OfIndexRange from NMTDS, IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger from NMTDS --raises @@ -38,9 +37,7 @@ uses is Create returns ShapesDataStructure from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_ShapesDataStructure();" ---modified by NIZNHY-PKV Wed Feb 2 11:44:38 2005ft - + SetCompositeShape(me:out; aS:Shape from TopoDS); @@ -67,7 +64,21 @@ is aS:Shape from TopoDS; iRank:Integer from Standard) returns Integer from Standard - is redefined; + is redefined; + +-- Modified to Add new methods Thu Sep 14 14:35:18 2006 +-- Contribution of Samtech www.samcef.com BEGIN + FillMap (me; + aS :Shape from TopoDS; + aMSA: out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations; + aMS : out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations); + + FillSubshapes (me; + aS :Shape from TopoDS; + aMSA:out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations; + aMS :out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations); +-- Contribution of Samtech www.samcef.com END + fields myCompositeShape: Shape from TopoDS is protected; myRanges : CArray1OfIndexRange from NMTDS is protected; diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.cxx b/src/NMTDS/NMTDS_ShapesDataStructure.cxx index 8213536c3..229f3c543 100644 --- a/src/NMTDS/NMTDS_ShapesDataStructure.cxx +++ b/src/NMTDS/NMTDS_ShapesDataStructure.cxx @@ -31,6 +31,10 @@ #include #include #include +// +#include +#include +#include //=========================================================================== //function : NMTDS_ShapesDataStructure::NMTDS_ShapesDataStructure @@ -39,19 +43,7 @@ NMTDS_ShapesDataStructure::NMTDS_ShapesDataStructure() : BooleanOperations_ShapesDataStructure() -{ - //printf(" NMTDS_ShapesDataStructure CREATE:%x\n", (int)this); -} -//modified by NIZNHY-PKV Wed Feb 2 11:45:04 2005f -//=========================================================================== -//function : ~ -//purpose : -//=========================================================================== - NMTDS_ShapesDataStructure::~NMTDS_ShapesDataStructure() -{ - //printf(" NMTDS_ShapesDataStructure DELETE:%x\n", (int)this); -} -//modified by NIZNHY-PKV Wed Feb 2 11:45:06 2005t +{} //=========================================================================== //function : SetCompositeShape //purpose : @@ -76,6 +68,79 @@ { return myRanges; } +// Modified to Add new methods Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +//=========================================================================== +//function : FillMap +//purpose : +//=========================================================================== + void NMTDS_ShapesDataStructure::FillMap + (const TopoDS_Shape& aS, + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA, + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const +{ + Standard_Integer iX, i, j, aIndex, aNbSc, aNbS; + BooleanOperations_AncestorsSeqAndSuccessorsSeq aAS; + // + aMSA.Add(aS, aAS); + aMS.Add(aS, aAS); + FillSubshapes(aS, aMSA, aMS); + // + aNbS=aMS.Extent(); + for(i=1; i<=aNbS; ++i) { + TColStd_MapOfInteger aMFence; + // + const TopoDS_Shape& aSX=aMS.FindKey(i); + iX=aMSA.FindIndex(aSX); + const BooleanOperations_AncestorsSeqAndSuccessorsSeq& aAS1=aMSA(iX); + // + aNbSc=aAS1.NumberOfSuccessors(); + for(j=1; j<=aNbSc; ++j) { + aIndex=aAS1.GetSuccessor(j); + if(aMFence.Add(aIndex)) { + BooleanOperations_AncestorsSeqAndSuccessorsSeq& aAS2=aMSA.ChangeFromIndex(aIndex); + aAS2.SetNewAncestor(iX); + } + } + } +} +//=========================================================================== +//function : FillSubshapes +//purpose : +//=========================================================================== + void NMTDS_ShapesDataStructure::FillSubshapes + (const TopoDS_Shape& aS, + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA, + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const +{ + Standard_Boolean bIsNewSubShape; + Standard_Integer aIndexSubShape, aIndex; + BooleanOperations_AncestorsSeqAndSuccessorsSeq aASx; + // + aIndex=aMSA.FindIndex(aS); + BooleanOperations_AncestorsSeqAndSuccessorsSeq& aAS=aMSA.ChangeFromIndex(aIndex); + // + TopoDS_Iterator anIt(aS, Standard_True); + for(; anIt.More(); anIt.Next()) { + const TopoDS_Shape& aSubShape = anIt.Value(); + bIsNewSubShape = Standard_False; + if(!aMSA.Contains(aSubShape)) { + bIsNewSubShape=!bIsNewSubShape; + aIndexSubShape=aMSA.Add(aSubShape, aASx); + aMS.Add(aSubShape, aASx); + } + else { + aIndexSubShape=aMSA.FindIndex(aSubShape); + } + aAS.SetNewSuccessor(aIndexSubShape); + aAS.SetNewOrientation(aSubShape.Orientation()); + // + if(bIsNewSubShape && (aSubShape.ShapeType() != TopAbs_VERTEX)) { + FillSubshapes(aSubShape, aMSA, aMS); + } + } +} +// Contribution of Samtech www.samcef.com END //=========================================================================== //function : Init //purpose : @@ -87,24 +152,35 @@ NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors aLx; NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors aLit; TopoDS_Iterator anIt; + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors aMSA; + // Contribution of Samtech www.samcef.com END // - aNbS=0; anIt.Initialize(myCompositeShape); for (i=0; anIt.More(); anIt.Next(), ++i) { - const TopoDS_Shape& aSx=anIt.Value(); - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors aIndDatMapShape; - FillIndexedMapOfShapesAncestorsAndSuccessors(aSx, aIndDatMapShape); - aNbSx=aIndDatMapShape.Extent(); - aNbS+=aNbSx; - aLx.Append(aIndDatMapShape); + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + const TopoDS_Shape& aSx=anIt.Value(); + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors aMS; + FillMap(aSx, aMSA, aMS); + aLx.Append(aMS); + // Contribution of Samtech www.samcef.com END } + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + aNbS=aMSA.Extent(); + // Contribution of Samtech www.samcef.com END // // Fill myRanges myRanges.Resize(i); aLit.Initialize(aLx); for (i=1; aLit.More(); aLit.Next(), ++i) { - const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aM=aLit.Value(); - aNbSx=aM.Extent(); + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSx=aLit.Value(); + aNbSx=aMSx.Extent(); + // Contribution of Samtech www.samcef.com END if (i==1) { iFirst=1; iLast=aNbSx; @@ -119,31 +195,43 @@ } // myNumberOfShapesOfTheObject=aNbS; - myNumberOfShapesOfTheTool=aNbS; - myLength=3*aNbS; + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + //myNumberOfShapesOfTheTool=aNbS; + //myLength=3*aNbS; + myNumberOfShapesOfTheTool=0; + myLength=2*aNbS; + // Contribution of Samtech www.samcef.com END // // Allocate the whole Table myListOfShapeAndInterferences = (BooleanOperations_PShapeAndInterferences) Standard::Allocate(myLength*sizeof(BooleanOperations_ShapeAndInterferences)); + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN // // Fill the table - for (i=0; i<2; ++i) { - aShift=0; - if (i) { - aShift=myNumberOfShapesOfTheObject; - } - aLit.Initialize(aLx); - for (; aLit.More(); aLit.Next()) { - const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aM=aLit.Value(); - aNbSx=aM.Extent(); - for (j=1; j<=aNbSx; ++j) { - const TopoDS_Shape& aSx=aM.FindKey(j); - const BooleanOperations_AncestorsSeqAndSuccessorsSeq& aASx=aM.FindFromIndex(j); - InsertShapeAndAncestorsSuccessors(aSx, aASx, aShift); - } - aShift+=aNbSx; - } + //modified by NIZNHY-PKV Tue May 16 11:47:28 2006f + + //aShift=0; + //for (i=0; i<2; ++i) { + // if (i) { + // aShift=aNbS; + // } + // for (j=1; j<=aNbS; ++j) { + // const TopoDS_Shape& aSx=aMSA.FindKey(j); + // const BooleanOperations_AncestorsSeqAndSuccessorsSeq& aASx= + // aMSA.FindFromIndex(j); + // InsertShapeAndAncestorsSuccessors(aSx, aASx, aShift); + // } + //} + + aShift=0; + for (j=1; j<=aNbS; ++j) { + const TopoDS_Shape& aSx=aMSA.FindKey(j); + const BooleanOperations_AncestorsSeqAndSuccessorsSeq& aASx=aMSA.FindFromIndex(j); + InsertShapeAndAncestorsSuccessors(aSx, aASx, aShift); } + // Contribution of Samtech www.samcef.com END // // myShapeIndexMap myShapeIndexMap.Clear(); @@ -156,7 +244,7 @@ iFirst=aR.First(); iLast =aR.Last(); for (j=iFirst; j<=iLast; ++j) { - const TopoDS_Shape& aS=GetShape(j); + const TopoDS_Shape& aS=Shape(j); aSIM.Add(aS, j); } myShapeIndexMap.Add(i, aSIM); @@ -244,14 +332,30 @@ if (!bFound) { return aIndex; } + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN // - const BooleanOperations_IndexedDataMapOfShapeInteger& aSIM=myShapeIndexMap.FindFromKey(aRank); + //const BooleanOperations_IndexedDataMapOfShapeInteger& aSIM= + // myShapeIndexMap.FindFromKey(aRank); // - bFound=aSIM.Contains(aS); - if (!bFound) { - return aIndex; - } + //bFound=aSIM.Contains(aS); + //if (!bFound) { + // return aIndex; + //} // - aIndex=aSIM.FindFromKey(aS); + //aIndex=aSIM.FindFromKey(aS); + // + Standard_Integer i, aNbRanks; + // + aNbRanks=myShapeIndexMap.Extent(); + for (i=1; i<=aNbRanks; ++i){ + const BooleanOperations_IndexedDataMapOfShapeInteger& aSIM=myShapeIndexMap.FindFromKey(i); + bFound=aSIM.Contains(aS); + if (bFound) { + aIndex=aSIM.FindFromKey(aS); + return aIndex; + } + } + // Contribution of Samtech www.samcef.com END return aIndex; } diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.hxx b/src/NMTDS/NMTDS_ShapesDataStructure.hxx index af4bda55d..b3e8065f8 100644 --- a/src/NMTDS/NMTDS_ShapesDataStructure.hxx +++ b/src/NMTDS/NMTDS_ShapesDataStructure.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -37,6 +37,7 @@ #endif class TopoDS_Shape; class NMTDS_CArray1OfIndexRange; +class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors; #ifndef _Standard_HeaderFile @@ -46,6 +47,7 @@ class NMTDS_CArray1OfIndexRange; #include #endif + class NMTDS_ShapesDataStructure : public BooleanOperations_ShapesDataStructure { public: @@ -64,17 +66,38 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTDS_ShapesDataStructure(); -Standard_EXPORT virtual ~NMTDS_ShapesDataStructure(); + + Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ; + + Standard_EXPORT void Init() ; + + Standard_EXPORT const NMTDS_CArray1OfIndexRange& Ranges() const; + + Standard_EXPORT const TopoDS_Shape& CompositeShape() const; + + Standard_EXPORT Standard_Integer ShapeRangeIndex(const Standard_Integer aId) const; + + Standard_EXPORT virtual Standard_Integer Rank(const Standard_Integer anIndex) const; + + Standard_EXPORT virtual Standard_Integer ShapeIndex(const TopoDS_Shape& aS,const Standard_Integer iRank) const; +Standard_EXPORT void FillMap(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const; + + +Standard_EXPORT void FillSubshapes(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const; + + diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.ixx b/src/NMTDS/NMTDS_ShapesDataStructure.ixx index 6a84be39f..587761e25 100644 --- a/src/NMTDS/NMTDS_ShapesDataStructure.ixx +++ b/src/NMTDS/NMTDS_ShapesDataStructure.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.jxx b/src/NMTDS/NMTDS_ShapesDataStructure.jxx index dbeaba7b7..5ae9a8554 100644 --- a/src/NMTDS/NMTDS_ShapesDataStructure.jxx +++ b/src/NMTDS/NMTDS_ShapesDataStructure.jxx @@ -1,28 +1,31 @@ // 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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopoDS_Shape_HeaderFile #include #endif #ifndef _NMTDS_CArray1OfIndexRange_HeaderFile #include #endif +#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile +#include +#endif #ifndef _NMTDS_ShapesDataStructure_HeaderFile #include #endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx new file mode 100644 index 000000000..002862385 --- /dev/null +++ b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx @@ -0,0 +1,121 @@ +// 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 + +#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#define _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class NMTDS_PassKey; +class NMTDS_PassKeyMapHasher; +class NMTDS_MapOfPassKey; +class NMTDS_MapIteratorOfMapOfPassKey; + + + +class NMTDS_StdMapNodeOfMapOfPassKey : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_StdMapNodeOfMapOfPassKey(const NMTDS_PassKey& K,const TCollection_MapNodePtr& n); + + NMTDS_PassKey& Key() const; +//Standard_EXPORT ~NMTDS_StdMapNodeOfMapOfPassKey(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +NMTDS_PassKey myKey; + + +}; + +#define TheKey NMTDS_PassKey +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() +#define TCollection_Map NMTDS_MapOfPassKey +#define TCollection_Map_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_StdMapNode +#undef TCollection_StdMapNode_hxx +#undef TCollection_MapIterator +#undef TCollection_MapIterator_hxx +#undef Handle_TCollection_StdMapNode +#undef TCollection_StdMapNode_Type_ +#undef TCollection_Map +#undef TCollection_Map_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx new file mode 100644 index 000000000..0392838d1 --- /dev/null +++ b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx @@ -0,0 +1,121 @@ +// 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 + +#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#define _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class NMTDS_PassKeyBoolean; +class NMTDS_PassKeyMapHasher; +class NMTDS_MapOfPassKeyBoolean; +class NMTDS_MapIteratorOfMapOfPassKeyBoolean; + + + +class NMTDS_StdMapNodeOfMapOfPassKeyBoolean : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_StdMapNodeOfMapOfPassKeyBoolean(const NMTDS_PassKeyBoolean& K,const TCollection_MapNodePtr& n); + + NMTDS_PassKeyBoolean& Key() const; +//Standard_EXPORT ~NMTDS_StdMapNodeOfMapOfPassKeyBoolean(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +NMTDS_PassKeyBoolean myKey; + + +}; + +#define TheKey NMTDS_PassKeyBoolean +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +#define TCollection_Map NMTDS_MapOfPassKeyBoolean +#define TCollection_Map_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_StdMapNode +#undef TCollection_StdMapNode_hxx +#undef TCollection_MapIterator +#undef TCollection_MapIterator_hxx +#undef Handle_TCollection_StdMapNode +#undef TCollection_StdMapNode_Type_ +#undef TCollection_Map +#undef TCollection_Map_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..9728d1014 --- /dev/null +++ b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx @@ -0,0 +1,98 @@ +// 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 + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile +#include +#endif +//NMTDS_StdMapNodeOfMapOfPassKeyBoolean::~NMTDS_StdMapNodeOfMapOfPassKeyBoolean() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_StdMapNodeOfMapOfPassKeyBoolean", + sizeof(NMTDS_StdMapNodeOfMapOfPassKeyBoolean), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean))) { + _anOtherObject = Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)((Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_StdMapNodeOfMapOfPassKeyBoolean::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) ; +} +//Standard_Boolean NMTDS_StdMapNodeOfMapOfPassKeyBoolean::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean::~Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean() {} +#define TheKey NMTDS_PassKeyBoolean +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +#define TCollection_Map NMTDS_MapOfPassKeyBoolean +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx new file mode 100644 index 000000000..08659bb9b --- /dev/null +++ b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx @@ -0,0 +1,98 @@ +// 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 + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_MapOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile +#include +#endif +//NMTDS_StdMapNodeOfMapOfPassKey::~NMTDS_StdMapNodeOfMapOfPassKey() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_StdMapNodeOfMapOfPassKey_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_StdMapNodeOfMapOfPassKey", + sizeof(NMTDS_StdMapNodeOfMapOfPassKey), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_StdMapNodeOfMapOfPassKey) Handle(NMTDS_StdMapNodeOfMapOfPassKey)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_StdMapNodeOfMapOfPassKey) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey))) { + _anOtherObject = Handle(NMTDS_StdMapNodeOfMapOfPassKey)((Handle(NMTDS_StdMapNodeOfMapOfPassKey)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_StdMapNodeOfMapOfPassKey::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey) ; +} +//Standard_Boolean NMTDS_StdMapNodeOfMapOfPassKey::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_StdMapNodeOfMapOfPassKey::~Handle_NMTDS_StdMapNodeOfMapOfPassKey() {} +#define TheKey NMTDS_PassKey +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() +#define TCollection_Map NMTDS_MapOfPassKey +#define TCollection_Map_hxx +#include + diff --git a/src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx index f036a1f10..3499864cc 100644 --- a/src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ b/src/NMTTools/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIn class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)():Handle(TCollection_MapNode)() {} Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfSh return *this; } - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() const + NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() const { return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(); +// Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(); Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx index 8ffb2d9b2..48ce73f8a 100644 --- a/src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ b/src/NMTTools/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexe class Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)():Handle(TCollection_MapNode)() {} Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) : p return *this; } - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() - { - return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); - } - - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() const + NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() const { return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(); +// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(); Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx index 455ba18bd..ddf434f3f 100644 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx +++ b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeO class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)():Handle(TCollection_MapNode)() {} Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) : return *this; } - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* operator->() - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger *)ControlAccess(); - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* operator->() const + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* operator->() const { return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(); +// Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(); Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx index 6bbb071ad..2ae11665b 100644 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx +++ b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeO class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)():Handle(TCollection_MapNode)() {} Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape return *this; } - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* operator->() - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape *)ControlAccess(); - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* operator->() const + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* operator->() const { return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(); +// Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(); Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx index 63bb65648..bd78cab85 100644 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx +++ b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeO class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)():Handle(TCollection_MapNode)() {} Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) : publ return *this; } - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* operator->() - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock *)ControlAccess(); - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* operator->() const + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* operator->() const { return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(); +// Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(); Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx b/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx index a141eebb8..68c12bec0 100644 --- a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx +++ b/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_ListNodeOfListOfCom class Handle(NMTTools_ListNodeOfListOfCommonBlock) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTTools_ListNodeOfListOfCommonBlock)():Handle(TCollection_MapNode)() {} Handle(NMTTools_ListNodeOfListOfCommonBlock)(const Handle(NMTTools_ListNodeOfListOfCommonBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTTools_ListNodeOfListOfCommonBlock) : public Handle(TCollection_M return *this; } - NMTTools_ListNodeOfListOfCommonBlock* operator->() - { - return (NMTTools_ListNodeOfListOfCommonBlock *)ControlAccess(); - } - - NMTTools_ListNodeOfListOfCommonBlock* operator->() const + NMTTools_ListNodeOfListOfCommonBlock* operator->() const { return (NMTTools_ListNodeOfListOfCommonBlock *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTTools_ListNodeOfListOfCommonBlock)(); +// Standard_EXPORT ~Handle(NMTTools_ListNodeOfListOfCommonBlock)(); Standard_EXPORT static const Handle(NMTTools_ListNodeOfListOfCommonBlock) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx b/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx index 47ad735ce..10c82d040 100644 --- a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx +++ b/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -39,18 +39,6 @@ Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_ListNodeOfListOfCou class Handle(NMTTools_ListNodeOfListOfCoupleOfShape) : public Handle(TCollection_MapNode) { 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); - } Handle(NMTTools_ListNodeOfListOfCoupleOfShape)():Handle(TCollection_MapNode)() {} Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(const Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) { @@ -72,17 +60,12 @@ class Handle(NMTTools_ListNodeOfListOfCoupleOfShape) : public Handle(TCollection return *this; } - NMTTools_ListNodeOfListOfCoupleOfShape* operator->() - { - return (NMTTools_ListNodeOfListOfCoupleOfShape *)ControlAccess(); - } - - NMTTools_ListNodeOfListOfCoupleOfShape* operator->() const + NMTTools_ListNodeOfListOfCoupleOfShape* operator->() const { return (NMTTools_ListNodeOfListOfCoupleOfShape *)ControlAccess(); } - Standard_EXPORT ~Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(); +// Standard_EXPORT ~Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(); Standard_EXPORT static const Handle(NMTTools_ListNodeOfListOfCoupleOfShape) DownCast(const Handle(Standard_Transient)& AnObject); }; diff --git a/src/NMTTools/Makefile.in b/src/NMTTools/Makefile.in index c3743847f..e65fb99f8 100644 --- a/src/NMTTools/Makefile.in +++ b/src/NMTTools/Makefile.in @@ -37,8 +37,8 @@ VPATH=.:@srcdir@ # Libraries targets LIB = libNMTTools.la LIB_SRC = \ - NMTTools_CommonBlock.cxx \ NMTTools_CommonBlockAPI.cxx \ + NMTTools_CommonBlock.cxx \ NMTTools_CommonBlockPool_0.cxx \ NMTTools_CoupleOfShape.cxx \ NMTTools_DEProcessor.cxx \ @@ -56,7 +56,6 @@ LIB_SRC = \ NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx \ NMTTools_ListOfCommonBlock_0.cxx \ NMTTools_ListOfCoupleOfShape_0.cxx \ - NMTTools_PaveFiller.cxx \ NMTTools_PaveFiller_0.cxx \ NMTTools_PaveFiller_1.cxx \ NMTTools_PaveFiller_2.cxx \ @@ -67,6 +66,7 @@ LIB_SRC = \ NMTTools_PaveFiller_7.cxx \ NMTTools_PaveFiller_8.cxx \ NMTTools_PaveFiller_9.cxx \ + NMTTools_PaveFiller.cxx \ NMTTools_PCurveMaker.cxx \ NMTTools_Tools.cxx @@ -75,19 +75,35 @@ LIB_SERVER_IDL = # header files EXPORT_HEADERS = \ - NMTTools_PDSFiller.hxx \ - NMTTools_DSFiller.hxx \ - NMTTools_PPaveFiller.hxx \ - NMTTools_PaveFiller.hxx \ - NMTTools_ListOfCoupleOfShape.hxx \ - NMTTools_Tools.hxx \ + Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx \ + Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx \ + Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx \ + Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx \ + Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx \ + NMTTools_CommonBlockAPI.hxx \ + NMTTools_CommonBlock.hxx \ + NMTTools_CommonBlockPool.hxx \ NMTTools_CoupleOfShape.hxx \ - NMTTools_ListIteratorOfListOfCoupleOfShape.hxx \ + NMTTools_DEProcessor.hxx \ + NMTTools_DSFiller.hxx \ + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx \ + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx \ + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx \ + NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx \ NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx \ + NMTTools_IndexedDataMapOfShapePaveBlock.hxx \ NMTTools_IteratorOfCoupleOfShape.hxx \ - NMTTools_CommonBlockPool.hxx \ - Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx \ - Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx + NMTTools_ListIteratorOfListOfCommonBlock.hxx \ + NMTTools_ListIteratorOfListOfCoupleOfShape.hxx \ + NMTTools_ListNodeOfListOfCommonBlock.hxx \ + NMTTools_ListNodeOfListOfCoupleOfShape.hxx \ + NMTTools_ListOfCommonBlock.hxx \ + NMTTools_ListOfCoupleOfShape.hxx \ + NMTTools_PaveFiller.hxx \ + NMTTools_PCurveMaker.hxx \ + NMTTools_PDSFiller.hxx \ + NMTTools_PPaveFiller.hxx \ + NMTTools_Tools.hxx # idl files EXPORT_IDLS= diff --git a/src/NMTTools/NMTDS_Iterator.hxx b/src/NMTTools/NMTDS_Iterator.hxx new file mode 100644 index 000000000..158a35892 --- /dev/null +++ b/src/NMTTools/NMTDS_Iterator.hxx @@ -0,0 +1,138 @@ +// 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 + +#ifndef _NMTDS_Iterator_HeaderFile +#define _NMTDS_Iterator_HeaderFile + +#ifndef _NMTDS_PShapesDataStructure_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class NMTDS_ShapesDataStructure; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_Iterator { + +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); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_Iterator(); +Standard_EXPORT virtual ~NMTDS_Iterator(); + + +Standard_EXPORT void SetDS(const NMTDS_PShapesDataStructure& pDS) ; + + +Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; + + +Standard_EXPORT void Initialize(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; + + +Standard_EXPORT Standard_Boolean More() const; + + +Standard_EXPORT void Next() ; + + +Standard_EXPORT void Current(Standard_Integer& aIndex1,Standard_Integer& aIndex2,Standard_Boolean& aWithSubShape) const; + + +Standard_EXPORT void Prepare() ; + + +Standard_EXPORT Standard_Integer ExpectedLength() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +NMTDS_PShapesDataStructure myPDS; +NMTDS_ListOfPassKeyBoolean myLists[6]; +NMTDS_ListIteratorOfListOfPassKeyBoolean myIterator; +NMTDS_ListOfPassKeyBoolean myEmptyList; +Standard_Integer myLength; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTTools/NMTTools.cdl b/src/NMTTools/NMTTools.cdl index dc10949d9..583644324 100644 --- a/src/NMTTools/NMTTools.cdl +++ b/src/NMTTools/NMTTools.cdl @@ -1,27 +1,26 @@ -// 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 -// +-- 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: NMTTools.cdl -- Created: Thu Dec 4 16:55:49 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 package NMTTools @@ -54,7 +53,7 @@ is class PCurveMaker; class DEProcessor; class CoupleOfShape; - + pointer PPaveFiller to PaveFiller from NMTTools; pointer PDSFiller to DSFiller from NMTTools; @@ -82,4 +81,5 @@ is class ListOfCoupleOfShape instantiates List from TCollection(CoupleOfShape from NMTTools); + end NMTTools; diff --git a/src/NMTTools/NMTTools_CommonBlock.cdl b/src/NMTTools/NMTTools_CommonBlock.cdl index 039cd74ae..7c4fd7409 100644 --- a/src/NMTTools/NMTTools_CommonBlock.cdl +++ b/src/NMTTools/NMTTools_CommonBlock.cdl @@ -1,27 +1,27 @@ -// 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 -// +-- 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: NMTTools_CommonBlock.cdl -- Created: Tue Dec 9 12:11:48 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 + class CommonBlock from NMTTools diff --git a/src/NMTTools/NMTTools_CommonBlock.hxx b/src/NMTTools/NMTTools_CommonBlock.hxx index 904c6b566..38d036f8d 100644 --- a/src/NMTTools/NMTTools_CommonBlock.hxx +++ b/src/NMTTools/NMTTools_CommonBlock.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -44,6 +44,7 @@ class BOPTools_ListOfPaveBlock; #include #endif + class NMTTools_CommonBlock { public: @@ -62,18 +63,44 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_CommonBlock(); + + Standard_EXPORT void AddPaveBlock(const BOPTools_PaveBlock& aPB) ; + + Standard_EXPORT void AddFace(const Standard_Integer aF) ; + + Standard_EXPORT void AddFaces(const TColStd_ListOfInteger& aLF) ; + + Standard_EXPORT const BOPTools_ListOfPaveBlock& PaveBlocks() const; + + Standard_EXPORT const TColStd_ListOfInteger& Faces() const; + + Standard_EXPORT const BOPTools_PaveBlock& PaveBlock1() const; + + Standard_EXPORT BOPTools_PaveBlock& PaveBlock1(const Standard_Integer anIx) ; + + Standard_EXPORT BOPTools_PaveBlock& PaveBlockOnEdge(const Standard_Integer anIndex) ; + + Standard_EXPORT Standard_Boolean IsPaveBlockOnFace(const Standard_Integer anIndex) const; + + Standard_EXPORT Standard_Boolean IsPaveBlockOnEdge(const Standard_Integer anIndex) const; + + Standard_EXPORT Standard_Boolean IsEqual(const NMTTools_CommonBlock& aCB) const; + + Standard_EXPORT Standard_Boolean Contains(const BOPTools_PaveBlock& aPB) const; diff --git a/src/NMTTools/NMTTools_CommonBlock.ixx b/src/NMTTools/NMTTools_CommonBlock.ixx index a93f77cb6..91d08c8c8 100644 --- a/src/NMTTools/NMTTools_CommonBlock.ixx +++ b/src/NMTTools/NMTTools_CommonBlock.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_CommonBlock.jxx b/src/NMTTools/NMTTools_CommonBlock.jxx index b02eb5526..1373207f3 100644 --- a/src/NMTTools/NMTTools_CommonBlock.jxx +++ b/src/NMTTools/NMTTools_CommonBlock.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _BOPTools_PaveBlock_HeaderFile #include #endif diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.cdl b/src/NMTTools/NMTTools_CommonBlockAPI.cdl index 8a10dc3a8..8743ee8ee 100644 --- a/src/NMTTools/NMTTools_CommonBlockAPI.cdl +++ b/src/NMTTools/NMTTools_CommonBlockAPI.cdl @@ -1,27 +1,26 @@ -// 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 -// +-- 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: NMTTools_CommonBlockAPI.cdl -- Created: Mon Dec 15 11:35:46 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 class CommonBlockAPI from NMTTools diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.hxx b/src/NMTTools/NMTTools_CommonBlockAPI.hxx index 24f8fc645..a3c437330 100644 --- a/src/NMTTools/NMTTools_CommonBlockAPI.hxx +++ b/src/NMTTools/NMTTools_CommonBlockAPI.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -45,6 +45,7 @@ class NMTTools_CommonBlock; #include #endif + class NMTTools_CommonBlockAPI { public: @@ -63,10 +64,25 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_CommonBlockAPI(const NMTTools_ListOfCommonBlock& aList); + + +//! Selector
Standard_EXPORT const NMTTools_ListOfCommonBlock& List() const; + + +//! Returns all PaveBlock-s (from the list) that are
+//! common for the given edge with DS-index
Standard_EXPORT const BOPTools_ListOfPaveBlock& CommonPaveBlocks(const Standard_Integer anE) const; + + +//! Returns TRUE if given PaveBlock is
+//! common for the Blocks from the list
Standard_EXPORT Standard_Boolean IsCommonBlock(const BOPTools_PaveBlock& aPB) const; + + Standard_EXPORT NMTTools_CommonBlock& CommonBlock(const BOPTools_PaveBlock& aPB) const; diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.ixx b/src/NMTTools/NMTTools_CommonBlockAPI.ixx index 4c8755cba..49edac894 100644 --- a/src/NMTTools/NMTTools_CommonBlockAPI.ixx +++ b/src/NMTTools/NMTTools_CommonBlockAPI.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.jxx b/src/NMTTools/NMTTools_CommonBlockAPI.jxx index 1f6547fd8..f6599af59 100644 --- a/src/NMTTools/NMTTools_CommonBlockAPI.jxx +++ b/src/NMTTools/NMTTools_CommonBlockAPI.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _NMTTools_ListOfCommonBlock_HeaderFile #include #endif diff --git a/src/NMTTools/NMTTools_CommonBlockPool.hxx b/src/NMTTools/NMTTools_CommonBlockPool.hxx index 201069847..92f849c57 100644 --- a/src/NMTTools/NMTTools_CommonBlockPool.hxx +++ b/src/NMTTools/NMTTools_CommonBlockPool.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -41,6 +41,7 @@ class NMTTools_ListOfCommonBlock; #include #endif + class NMTTools_CommonBlockPool { public: @@ -59,32 +60,56 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_CommonBlockPool(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5); + + Standard_EXPORT void Resize(const Standard_Integer theNewLength) ; + + Standard_EXPORT void Destroy() ; ~NMTTools_CommonBlockPool() { Destroy(); } + + Standard_EXPORT Standard_Integer Length() const; + + Standard_EXPORT Standard_Integer Extent() const; + + Standard_EXPORT Standard_Integer FactLength() const; + + Standard_EXPORT Standard_Integer Append(const NMTTools_ListOfCommonBlock& Value) ; + + Standard_EXPORT void Remove(const Standard_Integer Index) ; + + Standard_EXPORT const NMTTools_ListOfCommonBlock& Value(const Standard_Integer Index) const; const NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) const { return Value(Index); } + + Standard_EXPORT NMTTools_ListOfCommonBlock& ChangeValue(const Standard_Integer Index) ; NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) { return ChangeValue(Index); } + + Standard_EXPORT void SetBlockLength(const Standard_Integer aBL) ; + + Standard_EXPORT Standard_Integer BlockLength() const; @@ -105,13 +130,19 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTTools_CommonBlockPool(const NMTTools_CommonBlockPool& AnArray); + + Standard_EXPORT NMTTools_CommonBlockPool& Assign(const NMTTools_CommonBlockPool& Other) ; NMTTools_CommonBlockPool& operator =(const NMTTools_CommonBlockPool& Other) { return Assign(Other); } + + Standard_EXPORT Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; diff --git a/src/NMTTools/NMTTools_CommonBlockPool_0.cxx b/src/NMTTools/NMTTools_CommonBlockPool_0.cxx index 7ca7bee08..09fe06543 100644 --- a/src/NMTTools/NMTTools_CommonBlockPool_0.cxx +++ b/src/NMTTools/NMTTools_CommonBlockPool_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_CoupleOfShape.cdl b/src/NMTTools/NMTTools_CoupleOfShape.cdl index 49215b1c4..7e8d2ed63 100644 --- a/src/NMTTools/NMTTools_CoupleOfShape.cdl +++ b/src/NMTTools/NMTTools_CoupleOfShape.cdl @@ -1,27 +1,26 @@ -// 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 -// +-- 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: NMTTools_CoupleOfShape.cdl -- Created: Wed Jan 28 15:03:39 2004 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2004 class CoupleOfShape from NMTTools diff --git a/src/NMTTools/NMTTools_CoupleOfShape.hxx b/src/NMTTools/NMTTools_CoupleOfShape.hxx index db9a0c535..17ccbd0af 100644 --- a/src/NMTTools/NMTTools_CoupleOfShape.hxx +++ b/src/NMTTools/NMTTools_CoupleOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -33,6 +33,7 @@ class TopoDS_Shape; #include #endif + class NMTTools_CoupleOfShape { public: @@ -51,10 +52,20 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_CoupleOfShape(); + + Standard_EXPORT void SetShape1(const TopoDS_Shape& aS) ; + + Standard_EXPORT void SetShape2(const TopoDS_Shape& aS) ; + + Standard_EXPORT const TopoDS_Shape& Shape1() const; + + Standard_EXPORT const TopoDS_Shape& Shape2() const; diff --git a/src/NMTTools/NMTTools_CoupleOfShape.ixx b/src/NMTTools/NMTTools_CoupleOfShape.ixx index 387747024..9711b73ad 100644 --- a/src/NMTTools/NMTTools_CoupleOfShape.ixx +++ b/src/NMTTools/NMTTools_CoupleOfShape.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_CoupleOfShape.jxx b/src/NMTTools/NMTTools_CoupleOfShape.jxx index e7e77a0af..fe94c8849 100644 --- a/src/NMTTools/NMTTools_CoupleOfShape.jxx +++ b/src/NMTTools/NMTTools_CoupleOfShape.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopoDS_Shape_HeaderFile #include #endif diff --git a/src/NMTTools/NMTTools_DEProcessor.cdl b/src/NMTTools/NMTTools_DEProcessor.cdl index 9268aaa0d..d58f06dbf 100644 --- a/src/NMTTools/NMTTools_DEProcessor.cdl +++ b/src/NMTTools/NMTTools_DEProcessor.cdl @@ -1,27 +1,26 @@ -// 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 -// +-- 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: NMTTools_DEProcessor.cdl -- Created: Wed Sep 12 12:08:37 2001 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2001 class DEProcessor from NMTTools diff --git a/src/NMTTools/NMTTools_DEProcessor.cxx b/src/NMTTools/NMTTools_DEProcessor.cxx index 6762a1dd3..0350ee38c 100644 --- a/src/NMTTools/NMTTools_DEProcessor.cxx +++ b/src/NMTTools/NMTTools_DEProcessor.cxx @@ -17,7 +17,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// File: BOPTools_DEProcessor.cxx +// File: NMTTools_DEProcessor.cxx // Created: Wed Sep 12 12:10:52 2001 // Author: Peter KURNEV // @@ -80,11 +80,15 @@ #include -//#include #include // #include #include +// +#include + +#include +#include @@ -137,14 +141,14 @@ aNb=myDS->NumberOfShapesOfTheObject(); // for (i=1; i<=aNb; i++) { - const TopoDS_Shape& aF=myDS->Shape(i); + const TopoDS_Shape aF=myDS->Shape(i);//mpv if (aF.ShapeType()==TopAbs_FACE) { TopExp::MapShapesAndAncestors (aF, TopAbs_EDGE, TopAbs_FACE, aMEF); } } // for (i=1; i<=aNb; i++) { - const TopoDS_Shape& aS=myDS->Shape(i); + const TopoDS_Shape aS=myDS->Shape(i);//mpv if (aS.ShapeType()==TopAbs_EDGE) { const TopoDS_Edge& aE=TopoDS::Edge(aS); @@ -306,11 +310,16 @@ // Clear aPaveSet, aSplitEdges aPaveSet.ChangeSet().Clear(); // - const TopoDS_Edge& aDE=TopoDS::Edge(myDS->Shape(nED)); - const TopoDS_Face& aDF=TopoDS::Face(myDS->Shape(nFD)); + const TopoDS_Edge aDE=TopoDS::Edge(myDS->Shape(nED));//mpv + const TopoDS_Face aDF=TopoDS::Face(myDS->Shape(nFD));//mpv // // 2D Curve of degenerated edge on the face aDF - Handle(Geom2d_Curve) aC2DDE=BRep_Tool::CurveOnSurface(aDE, aDF, aTD1, aTD2); + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + //Handle(Geom2d_Curve) aC2DDE=BRep_Tool::CurveOnSurface(aDE, aDF, aTD1, aTD2); + Handle(Geom2d_Curve) aC2DDE1=BRep_Tool::CurveOnSurface(aDE, aDF, aTD1, aTD2); + Handle(Geom2d_TrimmedCurve)aC2DDE=new Geom2d_TrimmedCurve(aC2DDE1, aTD1, aTD2); + // Contribution of Samtech www.samcef.com END // // Choose direction for Degenerated Edge gp_Pnt2d aP2d1, aP2d2; @@ -333,7 +342,7 @@ for (; anIt.More(); anIt.Next()) { const BOPTools_PaveBlock& aPB=anIt.Value(); nE=aPB.Edge(); - const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE)); + const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));//mpv Handle(Geom2d_Curve) aC2D=BRep_Tool::CurveOnSurface(aE, aDF, aT1, aT2); // @@ -360,7 +369,17 @@ for (j=1; j<=aNbPoints; ++j) { gp_Pnt2d aP2D=aGInter.Point(j).Value(); // - aX=(bXDir) ? aP2D.X(): aP2D.Y(); + // Modified to obtain exact parameter Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + Handle(Geom2d_Line) aCLDE=Handle(Geom2d_Line)::DownCast(aC2DDE1); + if (aCLDE.IsNull()) { + continue; + } + gp_Lin2d aLDE=aCLDE->Lin2d(); + aX=ElCLib::Parameter(aLDE, aP2D); + // + //aX=(bXDir) ? aP2D.X(): aP2D.Y(); + // Contribution of Samtech www.samcef.com END // if (fabs (aX-aTD1) < aDT || fabs (aX-aTD2) < aDT) { continue; @@ -427,8 +446,8 @@ TopoDS_Edge aE, aESplit; TopoDS_Vertex aV1, aV2; - const TopoDS_Edge& aDE=TopoDS::Edge(myDS->Shape(nED)); - const TopoDS_Face& aDF=TopoDS::Face(myDS->Shape(nFD)); + const TopoDS_Edge aDE=TopoDS::Edge(myDS->Shape(nED));//mpv + const TopoDS_Face aDF=TopoDS::Face(myDS->Shape(nFD));//mpv BOPTools_ListIteratorOfListOfPaveBlock aPBIt(aSplitEdges); diff --git a/src/NMTTools/NMTTools_DEProcessor.hxx b/src/NMTTools/NMTTools_DEProcessor.hxx index 8da33e72b..dfd149335 100644 --- a/src/NMTTools/NMTTools_DEProcessor.hxx +++ b/src/NMTTools/NMTTools_DEProcessor.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -52,6 +52,15 @@ class TopoDS_Vertex; #include #endif + +//!
+//! The Algorithm to compute and store in interferences' pool
+//! and in the Data Structure the following values
+//! for degenerated edges
+//! 1. Paves/Pave set(s)
+//! 2. Split parts
+//! 3. States (3D) for split parts
+//!
class NMTTools_DEProcessor { public: @@ -70,8 +79,20 @@ public: } // Methods PUBLIC // + + +//! Constructor
+//!
+//! Constructor
+//!
Standard_EXPORT NMTTools_DEProcessor(NMTTools_PaveFiller& aFiller); + + +//! Launches the processor
Standard_EXPORT void Do() ; + + +//! Returns TRUE if it is Ok
Standard_EXPORT Standard_Boolean IsDone() const; @@ -82,12 +103,26 @@ protected: // Methods PROTECTED // + + Standard_EXPORT void FindDegeneratedEdges() ; + + Standard_EXPORT void DoPaves() ; + + Standard_EXPORT void FindPaveBlocks(const Standard_Integer nED,const Standard_Integer nVD,const Standard_Integer nFD,BOPTools_ListOfPaveBlock& aLPB) ; + + Standard_EXPORT void FillPaveSet(const Standard_Integer nED,const Standard_Integer nVD,const Standard_Integer nFD,const BOPTools_ListOfPaveBlock& aLPB) ; + + Standard_EXPORT void FillSplitEdgesPool(const Standard_Integer nED) ; + + Standard_EXPORT void MakeSplitEdges(const Standard_Integer nED,const Standard_Integer nFD) ; + + Standard_EXPORT void MakeSplitEdge(const TopoDS_Edge& aS1,const TopoDS_Face& aF,const TopoDS_Vertex& aV1,const Standard_Real aP1,const TopoDS_Vertex& aV2,const Standard_Real aP2,TopoDS_Edge& aNewEdge) ; diff --git a/src/NMTTools/NMTTools_DEProcessor.ixx b/src/NMTTools/NMTTools_DEProcessor.ixx index 5025cc4f6..941caff8c 100644 --- a/src/NMTTools/NMTTools_DEProcessor.ixx +++ b/src/NMTTools/NMTTools_DEProcessor.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_DEProcessor.jxx b/src/NMTTools/NMTTools_DEProcessor.jxx index 0d86c3f6e..b039537bc 100644 --- a/src/NMTTools/NMTTools_DEProcessor.jxx +++ b/src/NMTTools/NMTTools_DEProcessor.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _NMTTools_PaveFiller_HeaderFile #include #endif diff --git a/src/NMTTools/NMTTools_DSFiller.cdl b/src/NMTTools/NMTTools_DSFiller.cdl index ba69d115b..1876b25fe 100644 --- a/src/NMTTools/NMTTools_DSFiller.cdl +++ b/src/NMTTools/NMTTools_DSFiller.cdl @@ -1,27 +1,26 @@ -// 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 -// +-- 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: NMTTools_DSFiller.cdl -- Created: Fri Dec 5 13:57:03 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 class DSFiller from NMTTools diff --git a/src/NMTTools/NMTTools_DSFiller.hxx b/src/NMTTools/NMTTools_DSFiller.hxx index a84c42cc8..82c9b40c4 100644 --- a/src/NMTTools/NMTTools_DSFiller.hxx +++ b/src/NMTTools/NMTTools_DSFiller.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,6 +48,7 @@ class NMTTools_PaveFiller; #include #endif + class NMTTools_DSFiller { public: @@ -66,22 +67,48 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_DSFiller(); + +//! Destructor
+//!
+//! Selectors/Modifiers
Standard_EXPORT void Destroy() ; ~NMTTools_DSFiller() { Destroy(); } + + Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ; + + Standard_EXPORT const TopoDS_Shape& CompositeShape() const; + + Standard_EXPORT void SetNewFiller(const Standard_Boolean aFlag) const; + + Standard_EXPORT Standard_Boolean IsNewFiller() const; + + Standard_EXPORT void Perform() ; + + Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; + + Standard_EXPORT const BOPTools_InterferencePool& InterfPool() const; + + Standard_EXPORT Standard_Boolean IsDone() const; + + Standard_EXPORT const NMTTools_PaveFiller& PaveFiller() const; + + Standard_EXPORT NMTTools_PaveFiller& ChangePaveFiller() ; @@ -92,6 +119,8 @@ protected: // Methods PROTECTED // + + Standard_EXPORT void Clear() ; diff --git a/src/NMTTools/NMTTools_DSFiller.ixx b/src/NMTTools/NMTTools_DSFiller.ixx index 297713e85..c9b80740a 100644 --- a/src/NMTTools/NMTTools_DSFiller.ixx +++ b/src/NMTTools/NMTTools_DSFiller.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_DSFiller.jxx b/src/NMTTools/NMTTools_DSFiller.jxx index 47a201400..3ff0ae84f 100644 --- a/src/NMTTools/NMTTools_DSFiller.jxx +++ b/src/NMTTools/NMTTools_DSFiller.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopoDS_Shape_HeaderFile #include #endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx index aef005c55..3823f0edf 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -44,39 +44,31 @@ class TColStd_MapIntegerHasher; class NMTTools_IndexedDataMapOfIndexedMapOfInteger; + class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger : public TCollection_MapNode { 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); - } // Methods PUBLIC // + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger(const Standard_Integer& K1,const Standard_Integer K2,const TColStd_IndexedMapOfInteger& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + Standard_Integer& Key1() const; + Standard_Integer& Key2() const; + TCollection_MapNodePtr& Next2() const; + TColStd_IndexedMapOfInteger& Value() const; -Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger(); +//Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx index 26449e638..bddc64d48 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx +++ b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile #include #endif -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger() {} +//NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMa { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexe { return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) ; } -Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger() {} +//Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger() {} #define TheKey Standard_Integer #define TheKey_hxx #define TheItem TColStd_IndexedMapOfInteger diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx index 82ffd7634..0caba086b 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,39 +48,31 @@ class TopTools_ShapeMapHasher; class NMTTools_IndexedDataMapOfShapeIndexedMapOfShape; + class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape : public TCollection_MapNode { 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); - } // Methods PUBLIC // + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape(const TopoDS_Shape& K1,const Standard_Integer K2,const TopTools_IndexedMapOfShape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + TopoDS_Shape& Key1() const; + Standard_Integer& Key2() const; + TCollection_MapNodePtr& Next2() const; + TopTools_IndexedMapOfShape& Value() const; -Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape(); +//Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx index bc564341f..40833f09d 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx +++ b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -35,7 +35,7 @@ #ifndef _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile #include #endif -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape() {} +//NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape() {} @@ -43,11 +43,8 @@ Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMa { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -80,11 +77,11 @@ const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeI { return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) ; } -Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape() {} +//Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape() {} #define TheKey TopoDS_Shape #define TheKey_hxx #define TheItem TopTools_IndexedMapOfShape diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx index ad94cd73c..7a0a361ee 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,39 +48,31 @@ class TopTools_ShapeMapHasher; class NMTTools_IndexedDataMapOfShapePaveBlock; + class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock : public TCollection_MapNode { 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); - } // Methods PUBLIC // + NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock(const TopoDS_Shape& K1,const Standard_Integer K2,const BOPTools_PaveBlock& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + TopoDS_Shape& Key1() const; + Standard_Integer& Key2() const; + TCollection_MapNodePtr& Next2() const; + BOPTools_PaveBlock& Value() const; -Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock(); +//Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx index 1544f7045..f16382ff4 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx +++ b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -35,7 +35,7 @@ #ifndef _NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile #include #endif -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock() {} +//NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock() {} @@ -43,11 +43,8 @@ Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMa { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -80,11 +77,11 @@ const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeP { return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) ; } -Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock() {} +//Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock() {} #define TheKey TopoDS_Shape #define TheKey_hxx #define TheItem BOPTools_PaveBlock diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx index 1c2452184..b9f696fe2 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -47,6 +47,7 @@ class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger; #include #endif + class NMTTools_IndexedDataMapOfIndexedMapOfInteger : public TCollection_BasicMap { public: @@ -65,39 +66,67 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger& Assign(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other) ; NMTTools_IndexedDataMapOfIndexedMapOfInteger& operator =(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~NMTTools_IndexedDataMapOfIndexedMapOfInteger() { Clear(); } + + Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const TColStd_IndexedMapOfInteger& I) ; + + Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const TColStd_IndexedMapOfInteger& T) ; + + Standard_EXPORT void RemoveLast() ; + + Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; + + Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; + + Standard_EXPORT const TColStd_IndexedMapOfInteger& FindFromIndex(const Standard_Integer I) const; const TColStd_IndexedMapOfInteger& operator ()(const Standard_Integer I) const { return FindFromIndex(I); } + + Standard_EXPORT TColStd_IndexedMapOfInteger& ChangeFromIndex(const Standard_Integer I) ; TColStd_IndexedMapOfInteger& operator ()(const Standard_Integer I) { return ChangeFromIndex(I); } + + Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; + + Standard_EXPORT const TColStd_IndexedMapOfInteger& FindFromKey(const Standard_Integer& K) const; + + Standard_EXPORT TColStd_IndexedMapOfInteger& ChangeFromKey(const Standard_Integer& K) ; @@ -118,6 +147,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other); diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx index 789dab633..38e7ef10b 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx index be19bc803..2c55162c3 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,6 +48,7 @@ class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape; #include #endif + class NMTTools_IndexedDataMapOfShapeIndexedMapOfShape : public TCollection_BasicMap { public: @@ -66,39 +67,67 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Assign(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other) ; NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& operator =(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~NMTTools_IndexedDataMapOfShapeIndexedMapOfShape() { Clear(); } + + Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const TopTools_IndexedMapOfShape& I) ; + + Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const TopTools_IndexedMapOfShape& T) ; + + Standard_EXPORT void RemoveLast() ; + + Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; + + Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; + + Standard_EXPORT const TopTools_IndexedMapOfShape& FindFromIndex(const Standard_Integer I) const; const TopTools_IndexedMapOfShape& operator ()(const Standard_Integer I) const { return FindFromIndex(I); } + + Standard_EXPORT TopTools_IndexedMapOfShape& ChangeFromIndex(const Standard_Integer I) ; TopTools_IndexedMapOfShape& operator ()(const Standard_Integer I) { return ChangeFromIndex(I); } + + Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; + + Standard_EXPORT const TopTools_IndexedMapOfShape& FindFromKey(const TopoDS_Shape& K) const; + + Standard_EXPORT TopTools_IndexedMapOfShape& ChangeFromKey(const TopoDS_Shape& K) ; @@ -119,6 +148,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other); diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx index 0b5caf8c8..c41bc1e2a 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx index a6add0910..a13f75903 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -48,6 +48,7 @@ class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock; #include #endif + class NMTTools_IndexedDataMapOfShapePaveBlock : public TCollection_BasicMap { public: @@ -66,39 +67,67 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock(const Standard_Integer NbBuckets = 1); + + Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock& Assign(const NMTTools_IndexedDataMapOfShapePaveBlock& Other) ; NMTTools_IndexedDataMapOfShapePaveBlock& operator =(const NMTTools_IndexedDataMapOfShapePaveBlock& Other) { return Assign(Other); } + + Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + Standard_EXPORT void Clear() ; ~NMTTools_IndexedDataMapOfShapePaveBlock() { Clear(); } + + Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const BOPTools_PaveBlock& I) ; + + Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const BOPTools_PaveBlock& T) ; + + Standard_EXPORT void RemoveLast() ; + + Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; + + Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; + + Standard_EXPORT const BOPTools_PaveBlock& FindFromIndex(const Standard_Integer I) const; const BOPTools_PaveBlock& operator ()(const Standard_Integer I) const { return FindFromIndex(I); } + + Standard_EXPORT BOPTools_PaveBlock& ChangeFromIndex(const Standard_Integer I) ; BOPTools_PaveBlock& operator ()(const Standard_Integer I) { return ChangeFromIndex(I); } + + Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; + + Standard_EXPORT const BOPTools_PaveBlock& FindFromKey(const TopoDS_Shape& K) const; + + Standard_EXPORT BOPTools_PaveBlock& ChangeFromKey(const TopoDS_Shape& K) ; @@ -119,6 +148,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock(const NMTTools_IndexedDataMapOfShapePaveBlock& Other); diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx index 12441f662..8e25be569 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl index cb3d54e3b..cc8e02bfe 100644 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl +++ b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.cdl @@ -1,27 +1,26 @@ -// 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 -// +-- 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: NMTTools_IteratorOfCoupleOfShape.cdl -- Created: Thu Dec 4 16:57:48 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 class IteratorOfCoupleOfShape from NMTTools diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx index d105a1ece..81dabc054 100644 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx +++ b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -49,6 +49,7 @@ class NMTDS_ShapesDataStructure; #include #endif + class NMTTools_IteratorOfCoupleOfShape : public BOPTools_IteratorOfCoupleOfShape { public: @@ -67,11 +68,23 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_IteratorOfCoupleOfShape(); + + Standard_EXPORT void SetDS(const NMTDS_PShapesDataStructure& pDS) ; + + Standard_EXPORT virtual void Initialize(const TopAbs_ShapeEnum Type1,const TopAbs_ShapeEnum Type2) ; + + Standard_EXPORT virtual void Current(Standard_Integer& Index1,Standard_Integer& Index2,Standard_Boolean& WithSubShape) const; + + Standard_EXPORT virtual Standard_Boolean More() const; + + Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx index 324415278..5a5cd42bd 100644 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx +++ b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx index 6bd779ae2..e09e5e92e 100644 --- a/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx +++ b/src/NMTTools/NMTTools_IteratorOfCoupleOfShape.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _Standard_NoSuchObject_HeaderFile #include #endif diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx index 895971ec2..25a3784c0 100644 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx +++ b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -43,6 +43,7 @@ class NMTTools_ListNodeOfListOfCommonBlock; #include #endif + class NMTTools_ListIteratorOfListOfCommonBlock { public: @@ -61,11 +62,22 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_ListIteratorOfListOfCommonBlock(); + + Standard_EXPORT NMTTools_ListIteratorOfListOfCommonBlock(const NMTTools_ListOfCommonBlock& L); + + Standard_EXPORT void Initialize(const NMTTools_ListOfCommonBlock& L) ; + Standard_Boolean More() const; + + Standard_EXPORT void Next() ; + + Standard_EXPORT NMTTools_CommonBlock& Value() const; diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx index d0405a4b8..82d54ddd8 100644 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx +++ b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx index 3b621e372..7e6224c4f 100644 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx +++ b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -43,6 +43,7 @@ class NMTTools_ListNodeOfListOfCoupleOfShape; #include #endif + class NMTTools_ListIteratorOfListOfCoupleOfShape { public: @@ -61,11 +62,22 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_ListIteratorOfListOfCoupleOfShape(); + + Standard_EXPORT NMTTools_ListIteratorOfListOfCoupleOfShape(const NMTTools_ListOfCoupleOfShape& L); + + Standard_EXPORT void Initialize(const NMTTools_ListOfCoupleOfShape& L) ; + Standard_Boolean More() const; + + Standard_EXPORT void Next() ; + + Standard_EXPORT NMTTools_CoupleOfShape& Value() const; diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx index af51216a2..6e5da2628 100644 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx +++ b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx index a3e47c15b..8dbc0e685 100644 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx +++ b/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -41,36 +41,25 @@ class NMTTools_ListOfCommonBlock; class NMTTools_ListIteratorOfListOfCommonBlock; + class NMTTools_ListNodeOfListOfCommonBlock : public TCollection_MapNode { 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); - } // Methods PUBLIC // + NMTTools_ListNodeOfListOfCommonBlock(const NMTTools_CommonBlock& I,const TCollection_MapNodePtr& n); + NMTTools_CommonBlock& Value() const; -Standard_EXPORT ~NMTTools_ListNodeOfListOfCommonBlock(); +//Standard_EXPORT ~NMTTools_ListNodeOfListOfCommonBlock(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_ListNodeOfListOfCommonBlock_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx index 5d95b5158..ab8a57f3b 100644 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx +++ b/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile #include #endif -NMTTools_ListNodeOfListOfCommonBlock::~NMTTools_ListNodeOfListOfCommonBlock() {} +//NMTTools_ListNodeOfListOfCommonBlock::~NMTTools_ListNodeOfListOfCommonBlock() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& NMTTools_ListNodeOfListOfCommonBlock_Type_ { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& NMTTools_ListNodeOfListOfCommonBlock::DynamicType() { return STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock) ; } -Standard_Boolean NMTTools_ListNodeOfListOfCommonBlock::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_ListNodeOfListOfCommonBlock::~Handle_NMTTools_ListNodeOfListOfCommonBlock() {} +//Standard_Boolean NMTTools_ListNodeOfListOfCommonBlock::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTTools_ListNodeOfListOfCommonBlock::~Handle_NMTTools_ListNodeOfListOfCommonBlock() {} #define Item NMTTools_CommonBlock #define Item_hxx #define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx index e6ab9e45e..9aa25f86d 100644 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx +++ b/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -41,36 +41,25 @@ class NMTTools_ListOfCoupleOfShape; class NMTTools_ListIteratorOfListOfCoupleOfShape; + class NMTTools_ListNodeOfListOfCoupleOfShape : public TCollection_MapNode { 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); - } // Methods PUBLIC // + NMTTools_ListNodeOfListOfCoupleOfShape(const NMTTools_CoupleOfShape& I,const TCollection_MapNodePtr& n); + NMTTools_CoupleOfShape& Value() const; -Standard_EXPORT ~NMTTools_ListNodeOfListOfCoupleOfShape(); +//Standard_EXPORT ~NMTTools_ListNodeOfListOfCoupleOfShape(); // Type management // - Standard_EXPORT friend Handle_Standard_Type& NMTTools_ListNodeOfListOfCoupleOfShape_Type_(); Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; protected: diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx index 338b00a33..430f82c5f 100644 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx +++ b/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,7 +32,7 @@ #ifndef _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile #include #endif -NMTTools_ListNodeOfListOfCoupleOfShape::~NMTTools_ListNodeOfListOfCoupleOfShape() {} +//NMTTools_ListNodeOfListOfCoupleOfShape::~NMTTools_ListNodeOfListOfCoupleOfShape() {} @@ -40,11 +40,8 @@ Standard_EXPORT Handle_Standard_Type& NMTTools_ListNodeOfListOfCoupleOfShape_Typ { static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; @@ -77,11 +74,11 @@ const Handle(Standard_Type)& NMTTools_ListNodeOfListOfCoupleOfShape::DynamicType { return STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape) ; } -Standard_Boolean NMTTools_ListNodeOfListOfCoupleOfShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_NMTTools_ListNodeOfListOfCoupleOfShape::~Handle_NMTTools_ListNodeOfListOfCoupleOfShape() {} +//Standard_Boolean NMTTools_ListNodeOfListOfCoupleOfShape::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTTools_ListNodeOfListOfCoupleOfShape::~Handle_NMTTools_ListNodeOfListOfCoupleOfShape() {} #define Item NMTTools_CoupleOfShape #define Item_hxx #define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape diff --git a/src/NMTTools/NMTTools_ListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListOfCommonBlock.hxx index 790503439..a3c33aaaa 100644 --- a/src/NMTTools/NMTTools_ListOfCommonBlock.hxx +++ b/src/NMTTools/NMTTools_ListOfCommonBlock.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -45,6 +45,7 @@ class NMTTools_ListNodeOfListOfCommonBlock; #include #endif + class NMTTools_ListOfCommonBlock { public: @@ -63,34 +64,71 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_ListOfCommonBlock(); + + Standard_EXPORT void Assign(const NMTTools_ListOfCommonBlock& Other) ; void operator=(const NMTTools_ListOfCommonBlock& Other) { Assign(Other); } + + Standard_EXPORT Standard_Integer Extent() const; + + Standard_EXPORT void Clear() ; ~NMTTools_ListOfCommonBlock() { Clear(); } + Standard_Boolean IsEmpty() const; + + Standard_EXPORT void Prepend(const NMTTools_CommonBlock& I) ; + + Standard_EXPORT void Prepend(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& theIt) ; + + Standard_EXPORT void Prepend(NMTTools_ListOfCommonBlock& Other) ; + + Standard_EXPORT void Append(const NMTTools_CommonBlock& I) ; + + Standard_EXPORT void Append(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& theIt) ; + + Standard_EXPORT void Append(NMTTools_ListOfCommonBlock& Other) ; + + Standard_EXPORT NMTTools_CommonBlock& First() const; + + Standard_EXPORT NMTTools_CommonBlock& Last() const; + + Standard_EXPORT void RemoveFirst() ; + + Standard_EXPORT void Remove(NMTTools_ListIteratorOfListOfCommonBlock& It) ; + + Standard_EXPORT void InsertBefore(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& It) ; + + Standard_EXPORT void InsertBefore(NMTTools_ListOfCommonBlock& Other,NMTTools_ListIteratorOfListOfCommonBlock& It) ; + + Standard_EXPORT void InsertAfter(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& It) ; + + Standard_EXPORT void InsertAfter(NMTTools_ListOfCommonBlock& Other,NMTTools_ListIteratorOfListOfCommonBlock& It) ; @@ -112,6 +150,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTTools_ListOfCommonBlock(const NMTTools_ListOfCommonBlock& Other); diff --git a/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx index df5fc9d70..68839bedd 100644 --- a/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx +++ b/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx index 6e63a0806..2ba0b324c 100644 --- a/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx +++ b/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -45,6 +45,7 @@ class NMTTools_ListNodeOfListOfCoupleOfShape; #include #endif + class NMTTools_ListOfCoupleOfShape { public: @@ -63,34 +64,71 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_ListOfCoupleOfShape(); + + Standard_EXPORT void Assign(const NMTTools_ListOfCoupleOfShape& Other) ; void operator=(const NMTTools_ListOfCoupleOfShape& Other) { Assign(Other); } + + Standard_EXPORT Standard_Integer Extent() const; + + Standard_EXPORT void Clear() ; ~NMTTools_ListOfCoupleOfShape() { Clear(); } + Standard_Boolean IsEmpty() const; + + Standard_EXPORT void Prepend(const NMTTools_CoupleOfShape& I) ; + + Standard_EXPORT void Prepend(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& theIt) ; + + Standard_EXPORT void Prepend(NMTTools_ListOfCoupleOfShape& Other) ; + + Standard_EXPORT void Append(const NMTTools_CoupleOfShape& I) ; + + Standard_EXPORT void Append(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& theIt) ; + + Standard_EXPORT void Append(NMTTools_ListOfCoupleOfShape& Other) ; + + Standard_EXPORT NMTTools_CoupleOfShape& First() const; + + Standard_EXPORT NMTTools_CoupleOfShape& Last() const; + + Standard_EXPORT void RemoveFirst() ; + + Standard_EXPORT void Remove(NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; + + Standard_EXPORT void InsertBefore(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; + + Standard_EXPORT void InsertBefore(NMTTools_ListOfCoupleOfShape& Other,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; + + Standard_EXPORT void InsertAfter(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; + + Standard_EXPORT void InsertAfter(NMTTools_ListOfCoupleOfShape& Other,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; @@ -112,6 +150,8 @@ private: // Methods PRIVATE // + + Standard_EXPORT NMTTools_ListOfCoupleOfShape(const NMTTools_ListOfCoupleOfShape& Other); diff --git a/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx index 30996a951..3251491ef 100644 --- a/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx +++ b/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_PCurveMaker.cdl b/src/NMTTools/NMTTools_PCurveMaker.cdl index c040bbf5f..b4babb82f 100644 --- a/src/NMTTools/NMTTools_PCurveMaker.cdl +++ b/src/NMTTools/NMTTools_PCurveMaker.cdl @@ -1,22 +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 -// +-- 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: NMTTools_PCurveMaker.cdl -- Created: -- Author: Peter KURNEV diff --git a/src/NMTTools/NMTTools_PCurveMaker.hxx b/src/NMTTools/NMTTools_PCurveMaker.hxx index 951b32d9b..ca0b3f248 100644 --- a/src/NMTTools/NMTTools_PCurveMaker.hxx +++ b/src/NMTTools/NMTTools_PCurveMaker.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -35,6 +35,9 @@ #include #endif + +//! Class provides computation p-curves for the edges and theirs
+//! split parts
class NMTTools_PCurveMaker { public: @@ -53,8 +56,17 @@ public: } // Methods PUBLIC // + + +//! Constructor
Standard_EXPORT NMTTools_PCurveMaker(NMTTools_PDSFiller& aFiller); + + +//! Launch the processor
Standard_EXPORT void Do() ; + + +//! Returns TRUE if Ok
Standard_EXPORT Standard_Boolean IsDone() const; diff --git a/src/NMTTools/NMTTools_PCurveMaker.ixx b/src/NMTTools/NMTTools_PCurveMaker.ixx index e3425c15e..3a2ac54d6 100644 --- a/src/NMTTools/NMTTools_PCurveMaker.ixx +++ b/src/NMTTools/NMTTools_PCurveMaker.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_PCurveMaker.jxx b/src/NMTTools/NMTTools_PCurveMaker.jxx index 250eeba46..46c9c270f 100644 --- a/src/NMTTools/NMTTools_PCurveMaker.jxx +++ b/src/NMTTools/NMTTools_PCurveMaker.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _NMTTools_PCurveMaker_HeaderFile #include #endif diff --git a/src/NMTTools/NMTTools_PDSFiller.hxx b/src/NMTTools/NMTTools_PDSFiller.hxx index fedc3f393..cfc95a0fa 100644 --- a/src/NMTTools/NMTTools_PDSFiller.hxx +++ b/src/NMTTools/NMTTools_PDSFiller.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_PPaveFiller.hxx b/src/NMTTools/NMTTools_PPaveFiller.hxx index 766401d4b..116c108ef 100644 --- a/src/NMTTools/NMTTools_PPaveFiller.hxx +++ b/src/NMTTools/NMTTools_PPaveFiller.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_PaveFiller.cdl b/src/NMTTools/NMTTools_PaveFiller.cdl index 2ced14146..fa2cda76e 100644 --- a/src/NMTTools/NMTTools_PaveFiller.cdl +++ b/src/NMTTools/NMTTools_PaveFiller.cdl @@ -1,43 +1,50 @@ -// 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 -// +-- 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: NMTTools_PaveFiller.cdl -- Created: Fri Dec 5 14:35:00 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 class PaveFiller from NMTTools ---Purpose: -uses - ListOfInteger from TColStd, +uses + -- Modified to add new definitions Thu Sep 14 14:35:18 2006 + -- Contribution of Samtech www.samcef.com BEGIN + ListOfInteger from TColStd, + -- Contribution of Samtech www.samcef.com END Pnt from gp, ShapeEnum from TopAbs, Vertex from TopoDS, - Face from TopoDS, + Face 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, + -- Contribution of Samtech www.samcef.com END Context from IntTools, ShrunkRange from IntTools, - + IndexedDataMapOfShapeInteger from BooleanOperations, InterferencePool from BOPTools, @@ -57,12 +64,18 @@ uses CommonBlockPool from NMTTools, CommonBlock from NMTTools, - ListOfCommonBlock from NMTTools, - IteratorOfCoupleOfShape from NMTTools, - - ShapesDataStructure from NMTDS, - PShapesDataStructure from NMTDS - + ListOfCommonBlock from NMTTools, + -- Modified to add new definitions Thu Sep 14 14:35:18 2006 + -- Contribution of Samtech www.samcef.com BEGIN + IndexedDataMapOfIndexedMapOfInteger from NMTTools, + -- Contribution of Samtech www.samcef.com END + 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 + -- Contribution of Samtech www.samcef.com END + --raises is @@ -84,14 +97,16 @@ is returns PInterferencePool from BOPTools; -- -- Perform the algo - Init (me:out) - is protected; + -- Modified to add new method Thu Sep 14 14:35:18 2006 + -- Contribution of Samtech www.samcef.com BEGIN + Init (me:out); + -- Contribution of Samtech www.samcef.com END Perform (me:out) is virtual; PerformVV (me:out) - is virtual protected; + is virtual ; PerformVE (me:out) is virtual protected; @@ -127,7 +142,7 @@ is is virtual protected; PerformNewVertices (me:out) - is virtual protected; + is virtual ; PrepareEdges (me:out) is virtual protected; @@ -353,8 +368,17 @@ is RealPaveBlock(me:out; aPB:PaveBlock from BOPTools) returns PaveBlock from BOPTools; + ---C++: return const & + + -- Modified to add new method Thu Sep 14 14:35:18 2006 + -- Contribution of Samtech www.samcef.com BEGIN + RealPaveBlock(me:out; + aPB:PaveBlock from BOPTools; + aLB:out ListOfInteger from TColStd) + returns PaveBlock from BOPTools; ---C++: return const & - -- + -- Contribution of Samtech www.samcef.com END + RealSplitsFace (me:out; nF2 :Integer from Standard; aLs :out ListOfPaveBlock from BOPTools); @@ -394,9 +418,7 @@ is PrepareSetForFace(me:out; nF1 :Integer from Standard; nF2 :Integer from Standard; - --modified by NIZNHY-PKV Fri Apr 1 11:19:15 2005f aLPB: ListOfPaveBlock from BOPTools; - --modified by NIZNHY-PKV Fri Apr 1 10:54:16 2005t aPSF:out PaveSet from BOPTools); PutPaveOnCurve(me:out; @@ -427,34 +449,74 @@ is aTol: Real from Standard) returns Integer from Standard; --- IsExistingPaveBlock (me:out; --- aPB : PaveBlock from BOPTools; --- aFF : SSInterference from BOPTools) --- returns Boolean from Standard; - ---modified by NIZNHY-PKV Fri Apr 1 09:35:34 2005f + IsExistingPaveBlock (me:out; aPB : PaveBlock from BOPTools; aLPB: ListOfPaveBlock from BOPTools; aTol: Real from Standard) returns Boolean from Standard; ---modified by NIZNHY-PKV Fri Apr 1 09:35:39 2005t 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; + + MakeAloneVertices(me:out) + is protected; + + AloneVertices(me) + returns IndexedDataMapOfIndexedMapOfInteger from NMTTools; + ---C++: return const & + -- Contribution of Samtech www.samcef.com END + + IsExistingPaveBlock (me:out; + aPB : PaveBlock from BOPTools; + aLPB: ListOfShape from TopTools; + aTol: Real from Standard) + returns Boolean from Standard; + + -- + CheckCoincidence (me:out; + aPB : PaveBlock from BOPTools; + aLPB: ListOfPaveBlock from BOPTools) + returns Boolean from Standard; + -- + + CheckIntermediatePoint(me:out; + aPB : PaveBlock from BOPTools; + aE : Edge from TopoDS; + 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 + fields myIntrPool : PInterferencePool from BOPTools is protected; myDS : PShapesDataStructure from NMTDS is protected; myIsDone : Boolean from Standard is protected; myNbSources : Integer from Standard is protected; - myNbEdges : Integer from Standard is protected; - myDSIt : IteratorOfCoupleOfShape from NMTTools is protected; - -- + myNbEdges : Integer from Standard is protected; + + -- Modified to add new field Thu Sep 14 14:35:18 2006 + -- Contribution of Samtech www.samcef.com BEGIN + myDSIt : Iterator from NMTDS is protected; + -- Contribution of Samtech www.samcef.com END + myPavePool : PavePool from BOPTools is protected; myPavePoolNew : PavePool from BOPTools is protected; myCommonBlockPool : CommonBlockPool from NMTTools is protected; mySplitShapesPool : SplitShapesPool from BOPTools is protected; -- myContext : Context from IntTools is protected; - mySectionAttribute : SSIntersectionAttribute from BOPTools is protected; + mySectionAttribute : SSIntersectionAttribute from BOPTools is protected; + myAloneVertices : IndexedDataMapOfIndexedMapOfInteger from NMTTools is protected; end PaveFiller; diff --git a/src/NMTTools/NMTTools_PaveFiller.cxx b/src/NMTTools/NMTTools_PaveFiller.cxx index c3a4f9695..a76309d07 100644 --- a/src/NMTTools/NMTTools_PaveFiller.cxx +++ b/src/NMTTools/NMTTools_PaveFiller.cxx @@ -27,8 +27,8 @@ #include #include #include -//QQ #include "utilities.h" - +// +// //======================================================================= // function: NMTTools_PaveFiller::NMTTools_PaveFiller // purpose: @@ -165,25 +165,34 @@ void NMTTools_PaveFiller::Init() { myDSIt.SetDS(myDS); + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + myDSIt.Prepare(); + // Contribution of Samtech www.samcef.com END } + //======================================================================= // function: Perform // purpose: //======================================================================= void NMTTools_PaveFiller::Perform() { + myIsDone=Standard_False; + // try { // 0. - Init();//myDSIt.SetDS(myDS); - // + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + Init(); + // Contribution of Samtech www.samcef.com END //1.VV + // PerformVV(); PerformNewVertices(); // // 2.VE myPavePool.Resize (myNbEdges); PrepareEdges(); - PerformVE(); // // 3.VF @@ -193,7 +202,7 @@ myCommonBlockPool.Resize (myNbEdges); mySplitShapesPool.Resize (myNbEdges); myPavePoolNew .Resize (myNbEdges); - + PreparePaveBlocks(TopAbs_VERTEX, TopAbs_EDGE); PreparePaveBlocks(TopAbs_EDGE, TopAbs_EDGE); // @@ -207,6 +216,7 @@ // 5.EF PreparePaveBlocks(TopAbs_EDGE, TopAbs_FACE); PerformEF(); + // RefinePavePool(); // myPavePoolNew.Destroy(); @@ -215,7 +225,9 @@ // // 6. FF PerformFF (); + // MakeBlocks(); + // MakePCurves(); // // 7.Postprocessing @@ -224,10 +236,13 @@ NMTTools_DEProcessor aDEP(*this); aDEP.Do(); // - myIsDone = Standard_True; + // Modified to treat Alone Vertices Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + MakeAloneVertices(); + // Contribution of Samtech www.samcef.com END + // + myIsDone=Standard_True; } - catch (BOPTColStd_Failure& /*x*/) { - //QQ MESSAGE(x.Message() << flush); - myIsDone = Standard_False; + catch (BOPTColStd_Failure& ) { } } diff --git a/src/NMTTools/NMTTools_PaveFiller.hxx b/src/NMTTools/NMTTools_PaveFiller.hxx index 0f33f9908..116583078 100644 --- a/src/NMTTools/NMTTools_PaveFiller.hxx +++ b/src/NMTTools/NMTTools_PaveFiller.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -32,8 +32,8 @@ #ifndef _Standard_Integer_HeaderFile #include #endif -#ifndef _NMTTools_IteratorOfCoupleOfShape_HeaderFile -#include +#ifndef _NMTDS_Iterator_HeaderFile +#include #endif #ifndef _BOPTools_PavePool_HeaderFile #include @@ -50,6 +50,9 @@ #ifndef _BOPTools_SSIntersectionAttribute_HeaderFile #include #endif +#ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile +#include +#endif #ifndef _TopAbs_ShapeEnum_HeaderFile #include #endif @@ -77,6 +80,9 @@ class BOPTools_PaveSet; class BOPTools_Curve; class BOPTools_SSInterference; class gp_Pnt; +class NMTTools_IndexedDataMapOfIndexedMapOfInteger; +class TopTools_ListOfShape; +class TopoDS_Edge; #ifndef _Standard_HeaderFile @@ -86,6 +92,7 @@ class gp_Pnt; #include #endif + class NMTTools_PaveFiller { public: @@ -104,56 +111,177 @@ public: } // Methods PUBLIC // + + Standard_EXPORT NMTTools_PaveFiller(); + + Standard_EXPORT NMTTools_PaveFiller(const BOPTools_InterferencePool& aIP); + + Standard_EXPORT virtual void Destroy() ; Standard_EXPORT virtual ~NMTTools_PaveFiller(){Destroy();} + + Standard_EXPORT void SetInterferencePool(const BOPTools_InterferencePool& aIP) ; + + Standard_EXPORT BOPTools_PInterferencePool InterfPool() ; + + +Standard_EXPORT void Init() ; + + Standard_EXPORT virtual void Perform() ; + + +Standard_EXPORT virtual void PerformVV() ; + + +Standard_EXPORT virtual void PerformNewVertices() ; + + Standard_EXPORT Standard_Boolean IsDone() const; + + Standard_EXPORT NMTDS_PShapesDataStructure DS() ; + + 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_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) ; + + @@ -161,41 +289,104 @@ protected: // Methods PROTECTED // -Standard_EXPORT void Init() ; -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 PerformNewVertices() ; + + Standard_EXPORT virtual void PrepareEdges() ; + + Standard_EXPORT void SortTypes(Standard_Integer& anInd1,Standard_Integer& anInd2) const; + + Standard_EXPORT Standard_Integer ExpectedPoolLength() const; + + Standard_EXPORT Standard_Boolean IsSuccesstorsComputed(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 // BOPTools_PInterferencePool myIntrPool; @@ -203,13 +394,14 @@ NMTDS_PShapesDataStructure myDS; Standard_Boolean myIsDone; Standard_Integer myNbSources; Standard_Integer myNbEdges; -NMTTools_IteratorOfCoupleOfShape myDSIt; +NMTDS_Iterator myDSIt; BOPTools_PavePool myPavePool; BOPTools_PavePool myPavePoolNew; NMTTools_CommonBlockPool myCommonBlockPool; BOPTools_SplitShapesPool mySplitShapesPool; IntTools_Context myContext; BOPTools_SSIntersectionAttribute mySectionAttribute; +NMTTools_IndexedDataMapOfIndexedMapOfInteger myAloneVertices; private: diff --git a/src/NMTTools/NMTTools_PaveFiller.ixx b/src/NMTTools/NMTTools_PaveFiller.ixx index d4671682a..a07e7b69a 100644 --- a/src/NMTTools/NMTTools_PaveFiller.ixx +++ b/src/NMTTools/NMTTools_PaveFiller.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_PaveFiller.jxx b/src/NMTTools/NMTTools_PaveFiller.jxx index 3c9457ac6..0e63c963e 100644 --- a/src/NMTTools/NMTTools_PaveFiller.jxx +++ b/src/NMTTools/NMTTools_PaveFiller.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _BOPTools_InterferencePool_HeaderFile #include #endif @@ -80,6 +80,15 @@ #ifndef _gp_Pnt_HeaderFile #include #endif +#ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopoDS_Edge_HeaderFile +#include +#endif #ifndef _NMTTools_PaveFiller_HeaderFile #include #endif diff --git a/src/NMTTools/NMTTools_PaveFiller_0.cxx b/src/NMTTools/NMTTools_PaveFiller_0.cxx index 0f1aba49a..e64607d3e 100644 --- a/src/NMTTools/NMTTools_PaveFiller_0.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_0.cxx @@ -1,28 +1,27 @@ // 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 +// 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 +// +// 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 +// 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: NMTTools_PaveFiller_0.cxx -// Created: Mon Dec 8 11:45:51 2003 +// File: NMTTools_PaveFiller_1.cxx +// Created: Mon Dec 8 11:47:55 2003 // Author: Peter KURNEV // - #include #include @@ -69,9 +68,12 @@ { Standard_Integer aNbIIs; Standard_Real aCfPredict=.5; - - const BOPTools_ListOfCoupleOfInteger& aLC=myDSIt.ListOfCouple(); - aNbIIs=aLC.Extent(); + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + //const BOPTools_ListOfCoupleOfInteger& aLC=myDSIt.ListOfCouple(); + //aNbIIs=aLC.Extent(); + aNbIIs=myDSIt.ExpectedLength(); + // Contribution of Samtech www.samcef.com END // if (aNbIIs==1) { return aNbIIs; diff --git a/src/NMTTools/NMTTools_PaveFiller_1.cxx b/src/NMTTools/NMTTools_PaveFiller_1.cxx index 57c923e77..fbb035ef0 100644 --- a/src/NMTTools/NMTTools_PaveFiller_1.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_1.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -43,8 +43,6 @@ #include #include #include - - //======================================================================= // function: PerformVV @@ -77,9 +75,17 @@ aWhat=n1; aWith=n2; SortTypes(aWhat, aWith); + // if (!bJustAddInterference) { - const TopoDS_Shape& aS1=myDS->GetShape(aWhat); - const TopoDS_Shape& aS2=myDS->GetShape(aWith); + const TopoDS_Shape aS1=myDS->GetShape(aWhat);//mpv + const TopoDS_Shape aS2=myDS->GetShape(aWith);//mpv + // + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + if (aS1.IsSame(aS2)) { + continue; + } + // Contribution of Samtech www.samcef.com END // const TopoDS_Vertex& aV1=TopoDS::Vertex(aS1); const TopoDS_Vertex& aV2=TopoDS::Vertex(aS2); @@ -127,7 +133,7 @@ aNbV=aChain.Extent(); for (j=1; j<=aNbV; ++j) { aIdV=aChain(j); - const TopoDS_Shape& aV=myDS->Shape(aIdV); + const TopoDS_Shape aV=myDS->Shape(aIdV);//mpv if (!aM.Contains(aV)) { aM.Add(aV); aLV.Append(aV); diff --git a/src/NMTTools/NMTTools_PaveFiller_2.cxx b/src/NMTTools/NMTTools_PaveFiller_2.cxx index a66bbb610..8febb88c2 100644 --- a/src/NMTTools/NMTTools_PaveFiller_2.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_2.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -49,9 +50,17 @@ #include // +// Modified Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN #include #include +#include +// +static + Standard_Boolean Contains(const TopoDS_Edge& aE, + const TopoDS_Vertex& aV); +// Contribution of Samtech www.samcef.com END //======================================================================= // function: PrepareEdges // purpose: @@ -140,7 +149,6 @@ } // Edge aE2=TopoDS::Edge(myDS->Shape(aWith)); - // if (BRep_Tool::Degenerated(aE2)){ continue; } @@ -152,12 +160,35 @@ if (iSDV) { nV1=iSDV; aV1=TopoDS::Vertex(myDS->Shape(nV1)); + // Modified to find same domain vertex Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + Standard_Integer nVE, iSDVE, iRet; + // + BooleanOperations_OnceExplorer aExp(*myDS); + iRet=0; + aExp.Init(aWith, TopAbs_VERTEX); + for (; aExp.More(); aExp.Next()) { + nVE=aExp.Current(); + iSDVE=FindSDVertex(nVE); + if (iSDVE==iSDV) { + iRet=1; + break; + } + } + if (iRet) { + continue; + } + } + else { + if (Contains(aE2, aV1)) { + continue; + } + // Contribution of Samtech www.samcef.com END } // aFlag=myContext.ComputeVE (aV1, aE2, aT); // if (!aFlag) { - // // Add Interference to the Pool BOPTools_VEInterference anInterf (aWhat, aWith, aT); anIndexIn=aVEs.Append(anInterf); @@ -185,46 +216,27 @@ } myIsDone=Standard_True; } - -/* -// A -// - // cto900/M2 - // Some of Edges can be [Semi] Infinite. Such Edges have no - // vertices on correspondant INF ends. So we must provide - // these vertices formally (to obtain Shrunk Ranges for e.g). - // In reality this vertex(-es) does not belong to the INF Edge. - // It just has reference in the DS. - // PKV Tue Apr 23 10:21:45 2002 - { - Standard_Real aT1, aT2, aTolE; - Standard_Boolean bInf1, bInf2; - gp_Pnt aPx; - TopoDS_Vertex aVx; - BRep_Builder aBB; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - aTolE=BRep_Tool::Tolerance(aE); - Handle(Geom_Curve) aC3D=BRep_Tool::Curve (aE, aT1, aT2); - bInf1=Precision::IsNegativeInfinite(aT1); - bInf2=Precision::IsPositiveInfinite(aT2); - - if (bInf1) { - aC3D->D0(aT1, aPx); - aBB.MakeVertex(aVx, aPx, aTolE); - myDS->InsertShapeAndAncestorsSuccessors(aVx, anASSeq); - nV=myDS->NumberOfInsertedShapes(); - BOPTools_Pave aPave(nV, aT1); - aPaveSet.Append (aPave); - } - - if (bInf2) { - aC3D->D0(aT2, aPx); - aBB.MakeVertex(aVx, aPx, aTolE); - myDS->InsertShapeAndAncestorsSuccessors(aVx, anASSeq); - nV=myDS->NumberOfInsertedShapes(); - BOPTools_Pave aPave(nV, aT2); - aPaveSet.Append (aPave); - } - } -*/ +// Modified Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +//======================================================================= +//function : Contains +//purpose : +//======================================================================= +Standard_Boolean Contains(const TopoDS_Edge& aE, + const TopoDS_Vertex& aV) +{ + Standard_Boolean bRet; + TopoDS_Iterator aIt; + // + bRet=Standard_False; + aIt.Initialize(aE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aVE=aIt.Value(); + if (aVE.IsSame(aV)) { + bRet=!bRet; + break; + } + } + return bRet; +} +// Contribution of Samtech www.samcef.com END diff --git a/src/NMTTools/NMTTools_PaveFiller_3.cxx b/src/NMTTools/NMTTools_PaveFiller_3.cxx index 85bcb6599..7869f87d0 100644 --- a/src/NMTTools/NMTTools_PaveFiller_3.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_3.cxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -34,7 +34,14 @@ #include #include +#include +// Modified Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +static + Standard_Boolean Contains(const TopoDS_Face& aF, + const TopoDS_Vertex& aV); +// Contribution of Samtech www.samcef.com END //======================================================================= // function: PerformVF // purpose: @@ -85,6 +92,13 @@ // aF2=TopoDS::Face(myDS->Shape(aWith)); // + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + if (Contains(aF2, aV1)) { + continue; + } + // Contribution of Samtech www.samcef.com END + // aFlag=myContext.ComputeVS (aV1, aF2, aU, aV); // if (!aFlag) { @@ -105,3 +119,27 @@ } myIsDone=Standard_True; } +// Modified Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +//======================================================================= +//function : Contains +//purpose : +//======================================================================= +Standard_Boolean Contains(const TopoDS_Face& aF, + const TopoDS_Vertex& aV) +{ + Standard_Boolean bRet; + TopExp_Explorer aExp; + // + bRet=Standard_False; + aExp.Init(aF, TopAbs_VERTEX); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aVF=aExp.Current(); + if (aVF.IsSame(aV)) { + bRet=!bRet; + break; + } + } + return bRet; +} +// Contribution of Samtech www.samcef.com END diff --git a/src/NMTTools/NMTTools_PaveFiller_4.cxx b/src/NMTTools/NMTTools_PaveFiller_4.cxx index 33f178c92..5d0d20118 100644 --- a/src/NMTTools/NMTTools_PaveFiller_4.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_4.cxx @@ -81,6 +81,14 @@ #include #include +// Modified Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +#include +#include +#include +#include +#include +// Contribution of Samtech www.samcef.com END // static void VertexParameters(const IntTools_CommonPrt& aCPart, @@ -90,6 +98,9 @@ static Standard_Boolean IsOnPave(const Standard_Real& aT1, const IntTools_Range& aRange, const Standard_Real& aTolerance); +static + void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB); + static void ProcessBlock(const BOPTools_PaveBlock& aPB, const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, @@ -110,6 +121,7 @@ static Standard_Boolean bJustAdd; Standard_Integer n1, n2, anIndexIn, nE1, nE2, aNbVEs, aBlockLength; Standard_Integer aTmp, aWhat, aWith, i, aNbCPrts, aDiscretize=30; + Standard_Integer aNbLPB1, aNbLPB2; Standard_Real aTolE1, aTolE2, aDeflection=0.01; BOPTools_ListIteratorOfListOfPaveBlock anIt1, anIt2; TopoDS_Edge aEWhat, aEWith; @@ -145,8 +157,9 @@ static continue; } // - const TopoDS_Edge& aE1=TopoDS::Edge(myDS->Shape(nE1)); - const TopoDS_Edge& aE2=TopoDS::Edge(myDS->Shape(nE2)); + const TopoDS_Edge aE1=TopoDS::Edge(myDS->Shape(nE1));//mpv + const TopoDS_Edge aE2=TopoDS::Edge(myDS->Shape(nE2));//mpv + // if (BRep_Tool::Degenerated(aE1) || BRep_Tool::Degenerated(aE2)){ continue; @@ -156,6 +169,17 @@ static aTolE2=BRep_Tool::Tolerance(aE2); // BOPTools_ListOfPaveBlock& aLPB1=mySplitShapesPool(myDS->RefEdge(nE1)); + BOPTools_ListOfPaveBlock& aLPB2=mySplitShapesPool(myDS->RefEdge(nE2)); + // + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + aNbLPB1=aLPB1.Extent(); + aNbLPB2=aLPB2.Extent(); + + //if (aE1.IsSame(aE2) && aNbLPB1==1 && aNbLPB2==1) { + // continue; + //} + // Contribution of Samtech www.samcef.com END // for (anIt1.Initialize(aLPB1); anIt1.More(); anIt1.Next()) { BOPTools_PaveBlock& aPB1=anIt1.Value(); @@ -164,8 +188,6 @@ static const IntTools_Range& aSR1=aShrunkRange1.ShrunkRange(); const Bnd_Box& aBB1=aShrunkRange1.BndBox(); // - BOPTools_ListOfPaveBlock& aLPB2=mySplitShapesPool(myDS->RefEdge(nE2)); - // for (anIt2.Initialize(aLPB2); anIt2.More(); anIt2.Next()) { BOPTools_PaveBlock& aPB2=anIt2.Value(); const IntTools_ShrunkRange& aShrunkRange2=aPB2.ShrunkRange(); @@ -304,7 +326,10 @@ static // EENewVertices (aMapVI); EECommonBlocks(aMapCB); - // + // Modified to invoke new nethod Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + PerformVF1(); + // Contribution of Samtech www.samcef.com BEGIN myIsDone=Standard_True; } //======================================================================= @@ -468,7 +493,7 @@ static aNbEdges=aME.Extent(); for (j=1; j<=aNbEdges; ++j) { nE=aME(j); - const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE)); + const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));//mpv // aFlag=myContext.ComputeVE (aNewVertex, aE, aT); // @@ -775,10 +800,10 @@ static Standard_Real d1121, d1122, d1222, d1221, aTolSum, aCoeff=1.05; gp_Pnt aP11, aP12, aP21, aP22; - const TopoDS_Vertex& aV11=TopoDS::Vertex(myDS->Shape(aPB1.Pave1().Index())); - const TopoDS_Vertex& aV12=TopoDS::Vertex(myDS->Shape(aPB1.Pave2().Index())); - const TopoDS_Vertex& aV21=TopoDS::Vertex(myDS->Shape(aPB2.Pave1().Index())); - const TopoDS_Vertex& aV22=TopoDS::Vertex(myDS->Shape(aPB2.Pave2().Index())); + const TopoDS_Vertex aV11=TopoDS::Vertex(myDS->Shape(aPB1.Pave1().Index()));//mpv + const TopoDS_Vertex aV12=TopoDS::Vertex(myDS->Shape(aPB1.Pave2().Index()));//mpv + const TopoDS_Vertex aV21=TopoDS::Vertex(myDS->Shape(aPB2.Pave1().Index()));//mpv + const TopoDS_Vertex aV22=TopoDS::Vertex(myDS->Shape(aPB2.Pave2().Index()));//mpv aTolV11=BRep_Tool::Tolerance(aV11); aTolV12=BRep_Tool::Tolerance(aV12); @@ -854,6 +879,65 @@ static } } } + // Modified to provide the order of edges + // in common block where the edge with max + // tolerance value will be the first + // Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + Standard_Integer i, iMax, aNb, aNbCB, nSp; + Standard_Real aTolSp, aTolMax; + BOPTools_ListOfPaveBlock *pLPBE; + // + aNb=myDS->NumberOfShapesOfTheObject(); + for (nE=1; nE<=aNb; ++nE) { + const TopoDS_Shape& aE=myDS->Shape(nE); + if (aE.ShapeType()!=TopAbs_EDGE) { + continue; + } + // + NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); + aNbCB=aLCBE.Extent(); + if (!aNbCB) { + continue; + } + // + anIt.Initialize(aLCBE); + for (; anIt.More(); anIt.Next()) { + NMTTools_CommonBlock& aCBE=anIt.Value(); + const BOPTools_ListOfPaveBlock& aLPBE=aCBE.PaveBlocks(); + // + aTolMax=-1.; + anItLPE.Initialize(aLPBE); + for (i=0; anItLPE.More(); anItLPE.Next(), ++i) { + const BOPTools_PaveBlock& aPB=anItLPE.Value(); + nSp=aPB.OriginalEdge(); + const TopoDS_Edge& aSp=TopoDS::Edge(myDS->Shape(nSp)); + aTolSp=BRep_Tool::Tolerance(aSp); + if (aTolSp>aTolMax) { + iMax=i; + aTolSp=aTolMax; + } + } + // + BOPTools_ListOfPaveBlock aLPBx; + // + anItLPE.Initialize(aLPBE); + for (i=0; anItLPE.More(); anItLPE.Next(), ++i) { + const BOPTools_PaveBlock& aPB=anItLPE.Value(); + if (i==iMax) { + aLPBx.Prepend(aPB); + } + else { + aLPBx.Append(aPB); + } + } + // + pLPBE=(BOPTools_ListOfPaveBlock *)&aLPBE; + pLPBE->Clear(); + pLPBE->Append(aLPBx); + }//for (; anIt.More(); anIt.Next()) { + }//for (nE=1; nE<=aNb; ++nE) { + // Contribution of Samtech www.samcef.com END } //======================================================================= // function: RemoveCommonBlocks @@ -1093,3 +1177,76 @@ 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 +// Contribution of Samtech www.samcef.com BEGIN +//======================================================================= +// function: PerformVF1 +// purpose: +//======================================================================= + void NMTTools_PaveFiller::PerformVF1() +{ + Standard_Integer i, aNbEE, n1, n2, nNewShape, aNbS, nF; + Standard_Integer anIndexIn, aFlag; + Standard_Real aU, aV; + TColStd_ListOfInteger aLFI; + TColStd_ListIteratorOfListOfInteger aItLFI; + // + BOPTools_CArray1OfVSInterference& aVSs=myIntrPool->VSInterferences(); + BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences(); + // + aNbS=myDS->NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aF=myDS->Shape(i); + if (aF.ShapeType()==TopAbs_FACE) { + aLFI.Append(i); + } + } + if (!aLFI.Extent()) { + return; + } + // + aNbEE=aEEs.Extent(); + for (i=1; i<=aNbEE; ++i) { + BOPTools_EEInterference& aEE=aEEs(i); + aEE.Indices(n1, n2); + nNewShape=aEE.NewShape(); + if (!nNewShape) { + continue; + } + // + const TopoDS_Shape& aSnew=myDS->Shape(nNewShape); + if (aSnew.ShapeType()!=TopAbs_VERTEX) { + continue; + } + // + const TopoDS_Vertex& aVnew=TopoDS::Vertex(aSnew); + // + Bnd_Box aBV; + // + BRepBndLib::Add(aVnew, aBV); + // + aItLFI.Initialize(aLFI); + for (; aItLFI.More(); aItLFI.Next()) { + nF=aItLFI.Value(); + // + const TopoDS_Face& aF=TopoDS::Face(myDS->Shape(nF)); + const Bnd_Box& aBF=myDS->GetBoundingBox(nF); + if (aBF.IsOut(aBV)) { + continue; + } + // + anIndexIn=0; + aFlag=myContext.ComputeVS (aVnew, aF, aU, aV); + if (!aFlag) { + BOPTools_VSInterference anInterf (nNewShape, nF, aU, aV); + // + anIndexIn=aVSs.Append(anInterf); + BOPTools_VSInterference& aVS=aVSs(anIndexIn); + aVS.SetNewShape(nNewShape);//-> + } + } + } +} +// Contribution of Samtech www.samcef.com END diff --git a/src/NMTTools/NMTTools_PaveFiller_5.cxx b/src/NMTTools/NMTTools_PaveFiller_5.cxx index db8930c00..0c6dbab26 100644 --- a/src/NMTTools/NMTTools_PaveFiller_5.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_5.cxx @@ -78,6 +78,8 @@ #include #include #include +#include +#include static void VertexParameter(const IntTools_CommonPrt& aCPart, @@ -86,7 +88,7 @@ static Standard_Boolean IsOnPave(const Standard_Real& aTR, const IntTools_Range& aCPRange, const Standard_Real& aTolerance); - +// //======================================================================= // function: PerformEF // purpose: @@ -102,7 +104,6 @@ static BooleanOperations_IndexedDataMapOfShapeInteger aMapVI; BOPTools_IDMapOfPaveBlockIMapOfInteger aMapCB; BOPTools_IMapOfPaveBlock aIMPBx; - // BOPTools_CArray1OfESInterference& aEFs=myIntrPool->ESInterferences(); // @@ -138,14 +139,32 @@ static continue; } // Edge - const TopoDS_Edge& aE=TopoDS::Edge(myDS->GetShape(nE)); + const TopoDS_Edge aE=TopoDS::Edge(myDS->GetShape(nE));//mpv if (BRep_Tool::Degenerated(aE)){ continue; } - aTolE=BRep_Tool::Tolerance(aE); // Face - const TopoDS_Face& aF=TopoDS::Face(myDS->GetShape(nF)); + const TopoDS_Face aF=TopoDS::Face(myDS->GetShape(nF));//mpv + // + // Modified + // to avoid intersection between face and edge from that face + // Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + TopTools_IndexedMapOfShape aME; + // + TopExp::MapShapes(aF, TopAbs_EDGE, aME); + if (aME.Contains(aE)) { + continue; + } + // Contribution of Samtech www.samcef.com END + // aTolF=BRep_Tool::Tolerance(aF); + + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + aTolE=BRep_Tool::Tolerance(aE); + // Contribution of Samtech www.samcef.com END + const Bnd_Box& aBBF=myDS->GetBoundingBox(nF); // // Process each PaveBlock on edge nE @@ -492,7 +511,7 @@ static aNbEdges=aME.Extent(); for (j=1; j<=aNbEdges; ++j) { nE=aME(j); - const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE)); + const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));//mpv // aFlag=myContext.ComputeVE (aNewVertex, aE, aT); // @@ -575,7 +594,7 @@ static aNbV=aMVF.Extent(); for (i=1; i<=aNbV; ++i) { nVF=aMVF(i); - const TopoDS_Vertex& aVF=TopoDS::Vertex(myDS->Shape(nVF)); + const TopoDS_Vertex aVF=TopoDS::Vertex(myDS->Shape(nVF));//mpv iFlag=IntTools_Tools::ComputeVV(aNewVertex, aVF); if (!iFlag) { return nVF; diff --git a/src/NMTTools/NMTTools_PaveFiller_6.cxx b/src/NMTTools/NMTTools_PaveFiller_6.cxx index 8c4852a4b..87fd41504 100644 --- a/src/NMTTools/NMTTools_PaveFiller_6.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_6.cxx @@ -30,7 +30,6 @@ #include #include -#include #include #include @@ -45,7 +44,6 @@ #include #include #include -#include #include @@ -81,7 +79,18 @@ #include #include #include +#include #include +#include +#include +// +#include +#include +#include +#include +#include +#include +#include static Standard_Boolean IsPairFound(const Standard_Integer nF1, @@ -102,6 +111,13 @@ static Standard_Boolean IsFound(const TColStd_IndexedMapOfInteger& aMapWhat, const TColStd_IndexedMapOfInteger& aMapWith); +// Modified Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +static + void SharedEdges1(const TopoDS_Face& aF1, + const TopoDS_Face& aF2, + TopTools_ListOfShape& aLS); +// Contribution of Samtech www.samcef.com END //======================================================================= // function: PerformFF @@ -165,8 +181,8 @@ static continue; } // - const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); + const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));//mpv + const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));//mpv // // FF bToApproxC3d = mySectionAttribute.Approximation(); @@ -235,7 +251,11 @@ static { myIsDone=Standard_False; // - Standard_Boolean bIsExistingPaveBlock, bIsValidIn2D; + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + Standard_Boolean bIsExistingPaveBlock, bIsValidIn2D, bIsCoincided; + // Contribution of Samtech www.samcef.com END + // Standard_Integer i, aNbFFs, nF1, nF2, aBid=0; Standard_Integer nV1, nV2, j, aNbCurves; Standard_Real aTolR3D, aTol2D, aT1, aT2, aTolPPC=Precision::PConfusion(); @@ -254,10 +274,37 @@ static // // Faces aFFi.Indices(nF1, nF2); - const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); + const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));//mpv + const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));//mpv + // + BOPTools_ListOfPaveBlock aLPB; + // + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + RealSplitsInFace (aBid, nF1, nF2, aLPB); + RealSplitsInFace (aBid, nF2, nF1, aLPB); + RealSplitsOnFace (aBid, nF1, nF2, aLPB); + // + anIt.Initialize(aLPB); + for (; anIt.More(); anIt.Next()) { + const BOPTools_PaveBlock& aPB=anIt.Value(); + aFFi.AppendBlock(aPB); + } + // + TopTools_ListOfShape aLSE; + TColStd_ListOfInteger aLNE; + SharedEdges(nF1, nF2, aLNE, aLSE); + aFFi.SetSharedEdges(aLNE); // - BOPTools_ListOfPaveBlock aLPB, aLPBC; + // + BOPTools_SequenceOfCurves& aSCvs=aFFi.Curves(); + aNbCurves=aSCvs.Length(); + if (!aNbCurves) { + continue; + } + // + BOPTools_ListOfPaveBlock aLPBC; + // Contribution of Samtech www.samcef.com END // { Standard_Integer nFj1, nFj2, nE; @@ -290,30 +337,12 @@ static } } // - // - RealSplitsInFace (aBid, nF1, nF2, aLPB); - RealSplitsInFace (aBid, nF2, nF1, aLPB); - RealSplitsOnFace (aBid, nF1, nF2, aLPB); - // - anIt.Initialize(aLPB); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - aFFi.AppendBlock(aPB); - } - // - BOPTools_SequenceOfCurves& aSCvs=aFFi.Curves(); - aNbCurves=aSCvs.Length(); - if (!aNbCurves) { - continue; - } - // aTolR3D=aFFi.TolR3D(); aTol2D=(aTolR3D < 1.e-3) ? 1.e-3 : aTolR3D; // BOPTools_PaveSet aPSF; // PrepareSetForFace (nF1, nF2, aLPBC, aPSF); - //PrepareSetForFace (nF1, nF2, aPSF); // // Put Paves On Curves for (j=1; j<=aNbCurves; ++j) { @@ -356,15 +385,39 @@ static // 1 const BOPTools_ListOfPaveBlock& aLPBFF=aFFi.PaveBlocks(); bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aLPBFF, aTolR3D); - //bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aFFi); if (bIsExistingPaveBlock) { continue; } + // + // Modified + // to provide checking of coincidence between aPBNew + // and each blocks of list aLPBFF + // Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + bIsCoincided=CheckCoincidence(aPBNew, aLPBFF); + if(bIsCoincided) { + continue; + } + // Contribution of Samtech www.samcef.com END + // // 2 bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aLPBC, aTolR3D); if (bIsExistingPaveBlock) { continue; } + // + // Modified + // to provide checking whether aPBNew already exists in list + // of section edges aLSE + // Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + // 3 + bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aLSE, aTolR3D); + if (bIsExistingPaveBlock) { + continue; + } + // Contribution of Samtech www.samcef.com END + // // Checking of validity in 2D // bIsValidIn2D=myContext.IsValidBlockForFaces(aT1, aT2, aIC, aF1, aF2, aTol2D); @@ -377,8 +430,8 @@ static // Make Section Edge TopoDS_Edge aES; // - const TopoDS_Vertex& aV1=TopoDS::Vertex(myDS->Shape(nV1)); - const TopoDS_Vertex& aV2=TopoDS::Vertex(myDS->Shape(nV2)); + const TopoDS_Vertex aV1=TopoDS::Vertex(myDS->Shape(nV1));//mpv + const TopoDS_Vertex aV2=TopoDS::Vertex(myDS->Shape(nV2));//mpv // BOPTools_Tools::MakeSectEdge (aIC, aV1, aT1, aV2, aT2, aES); // @@ -489,13 +542,13 @@ static for (j=1; j<=aNbSE; ++j) { const BOPTools_PaveBlock& aPBSE=aMEPB(j); nV1=aPBSE.Pave1().Index(); - const TopoDS_Shape& aV1=myDS->Shape(nV1); + const TopoDS_Shape aV1=myDS->Shape(nV1);//mpv if (aV1.IsSame(aV)) { aMNewOld.Add(i, nV1); break; } nV2=aPBSE.Pave2().Index(); - const TopoDS_Shape& aV2=myDS->Shape(nV2); + const TopoDS_Shape aV2=myDS->Shape(nV2);//mpv if (aV2.IsSame(aV)) { aMNewOld.Add(i, nV2); break; @@ -546,9 +599,9 @@ static BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; // nV1=aPBSE.Pave1().Index(); - const TopoDS_Shape& aV1=myDS->Shape(nV1); + const TopoDS_Shape aV1=myDS->Shape(nV1);//mpv nV2=aPBSE.Pave2().Index(); - const TopoDS_Shape& aV2=myDS->Shape(nV2); + const TopoDS_Shape aV2=myDS->Shape(nV2);//mpv // anASSeq.SetNewSuccessor(nV1); anASSeq.SetNewOrientation(aV1.Orientation()); @@ -566,7 +619,6 @@ static // nF1=aPBSE.Face1(); nF2=aPBSE.Face2(); - // //modified by NIZNHY-PKV Thu Jan 26 10:17:04 2006f //const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); //const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); @@ -580,8 +632,8 @@ static BOPTools_PaveBlock aPB=aIt.Value(); // ////modified by NIZNHY-PKV Thu Jan 26 10:16:36 2006f - const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); + const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1)); + const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2)); ////modified by NIZNHY-PKV Thu Jan 26 10:16:39 2006t // if (aCBAPI.IsCommonBlock(aPB)) { @@ -598,8 +650,59 @@ static const TopoDS_Edge& aEx=TopoDS::Edge(tDS.Shape(mE)); aTolEx=BRep_Tool::Tolerance(aEx); // - // <- Block A was here + // Commented out by EAP in the frame of PAL9151 + // +// Standard_Boolean bHasPCOnF, bFound; +// Standard_Integer nF, k, nEOrx, nF1x, nF2x; +// Standard_Real aTolEx, aT1x, aT2x; +// BOPTools_ListIteratorOfListOfPaveBlock aItPBx; // +// for (k=0; k<2; ++k) { +// nF=(!k) ? nF1 : nF2; +// const TopoDS_Face& aF=TopoDS::Face(myDS->Shape(nF)); +// // +// bHasPCOnF=BOPTools_Tools2D::HasCurveOnSurface(aEx, aF); +// if (bHasPCOnF) { +// continue; +// } +// // +// bFound=Standard_False; +// aItPBx.Initialize(aLPBx); +// for (; aItPBx.More(); aItPBx.Next()) { +// BOPTools_PaveBlock& aPBx=aIt.Value(); +// nEOrx=aPBx.OriginalEdge(); +// const TopoDS_Shape& aEOrx=tDS.Shape(nEOrx); +// BOPTools_PaveBlock& aPBSEx=aMEPB.ChangeFromKey(aEOrx); +// aT1x=aPBSEx.Pave1().Param(); +// aT2x=aPBSEx.Pave2().Param(); +// const IntTools_Curve& aICx=aPBSEx.Curve(); +// // +// nF1x=aPBSEx.Face1(); +// nF2x=aPBSEx.Face2(); +// // +// if (nF1x==nF) { +// Handle(Geom2d_Curve) aC2D1x=aICx.FirstCurve2d(); +// Handle(Geom2d_TrimmedCurve)aC2D1xT =new Geom2d_TrimmedCurve(aC2D1x, aT1x, aT2x); +// aBB.UpdateEdge(aEx, aC2D1xT, aF, aTolEx); +// bFound=!bFound; +// break; +// } +// // +// if (nF2x==nF) { +// Handle(Geom2d_Curve) aC2D2x=aICx.SecondCurve2d(); +// Handle(Geom2d_TrimmedCurve)aC2D2xT =new Geom2d_TrimmedCurve(aC2D2x, aT1x, aT2x); +// aBB.UpdateEdge(aEx, aC2D2xT, aF, aTolEx); +// bFound=!bFound; +// break; +// } +// } +// if (bFound){ +// BRepLib::SameParameter(aEx, aTolEx, Standard_True); +// } +// } + // + // The code till the if block end is restored from V2_2_2 revision + // aF1FWD=aF1; aF1FWD.Orientation(TopAbs_FORWARD); NMTTools_Tools::MakePCurve(aEx, aF1FWD, aC2D1, aTolEx); @@ -617,13 +720,13 @@ static aT1=aPave1.Param(); mV1=aPave1.Index(); // index in tDS nV1=aMNewOld.FindFromKey(mV1); // index in myDS - const TopoDS_Shape& aV1=myDS->Shape(nV1); + const TopoDS_Shape aV1=myDS->Shape(nV1);//mpv // const BOPTools_Pave& aPave2=aPB.Pave2(); aT2=aPave2.Param(); mV2=aPave2.Index(); nV2=aMNewOld.FindFromKey(mV2); - const TopoDS_Shape& aV2=myDS->Shape(nV2); + const TopoDS_Shape aV2=myDS->Shape(nV2);//mpv // if (!aMNewOld.Contains(mE)) { // add new SE to the myDS @@ -684,8 +787,8 @@ static BOPTools_SSInterference& aFF=aFFs(i); aFF.Indices(nF1, nF2); // - const TopoDS_Face& aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->Shape(nF2)); + const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));//mpv + const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));//mpv // aF1FWD=aF1; aF1FWD.Orientation(TopAbs_FORWARD); @@ -699,7 +802,7 @@ static for (; anIt.More(); anIt.Next()) { const BOPTools_PaveBlock& aPB=anIt.Value(); nE=aPB.Edge(); - const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE)); + const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));//mpv BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD); BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD); @@ -738,6 +841,35 @@ static return bFlag; } //======================================================================= +// function: IsExistingPaveBlock +// purpose: +//======================================================================= + Standard_Boolean NMTTools_PaveFiller::IsExistingPaveBlock(const BOPTools_PaveBlock& aPBNew, + const TopTools_ListOfShape& aLSE, + const Standard_Real aTolR3D) +{ + Standard_Boolean bFlag; + Standard_Integer aNbSE, iC; + TopTools_ListIteratorOfListOfShape anIt; + // + bFlag=Standard_False; + // + aNbSE=aLSE.Extent(); + if (!aNbSE) { + return bFlag; + } + // + anIt.Initialize(aLSE); + for (; anIt.More(); anIt.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(anIt.Value()); + iC=CheckIntermediatePoint(aPBNew, aE, aTolR3D); + if (!iC) { + return !bFlag; + } + } + return bFlag; +} +//======================================================================= // function: CheckIntermediatePoint // purpose: //======================================================================= @@ -746,8 +878,24 @@ static const Standard_Real aTolC) { - Standard_Real aT11, aT12, aTM, aTmp; Standard_Integer iVM, nE2; + // + nE2=aPBR.Edge(); + const TopoDS_Edge aE2=TopoDS::Edge(myDS->Shape(nE2));//mpv + iVM=CheckIntermediatePoint(aPB, aE2, aTolC); + // + return iVM; +} +//======================================================================= +// function: CheckIntermediatePoint +// purpose: +//======================================================================= + Standard_Integer NMTTools_PaveFiller::CheckIntermediatePoint(const BOPTools_PaveBlock& aPB, + const TopoDS_Edge& aE2, + const Standard_Real aTolC) +{ + Standard_Real aT11, aT12, aTM, aTmp; + Standard_Integer iVM; gp_Pnt aPM; BRep_Builder aBB; TopoDS_Vertex aVM; @@ -766,10 +914,6 @@ static // aBB.MakeVertex (aVM, aPM, aTolC); // - //Edge - nE2=aPBR.Edge(); - const TopoDS_Edge& aE2=TopoDS::Edge(myDS->GetShape(nE2)); - // VE iVM=myContext.ComputeVE(aVM, aE2, aTmp); // return iVM; @@ -799,8 +943,8 @@ static aFFi.Indices(nF1, nF2); aTolR3D=aFFi.TolR3D(); // - const TopoDS_Face& aF1=TopoDS::Face(myDS->GetShape(nF1)); - const TopoDS_Face& aF2=TopoDS::Face(myDS->GetShape(nF2)); + const TopoDS_Face aF1=TopoDS::Face(myDS->GetShape(nF1));//mpv + const TopoDS_Face aF2=TopoDS::Face(myDS->GetShape(nF2));//mpv // bVF=myContext.IsValidPointForFaces (aP1, aF1, aF2, aTolR3D); if (bVF) { @@ -857,7 +1001,7 @@ static aPave.SetParam(aT); aFFiPS.Append(aPave); // - const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV)); + const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));//mpv BOPTools_Tools::UpdateVertex (aIC, aT, aV); } @@ -867,7 +1011,7 @@ static aPave.SetParam(aT); aCPS.Append(aPave); // - const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV)); + const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));//mpv BOPTools_Tools::UpdateVertex (aIC, aT, aV); } } @@ -888,7 +1032,7 @@ static for (; anIt.More(); anIt.Next()) { const BOPTools_Pave& aPC=anIt.Value(); nV=aPC.Index(); - const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV)); + const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));//mpv bIsVertex=IntTools_Tools::IsVertex (aP, aTolPV, aV); if (bIsVertex) { aPave=aPC; @@ -974,7 +1118,7 @@ static const BOPTools_Pave& aPave=anIt.Value(); // nV=aPave.Index(); - const TopoDS_Vertex& aV=TopoDS::Vertex(myDS->Shape(nV)); + const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));//mpv // Bnd_Box aBBV; BRepBndLib::Add(aV, aBBV); @@ -1110,60 +1254,144 @@ Standard_Boolean IsFound(const TColStd_IndexedMapOfInteger& aMapWhat, } return bFlag; } -// -// Block A -// - // - // Commented out by EAP in the frame of PAL9151 - // -// Standard_Boolean bHasPCOnF, bFound; -// Standard_Integer nF, k, nEOrx, nF1x, nF2x; -// Standard_Real aTolEx, aT1x, aT2x; -// BOPTools_ListIteratorOfListOfPaveBlock aItPBx; - // -// for (k=0; k<2; ++k) { -// nF=(!k) ? nF1 : nF2; -// const TopoDS_Face& aF=TopoDS::Face(myDS->Shape(nF)); -// // -// bHasPCOnF=BOPTools_Tools2D::HasCurveOnSurface(aEx, aF); -// if (bHasPCOnF) { -// continue; -// } -// // -// bFound=Standard_False; -// aItPBx.Initialize(aLPBx); -// for (; aItPBx.More(); aItPBx.Next()) { -// BOPTools_PaveBlock& aPBx=aIt.Value(); -// nEOrx=aPBx.OriginalEdge(); -// const TopoDS_Shape& aEOrx=tDS.Shape(nEOrx); -// BOPTools_PaveBlock& aPBSEx=aMEPB.ChangeFromKey(aEOrx); -// aT1x=aPBSEx.Pave1().Param(); -// aT2x=aPBSEx.Pave2().Param(); -// const IntTools_Curve& aICx=aPBSEx.Curve(); -// // -// nF1x=aPBSEx.Face1(); -// nF2x=aPBSEx.Face2(); -// // -// if (nF1x==nF) { -// Handle(Geom2d_Curve) aC2D1x=aICx.FirstCurve2d(); -// Handle(Geom2d_TrimmedCurve)aC2D1xT =new Geom2d_TrimmedCurve(aC2D1x, aT1x, aT2x); -// aBB.UpdateEdge(aEx, aC2D1xT, aF, aTolEx); -// bFound=!bFound; -// break; -// } -// // -// if (nF2x==nF) { -// Handle(Geom2d_Curve) aC2D2x=aICx.SecondCurve2d(); -// Handle(Geom2d_TrimmedCurve)aC2D2xT =new Geom2d_TrimmedCurve(aC2D2x, aT1x, aT2x); -// aBB.UpdateEdge(aEx, aC2D2xT, aF, aTolEx); -// bFound=!bFound; -// break; -// } -// } -// if (bFound){ -// BRepLib::SameParameter(aEx, aTolEx, Standard_True); -// } -// } - // - // The code till the if block end is restored from V2_2_2 revision +// Modified Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +//======================================================================= +//function : SharedEdges1 +//purpose : +//======================================================================= +void SharedEdges1(const TopoDS_Face& aF1, + const TopoDS_Face& aF2, + TopTools_ListOfShape& aLS) +{ + Standard_Integer i, aNbE, aNbF;; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + // + TopExp::MapShapesAndAncestors(aF1, TopAbs_EDGE, TopAbs_FACE, aMEF); + TopExp::MapShapesAndAncestors(aF2, TopAbs_EDGE, TopAbs_FACE, aMEF); + // + aNbE=aMEF.Extent(); + for (i=1; i<=aNbE; ++i) { + const TopTools_ListOfShape& aLF=aMEF.FindFromIndex(i); + aNbF=aLF.Extent(); + if (aNbF>1) { + if (aNbF==2) { + const TopoDS_Shape& aF1x=aLF.First(); + const TopoDS_Shape& aF2x=aLF.Last(); + if (aF1x.IsSame(aF2x)) { + continue; + } + } + const TopoDS_Shape& aE=aMEF.FindKey(i); + aLS.Append (aE); + } + } +} +//======================================================================= +// function: CheckCoincidence +// purpose: +//======================================================================= + Standard_Boolean NMTTools_PaveFiller::CheckCoincidence(const BOPTools_PaveBlock& aPBNew, + const BOPTools_ListOfPaveBlock& aLPBFF) + +{ + Standard_Boolean bRet; + Standard_Real aTE; + Standard_Integer nV11, nV12, nV21, nV22, iVV, iVE, nE2; + Standard_Integer iV, iCount, iCountExt; + // V11 + const BOPTools_Pave& aPave11=aPBNew.Pave1(); + nV11=aPave11.Index(); + const TopoDS_Vertex& aV11=TopoDS::Vertex(myDS->Shape(nV11)); + + // V12 + const BOPTools_Pave& aPave12=aPBNew.Pave2(); + nV12=aPave12.Index(); + const TopoDS_Vertex& aV12=TopoDS::Vertex(myDS->Shape(nV12)); + // + iCountExt=1; + iCount=0; + BOPTools_ListIteratorOfListOfPaveBlock anIt(aLPBFF); + + // + for (; anIt.More(); anIt.Next()) { + iCount=0; + // + const BOPTools_PaveBlock& aPBR=anIt.Value(); + // V21 + const BOPTools_Pave& aPave21=aPBR.Pave1(); + nV21=aPave21.Index(); + const TopoDS_Vertex& aV21=TopoDS::Vertex(myDS->Shape(nV21)); + // V22 + const BOPTools_Pave& aPave22=aPBR.Pave2(); + nV22=aPave22.Index(); + const TopoDS_Vertex& aV22=TopoDS::Vertex(myDS->Shape(nV22)); + // E2 + nE2=aPBR.Edge(); + const TopoDS_Edge& aE2=TopoDS::Edge(myDS->Shape(nE2)); + // + // VV + iV=0; + iVV=IntTools_Tools::ComputeVV (aV11, aV21); + if (!iVV) { + iCount++; + iV++; + if (iCount>iCountExt) { + break; + } + } + // + iVV=IntTools_Tools::ComputeVV (aV11, aV22); + if (!iVV) { + iCount++; + iV++; + if (iCount>iCountExt) { + break; + } + } + // VE + if (!iV) { + iVE=myContext.ComputeVE (aV11, aE2, aTE); + if (!iVE) { + iCount++; + if (iCount>iCountExt) { + break; + } + } + } + // VV + iV=0; + iVV=IntTools_Tools::ComputeVV (aV12, aV21); + if (!iVV) { + iCount++; + iV++; + if (iCount>iCountExt) { + break; + } + } + // + iVV=IntTools_Tools::ComputeVV (aV12, aV22); + if (!iVV) { + iCount++; + iV++; + if (iCount>iCountExt) { + break; + } + } + // VE + if (!iV) { + iVE=myContext.ComputeVE (aV12, aE2, aTE); + if (!iVE) { + iCount++; + if (iCount>iCountExt) { + break; + } + } + } + } // next aPBR + bRet=(Standard_Boolean)(iCount>iCountExt); + return bRet; +} +// +// Contribution of Samtech www.samcef.com END diff --git a/src/NMTTools/NMTTools_PaveFiller_7.cxx b/src/NMTTools/NMTTools_PaveFiller_7.cxx index 50d899ad9..85be6851f 100644 --- a/src/NMTTools/NMTTools_PaveFiller_7.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_7.cxx @@ -46,6 +46,40 @@ #include #include +// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Modified Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +static + void FuseVertices(const TopoDS_Shape& aCompound, + TopTools_DataMapOfShapeShape& aDMVV); +// Contribution of Samtech www.samcef.com END + //======================================================================= // function: MakeSplitEdges // purpose: @@ -236,7 +270,7 @@ for(i=1; i<=aNbF; ++i) { nF=aMF(i); iRankF=myDS->Rank(nF); - const TopoDS_Shape& aF=myDS->Shape(nF); + const TopoDS_Shape aF=myDS->Shape(nF);//mpv aExp.Init(aF, TopAbs_EDGE); for(; aExp.More(); aExp.Next()) { aE=TopoDS::Edge(aExp.Current()); @@ -278,3 +312,253 @@ } } } +// Modified +// to treat Alone Vertices between faces +// Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +//======================================================================= +// function: MakeAloneVertices +// purpose: +//======================================================================= + void NMTTools_PaveFiller::MakeAloneVertices() +{ + Standard_Integer i, aNbFFs, nF1, nF2, j, aNbPnts, nFx, aNbV; + Standard_Real aTolF1, aTolF2, aTolSum, aTolV; + TColStd_ListIteratorOfListOfInteger aIt; + TColStd_ListOfInteger aLI; + TopoDS_Vertex aV; + TopoDS_Compound aCompound; + BRep_Builder aBB; + TopTools_DataMapOfShapeListOfInteger aDMVFF, aDMVFF1; + TopTools_DataMapIteratorOfDataMapOfShapeListOfInteger aItDMVFF; + TopTools_DataMapOfShapeShape aDMVV; + TopTools_DataMapOfIntegerShape aDMIV; + TopTools_DataMapOfShapeInteger aDMVI; + TopTools_DataMapIteratorOfDataMapOfShapeInteger aItDMVI; + TopTools_DataMapIteratorOfDataMapOfIntegerShape aItDMIV; + // + aBB.MakeCompound(aCompound); + // + myAloneVertices.Clear(); + // + BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences(); + // + // 1. Collect alone vertices from FFs + aNbV=0; + aNbFFs=aFFs.Extent(); + for (i=1; i<=aNbFFs; ++i) { + BOPTools_SSInterference& aFFi=aFFs(i); + aFFi.Indices(nF1, nF2); + // + const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));//mpv + const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));//mpv + // + aTolF1=BRep_Tool::Tolerance(aF1); + aTolF2=BRep_Tool::Tolerance(aF2); + aTolSum=aTolF1+aTolF2; + // + aLI.Clear(); + aLI.Append(nF1); + aLI.Append(nF2); + // + const IntTools_SequenceOfPntOn2Faces& aSeqAlonePnts=aFFi.AlonePnts(); + aNbPnts=aSeqAlonePnts.Length(); + for (j=1; j<=aNbPnts; ++j) { + const gp_Pnt& aP=aSeqAlonePnts(j).P1().Pnt(); + BOPTools_Tools::MakeNewVertex(aP, aTolSum, aV); + aDMVFF.Bind(aV, aLI); + aBB.Add(aCompound, aV); + ++aNbV; + } + } + if (!aNbV) { + return; + } + // + // 2. Try to fuse alone vertices themselves; + FuseVertices(aCompound, aDMVV); + // + // if some are fused, replace them by new ones + aItDMVFF.Initialize(aDMVFF); + for (; aItDMVFF.More(); aItDMVFF.Next()) { + const TopoDS_Shape& aVx=aItDMVFF.Key(); + const TColStd_ListOfInteger& aLIx=aItDMVFF.Value(); + // + if (!aDMVV.IsBound(aVx)) { + aDMVFF1.Bind(aVx, aLIx); + } + else { + const TopoDS_Shape& aVy=aDMVV.Find(aVx); + + if (aDMVFF1.IsBound(aVy)) { + TColStd_ListOfInteger& aLIy=aDMVFF1.ChangeFind(aVy); + aIt.Initialize(aLIx); + for(; aIt.More(); aIt.Next()) { + nFx=aIt.Value(); + aLIy.Append(nFx); + } + } + else { + aDMVFF1.Bind(aVy, aLIx); + } + } + } + aDMVFF.Clear(); + // + // refine lists of faces in aDMVFF1; + aItDMVFF.Initialize(aDMVFF1); + for (; aItDMVFF.More(); aItDMVFF.Next()) { + TColStd_MapOfInteger aMIy; + TColStd_ListOfInteger aLIy; + // + const TopoDS_Shape& aVx=aItDMVFF.Key(); + TColStd_ListOfInteger& aLIx=aDMVFF1.ChangeFind(aVx); + aIt.Initialize(aLIx); + for(; aIt.More(); aIt.Next()) { + nFx=aIt.Value(); + if (aMIy.Add(nFx)) { + aLIy.Append(nFx); + } + } + aLIx.Clear(); + aLIx.Append(aLIy); + } + //================================== + // + // 3. Collect vertices from DS + Standard_Integer aNbS, nV, nVSD, aNbVDS, i1, i2, aNbVSD; + // + aNbS=myDS->NumberOfShapesOfTheObject(); + // old shapes + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=myDS->Shape(i); + if (aS.ShapeType() != TopAbs_VERTEX){ + continue; + } + // + nVSD=FindSDVertex(i); + nV=(nVSD) ? nVSD : i; + const TopoDS_Shape& aVx=myDS->Shape(nV); + if (!aDMVI.IsBound(aVx)) { + aDMVI.Bind(aVx, nV); + } + } + // new shapes + i1=myDS->NumberOfSourceShapes()+1; + i2=myDS->NumberOfInsertedShapes(); + for (i=i1; i<=i2; ++i) { + const TopoDS_Shape aS=myDS->Shape(i);//mpv + if (aS.ShapeType() != TopAbs_VERTEX){ + continue; + } + if (!aDMVI.IsBound(aS)) { + aDMVI.Bind(aS, i); + } + } + // + // 4. Initialize BoundSortBox on aDMVI + // + Handle(Bnd_HArray1OfBox) aHAB; + Bnd_BoundSortBox aBSB; + // + aNbVDS=aDMVI.Extent(); + aHAB=new Bnd_HArray1OfBox(1, aNbVDS); + // + aItDMVI.Initialize(aDMVI); + for (i=1; aItDMVI.More(); aItDMVI.Next(), ++i) { + Bnd_Box aBox; + // + nV=aItDMVI.Value(); + aV=TopoDS::Vertex(aItDMVI.Key()); + aTolV=BRep_Tool::Tolerance(aV); + aBox.SetGap(aTolV); + BRepBndLib::Add(aV, aBox); + aHAB->SetValue(i, aBox); + // + aDMIV.Bind(i, aV); + } + aBSB.Initialize(aHAB); + // + // 5. Compare + aItDMVFF.Initialize(aDMVFF1); + for (; aItDMVFF.More(); aItDMVFF.Next()) { + Bnd_Box aBoxV; + // + const TColStd_ListOfInteger& aLIFF=aItDMVFF.Value(); + aV=TopoDS::Vertex(aItDMVFF.Key()); + // + aTolV=BRep_Tool::Tolerance(aV); + aBoxV.SetGap(aTolV); + BRepBndLib::Add(aV, aBoxV); + // + const TColStd_ListOfInteger& aLIVSD=aBSB.Compare(aBoxV); + aNbVSD=aLIVSD.Extent(); + if (aNbVSD==0) { + // add new vertex in DS and update map myAloneVertices + BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; + // + myDS->InsertShapeAndAncestorsSuccessors(aV, anASSeq); + nV=myDS->NumberOfInsertedShapes(); + // + aIt.Initialize(aLIFF); + for (; aIt.More(); aIt.Next()) { + nFx=aIt.Value(); + if (myAloneVertices.Contains(nFx)) { + TColStd_IndexedMapOfInteger& aMVx=myAloneVertices.ChangeFromKey(nFx); + aMVx.Add(nV); + } + else { + TColStd_IndexedMapOfInteger aMVx; + aMVx.Add(nV); + myAloneVertices.Add(nFx, aMVx); + } + } + } + } +} +//======================================================================= +// function: AloneVertices +// purpose: +//======================================================================= + const NMTTools_IndexedDataMapOfIndexedMapOfInteger& NMTTools_PaveFiller::AloneVertices()const +{ + return myAloneVertices; +} +//======================================================================= +// function: FuseVertices +// purpose: +//======================================================================= +void FuseVertices(const TopoDS_Shape& aCompound, + TopTools_DataMapOfShapeShape& aDMVV) +{ + Standard_Integer i, aNbVV, n1, n2, nX; + NMTDS_ShapesDataStructure tDS; + // + tDS.SetCompositeShape(aCompound); + tDS.Init(); + // + BOPTools_InterferencePool tInterfPool(tDS); + NMTTools_PaveFiller tPaveFiller(tInterfPool); + // + tPaveFiller.Init(); + // + tPaveFiller.PerformVV(); + tPaveFiller.PerformNewVertices(); + // + const BOPTools_CArray1OfVVInterference& aVVt=tInterfPool.VVInterfs(); + // + aNbVV=aVVt.Extent(); + for (i=1; i<=aNbVV; ++i) { + const BOPTools_VVInterference& aVV=aVVt(i); + aVV.Indices(n1, n2); + nX=aVV.NewShape(); + if (nX) { + const TopoDS_Shape& aV1=tDS.Shape(n1); + const TopoDS_Shape& aV2=tDS.Shape(n2); + const TopoDS_Shape& aVx=tDS.Shape(nX); + aDMVV.Bind(aV1, aVx); + aDMVV.Bind(aV2, aVx); + } + } +} +// Contribution of Samtech www.samcef.com END diff --git a/src/NMTTools/NMTTools_PaveFiller_8.cxx b/src/NMTTools/NMTTools_PaveFiller_8.cxx index 0226377d1..b8686673e 100644 --- a/src/NMTTools/NMTTools_PaveFiller_8.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_8.cxx @@ -25,6 +25,7 @@ #include +#include #include #include @@ -42,6 +43,73 @@ #include #include + +// Modified to add new method Thu Sep 14 14:35:18 2006 +// Contribution of Samtech www.samcef.com BEGIN +//======================================================================= +// function: SharedEdges +// purpose: +//======================================================================= + void NMTTools_PaveFiller::SharedEdges(const Standard_Integer nF1, + const Standard_Integer nF2, + TColStd_ListOfInteger& aLNE, + TopTools_ListOfShape& aLSE) +{ + Standard_Integer nE1, nE2; + TColStd_MapOfInteger aM1; + // + BooleanOperations_ShapesDataStructure *pDS=myDS; + BooleanOperations_OnceExplorer aExp(*pDS); + // + aExp.Init(nF1, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()) { + nE1=aExp.Current(); + aM1.Add(nE1); + } + + aExp.Init(nF2, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()) { + nE2=aExp.Current(); + if (aM1.Contains(nE2)) { + aLNE.Append(nE2); + const TopoDS_Shape& aE2=myDS->Shape(nE2); + aLSE.Append(aE2); + } + } +} +// Contribution of Samtech www.samcef.com END +// +//======================================================================= +// function: RealPaveBlock +// purpose: +//======================================================================= + const BOPTools_PaveBlock& NMTTools_PaveFiller::RealPaveBlock(const BOPTools_PaveBlock& aPB, + TColStd_ListOfInteger& aLB) +{ + Standard_Integer nE, nSpx; + BOPTools_ListIteratorOfListOfPaveBlock aItPBx; + // + aLB.Clear(); + nE=aPB.OriginalEdge(); + const NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); + NMTTools_CommonBlockAPI aCBAPI(aLCBE); + if (aCBAPI.IsCommonBlock(aPB)) { + NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); + // + const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); + aItPBx.Initialize(aLPBx); + for (; aItPBx.More(); aItPBx.Next()) { + const BOPTools_PaveBlock& aPBx=aItPBx.Value(); + nSpx=aPBx.Edge(); + aLB.Append(nSpx); + } + // + const BOPTools_PaveBlock& aPBx=aCB.PaveBlock1(); + return aPBx; + } + return aPB; +} +// //======================================================================= // function: RealPaveBlock // purpose: diff --git a/src/NMTTools/NMTTools_Tools.cdl b/src/NMTTools/NMTTools_Tools.cdl index da32326ff..efe6a35fb 100644 --- a/src/NMTTools/NMTTools_Tools.cdl +++ b/src/NMTTools/NMTTools_Tools.cdl @@ -1,27 +1,27 @@ -// 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 -// +-- 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: NMTTools_Tools.cdl -- Created: Mon Dec 8 10:32:34 2003 -- Author: Peter KURNEV -- ----Copyright: Matra Datavision 2003 class Tools from NMTTools diff --git a/src/NMTTools/NMTTools_Tools.cxx b/src/NMTTools/NMTTools_Tools.cxx index 9963ce4d0..8c6357b2b 100644 --- a/src/NMTTools/NMTTools_Tools.cxx +++ b/src/NMTTools/NMTTools_Tools.cxx @@ -67,6 +67,9 @@ #include #include #include +// +#include +#include static void ProcessBlock(const Standard_Integer iV, @@ -373,21 +376,49 @@ void ProcessBlock(const Standard_Integer iV, IntTools_Context& aCtx) { Standard_Boolean bFlag; - Standard_Integer i, aNbE1, aNbE2; - - TopTools_IndexedMapOfShape aME1, aME2; - TopoDS_Edge aEF1, aEF2; + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN + Standard_Integer aNbE1, aNbE2; + Standard_Real aTolF1, aTolF2, aTol; + gp_Pnt2d aP2D; + gp_Pnt aP; TopoDS_Face aF1, aF2; + TopExp_Explorer aExp; + TopTools_MapOfShape aME1, aME2; + TopTools_MapIteratorOfMapOfShape aIt; + // + bFlag=Standard_False; + // Contribution of Samtech www.samcef.com END // aF1=aF1x; aF1.Orientation(TopAbs_FORWARD); aF2=aF2y; aF2.Orientation(TopAbs_FORWARD); // - TopExp::MapShapes(aF1, TopAbs_EDGE, aME1); - TopExp::MapShapes(aF2, TopAbs_EDGE, aME2); + // Modified Thu Sep 14 14:35:18 2006 + // Contribution of Samtech www.samcef.com BEGIN // - bFlag=Standard_False; + // 1 + aExp.Init(aF1, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aExp.Current()); + if (!BRep_Tool::Degenerated(aE)) { + aME1.Add(aE); + } + } + // + aExp.Init(aF2, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aExp.Current()); + if (!BRep_Tool::Degenerated(aE)) { + if (!aME1.Contains(aE)) { + return bFlag; + } + aME2.Add(aE); + } + } + // + // Contribution of Samtech www.samcef.com END // aNbE1=aME1.Extent(); aNbE2=aME2.Extent(); @@ -400,72 +431,18 @@ void ProcessBlock(const Standard_Integer iV, return bFlag; } // - for (i=1; i<=aNbE1; ++i) { - const TopoDS_Edge& aE1=TopoDS::Edge(aME1(i)); - if (BRep_Tool::Degenerated(aE1)) { - // not try to compare deg edges because it - // can not have same TShape on different faces at all - continue; - } - if (!aME2.Contains(aE1)) { - return bFlag; - } - } - // - Standard_Real aTolF1, aTolF2, aTol; - gp_Pnt2d aP2D; - gp_Pnt aP; - TopExp_Explorer anExp; - // - aTolF1=BRep_Tool::Tolerance(aF1); - aTolF2=BRep_Tool::Tolerance(aF2); - aTol=aTolF1+aTolF2; - // - anExp.Init(aF1, TopAbs_EDGE); - for (; anExp.More(); anExp.Next()) { - const TopoDS_Edge& aE1=TopoDS::Edge(anExp.Current()); - if (!BRep_Tool::Degenerated(aE1)) { - BOPTools_Tools3D::PointNearEdge(aE1, aF1, aP2D, aP); - bFlag=aCtx.IsValidPointForFace(aP, aF2, aTol); - break; - } - } - return bFlag; - /* - // - Standard_Real aU1, aU2, aV1, aV2; - Standard_Real dU, dV, aU, aV; - Standard_Integer aNbP=5, aNbP1, j; - gp_Pnt2d aP2D; - gp_Pnt aP; - // + // 2 aTolF1=BRep_Tool::Tolerance(aF1); aTolF2=BRep_Tool::Tolerance(aF2); aTol=aTolF1+aTolF2; // - BRepTools::UVBounds(aF1, aU1, aU2, aV1, aV2); - Handle(Geom_Surface) aS1=BRep_Tool::Surface(aF1); - // - aNbP1=aNbP+1; - dU=(aU2-aU1)/aNbP1; - dV=(aV2-aV1)/aNbP1; - // - for (i=1; i<=aNbP; ++i) { - aU=aU1+i*dU; - for (j=1; j<=aNbP; ++j) { - aV=aV1+j*dV; - aP2D.SetCoord(aU, aV); - // - if(aCtx.IsPointInFace(aF1, aP2D)) { - aP=aS1->Value(aU, aV); - bFlag=aCtx.IsValidPointForFace(aP, aF2, aTol); - if (!bFlag) { - return bFlag; - } - } - } + aIt.Initialize(aME1); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aIt.Key()); + BOPTools_Tools3D::PointNearEdge(aE, aF1, aP2D, aP); + bFlag=aCtx.IsValidPointForFace(aP, aF2, aTol); + break; } - */ // return bFlag; } diff --git a/src/NMTTools/NMTTools_Tools.hxx b/src/NMTTools/NMTTools_Tools.hxx index e85e495f1..232b7cc31 100644 --- a/src/NMTTools/NMTTools_Tools.hxx +++ b/src/NMTTools/NMTTools_Tools.hxx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 @@ -49,6 +49,7 @@ class Geom2d_Curve; #include #endif + class NMTTools_Tools { public: @@ -67,14 +68,32 @@ public: } // Methods PUBLIC // + + Standard_EXPORT static void MakeNewVertex(const TopTools_ListOfShape& aLV,TopoDS_Vertex& aNewVertex) ; + + Standard_EXPORT static void FindChains(const BOPTools_CArray1OfVVInterference& aVVs,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; + + Standard_EXPORT static void FindChains(const BOPTools_CArray1OfSSInterference& aVVs,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; + + Standard_EXPORT static void FindChains(const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; + + Standard_EXPORT static Standard_Boolean IsSplitInOnFace(const TopoDS_Edge& aE,const TopoDS_Face& aF,IntTools_Context& aCtx) ; + + Standard_EXPORT static Standard_Boolean AreFacesSameDomain(const TopoDS_Face& aF1,const TopoDS_Face& aF2,IntTools_Context& aCtx) ; + + Standard_EXPORT static void FindChains(const NMTTools_ListOfCoupleOfShape& aLCS,NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM) ; + + Standard_EXPORT static void FindChains(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM1,NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM2) ; + + Standard_EXPORT static void MakePCurve(const TopoDS_Edge& aE,const TopoDS_Face& aF,const Handle(Geom2d_Curve)& aC2D,const Standard_Real aTolR2D) ; diff --git a/src/NMTTools/NMTTools_Tools.ixx b/src/NMTTools/NMTTools_Tools.ixx index 0d09ae5ae..78e114729 100644 --- a/src/NMTTools/NMTTools_Tools.ixx +++ b/src/NMTTools/NMTTools_Tools.ixx @@ -1,18 +1,18 @@ // 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 +// 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 +// +// 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 +// 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 diff --git a/src/NMTTools/NMTTools_Tools.jxx b/src/NMTTools/NMTTools_Tools.jxx index f1360a8de..8f3817efa 100644 --- a/src/NMTTools/NMTTools_Tools.jxx +++ b/src/NMTTools/NMTTools_Tools.jxx @@ -1,22 +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 +// 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 +// +// 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 +// 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 -// + #ifndef _TopTools_ListOfShape_HeaderFile #include #endif