From: skl Date: Tue, 31 Oct 2006 13:56:22 +0000 (+0000) Subject: New version of PartitionAlgo. X-Git-Tag: V3_2_3pre1~5 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;ds=sidebyside;h=c747f2e6379743fc987322da4efc4a365df20564;p=modules%2Fgeom.git 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..7149d8a3a --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.cxx @@ -0,0 +1,1014 @@ +// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can 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 + +#include +#include +#include + +// +static + Standard_Boolean FindFacePairs (const TopoDS_Edge& , + const TopTools_ListOfShape& , + NMTTools_ListOfCoupleOfShape& ); + + +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 aNbF, aNbAdd1; + TopExp_Explorer aExp; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + TopTools_MapIteratorOfMapOfShape aItM, aItM1; + TopTools_MapOfShape aMCB, aMAdd, aMAdd1; + TopTools_ListIteratorOfListOfShape aIt; + // + // 1. aMEF + aNbF=theLFIn.Extent(); + aIt.Initialize(theLFIn); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + // + // 2. aMCB + const TopoDS_Shape& aF1=theLFIn.First(); + aMAdd.Add(aF1); + // + while(1) { + aMAdd1.Clear(); + aItM.Initialize(aMAdd); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aF=aItM.Key(); + // + //aMAdd1.Clear(); + 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=aMEF.FindFromKey(aE); + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aFx=aIt.Value(); + if (aFx.IsSame(aF)) { + continue; + } + if (aMCB.Contains(aFx)) { + continue; + } + aMAdd1.Add(aFx); + } + }//for (; aExp.More(); aExp.Next()){ + aMCB.Add(aF); + }// for (; aItM.More(); aItM.Next()) { + // + aNbAdd1=aMAdd1.Extent(); + if (!aNbAdd1) { + break; + } + // + aMAdd.Clear(); + aItM1.Initialize(aMAdd1); + for (; aItM1.More(); aItM1.Next()) { + const TopoDS_Shape& aFAdd=aItM1.Key(); + aMAdd.Add(aFAdd); + } + // + }//while(1) { + + // + aNbF=aMCB.Extent(); + aItM.Initialize(aMCB); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aF=aItM.Key(); + theLCB.Append(aF); + } +} + +//======================================================================= +//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/GEOMImpl/GEOMImpl_PartitionDriver.cxx b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx index fc91fd19c..ffa8e2b71 100644 --- a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx @@ -27,7 +27,9 @@ #include #include -#include +//#include +#include +#include #include @@ -81,7 +83,8 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const Standard_Integer aType = aFunction->GetType(); TopoDS_Shape aShape; - NMTAlgo_Splitter1 PS; + //sklNMTAlgo_Splitter1 PS; + GEOMAlgo_Splitter PS; if (aType == PARTITION_PARTITION) { Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes(); @@ -89,7 +92,7 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const Handle(TColStd_HSequenceOfTransient) aKeepIns = aCI.GetKeepIns(); Handle(TColStd_HSequenceOfTransient) aRemIns = aCI.GetRemoveIns(); Handle(TColStd_HArray1OfInteger) aMaterials = aCI.GetMaterials(); - Standard_Boolean DoRemoveWebs = !aMaterials.IsNull(); + //sklStandard_Boolean DoRemoveWebs = !aMaterials.IsNull(); unsigned int ind, nbshapes = 0; nbshapes += aShapes->Length() + aTools->Length(); @@ -106,10 +109,10 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const } if (ShapesMap.Add(aShape_i)) { PS.AddShape(aShape_i); - if (DoRemoveWebs) { - if (aMaterials->Length() >= ind) - PS.SetMaterial(aShape_i, aMaterials->Value(ind)); - } +//skl if (DoRemoveWebs) { +//skl if (aMaterials->Length() >= ind) +//skl PS.SetMaterial(aShape_i, aMaterials->Value(ind)); +//skl } } } @@ -120,8 +123,9 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const if (aShape_i.IsNull()) { Standard_NullObject::Raise("In Partition a tool shape is null"); } - if (!ShapesMap.Contains(aShape_i) && ToolsMap.Add(aShape_i)) + if (!ShapesMap.Contains(aShape_i) && ToolsMap.Add(aShape_i)) { PS.AddTool(aShape_i); + } } // add shapes that are in ListKeepInside, as object shapes; @@ -146,10 +150,13 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const PS.AddShape(aShape_i); } - PS.Compute(); - PS.SetRemoveWebs(DoRemoveWebs); - PS.Build((TopAbs_ShapeEnum) aCI.GetLimit()); + PS.SetLimit( (TopAbs_ShapeEnum)aCI.GetLimit() ); + PS.Perform(); + //sklPS.Compute(); + //sklPS.SetRemoveWebs(!DoRemoveWebs); + //sklPS.Build((TopAbs_ShapeEnum) aCI.GetLimit()); + /*skl // suppress result outside of shapes in KInsideMap for (ind = 1; ind <= aKeepIns->Length(); ind++) { Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aKeepIns->Value(ind)); @@ -163,8 +170,9 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const TopoDS_Shape aShape_i = aRefShape->GetValue(); PS.RemoveShapesInside(aShape_i); } - - } else if (aType == PARTITION_HALF) { + */ + } + else if (aType == PARTITION_HALF) { Handle(GEOM_Function) aRefShape = aCI.GetShape(); Handle(GEOM_Function) aRefPlane = aCI.GetPlane(); TopoDS_Shape aShapeArg = aRefShape->GetValue(); @@ -180,9 +188,10 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const // add tool shapes that are in ListTools and not in ListShapes; PS.AddTool(aPlaneArg); - PS.Compute(); - PS.SetRemoveWebs(Standard_False); - PS.Build(aShapeArg.ShapeType()); + //sklPS.Compute(); + PS.Perform(); + //PS.SetRemoveWebs(Standard_False); + //PS.Build(aShapeArg.ShapeType()); } else { }