mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-03-24 10:47:55 +05:00
This commit was generated by cvs2git to create tag 'StableState1'.
Sprout from BR_PartAlgo_V322 2006-09-07 08:59:07 UTC admin <salome-admin@opencascade.com> 'This commit was generated by cvs2git to create branch 'BR_PartAlgo_V322'.' Cherrypick from BR_PartAlgo_V322 2006-10-20 07:23:31 UTC skl <skl@opencascade.com> 'Add new files for new version of PartitionAlgo.': src/GEOMAlgo/GEOMAlgo_Builder.cdl src/GEOMAlgo/GEOMAlgo_Builder.cxx src/GEOMAlgo/GEOMAlgo_Builder.hxx src/GEOMAlgo/GEOMAlgo_Builder.ixx src/GEOMAlgo/GEOMAlgo_Builder.jxx src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx src/GEOMAlgo/GEOMAlgo_Builder_0.cxx src/GEOMAlgo/GEOMAlgo_Builder_1.cxx src/GEOMAlgo/GEOMAlgo_Builder_2.cxx src/GEOMAlgo/GEOMAlgo_Builder_3.cxx src/GEOMAlgo/GEOMAlgo_Builder_4.cxx src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx src/GEOMAlgo/GEOMAlgo_Splitter.cdl src/GEOMAlgo/GEOMAlgo_Splitter.cxx src/GEOMAlgo/GEOMAlgo_Splitter.hxx src/GEOMAlgo/GEOMAlgo_Splitter.ixx src/GEOMAlgo/GEOMAlgo_Splitter.jxx src/GEOMAlgo/GEOMAlgo_Tools3D.cdl src/GEOMAlgo/GEOMAlgo_Tools3D.cxx src/GEOMAlgo/GEOMAlgo_Tools3D.hxx src/GEOMAlgo/GEOMAlgo_Tools3D.ixx src/GEOMAlgo/GEOMAlgo_Tools3D.jxx src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx src/NMTDS/NMTDS_Iterator.cdl src/NMTDS/NMTDS_Iterator.cxx src/NMTDS/NMTDS_Iterator.hxx src/NMTDS/NMTDS_Iterator.ixx src/NMTDS/NMTDS_Iterator.jxx src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx src/NMTDS/NMTDS_ListOfPassKey.hxx src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx src/NMTDS/NMTDS_ListOfPassKey_0.cxx src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx src/NMTDS/NMTDS_MapOfPassKey.hxx src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx src/NMTDS/NMTDS_MapOfPassKey_0.cxx src/NMTDS/NMTDS_PassKey.cdl src/NMTDS/NMTDS_PassKey.cxx src/NMTDS/NMTDS_PassKey.hxx src/NMTDS/NMTDS_PassKey.ixx src/NMTDS/NMTDS_PassKey.jxx src/NMTDS/NMTDS_PassKeyBoolean.cdl src/NMTDS/NMTDS_PassKeyBoolean.cxx src/NMTDS/NMTDS_PassKeyBoolean.hxx src/NMTDS/NMTDS_PassKeyBoolean.ixx src/NMTDS/NMTDS_PassKeyBoolean.jxx src/NMTDS/NMTDS_PassKeyMapHasher.cdl src/NMTDS/NMTDS_PassKeyMapHasher.cxx src/NMTDS/NMTDS_PassKeyMapHasher.hxx src/NMTDS/NMTDS_PassKeyMapHasher.ixx src/NMTDS/NMTDS_PassKeyMapHasher.jxx src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx src/NMTTools/NMTDS_Iterator.hxx
This commit is contained in:
parent
d8af99d938
commit
1a19468ce8
247
src/GEOMAlgo/GEOMAlgo_Builder.cdl
Executable file
247
src/GEOMAlgo/GEOMAlgo_Builder.cdl
Executable file
@ -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;
|
||||
|
389
src/GEOMAlgo/GEOMAlgo_Builder.cxx
Executable file
389
src/GEOMAlgo/GEOMAlgo_Builder.cxx
Executable file
@ -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 <GEOMAlgo_Builder.ixx>
|
||||
|
||||
#include <TopAbs_ShapeEnum.hxx>
|
||||
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Compound.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
|
||||
#include <BRep_Builder.hxx>
|
||||
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
|
||||
#include <BOP_CorrectTolerances.hxx>
|
||||
|
||||
#include <NMTTools_DSFiller.hxx>
|
||||
|
||||
#include <BRepLib.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//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; i<myNbTypes; ++i){
|
||||
myShapes1[i].Clear();
|
||||
}
|
||||
myImages.Clear();
|
||||
//
|
||||
myInParts.Clear();
|
||||
mySplitFaces.Clear();
|
||||
mySameDomainShapes.Clear();
|
||||
myDraftSolids.Clear();
|
||||
myMapFence.Clear();
|
||||
}
|
||||
//=======================================================================
|
||||
//function : Prepare
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GEOMAlgo_Builder::Prepare()
|
||||
{
|
||||
myErrorStatus=0;
|
||||
//
|
||||
Standard_Integer aNb;
|
||||
BRep_Builder aBB;
|
||||
TopoDS_Compound aC;
|
||||
TopTools_ListIteratorOfListOfShape aIt;
|
||||
//
|
||||
aNb=myShapes.Extent();
|
||||
if (aNb<2) {
|
||||
myErrorStatus=10; // No shapes to process
|
||||
return;
|
||||
}
|
||||
//
|
||||
// 1. myShape is empty compound
|
||||
aBB.MakeCompound(aC);
|
||||
myShape=aC;
|
||||
//
|
||||
// 2. myShapes1
|
||||
aIt.Initialize(myShapes);
|
||||
for (; aIt.More(); aIt.Next()) {
|
||||
const TopoDS_Shape& aS=aIt.Value();
|
||||
AddShape1(aS);
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
//function : PostTreat
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GEOMAlgo_Builder::PostTreat()
|
||||
{
|
||||
Standard_Integer aNbS;
|
||||
TopoDS_Iterator aIt;
|
||||
TopTools_ListOfShape aLS;
|
||||
//
|
||||
aIt.Initialize(myShape);
|
||||
for (; aIt.More(); aIt.Next()) {
|
||||
const TopoDS_Shape& aS=aIt.Value();
|
||||
aLS.Append(aS);
|
||||
}
|
||||
aNbS=aLS.Extent();
|
||||
if (aNbS==1) {
|
||||
myShape=aLS.First();
|
||||
}
|
||||
|
||||
BRepLib::SameParameter(myShape, 1.e-7, Standard_True);
|
||||
}
|
||||
//=======================================================================
|
||||
//function : AddShape1
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GEOMAlgo_Builder::AddShape1(const TopoDS_Shape& theShape)
|
||||
{
|
||||
Standard_Integer iType;
|
||||
TopAbs_ShapeEnum aType;
|
||||
TopoDS_Iterator aIt;
|
||||
TopTools_MapOfShape aM;
|
||||
//
|
||||
aType=theShape.ShapeType();
|
||||
if (aType==TopAbs_COMPOUND) {
|
||||
aIt.Initialize(theShape);
|
||||
for (; aIt.More(); aIt.Next()) {
|
||||
const TopoDS_Shape& aS=aIt.Value();
|
||||
AddShape1(aS);
|
||||
}
|
||||
}
|
||||
//
|
||||
iType=(Standard_Integer)aType;
|
||||
if (aM.Add(theShape)) {
|
||||
myShapes1[iType].Append(theShape);
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
//function : BuildResult
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GEOMAlgo_Builder::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) {
|
||||
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 : Perform
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GEOMAlgo_Builder::Perform()
|
||||
{
|
||||
myErrorStatus=0;
|
||||
//
|
||||
BRep_Builder aBB;
|
||||
TopoDS_Compound aCS;
|
||||
TopTools_ListIteratorOfListOfShape aIt;
|
||||
//
|
||||
aBB.MakeCompound(aCS);
|
||||
//
|
||||
aIt.Initialize(myShapes);
|
||||
for (; aIt.More(); aIt.Next()) {
|
||||
const TopoDS_Shape& aS=aIt.Value();
|
||||
aBB.Add(aCS, aS);
|
||||
}
|
||||
//
|
||||
NMTTools_DSFiller* pDSF=new NMTTools_DSFiller;
|
||||
//
|
||||
pDSF->SetCompositeShape(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
|
245
src/GEOMAlgo/GEOMAlgo_Builder.hxx
Normal file
245
src/GEOMAlgo/GEOMAlgo_Builder.hxx
Normal file
@ -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 <NMTTools_PDSFiller.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_MapOfShape_HeaderFile
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _BRepAlgo_Image_HeaderFile
|
||||
#include <BRepAlgo_Image.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_IndexedDataMapOfShapeShape_HeaderFile
|
||||
#include <TopTools_IndexedDataMapOfShapeShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_BuilderShape_HeaderFile
|
||||
#include <GEOMAlgo_BuilderShape.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
#ifndef _TopAbs_ShapeEnum_HeaderFile
|
||||
#include <TopAbs_ShapeEnum.hxx>
|
||||
#endif
|
||||
class NMTTools_DSFiller;
|
||||
class TopoDS_Shape;
|
||||
class TopTools_ListOfShape;
|
||||
class BRepAlgo_Image;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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 <br>
|
||||
Standard_EXPORT GEOMAlgo_Builder();
|
||||
Standard_EXPORT virtual ~GEOMAlgo_Builder();
|
||||
|
||||
//! Performs calculations <br>
|
||||
Standard_EXPORT virtual void Perform() ;
|
||||
|
||||
//! Performs calculations using prepared DSFiller <br>
|
||||
//! object theDSF <br>
|
||||
Standard_EXPORT virtual void PerformWithFiller(const NMTTools_DSFiller& theDSF) ;
|
||||
|
||||
//! Adds argument theShape of the operation <br>
|
||||
Standard_EXPORT virtual void AddShape(const TopoDS_Shape& theShape) ;
|
||||
|
||||
//! Clears internal fields and arguments <br>
|
||||
Standard_EXPORT virtual void Clear() ;
|
||||
|
||||
//! Returns the arguments of the operation <br>
|
||||
Standard_EXPORT const TopTools_ListOfShape& Shapes() const;
|
||||
|
||||
//! Returns the list of shapes generated from the <br>
|
||||
//! shape theS. <br>
|
||||
Standard_EXPORT virtual const TopTools_ListOfShape& Generated(const TopoDS_Shape& theS) ;
|
||||
|
||||
//! Returns the list of shapes modified from the shape <br>
|
||||
//! theS. <br>
|
||||
Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& theS) ;
|
||||
|
||||
//! Returns true if the shape theS has been deleted. <br>
|
||||
Standard_EXPORT virtual Standard_Boolean IsDeleted(const TopoDS_Shape& theS) ;
|
||||
|
||||
//! Adds arguments of the operation as <br>
|
||||
//! shapes of upper level of container shape theShape <br>
|
||||
Standard_EXPORT void AddCompound(const TopoDS_Shape& theShape) ;
|
||||
|
||||
//! Returns list of arguments of type theType <br>
|
||||
Standard_EXPORT const TopTools_ListOfShape& Shapes1(const Standard_Integer theType) const;
|
||||
|
||||
//! Returns image shapes <br>
|
||||
Standard_EXPORT const BRepAlgo_Image& Images() const;
|
||||
|
||||
//! Returns split-parts of shapes that have <br>
|
||||
//! state IN for the domain of shape theShape <br>
|
||||
Standard_EXPORT const TopTools_ListOfShape& InParts(const TopoDS_Shape& theShape) const;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
//! Prepare information for history support <br>
|
||||
Standard_EXPORT virtual void PrepareHistory() ;
|
||||
|
||||
//! Clears internal fields <br>
|
||||
Standard_EXPORT virtual void ClearInternals() ;
|
||||
|
||||
//! Provides preparing actions <br>
|
||||
Standard_EXPORT virtual void Prepare() ;
|
||||
|
||||
//! Provides post-tratment actions <br>
|
||||
Standard_EXPORT virtual void PostTreat() ;
|
||||
|
||||
//! Append the argument theShape to <br>
|
||||
//! typified lists of arguments myShapes1 <br>
|
||||
Standard_EXPORT void AddShape1(const TopoDS_Shape& theShape) ;
|
||||
|
||||
//! Build the resulting shapes of type theType <br>
|
||||
Standard_EXPORT virtual void BuildResult(const TopAbs_ShapeEnum theType) ;
|
||||
|
||||
//! Fill Images for vertices <br>
|
||||
Standard_EXPORT void FillImagesVertices() ;
|
||||
|
||||
//! Fill Images for edges <br>
|
||||
Standard_EXPORT void FillImagesEdges() ;
|
||||
|
||||
//! Fill Images for faces <br>
|
||||
Standard_EXPORT void FillImagesFaces() ;
|
||||
|
||||
//! For each interferred face find split edges <br>
|
||||
//! that are in 2-D domain of the face <br>
|
||||
Standard_EXPORT void FillIn2DParts() ;
|
||||
|
||||
//! Build draft faces <br>
|
||||
Standard_EXPORT void BuildSplitFaces() ;
|
||||
|
||||
//! Among draft faces find same domain faces <br>
|
||||
Standard_EXPORT void FillSameDomainFaces() ;
|
||||
|
||||
//! Fill Images for faces <br>
|
||||
//! taking into account same domain faces <br>
|
||||
Standard_EXPORT void FillImagesFaces1() ;
|
||||
|
||||
//! Update Images for faces by <br>
|
||||
//! internal vertices <br>
|
||||
Standard_EXPORT void FillInternalVertices() ;
|
||||
|
||||
//! Fill Images for Wires, Shells, Compsolids, Compounds <br>
|
||||
Standard_EXPORT void FillImagesContainers(const TopAbs_ShapeEnum theType) ;
|
||||
|
||||
//! Fill Images for solids <br>
|
||||
Standard_EXPORT void FillImagesSolids() ;
|
||||
|
||||
//! For each interferred solid find split faces <br>
|
||||
//! that are in 3-D domain of the solid <br>
|
||||
Standard_EXPORT void FillIn3DParts() ;
|
||||
|
||||
//! Build draft solids <br>
|
||||
Standard_EXPORT void BuildSplitSolids() ;
|
||||
|
||||
//! Update draft solids by <br>
|
||||
//! internal shells, edges, vertices <br>
|
||||
Standard_EXPORT void FillInternalShapes() ;
|
||||
|
||||
//! Build solid theDraftSolid that consists of <br>
|
||||
//! non-internal split faces of the solid <br>
|
||||
//! theSolid. <br>
|
||||
//! All splits of internal faces of <br>
|
||||
//! theSolid are in the list: theInternalFaces <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_Builder.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_Builder.ixx
Normal file
@ -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 <GEOMAlgo_Builder.jxx>
|
||||
|
||||
|
||||
|
||||
|
34
src/GEOMAlgo/GEOMAlgo_Builder.jxx
Normal file
34
src/GEOMAlgo/GEOMAlgo_Builder.jxx
Normal file
@ -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 <NMTTools_DSFiller.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _BRepAlgo_Image_HeaderFile
|
||||
#include <BRepAlgo_Image.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_Builder_HeaderFile
|
||||
#include <GEOMAlgo_Builder.hxx>
|
||||
#endif
|
101
src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl
Executable file
101
src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl
Executable file
@ -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;
|
||||
|
122
src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx
Executable file
122
src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx
Executable file
@ -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 <GEOMAlgo_BuilderArea.ixx>
|
||||
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//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()
|
||||
{
|
||||
}
|
||||
|
144
src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx
Normal file
144
src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx
Normal file
@ -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 <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_MapOfOrientedShape_HeaderFile
|
||||
#include <TopTools_MapOfOrientedShape.hxx>
|
||||
#endif
|
||||
#ifndef _IntTools_PContext_HeaderFile
|
||||
#include <IntTools_PContext.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_Algo_HeaderFile
|
||||
#include <GEOMAlgo_Algo.hxx>
|
||||
#endif
|
||||
class IntTools_Context;
|
||||
class TopTools_ListOfShape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
//! The root class for algorithms to build <br>
|
||||
//! faces/solids from set of edges/faces <br>
|
||||
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 <br>
|
||||
Standard_EXPORT void SetContext(const IntTools_Context& theContext) ;
|
||||
|
||||
//! Sets edges/faces to process <br>
|
||||
Standard_EXPORT void SetShapes(const TopTools_ListOfShape& theLS) ;
|
||||
|
||||
//! Returns edges/faces to process <br>
|
||||
Standard_EXPORT const TopTools_ListOfShape& Shapes() const;
|
||||
|
||||
//! Returns wires/shells that have been built <br>
|
||||
Standard_EXPORT const TopTools_ListOfShape& Loops() const;
|
||||
|
||||
//! Returns faces/solids that have been built <br>
|
||||
Standard_EXPORT const TopTools_ListOfShape& Areas() const;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
//! Empty constructor <br>
|
||||
Standard_EXPORT GEOMAlgo_BuilderArea();
|
||||
Standard_EXPORT virtual ~GEOMAlgo_BuilderArea();
|
||||
|
||||
//! Collect the edges/faces that <br>
|
||||
//! a) are internal <br>
|
||||
//! b) are the same and have different orientation <br>
|
||||
Standard_EXPORT virtual void PerformShapesToAvoid() ;
|
||||
|
||||
//! Build draft faces/shells <br>
|
||||
//! a)myLoops - draft faces/shells that consist of <br>
|
||||
//! boundary edges/faces <br>
|
||||
//! b)myLoopsInternal - draft faces/shells that contains <br>
|
||||
//! inner edges/faces <br>
|
||||
Standard_EXPORT virtual void PerformLoops() ;
|
||||
|
||||
//! Build draft faces/solids that contains boundary faces <br>
|
||||
Standard_EXPORT virtual void PerformAreas() ;
|
||||
|
||||
//! Build finalized faces/solids with internal wires/shells <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx
Normal file
@ -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 <GEOMAlgo_BuilderArea.jxx>
|
||||
|
||||
|
||||
|
||||
|
28
src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx
Normal file
28
src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx
Normal file
@ -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 <IntTools_Context.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_BuilderArea_HeaderFile
|
||||
#include <GEOMAlgo_BuilderArea.hxx>
|
||||
#endif
|
82
src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl
Executable file
82
src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl
Executable file
@ -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;
|
||||
|
676
src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx
Executable file
676
src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx
Executable file
@ -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 <GEOMAlgo_BuilderFace.ixx>
|
||||
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <gp_Pln.hxx>
|
||||
#include <gp_Vec.hxx>
|
||||
#include <gp_Dir.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
|
||||
#include <Geom_Surface.hxx>
|
||||
|
||||
#include <TopAbs.hxx>
|
||||
#include <TopLoc_Location.hxx>
|
||||
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Wire.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRepTools.hxx>
|
||||
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfShape.hxx>
|
||||
#include <TopTools_MapOfOrientedShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfOrientedShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_DataMapOfShapeShape.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#include <TopTools_DataMapOfShapeListOfShape.hxx>
|
||||
#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
|
||||
|
||||
#include <IntTools_FClass2d.hxx>
|
||||
#include <IntTools_Context.hxx>
|
||||
|
||||
#include <BOPTools_Tools2D.hxx>
|
||||
#include <BOP_WireEdgeSet.hxx>
|
||||
#include <BOP_WESCorrector.hxx>
|
||||
|
||||
#include <NMTTools_ListOfCoupleOfShape.hxx>
|
||||
#include <NMTTools_CoupleOfShape.hxx>
|
||||
#include <NMTTools_ListIteratorOfListOfCoupleOfShape.hxx>
|
||||
|
||||
#include <GEOMAlgo_Tools3D.hxx>
|
||||
#include <GEOMAlgo_BuilderTools.hxx>
|
||||
#include <GEOMAlgo_WireEdgeSet.hxx>
|
||||
#include <GEOMAlgo_WESCorrector.hxx>
|
||||
|
||||
//
|
||||
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
|
||||
|
125
src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx
Normal file
125
src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx
Normal file
@ -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 <TopoDS_Face.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_BuilderArea_HeaderFile
|
||||
#include <GEOMAlgo_BuilderArea.hxx>
|
||||
#endif
|
||||
class TopoDS_Face;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
//! The algorithm to build faces from set of edges <br>
|
||||
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 <br>
|
||||
Standard_EXPORT GEOMAlgo_BuilderFace();
|
||||
Standard_EXPORT virtual ~GEOMAlgo_BuilderFace();
|
||||
|
||||
//! Sets the face generatix <br>
|
||||
Standard_EXPORT void SetFace(const TopoDS_Face& theFace) ;
|
||||
|
||||
//! Returns the face generatix <br>
|
||||
Standard_EXPORT const TopoDS_Face& Face() const;
|
||||
|
||||
//! Performs the algorithm <br>
|
||||
Standard_EXPORT virtual void Perform() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
//! Collect the edges that <br>
|
||||
//! a) are internal <br>
|
||||
//! b) are the same and have different orientation <br>
|
||||
Standard_EXPORT virtual void PerformShapesToAvoid() ;
|
||||
|
||||
//! Build draft wires <br>
|
||||
//! a)myLoops - draft wires that consist of <br>
|
||||
//! boundary edges <br>
|
||||
//! b)myLoopsInternal - draft wires that contains <br>
|
||||
//! inner edges <br>
|
||||
Standard_EXPORT virtual void PerformLoops() ;
|
||||
|
||||
//! Build draft faces that contains boundary edges <br>
|
||||
Standard_EXPORT virtual void PerformAreas() ;
|
||||
|
||||
//! Build finalized faces with internals <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx
Normal file
@ -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 <GEOMAlgo_BuilderFace.jxx>
|
||||
|
||||
|
||||
|
||||
|
25
src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx
Normal file
25
src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx
Normal file
@ -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 <TopoDS_Face.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_BuilderFace_HeaderFile
|
||||
#include <GEOMAlgo_BuilderFace.hxx>
|
||||
#endif
|
107
src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl
Executable file
107
src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl
Executable file
@ -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;
|
||||
|
119
src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx
Executable file
119
src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx
Executable file
@ -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 <GEOMAlgo_BuilderShape.ixx>
|
||||
//=======================================================================
|
||||
//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;
|
||||
}
|
||||
|
142
src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx
Normal file
142
src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx
Normal file
@ -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 <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_MapOfShape_HeaderFile
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_Algo_HeaderFile
|
||||
#include <GEOMAlgo_Algo.hxx>
|
||||
#endif
|
||||
class TopoDS_Shape;
|
||||
class TopTools_ListOfShape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
//! Root class for algorithms that has shape as result <br>
|
||||
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 <br>
|
||||
Standard_EXPORT const TopoDS_Shape& Shape() const;
|
||||
|
||||
//! Returns the list of shapes generated from the <br>
|
||||
//! shape theS. <br>
|
||||
Standard_EXPORT virtual const TopTools_ListOfShape& Generated(const TopoDS_Shape& theS) ;
|
||||
|
||||
//! Returns the list of shapes modified from the <br>
|
||||
//! shape theS. <br>
|
||||
Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& theS) ;
|
||||
|
||||
//! Returns true if the shape theS has been deleted. <br>
|
||||
Standard_EXPORT virtual Standard_Boolean IsDeleted(const TopoDS_Shape& theS) ;
|
||||
|
||||
//! Returns true if the at least one shape(or subshape) <br>
|
||||
//! of arguments has been deleted. <br>
|
||||
Standard_EXPORT Standard_Boolean HasDeleted() const;
|
||||
|
||||
//! Returns true if the at least one shape(or subshape) <br>
|
||||
//! of arguments has generated shapes. <br>
|
||||
Standard_EXPORT Standard_Boolean HasGenerated() const;
|
||||
|
||||
//! Returns true if the at least one shape(or subshape) <br>
|
||||
//! of arguments has modified shapes. <br>
|
||||
Standard_EXPORT Standard_Boolean HasModified() const;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
//! Empty constructor <br>
|
||||
Standard_EXPORT GEOMAlgo_BuilderShape();
|
||||
Standard_EXPORT virtual ~GEOMAlgo_BuilderShape();
|
||||
|
||||
//! Prepare information for history support <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx
Normal file
@ -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 <GEOMAlgo_BuilderShape.jxx>
|
||||
|
||||
|
||||
|
||||
|
28
src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx
Normal file
28
src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx
Normal file
@ -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 <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_BuilderShape_HeaderFile
|
||||
#include <GEOMAlgo_BuilderShape.hxx>
|
||||
#endif
|
67
src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl
Executable file
67
src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl
Executable file
@ -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;
|
737
src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx
Executable file
737
src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx
Executable file
@ -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 <GEOMAlgo_BuilderSolid.ixx>
|
||||
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <gp_Pln.hxx>
|
||||
#include <gp_Vec.hxx>
|
||||
#include <gp_Dir.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
|
||||
#include <Geom_Curve.hxx>
|
||||
#include <Geom_Surface.hxx>
|
||||
#include <Geom2d_Curve.hxx>
|
||||
|
||||
#include <TopAbs.hxx>
|
||||
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Shell.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Solid.hxx>
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
#include <TopoDS_Compound.hxx>
|
||||
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRepTools.hxx>
|
||||
#include <BRepClass3d_SolidClassifier.hxx>
|
||||
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfShape.hxx>
|
||||
#include <TopTools_MapOfOrientedShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfOrientedShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_DataMapOfShapeShape.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#include <TopTools_DataMapOfShapeListOfShape.hxx>
|
||||
#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
|
||||
|
||||
#include <IntTools_Context.hxx>
|
||||
|
||||
#include <BOPTools_Tools2D.hxx>
|
||||
#include <BOPTools_Tools3D.hxx>
|
||||
|
||||
#include <NMTTools_ListOfCoupleOfShape.hxx>
|
||||
#include <NMTTools_CoupleOfShape.hxx>
|
||||
#include <NMTTools_ListIteratorOfListOfCoupleOfShape.hxx>
|
||||
|
||||
#include <GEOMAlgo_Tools3D.hxx>
|
||||
#include <GEOMAlgo_BuilderTools.hxx>
|
||||
|
||||
//
|
||||
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
|
114
src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx
Normal file
114
src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx
Normal file
@ -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 <GEOMAlgo_BuilderArea.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
//! The algorithm to build solids from set of faces <br>
|
||||
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 <br>
|
||||
Standard_EXPORT GEOMAlgo_BuilderSolid();
|
||||
Standard_EXPORT virtual ~GEOMAlgo_BuilderSolid();
|
||||
|
||||
//! Performs the algorithm <br>
|
||||
Standard_EXPORT virtual void Perform() ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
//! Collect the faces that <br>
|
||||
//! a) are internal <br>
|
||||
//! b) are the same and have different orientation <br>
|
||||
Standard_EXPORT virtual void PerformShapesToAvoid() ;
|
||||
|
||||
//! Build draft shells <br>
|
||||
//! a)myLoops - draft shells that consist of <br>
|
||||
//! boundary faces <br>
|
||||
//! b)myLoopsInternal - draft shells that contains <br>
|
||||
//! inner faces <br>
|
||||
Standard_EXPORT virtual void PerformLoops() ;
|
||||
|
||||
//! Build draft solids that contains boundary faces <br>
|
||||
Standard_EXPORT virtual void PerformAreas() ;
|
||||
|
||||
//! Build finalized solids with internal shells <br>
|
||||
Standard_EXPORT virtual void PerformInternalShapes() ;
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// other Inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
24
src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx
Normal file
@ -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 <GEOMAlgo_BuilderSolid.jxx>
|
||||
|
||||
|
||||
|
||||
|
22
src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx
Normal file
22
src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx
Normal file
@ -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 <GEOMAlgo_BuilderSolid.hxx>
|
||||
#endif
|
47
src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl
Executable file
47
src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl
Executable file
@ -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
|
||||
-- <pkv@irinox>
|
||||
|
||||
|
||||
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;
|
278
src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx
Executable file
278
src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx
Executable file
@ -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
|
||||
// <pkv@irinox>
|
||||
|
||||
|
||||
#include <GEOMAlgo_BuilderTools.ixx>
|
||||
|
||||
#include <TColStd_Array1OfReal.hxx>
|
||||
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <gp_Vec.hxx>
|
||||
#include <gp_Dir.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
|
||||
#include <TColgp_Array1OfPnt.hxx>
|
||||
|
||||
#include <Poly_Triangulation.hxx>
|
||||
#include <Poly_Array1OfTriangle.hxx>
|
||||
#include <Poly_Triangle.hxx>
|
||||
|
||||
#include <Geom2d_Curve.hxx>
|
||||
#include <Geom2dInt_Geom2dCurveTool.hxx>
|
||||
|
||||
#include <TopLoc_Location.hxx>
|
||||
#include <TopAbs_Orientation.hxx>
|
||||
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
#include <TopoDS_Wire.hxx>
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <BRepMesh_FastDiscret.hxx>
|
||||
#include <Bnd_Box.hxx>
|
||||
#include <BRepAdaptor_Curve2d.hxx>
|
||||
|
||||
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);
|
||||
}
|
96
src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx
Normal file
96
src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx
Normal file
@ -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 <Standard_Boolean.hxx>
|
||||
#endif
|
||||
class TopoDS_Shape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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
|
24
src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx
Normal file
@ -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 <GEOMAlgo_BuilderTools.jxx>
|
||||
|
||||
|
||||
|
||||
|
25
src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx
Normal file
25
src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx
Normal file
@ -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 <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_BuilderTools_HeaderFile
|
||||
#include <GEOMAlgo_BuilderTools.hxx>
|
||||
#endif
|
61
src/GEOMAlgo/GEOMAlgo_Builder_0.cxx
Normal file
61
src/GEOMAlgo/GEOMAlgo_Builder_0.cxx
Normal file
@ -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 <GEOMAlgo_Builder.hxx>
|
||||
|
||||
#include <NMTDS_ShapesDataStructure.hxx>
|
||||
#include <NMTTools_DSFiller.hxx>
|
||||
#include <NMTTools_PaveFiller.hxx>
|
||||
#include <IntTools_Context.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <BOPTools_ListOfPaveBlock.hxx>
|
||||
#include <BOPTools_PaveBlock.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//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;
|
||||
}
|
354
src/GEOMAlgo/GEOMAlgo_Builder_1.cxx
Executable file
354
src/GEOMAlgo/GEOMAlgo_Builder_1.cxx
Executable file
@ -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 <GEOMAlgo_Builder.hxx>
|
||||
//
|
||||
#include <TColStd_ListOfInteger.hxx>
|
||||
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Wire.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Shell.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
//
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfShape.hxx>
|
||||
//
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRep_Builder.hxx>
|
||||
//
|
||||
#include <IntTools_Context.hxx>
|
||||
#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
|
||||
#include <BOPTools_ListOfPaveBlock.hxx>
|
||||
#include <BOPTools_PaveBlock.hxx>
|
||||
//
|
||||
#include <NMTDS_ShapesDataStructure.hxx>
|
||||
//
|
||||
#include <NMTTools_DSFiller.hxx>
|
||||
#include <NMTTools_PaveFiller.hxx>
|
||||
#include <NMTTools_CommonBlockPool.hxx>
|
||||
#include <NMTTools_ListIteratorOfListOfCommonBlock.hxx>
|
||||
#include <NMTTools_CommonBlock.hxx>
|
||||
#include <NMTTools_CommonBlockPool.hxx>
|
||||
#include <NMTTools_ListOfCommonBlock.hxx>
|
||||
#include <NMTTools_CommonBlockAPI.hxx>
|
||||
//
|
||||
#include <GEOMAlgo_Tools3D.hxx>
|
||||
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
||||
|
||||
|
||||
|
||||
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);
|
||||
}
|
783
src/GEOMAlgo/GEOMAlgo_Builder_2.cxx
Executable file
783
src/GEOMAlgo/GEOMAlgo_Builder_2.cxx
Executable file
@ -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 <GEOMAlgo_Builder.hxx>
|
||||
|
||||
#include <TColStd_IndexedMapOfInteger.hxx>
|
||||
#include <TColStd_ListOfInteger.hxx>
|
||||
|
||||
#include <TopAbs_Orientation.hxx>
|
||||
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Compound.hxx>
|
||||
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRepAlgo_Image.hxx>
|
||||
#include <BRepTools.hxx>
|
||||
|
||||
#include <IntTools_Context.hxx>
|
||||
#include <IntTools_FClass2d.hxx>
|
||||
|
||||
#include <BooleanOperations_OnceExplorer.hxx>
|
||||
#include <BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger.hxx>
|
||||
#include <BOPTools_ListOfPaveBlock.hxx>
|
||||
#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
|
||||
#include <BOPTools_InterferencePool.hxx>
|
||||
#include <BOPTools_CArray1OfSSInterference.hxx>
|
||||
#include <BOPTools_SSInterference.hxx>
|
||||
#include <BOPTools_SequenceOfCurves.hxx>
|
||||
#include <BOPTools_Curve.hxx>
|
||||
#include <BOPTools_ListOfPaveBlock.hxx>
|
||||
#include <BOPTools_PaveBlock.hxx>
|
||||
#include <BOPTools_Tools3D.hxx>
|
||||
#include <BOPTools_CArray1OfVSInterference.hxx>
|
||||
#include <BOPTools_VSInterference.hxx>
|
||||
#include <BOPTools_ESInterference.hxx>
|
||||
#include <BOPTools_CArray1OfESInterference.hxx>
|
||||
|
||||
#include <NMTDS_ShapesDataStructure.hxx>
|
||||
#include <NMTTools_DSFiller.hxx>
|
||||
#include <NMTTools_PaveFiller.hxx>
|
||||
#include <NMTTools_ListOfCoupleOfShape.hxx>
|
||||
#include <NMTTools_Tools.hxx>
|
||||
#include <NMTTools_CoupleOfShape.hxx>
|
||||
#include <NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx>
|
||||
#include <NMTTools_Tools.hxx>
|
||||
#include <NMTTools_ListIteratorOfListOfCommonBlock.hxx>
|
||||
#include <NMTTools_ListOfCommonBlock.hxx>
|
||||
#include <NMTTools_CommonBlock.hxx>
|
||||
#include <NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx>
|
||||
//
|
||||
#include <GEOMAlgo_Tools3D.hxx>
|
||||
#include <GEOMAlgo_WireEdgeSet.hxx>
|
||||
#include <GEOMAlgo_BuilderFace.hxx>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
769
src/GEOMAlgo/GEOMAlgo_Builder_3.cxx
Executable file
769
src/GEOMAlgo/GEOMAlgo_Builder_3.cxx
Executable file
@ -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 <GEOMAlgo_Builder.hxx>
|
||||
|
||||
#include <TopAbs_State.hxx>
|
||||
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
#include <TopoDS_Solid.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopoDS_Solid.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
#include <TopoDS_Shell.hxx>
|
||||
#include <TopoDS_Compound.hxx>
|
||||
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRepTools.hxx>
|
||||
#include <BRepClass3d_SolidClassifier.hxx>
|
||||
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfShape.hxx>
|
||||
#include <TopTools_DataMapOfShapeShape.hxx>
|
||||
#include <TopTools_DataMapOfShapeInteger.hxx>
|
||||
#include <TopTools_DataMapIteratorOfDataMapOfShapeInteger.hxx>
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
|
||||
#include <IntTools_Context.hxx>
|
||||
|
||||
#include <NMTDS_ShapesDataStructure.hxx>
|
||||
#include <NMTTools_DSFiller.hxx>
|
||||
#include <NMTTools_PaveFiller.hxx>
|
||||
|
||||
#include <GEOMAlgo_Tools3D.hxx>
|
||||
#include <GEOMAlgo_BuilderSolid.hxx>
|
||||
#include <GEOMAlgo_ShapeSet.hxx>
|
||||
#include <GEOMAlgo_DataMapOfShapeShapeSet.hxx>
|
||||
#include <GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx>
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
289
src/GEOMAlgo/GEOMAlgo_Builder_4.cxx
Executable file
289
src/GEOMAlgo/GEOMAlgo_Builder_4.cxx
Executable file
@ -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 <GEOMAlgo_Builder.hxx>
|
||||
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfShape.hxx>
|
||||
|
||||
#include <IntTools_Context.hxx>
|
||||
|
||||
#include <NMTDS_ShapesDataStructure.hxx>
|
||||
|
||||
#include <NMTTools_PaveFiller.hxx>
|
||||
#include <NMTTools_DSFiller.hxx>
|
||||
|
||||
#include <GEOMAlgo_Tools3D.hxx>
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
@ -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 <TCollection_BasicMapIterator.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Real_HeaderFile
|
||||
#include <Standard_Real.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#endif
|
||||
class Standard_NoSuchObject;
|
||||
class TopTools_ListOfShape;
|
||||
class TColStd_MapRealHasher;
|
||||
class GEOMAlgo_DataMapOfRealListOfShape;
|
||||
class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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
|
@ -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 <GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx>
|
||||
|
||||
#ifndef _Standard_NoSuchObject_HeaderFile
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TColStd_MapRealHasher_HeaderFile
|
||||
#include <TColStd_MapRealHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile
|
||||
#include <GEOMAlgo_DataMapOfRealListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile
|
||||
#include <GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#define TheKey Standard_Real
|
||||
#define TheKey_hxx <Standard_Real.hxx>
|
||||
#define TheItem TopTools_ListOfShape
|
||||
#define TheItem_hxx <TopTools_ListOfShape.hxx>
|
||||
#define Hasher TColStd_MapRealHasher
|
||||
#define Hasher_hxx <TColStd_MapRealHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfRealListOfShape.hxx>
|
||||
#include <TCollection_DataMapIterator.gxx>
|
||||
|
115
src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx
Normal file
115
src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx
Normal file
@ -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 <TCollection_BasicMapIterator.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Real_HeaderFile
|
||||
#include <Standard_Real.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#endif
|
||||
class Standard_NoSuchObject;
|
||||
class TopoDS_Shape;
|
||||
class TopTools_ShapeMapHasher;
|
||||
class GEOMAlgo_DataMapOfShapeReal;
|
||||
class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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
|
@ -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 <GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx>
|
||||
|
||||
#ifndef _Standard_NoSuchObject_HeaderFile
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ShapeMapHasher_HeaderFile
|
||||
#include <TopTools_ShapeMapHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapOfShapeReal_HeaderFile
|
||||
#include <GEOMAlgo_DataMapOfShapeReal.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile
|
||||
#include <GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#define TheKey TopoDS_Shape
|
||||
#define TheKey_hxx <TopoDS_Shape.hxx>
|
||||
#define TheItem Standard_Real
|
||||
#define TheItem_hxx <Standard_Real.hxx>
|
||||
#define Hasher TopTools_ShapeMapHasher
|
||||
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfShapeReal.hxx>
|
||||
#include <TCollection_DataMapIterator.gxx>
|
||||
|
@ -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 <TCollection_BasicMapIterator.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#endif
|
||||
class Standard_NoSuchObject;
|
||||
class TopoDS_Shape;
|
||||
class GEOMAlgo_ShapeSet;
|
||||
class TopTools_ShapeMapHasher;
|
||||
class GEOMAlgo_DataMapOfShapeShapeSet;
|
||||
class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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
|
@ -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 <GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx>
|
||||
|
||||
#ifndef _Standard_NoSuchObject_HeaderFile
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_ShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_ShapeSet.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ShapeMapHasher_HeaderFile
|
||||
#include <TopTools_ShapeMapHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_DataMapOfShapeShapeSet.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#define TheKey TopoDS_Shape
|
||||
#define TheKey_hxx <TopoDS_Shape.hxx>
|
||||
#define TheItem GEOMAlgo_ShapeSet
|
||||
#define TheItem_hxx <GEOMAlgo_ShapeSet.hxx>
|
||||
#define Hasher TopTools_ShapeMapHasher
|
||||
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfShapeShapeSet.hxx>
|
||||
#include <TCollection_DataMapIterator.gxx>
|
||||
|
131
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx
Normal file
131
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx
Normal file
@ -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 <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _Standard_Real_HeaderFile
|
||||
#include <Standard_Real.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TCollection_MapNode_HeaderFile
|
||||
#include <TCollection_MapNode.hxx>
|
||||
#endif
|
||||
#ifndef _TCollection_MapNodePtr_HeaderFile
|
||||
#include <TCollection_MapNodePtr.hxx>
|
||||
#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 <Standard_Real.hxx>
|
||||
#define TheItem TopTools_ListOfShape
|
||||
#define TheItem_hxx <TopTools_ListOfShape.hxx>
|
||||
#define Hasher TColStd_MapRealHasher
|
||||
#define Hasher_hxx <TColStd_MapRealHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfRealListOfShape.hxx>
|
||||
|
||||
#include <TCollection_DataMapNode.lxx>
|
||||
|
||||
#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
|
@ -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 <GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
|
||||
#ifndef _Standard_TypeMismatch_HeaderFile
|
||||
#include <Standard_TypeMismatch.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TColStd_MapRealHasher_HeaderFile
|
||||
#include <TColStd_MapRealHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile
|
||||
#include <GEOMAlgo_DataMapOfRealListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile
|
||||
#include <GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx>
|
||||
#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 <Standard_Real.hxx>
|
||||
#define TheItem TopTools_ListOfShape
|
||||
#define TheItem_hxx <TopTools_ListOfShape.hxx>
|
||||
#define Hasher TColStd_MapRealHasher
|
||||
#define Hasher_hxx <TColStd_MapRealHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfRealListOfShape.hxx>
|
||||
#include <TCollection_DataMapNode.gxx>
|
||||
|
131
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx
Normal file
131
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx
Normal file
@ -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 <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Real_HeaderFile
|
||||
#include <Standard_Real.hxx>
|
||||
#endif
|
||||
#ifndef _TCollection_MapNode_HeaderFile
|
||||
#include <TCollection_MapNode.hxx>
|
||||
#endif
|
||||
#ifndef _TCollection_MapNodePtr_HeaderFile
|
||||
#include <TCollection_MapNodePtr.hxx>
|
||||
#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 <TopoDS_Shape.hxx>
|
||||
#define TheItem Standard_Real
|
||||
#define TheItem_hxx <Standard_Real.hxx>
|
||||
#define Hasher TopTools_ShapeMapHasher
|
||||
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfShapeReal.hxx>
|
||||
|
||||
#include <TCollection_DataMapNode.lxx>
|
||||
|
||||
#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
|
100
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx
Normal file
100
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx
Normal file
@ -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 <GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
|
||||
#ifndef _Standard_TypeMismatch_HeaderFile
|
||||
#include <Standard_TypeMismatch.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ShapeMapHasher_HeaderFile
|
||||
#include <TopTools_ShapeMapHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapOfShapeReal_HeaderFile
|
||||
#include <GEOMAlgo_DataMapOfShapeReal.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile
|
||||
#include <GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx>
|
||||
#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 <TopoDS_Shape.hxx>
|
||||
#define TheItem Standard_Real
|
||||
#define TheItem_hxx <Standard_Real.hxx>
|
||||
#define Hasher TopTools_ShapeMapHasher
|
||||
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfShapeReal.hxx>
|
||||
#include <TCollection_DataMapNode.gxx>
|
||||
|
132
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx
Normal file
132
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx
Normal file
@ -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 <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_ShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_ShapeSet.hxx>
|
||||
#endif
|
||||
#ifndef _TCollection_MapNode_HeaderFile
|
||||
#include <TCollection_MapNode.hxx>
|
||||
#endif
|
||||
#ifndef _TCollection_MapNodePtr_HeaderFile
|
||||
#include <TCollection_MapNodePtr.hxx>
|
||||
#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 <TopoDS_Shape.hxx>
|
||||
#define TheItem GEOMAlgo_ShapeSet
|
||||
#define TheItem_hxx <GEOMAlgo_ShapeSet.hxx>
|
||||
#define Hasher TopTools_ShapeMapHasher
|
||||
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfShapeShapeSet.hxx>
|
||||
|
||||
#include <TCollection_DataMapNode.lxx>
|
||||
|
||||
#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
|
103
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx
Normal file
103
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx
Normal file
@ -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 <GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
|
||||
#ifndef _Standard_TypeMismatch_HeaderFile
|
||||
#include <Standard_TypeMismatch.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_ShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_ShapeSet.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ShapeMapHasher_HeaderFile
|
||||
#include <TopTools_ShapeMapHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_DataMapOfShapeShapeSet.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx>
|
||||
#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 <TopoDS_Shape.hxx>
|
||||
#define TheItem GEOMAlgo_ShapeSet
|
||||
#define TheItem_hxx <GEOMAlgo_ShapeSet.hxx>
|
||||
#define Hasher TopTools_ShapeMapHasher
|
||||
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfShapeShapeSet.hxx>
|
||||
#include <TCollection_DataMapNode.gxx>
|
||||
|
157
src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx
Normal file
157
src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx
Normal file
@ -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 <TCollection_BasicMap.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Real_HeaderFile
|
||||
#include <Standard_Real.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
class Standard_DomainError;
|
||||
class Standard_NoSuchObject;
|
||||
class TopTools_ListOfShape;
|
||||
class TColStd_MapRealHasher;
|
||||
class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape;
|
||||
class GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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
|
57
src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx
Normal file
57
src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx
Normal file
@ -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 <GEOMAlgo_DataMapOfRealListOfShape.hxx>
|
||||
|
||||
#ifndef _Standard_DomainError_HeaderFile
|
||||
#include <Standard_DomainError.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_NoSuchObject_HeaderFile
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TColStd_MapRealHasher_HeaderFile
|
||||
#include <TColStd_MapRealHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile
|
||||
#include <GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile
|
||||
#include <GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#define TheKey Standard_Real
|
||||
#define TheKey_hxx <Standard_Real.hxx>
|
||||
#define TheItem TopTools_ListOfShape
|
||||
#define TheItem_hxx <TopTools_ListOfShape.hxx>
|
||||
#define Hasher TColStd_MapRealHasher
|
||||
#define Hasher_hxx <TColStd_MapRealHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfRealListOfShape.hxx>
|
||||
#include <TCollection_DataMap.gxx>
|
||||
|
157
src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx
Normal file
157
src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx
Normal file
@ -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 <TCollection_BasicMap.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Real_HeaderFile
|
||||
#include <Standard_Real.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
class Standard_DomainError;
|
||||
class Standard_NoSuchObject;
|
||||
class TopoDS_Shape;
|
||||
class TopTools_ShapeMapHasher;
|
||||
class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal;
|
||||
class GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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
|
57
src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx
Normal file
57
src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx
Normal file
@ -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 <GEOMAlgo_DataMapOfShapeReal.hxx>
|
||||
|
||||
#ifndef _Standard_DomainError_HeaderFile
|
||||
#include <Standard_DomainError.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_NoSuchObject_HeaderFile
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ShapeMapHasher_HeaderFile
|
||||
#include <TopTools_ShapeMapHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile
|
||||
#include <GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile
|
||||
#include <GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#define TheKey TopoDS_Shape
|
||||
#define TheKey_hxx <TopoDS_Shape.hxx>
|
||||
#define TheItem Standard_Real
|
||||
#define TheItem_hxx <Standard_Real.hxx>
|
||||
#define Hasher TopTools_ShapeMapHasher
|
||||
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfShapeReal.hxx>
|
||||
#include <TCollection_DataMap.gxx>
|
||||
|
155
src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx
Normal file
155
src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx
Normal file
@ -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 <TCollection_BasicMap.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile
|
||||
#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#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 <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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
|
60
src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx
Normal file
60
src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx
Normal file
@ -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 <GEOMAlgo_DataMapOfShapeShapeSet.hxx>
|
||||
|
||||
#ifndef _Standard_DomainError_HeaderFile
|
||||
#include <Standard_DomainError.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_NoSuchObject_HeaderFile
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_ShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_ShapeSet.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ShapeMapHasher_HeaderFile
|
||||
#include <TopTools_ShapeMapHasher.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#define TheKey TopoDS_Shape
|
||||
#define TheKey_hxx <TopoDS_Shape.hxx>
|
||||
#define TheItem GEOMAlgo_ShapeSet
|
||||
#define TheItem_hxx <GEOMAlgo_ShapeSet.hxx>
|
||||
#define Hasher TopTools_ShapeMapHasher
|
||||
#define Hasher_hxx <TopTools_ShapeMapHasher.hxx>
|
||||
#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx>
|
||||
#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx>
|
||||
#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet
|
||||
#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_()
|
||||
#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet
|
||||
#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfShapeShapeSet.hxx>
|
||||
#include <TCollection_DataMap.gxx>
|
||||
|
27
src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx
Normal file
27
src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx
Normal file
@ -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
|
78
src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl
Executable file
78
src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl
Executable file
@ -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;
|
140
src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx
Executable file
140
src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx
Executable file
@ -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 <GEOMAlgo_ShapeSet.ixx>
|
||||
|
||||
#include <TopExp_Explorer.hxx>
|
||||
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfOrientedShape.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//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);
|
||||
}
|
||||
}
|
129
src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx
Normal file
129
src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx
Normal file
@ -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 <TopTools_MapOfOrientedShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopAbs_ShapeEnum_HeaderFile
|
||||
#include <TopAbs_ShapeEnum.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
class TopTools_ListOfShape;
|
||||
class TopoDS_Shape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
//! Implementation some formal <br>
|
||||
//! opereations with Set of shapes <br>
|
||||
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 <br>
|
||||
Standard_EXPORT GEOMAlgo_ShapeSet();
|
||||
|
||||
//! Adds shapes from the list theLS to the Set <br>
|
||||
Standard_EXPORT void Add(const TopTools_ListOfShape& theLS) ;
|
||||
|
||||
//! Adds shape theShape to the Set <br>
|
||||
Standard_EXPORT void Add(const TopoDS_Shape& theShape) ;
|
||||
|
||||
//! Adds sub-shapes of shape theShape, <br>
|
||||
//! that have type theType to the Set <br>
|
||||
Standard_EXPORT void Add(const TopoDS_Shape& theShape,const TopAbs_ShapeEnum theType) ;
|
||||
|
||||
//! Removes shapes of theSet from the Set <br>
|
||||
Standard_EXPORT void Subtract(const GEOMAlgo_ShapeSet& theSet) ;
|
||||
|
||||
//! Clears internal fields <br>
|
||||
Standard_EXPORT void Clear() ;
|
||||
|
||||
//! Returns True if the Set contains <br>
|
||||
//! all shapes of theSet <br>
|
||||
Standard_EXPORT Standard_Boolean Contains(const GEOMAlgo_ShapeSet& theSet) const;
|
||||
|
||||
//! Returns the Set <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx
Normal file
@ -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 <GEOMAlgo_ShapeSet.jxx>
|
||||
|
||||
|
||||
|
||||
|
28
src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx
Normal file
28
src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx
Normal file
@ -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 <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_ShapeSet_HeaderFile
|
||||
#include <GEOMAlgo_ShapeSet.hxx>
|
||||
#endif
|
93
src/GEOMAlgo/GEOMAlgo_Splitter.cdl
Executable file
93
src/GEOMAlgo/GEOMAlgo_Splitter.cdl
Executable file
@ -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
|
||||
-- <pkv@irinox>
|
||||
-- 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;
|
||||
|
194
src/GEOMAlgo/GEOMAlgo_Splitter.cxx
Executable file
194
src/GEOMAlgo/GEOMAlgo_Splitter.cxx
Executable file
@ -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
|
||||
// <pkv@irinox>
|
||||
|
||||
#include <GEOMAlgo_Splitter.ixx>
|
||||
|
||||
#include <TopAbs_ShapeEnum.hxx>
|
||||
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Compound.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
|
||||
#include <TopExp.hxx>
|
||||
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRepLib.hxx>
|
||||
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
|
||||
#include <BOP_CorrectTolerances.hxx>
|
||||
|
||||
#include <NMTTools_DSFiller.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//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
|
133
src/GEOMAlgo/GEOMAlgo_Splitter.hxx
Normal file
133
src/GEOMAlgo/GEOMAlgo_Splitter.hxx
Normal file
@ -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 <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_MapOfShape_HeaderFile
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopAbs_ShapeEnum_HeaderFile
|
||||
#include <TopAbs_ShapeEnum.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_Builder_HeaderFile
|
||||
#include <GEOMAlgo_Builder.hxx>
|
||||
#endif
|
||||
class TopoDS_Shape;
|
||||
class TopTools_ListOfShape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
//! Implementation of Gluing Operation Algorithm (GA) <br>
|
||||
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 <br>
|
||||
Standard_EXPORT GEOMAlgo_Splitter();
|
||||
Standard_EXPORT virtual ~GEOMAlgo_Splitter();
|
||||
|
||||
//! Clears internal fields and arguments <br>
|
||||
Standard_EXPORT virtual void Clear() ;
|
||||
|
||||
//! Adds Tool argument theShape of the operation <br>
|
||||
Standard_EXPORT virtual void AddTool(const TopoDS_Shape& theShape) ;
|
||||
|
||||
//! Returns the arguments of the operation <br>
|
||||
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 <br>
|
||||
//! shapes of upper level of container shape theShape <br>
|
||||
//! ===================================================== <br>
|
||||
Standard_EXPORT void AddToolCompound(const TopoDS_Shape& theShape) ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
//! Build the resulting shapes of type theType <br>
|
||||
Standard_EXPORT virtual void BuildResult(const TopAbs_ShapeEnum theType) ;
|
||||
|
||||
//! Provides post-tratment actions <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_Splitter.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_Splitter.ixx
Normal file
@ -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 <GEOMAlgo_Splitter.jxx>
|
||||
|
||||
|
||||
|
||||
|
28
src/GEOMAlgo/GEOMAlgo_Splitter.jxx
Normal file
28
src/GEOMAlgo/GEOMAlgo_Splitter.jxx
Normal file
@ -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 <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_Splitter_HeaderFile
|
||||
#include <GEOMAlgo_Splitter.hxx>
|
||||
#endif
|
236
src/GEOMAlgo/GEOMAlgo_Tools3D.cdl
Executable file
236
src/GEOMAlgo/GEOMAlgo_Tools3D.cdl
Executable file
@ -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;
|
||||
|
1022
src/GEOMAlgo/GEOMAlgo_Tools3D.cxx
Executable file
1022
src/GEOMAlgo/GEOMAlgo_Tools3D.cxx
Executable file
File diff suppressed because it is too large
Load Diff
222
src/GEOMAlgo/GEOMAlgo_Tools3D.hxx
Normal file
222
src/GEOMAlgo/GEOMAlgo_Tools3D.hxx
Normal file
@ -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 <Standard_Boolean.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
#ifndef _TopAbs_ShapeEnum_HeaderFile
|
||||
#include <TopAbs_ShapeEnum.hxx>
|
||||
#endif
|
||||
#ifndef _TopAbs_State_HeaderFile
|
||||
#include <TopAbs_State.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Real_HeaderFile
|
||||
#include <Standard_Real.hxx>
|
||||
#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 <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
//! Auxiliary tools for Algorithms <br>
|
||||
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 <br>
|
||||
//! direction than theShape <br>
|
||||
//! theContext - cashed geometrical tools <br>
|
||||
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 <br>
|
||||
//! theShape is not the same as for the face <br>
|
||||
//! theSplit <br>
|
||||
//! theContext - cashed geometrical tools <br>
|
||||
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 <br>
|
||||
//! theEdge is not the same as for the edge <br>
|
||||
//! theSplit <br>
|
||||
//! theContext - cashed geometrical tools <br>
|
||||
Standard_EXPORT static Standard_Boolean IsSplitToReverse(const TopoDS_Edge& theEdge,const TopoDS_Edge& theSplit,IntTools_Context& theContext) ;
|
||||
|
||||
//! For the couple of faces theF1, theF2 <br>
|
||||
//! computes sense value <br>
|
||||
//! Returns 0 if the faces are not sensible <br>
|
||||
//! Returns 1 if the faces have same sense <br>
|
||||
//! Returns 2 if the faces have opposite sense <br>
|
||||
Standard_EXPORT static Standard_Integer Sense(const TopoDS_Face& theF1,const TopoDS_Face& theF2) ;
|
||||
|
||||
//! Makes new face theF2 from surface and wires <br>
|
||||
//! of the face theF1 <br>
|
||||
Standard_EXPORT static void CopyFace(const TopoDS_Face& theF1,TopoDS_Face& theF2) ;
|
||||
|
||||
//! Makes empty shape theShape of the type theType <br>
|
||||
Standard_EXPORT static void MakeContainer(const TopAbs_ShapeEnum theType,TopoDS_Shape& theShape) ;
|
||||
|
||||
//! For the list of faces theLS build block <br>
|
||||
//! theLSCB in terms of connexity by edges <br>
|
||||
//! theMapAvoid - set of edges to avoid for <br>
|
||||
//! the treatment <br>
|
||||
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 <br>
|
||||
//! toward solid theSolid. <br>
|
||||
//! theTol - value of precision of computation <br>
|
||||
//! theContext- cahed geometrical tools <br>
|
||||
//! Returns 3-D state. <br>
|
||||
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 <br>
|
||||
//! toward solid theSolid. <br>
|
||||
//! theTol - value of precision of computation <br>
|
||||
//! theContext- cahed geometrical tools <br>
|
||||
//! Returns 3-D state. <br>
|
||||
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 <br>
|
||||
//! toward solid theSolid. <br>
|
||||
//! theTol - value of precision of computation <br>
|
||||
//! theContext- cahed geometrical tools <br>
|
||||
//! Returns 3-D state. <br>
|
||||
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 <br>
|
||||
//! toward solid theSolid. <br>
|
||||
//! theTol - value of precision of computation <br>
|
||||
//! theContext- cahed geometrical tools <br>
|
||||
//! Returns 3-D state. <br>
|
||||
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 <br>
|
||||
//! toward solid theSolid. <br>
|
||||
//! theTol - value of precision of computation <br>
|
||||
//! theBounds - set of edges of theFace to avoid <br>
|
||||
//! theContext- cahed geometrical tools <br>
|
||||
//! Returns 3-D state. <br>
|
||||
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 <br>
|
||||
//! couple of faces theFace1, theFace2. <br>
|
||||
//! The faces theFace, theFace1, theFace2 must <br>
|
||||
//! share the edge theEdge <br>
|
||||
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 <br>
|
||||
//! appropriate couple of faces (from the set theLF) . <br>
|
||||
//! The faces of the set theLF and theFace must <br>
|
||||
//! share the edge theEdge <br>
|
||||
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 <br>
|
||||
//! solid theSolid. <br>
|
||||
//! theMEF - Map Edge/Faces for theSolid <br>
|
||||
//! theTol - value of precision of computation <br>
|
||||
//! theContext- cahed geometrical tools <br>
|
||||
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 <br>
|
||||
//! finds the face suitable to produce shell. <br>
|
||||
//! theLCEF - set of faces to search. All faces <br>
|
||||
//! from theLCEF must share edge theEdge <br>
|
||||
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 <br>
|
||||
//! that is the same as theEdge <br>
|
||||
//! Returns True if such edge exists <br>
|
||||
//! Returns False if there is no such edge <br>
|
||||
Standard_EXPORT static Standard_Boolean GetEdgeOnFace(const TopoDS_Edge& theEdge,const TopoDS_Face& theFace,TopoDS_Edge& theEdgeOnF) ;
|
||||
|
||||
//! Returns True if the face theFace contains <br>
|
||||
//! the edge theEdge but with opposite orientation. <br>
|
||||
//! If the method returns True theEdgeOff is the <br>
|
||||
//! edge founded <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_Tools3D.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_Tools3D.ixx
Normal file
@ -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 <GEOMAlgo_Tools3D.jxx>
|
||||
|
||||
|
||||
|
||||
|
55
src/GEOMAlgo/GEOMAlgo_Tools3D.jxx
Normal file
55
src/GEOMAlgo/GEOMAlgo_Tools3D.jxx
Normal file
@ -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 <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _IntTools_Context_HeaderFile
|
||||
#include <IntTools_Context.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Face_HeaderFile
|
||||
#include <TopoDS_Face.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Edge_HeaderFile
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_IndexedMapOfShape_HeaderFile
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Solid_HeaderFile
|
||||
#include <TopoDS_Solid.hxx>
|
||||
#endif
|
||||
#ifndef _gp_Pnt_HeaderFile
|
||||
#include <gp_Pnt.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Vertex_HeaderFile
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile
|
||||
#include <NMTTools_ListOfCoupleOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_Tools3D_HeaderFile
|
||||
#include <GEOMAlgo_Tools3D.hxx>
|
||||
#endif
|
82
src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl
Executable file
82
src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl
Executable file
@ -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;
|
337
src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx
Executable file
337
src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx
Executable file
@ -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
|
||||
// <pkv@irinox>
|
||||
|
||||
|
||||
#include <GEOMAlgo_WESCorrector.ixx>
|
||||
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Wire.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRep_Tool.hxx>
|
||||
|
||||
#include <TopTools_IndexedMapOfOrientedShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
|
||||
#include <BOP_ConnexityBlock.hxx>
|
||||
#include <BOP_ListIteratorOfListOfConnexityBlock.hxx>
|
||||
|
||||
#include <BOPTColStd_ListOfListOfShape.hxx>
|
||||
#include <BOPTColStd_ListIteratorOfListOfListOfShape.hxx>
|
||||
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#include <NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx>
|
||||
#include <TopExp.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <TopTools_MapIteratorOfMapOfShape.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
#include <GEOMAlgo_WireSplitter.hxx>
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
134
src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx
Normal file
134
src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx
Normal file
@ -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 <GEOMAlgo_PWireEdgeSet.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile
|
||||
#include <GEOMAlgo_WireEdgeSet.hxx>
|
||||
#endif
|
||||
#ifndef _BOP_ListOfConnexityBlock_HeaderFile
|
||||
#include <BOP_ListOfConnexityBlock.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_Algo_HeaderFile
|
||||
#include <GEOMAlgo_Algo.hxx>
|
||||
#endif
|
||||
class GEOMAlgo_WireEdgeSet;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
//! The algorithm to change the Wire Edges Set (WES) contents. <br>
|
||||
//! The NewWES will contain only wires instead of wires and edges. <br>
|
||||
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; <br>
|
||||
//! <br>
|
||||
Standard_EXPORT GEOMAlgo_WESCorrector();
|
||||
Standard_EXPORT virtual ~GEOMAlgo_WESCorrector();
|
||||
|
||||
|
||||
//! Modifier <br>
|
||||
Standard_EXPORT void SetWES(const GEOMAlgo_WireEdgeSet& aWES) ;
|
||||
|
||||
|
||||
//! Performs the algorithm that consists of two steps <br>
|
||||
//! 1. Make conexity blocks ( DoConnexityBlocks() ) <br>
|
||||
//! 2. Make corrections ( DoCorrections() ) <br>
|
||||
Standard_EXPORT virtual void Perform() ;
|
||||
|
||||
|
||||
//! Selector <br>
|
||||
Standard_EXPORT GEOMAlgo_WireEdgeSet& WES() ;
|
||||
|
||||
|
||||
//! Selector <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx
Normal file
@ -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 <GEOMAlgo_WESCorrector.jxx>
|
||||
|
||||
|
||||
|
||||
|
25
src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx
Normal file
25
src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx
Normal file
@ -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 <GEOMAlgo_WireEdgeSet.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_WESCorrector_HeaderFile
|
||||
#include <GEOMAlgo_WESCorrector.hxx>
|
||||
#endif
|
68
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl
Executable file
68
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl
Executable file
@ -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
|
||||
-- <pkv@irinox>
|
||||
|
||||
|
||||
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;
|
92
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx
Executable file
92
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx
Executable file
@ -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
|
||||
// <pkv@irinox>
|
||||
|
||||
#include <GEOMAlgo_WireEdgeSet.ixx>
|
||||
|
||||
//=======================================================================
|
||||
//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;
|
||||
}
|
122
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx
Normal file
122
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx
Normal file
@ -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 <TopoDS_Face.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
class TopoDS_Face;
|
||||
class TopoDS_Shape;
|
||||
class TopTools_ListOfShape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#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
|
24
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx
Normal file
@ -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 <GEOMAlgo_WireEdgeSet.jxx>
|
||||
|
||||
|
||||
|
||||
|
31
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx
Normal file
31
src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx
Normal file
@ -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 <TopoDS_Face.hxx>
|
||||
#endif
|
||||
#ifndef _TopoDS_Shape_HeaderFile
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile
|
||||
#include <GEOMAlgo_WireEdgeSet.hxx>
|
||||
#endif
|
87
src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl
Executable file
87
src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl
Executable file
@ -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
|
||||
-- <pkv@irinox>
|
||||
|
||||
|
||||
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;
|
||||
|
909
src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx
Executable file
909
src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx
Executable file
@ -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
|
||||
// <pkv@irinox>
|
||||
|
||||
|
||||
#include <GEOMAlgo_WireSplitter.ixx>
|
||||
|
||||
#include <TColStd_SequenceOfReal.hxx>
|
||||
#include <Precision.hxx>
|
||||
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <gp_Vec2d.hxx>
|
||||
#include <TColgp_SequenceOfPnt2d.hxx>
|
||||
|
||||
#include <Geom_Curve.hxx>
|
||||
#include <Geom2d_Curve.hxx>
|
||||
#include <GeomAdaptor_Surface.hxx>
|
||||
|
||||
#include <TopAbs_Orientation.hxx>
|
||||
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
|
||||
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRepAdaptor_Surface.hxx>
|
||||
#include <BRepAdaptor_Curve2d.hxx>
|
||||
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
|
||||
|
||||
|
||||
#include <TopTools_SequenceOfShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
|
||||
#include <BOPTColStd_ListOfListOfShape.hxx>
|
||||
#include <BOPTColStd_ListIteratorOfListOfListOfShape.hxx>
|
||||
|
||||
#include <BOPTools_Tools2D.hxx>
|
||||
|
||||
#include <BOP_EdgeInfo.hxx>
|
||||
#include <BOP_ListOfEdgeInfo.hxx>
|
||||
#include <BOP_ListIteratorOfListOfEdgeInfo.hxx>
|
||||
#include <BOP_IndexedDataMapOfVertexListEdgeInfo.hxx>
|
||||
|
||||
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<aTol2;
|
||||
//
|
||||
if(anIsSameV2d) {
|
||||
Standard_Real udist, vdist;
|
||||
//
|
||||
udist=fabs(aPaPrev.X() - aPb.X());
|
||||
vdist=fabs(aPaPrev.Y() - aPb.Y());
|
||||
if((udist > 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);
|
||||
}
|
141
src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx
Normal file
141
src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx
Normal file
@ -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 <TopoDS_Face.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
#ifndef _BOPTColStd_ListOfListOfShape_HeaderFile
|
||||
#include <BOPTColStd_ListOfListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _BOP_IndexedDataMapOfVertexListEdgeInfo_HeaderFile
|
||||
#include <BOP_IndexedDataMapOfVertexListEdgeInfo.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_Algo_HeaderFile
|
||||
#include <GEOMAlgo_Algo.hxx>
|
||||
#endif
|
||||
class TopoDS_Face;
|
||||
class TopTools_ListOfShape;
|
||||
class BOPTColStd_ListOfListOfShape;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
//! the algorithm to split multiconnexed set of edges <br>
|
||||
//! wires on a face onto simple connexed wires <br>
|
||||
//! . <br>
|
||||
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
|
24
src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx
Normal file
24
src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx
Normal file
@ -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 <GEOMAlgo_WireSplitter.jxx>
|
||||
|
||||
|
||||
|
||||
|
31
src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx
Normal file
31
src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx
Normal file
@ -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 <TopoDS_Face.hxx>
|
||||
#endif
|
||||
#ifndef _TopTools_ListOfShape_HeaderFile
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _BOPTColStd_ListOfListOfShape_HeaderFile
|
||||
#include <BOPTColStd_ListOfListOfShape.hxx>
|
||||
#endif
|
||||
#ifndef _GEOMAlgo_WireSplitter_HeaderFile
|
||||
#include <GEOMAlgo_WireSplitter.hxx>
|
||||
#endif
|
@ -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 <Standard_Macro.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _Handle_TCollection_MapNode_HeaderFile
|
||||
#include <Handle_TCollection_MapNode.hxx>
|
||||
#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
|
@ -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 <Standard_Macro.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _Handle_TCollection_MapNode_HeaderFile
|
||||
#include <Handle_TCollection_MapNode.hxx>
|
||||
#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
|
@ -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 <Standard_Macro.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _Handle_TCollection_MapNode_HeaderFile
|
||||
#include <Handle_TCollection_MapNode.hxx>
|
||||
#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
|
72
src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx
Normal file
72
src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx
Normal file
@ -0,0 +1,72 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile
|
||||
#define _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile
|
||||
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _Handle_TCollection_MapNode_HeaderFile
|
||||
#include <Handle_TCollection_MapNode.hxx>
|
||||
#endif
|
||||
|
||||
class Standard_Transient;
|
||||
class Handle_Standard_Type;
|
||||
class Handle(TCollection_MapNode);
|
||||
class NMTDS_ListNodeOfListOfPassKey;
|
||||
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey);
|
||||
|
||||
class Handle(NMTDS_ListNodeOfListOfPassKey) : public Handle(TCollection_MapNode) {
|
||||
public:
|
||||
Handle(NMTDS_ListNodeOfListOfPassKey)():Handle(TCollection_MapNode)() {}
|
||||
Handle(NMTDS_ListNodeOfListOfPassKey)(const Handle(NMTDS_ListNodeOfListOfPassKey)& aHandle) : Handle(TCollection_MapNode)(aHandle)
|
||||
{
|
||||
}
|
||||
|
||||
Handle(NMTDS_ListNodeOfListOfPassKey)(const NMTDS_ListNodeOfListOfPassKey* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem)
|
||||
{
|
||||
}
|
||||
|
||||
Handle(NMTDS_ListNodeOfListOfPassKey)& operator=(const Handle(NMTDS_ListNodeOfListOfPassKey)& aHandle)
|
||||
{
|
||||
Assign(aHandle.Access());
|
||||
return *this;
|
||||
}
|
||||
|
||||
Handle(NMTDS_ListNodeOfListOfPassKey)& operator=(const NMTDS_ListNodeOfListOfPassKey* anItem)
|
||||
{
|
||||
Assign((Standard_Transient *)anItem);
|
||||
return *this;
|
||||
}
|
||||
|
||||
NMTDS_ListNodeOfListOfPassKey* operator->() const
|
||||
{
|
||||
return (NMTDS_ListNodeOfListOfPassKey *)ControlAccess();
|
||||
}
|
||||
|
||||
// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfPassKey)();
|
||||
|
||||
Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfPassKey) DownCast(const Handle(Standard_Transient)& AnObject);
|
||||
};
|
||||
#endif
|
72
src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx
Normal file
72
src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx
Normal file
@ -0,0 +1,72 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile
|
||||
#define _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile
|
||||
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _Handle_TCollection_MapNode_HeaderFile
|
||||
#include <Handle_TCollection_MapNode.hxx>
|
||||
#endif
|
||||
|
||||
class Standard_Transient;
|
||||
class Handle_Standard_Type;
|
||||
class Handle(TCollection_MapNode);
|
||||
class NMTDS_ListNodeOfListOfPassKeyBoolean;
|
||||
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean);
|
||||
|
||||
class Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) : public Handle(TCollection_MapNode) {
|
||||
public:
|
||||
Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)():Handle(TCollection_MapNode)() {}
|
||||
Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& aHandle) : Handle(TCollection_MapNode)(aHandle)
|
||||
{
|
||||
}
|
||||
|
||||
Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(const NMTDS_ListNodeOfListOfPassKeyBoolean* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem)
|
||||
{
|
||||
}
|
||||
|
||||
Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& operator=(const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& aHandle)
|
||||
{
|
||||
Assign(aHandle.Access());
|
||||
return *this;
|
||||
}
|
||||
|
||||
Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& operator=(const NMTDS_ListNodeOfListOfPassKeyBoolean* anItem)
|
||||
{
|
||||
Assign((Standard_Transient *)anItem);
|
||||
return *this;
|
||||
}
|
||||
|
||||
NMTDS_ListNodeOfListOfPassKeyBoolean* operator->() const
|
||||
{
|
||||
return (NMTDS_ListNodeOfListOfPassKeyBoolean *)ControlAccess();
|
||||
}
|
||||
|
||||
// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)();
|
||||
|
||||
Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) DownCast(const Handle(Standard_Transient)& AnObject);
|
||||
};
|
||||
#endif
|
72
src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx
Normal file
72
src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx
Normal file
@ -0,0 +1,72 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile
|
||||
#define _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile
|
||||
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _Handle_TCollection_MapNode_HeaderFile
|
||||
#include <Handle_TCollection_MapNode.hxx>
|
||||
#endif
|
||||
|
||||
class Standard_Transient;
|
||||
class Handle_Standard_Type;
|
||||
class Handle(TCollection_MapNode);
|
||||
class NMTDS_StdMapNodeOfMapOfPassKey;
|
||||
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey);
|
||||
|
||||
class Handle(NMTDS_StdMapNodeOfMapOfPassKey) : public Handle(TCollection_MapNode) {
|
||||
public:
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKey)():Handle(TCollection_MapNode)() {}
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKey)(const Handle(NMTDS_StdMapNodeOfMapOfPassKey)& aHandle) : Handle(TCollection_MapNode)(aHandle)
|
||||
{
|
||||
}
|
||||
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKey)(const NMTDS_StdMapNodeOfMapOfPassKey* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem)
|
||||
{
|
||||
}
|
||||
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKey)& operator=(const Handle(NMTDS_StdMapNodeOfMapOfPassKey)& aHandle)
|
||||
{
|
||||
Assign(aHandle.Access());
|
||||
return *this;
|
||||
}
|
||||
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKey)& operator=(const NMTDS_StdMapNodeOfMapOfPassKey* anItem)
|
||||
{
|
||||
Assign((Standard_Transient *)anItem);
|
||||
return *this;
|
||||
}
|
||||
|
||||
NMTDS_StdMapNodeOfMapOfPassKey* operator->() const
|
||||
{
|
||||
return (NMTDS_StdMapNodeOfMapOfPassKey *)ControlAccess();
|
||||
}
|
||||
|
||||
// Standard_EXPORT ~Handle(NMTDS_StdMapNodeOfMapOfPassKey)();
|
||||
|
||||
Standard_EXPORT static const Handle(NMTDS_StdMapNodeOfMapOfPassKey) DownCast(const Handle(Standard_Transient)& AnObject);
|
||||
};
|
||||
#endif
|
72
src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx
Normal file
72
src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx
Normal file
@ -0,0 +1,72 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile
|
||||
#define _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile
|
||||
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _Handle_TCollection_MapNode_HeaderFile
|
||||
#include <Handle_TCollection_MapNode.hxx>
|
||||
#endif
|
||||
|
||||
class Standard_Transient;
|
||||
class Handle_Standard_Type;
|
||||
class Handle(TCollection_MapNode);
|
||||
class NMTDS_StdMapNodeOfMapOfPassKeyBoolean;
|
||||
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean);
|
||||
|
||||
class Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) : public Handle(TCollection_MapNode) {
|
||||
public:
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)():Handle(TCollection_MapNode)() {}
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& aHandle) : Handle(TCollection_MapNode)(aHandle)
|
||||
{
|
||||
}
|
||||
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(const NMTDS_StdMapNodeOfMapOfPassKeyBoolean* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem)
|
||||
{
|
||||
}
|
||||
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& operator=(const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& aHandle)
|
||||
{
|
||||
Assign(aHandle.Access());
|
||||
return *this;
|
||||
}
|
||||
|
||||
Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& operator=(const NMTDS_StdMapNodeOfMapOfPassKeyBoolean* anItem)
|
||||
{
|
||||
Assign((Standard_Transient *)anItem);
|
||||
return *this;
|
||||
}
|
||||
|
||||
NMTDS_StdMapNodeOfMapOfPassKeyBoolean* operator->() const
|
||||
{
|
||||
return (NMTDS_StdMapNodeOfMapOfPassKeyBoolean *)ControlAccess();
|
||||
}
|
||||
|
||||
// Standard_EXPORT ~Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)();
|
||||
|
||||
Standard_EXPORT static const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) DownCast(const Handle(Standard_Transient)& AnObject);
|
||||
};
|
||||
#endif
|
75
src/NMTDS/NMTDS_Iterator.cdl
Executable file
75
src/NMTDS/NMTDS_Iterator.cdl
Executable file
@ -0,0 +1,75 @@
|
||||
-- Copyright (C) 2006 SAMTECH
|
||||
--
|
||||
-- This library is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU Lesser General Public
|
||||
-- License as published by the Free Software Foundation; either
|
||||
-- version 2.1 of the License.
|
||||
--
|
||||
-- This library is distributed in the hope that it will be useful
|
||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
-- Lesser General Public License for more details.
|
||||
--
|
||||
-- You should have received a copy of the GNU Lesser General Public
|
||||
-- License along with this library; if not, write to the Free Software
|
||||
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
--
|
||||
-- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
--
|
||||
-- File: NMTDS_Iterator.cdl
|
||||
-- Created: Sun May 07 14:58:16 2006
|
||||
-- Author: Peter KURNEV
|
||||
-- <peter@PREFEX>
|
||||
|
||||
|
||||
|
||||
class Iterator from NMTDS
|
||||
|
||||
---Purpose:
|
||||
|
||||
uses
|
||||
ShapeEnum from TopAbs,
|
||||
ShapesDataStructure from NMTDS,
|
||||
PShapesDataStructure from NMTDS,
|
||||
ListOfPassKeyBoolean from NMTDS,
|
||||
ListIteratorOfListOfPassKeyBoolean from NMTDS
|
||||
--raises
|
||||
|
||||
is
|
||||
Create
|
||||
returns Iterator from NMTDS;
|
||||
---C++: alias "Standard_EXPORT virtual ~NMTDS_Iterator();"
|
||||
|
||||
|
||||
SetDS(me:out;
|
||||
pDS:PShapesDataStructure from NMTDS);
|
||||
|
||||
DS(me)
|
||||
returns ShapesDataStructure from NMTDS;
|
||||
---C++:return const &
|
||||
|
||||
Initialize(me: out;
|
||||
aType1: ShapeEnum from TopAbs;
|
||||
aType2: ShapeEnum from TopAbs);
|
||||
More(me)
|
||||
returns Boolean from Standard;
|
||||
|
||||
Next(me: out);
|
||||
|
||||
Current(me; aIndex1:out Integer from Standard;
|
||||
aIndex2:out Integer from Standard;
|
||||
aWithSubShape: out Boolean from Standard);
|
||||
|
||||
Prepare(me:out);
|
||||
|
||||
ExpectedLength(me)
|
||||
returns Integer from Standard;
|
||||
|
||||
fields
|
||||
myPDS :PShapesDataStructure from NMTDS is protected;
|
||||
myLists :ListOfPassKeyBoolean from NMTDS [6] is protected;
|
||||
myIterator :ListIteratorOfListOfPassKeyBoolean from NMTDS is protected;
|
||||
myEmptyList:ListOfPassKeyBoolean from NMTDS is protected;
|
||||
myLength :Integer from Standard is protected;
|
||||
|
||||
end Iterator;
|
446
src/NMTDS/NMTDS_Iterator.cxx
Executable file
446
src/NMTDS/NMTDS_Iterator.cxx
Executable file
@ -0,0 +1,446 @@
|
||||
// Copyright (C) 2006 SAMTECH
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
//
|
||||
// File: NMTDS_Iterator.cxx
|
||||
// Created: Sun May 07 15:04:41 2006
|
||||
// Author: Peter KURNEV
|
||||
// <peter@PREFEX>
|
||||
|
||||
|
||||
#include <NMTDS_Iterator.ixx>
|
||||
#include <NMTDS_CArray1OfIndexRange.hxx>
|
||||
#include <NMTDS_IndexRange.hxx>
|
||||
#include <Bnd_Box.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TColStd_ListOfInteger.hxx>
|
||||
#include <TColStd_Array1OfListOfInteger.hxx>
|
||||
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
||||
#include <TColStd_MapOfInteger.hxx>
|
||||
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
|
||||
#include <NMTDS_PassKeyBoolean.hxx>
|
||||
#include <NMTDS_MapOfPassKeyBoolean.hxx>
|
||||
|
||||
static
|
||||
Bnd_Box& ComputeBoxEx(const Standard_Integer iX,
|
||||
NMTDS_ShapesDataStructure* pDS,
|
||||
Bnd_Box* pBoxes);
|
||||
static
|
||||
Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType);
|
||||
|
||||
static
|
||||
Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType1,
|
||||
const TopAbs_ShapeEnum aType2);
|
||||
static
|
||||
void PropagateState(const Standard_Integer aIDS1,
|
||||
const Standard_Integer aIDS2,
|
||||
const Standard_Integer iStatus,
|
||||
const Standard_Integer aNb,
|
||||
NMTDS_ShapesDataStructure* pDS,
|
||||
Standard_Integer *pTable);
|
||||
static
|
||||
void FillSuccessors(const Standard_Integer aIDS,
|
||||
NMTDS_ShapesDataStructure* pDS,
|
||||
TColStd_MapOfInteger& aMS);
|
||||
|
||||
//=======================================================================
|
||||
//function : NMTDS_Iterator
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
NMTDS_Iterator::NMTDS_Iterator()
|
||||
{
|
||||
myPDS=NULL;
|
||||
myLength=0;
|
||||
}
|
||||
//=======================================================================
|
||||
//function : ~NMTDS_Iterator
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
NMTDS_Iterator::~NMTDS_Iterator()
|
||||
{
|
||||
}
|
||||
//=======================================================================
|
||||
// function: SetDS
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
void NMTDS_Iterator::SetDS(const NMTDS_PShapesDataStructure& aDS)
|
||||
{
|
||||
myPDS=aDS;
|
||||
}
|
||||
//=======================================================================
|
||||
// function: DS
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
const NMTDS_ShapesDataStructure& NMTDS_Iterator::DS()const
|
||||
{
|
||||
return *myPDS;
|
||||
}
|
||||
//=======================================================================
|
||||
// function: ExpectedLength
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
Standard_Integer NMTDS_Iterator::ExpectedLength() const
|
||||
{
|
||||
return myLength;
|
||||
}
|
||||
//=======================================================================
|
||||
// function: Initialize
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
void NMTDS_Iterator::Initialize(const TopAbs_ShapeEnum aType1,
|
||||
const TopAbs_ShapeEnum aType2)
|
||||
{
|
||||
Standard_Integer iX;
|
||||
//
|
||||
iX=TypeToInteger(aType1, aType2);
|
||||
if (iX>=0) {
|
||||
myIterator.Initialize(myLists[iX]);
|
||||
myLength=myLists[iX].Extent();
|
||||
}
|
||||
else {
|
||||
myIterator.Initialize(myEmptyList);
|
||||
myLength=0;
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
// function: More
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
Standard_Boolean NMTDS_Iterator::More()const
|
||||
{
|
||||
return myIterator.More();
|
||||
}
|
||||
//=======================================================================
|
||||
// function: Next
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
void NMTDS_Iterator::Next()
|
||||
{
|
||||
myIterator.Next();
|
||||
}
|
||||
//=======================================================================
|
||||
// function: Current
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
void NMTDS_Iterator::Current(Standard_Integer& aIndex1,
|
||||
Standard_Integer& aIndex2,
|
||||
Standard_Boolean& aWithSubShape) const
|
||||
{
|
||||
const NMTDS_PassKeyBoolean& aPKB=myIterator.Value();
|
||||
aPKB.Ids(aIndex1, aIndex2);
|
||||
aWithSubShape=aPKB.Flag();
|
||||
}
|
||||
//=======================================================================
|
||||
// function: Prepare
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
void NMTDS_Iterator::Prepare()
|
||||
{
|
||||
Standard_Boolean bFlag;
|
||||
Standard_Integer aNb, aNb2, aNbR, iR, jR1, jR2, jR;
|
||||
Standard_Integer *pTable, i, j, k, iT1, iT2, i1, i2, j1, j2, iT, jT;
|
||||
Standard_Integer iStatus, iX;
|
||||
Bnd_Box *pBoxes, aBox;
|
||||
TColStd_ListIteratorOfListOfInteger aItIT, aItJT;
|
||||
TopAbs_ShapeEnum aTi, aTj;
|
||||
NMTDS_PassKeyBoolean aPKXB;
|
||||
NMTDS_MapOfPassKeyBoolean aMPKXB;
|
||||
//
|
||||
if (myPDS==NULL){
|
||||
return;
|
||||
}
|
||||
//
|
||||
myLength=0;
|
||||
for (i=0; i<6; ++i) {
|
||||
myLists[i].Clear();
|
||||
}
|
||||
//
|
||||
aNb=myPDS->NumberOfShapesOfTheObject();
|
||||
aNb2=aNb*aNb;
|
||||
//
|
||||
pTable=new Standard_Integer [aNb2];
|
||||
pBoxes=new Bnd_Box [aNb];
|
||||
//
|
||||
// 1. Set status to Unknown
|
||||
for (i=0; i<aNb2; ++i) {
|
||||
pTable[i]=0; // Unknown
|
||||
}
|
||||
//
|
||||
// 2. Treat Ranges
|
||||
// Set status to SameRange;
|
||||
// Compute enlarged boxes ;
|
||||
const NMTDS_CArray1OfIndexRange& aRanges=myPDS->Ranges();
|
||||
aNbR=aRanges.Extent();
|
||||
for (iR=1; iR<=aNbR; ++iR) {
|
||||
const NMTDS_IndexRange& aRange=aRanges(iR);
|
||||
jR1=aRange.First();
|
||||
jR2=aRange.Last();
|
||||
for (i=jR1; i<=jR2; ++i) {
|
||||
for (j=i; j<=jR2; ++j) {
|
||||
k=(i-1)*aNb+(j-1);
|
||||
pTable[k]=4; //SameRange
|
||||
}
|
||||
//
|
||||
ComputeBoxEx(i, myPDS, pBoxes);
|
||||
}
|
||||
}
|
||||
//
|
||||
// 3. Intersect shapes by ranges
|
||||
iT1=TypeToInteger(TopAbs_COMPOUND);
|
||||
iT2=TypeToInteger(TopAbs_VERTEX);
|
||||
//
|
||||
for (iR=1; iR<aNbR; ++iR) {
|
||||
TColStd_Array1OfListOfInteger aALIR(iT1, iT2), aALJR(iT1, iT2);
|
||||
//
|
||||
const NMTDS_IndexRange& aRi=aRanges(iR);
|
||||
i1=aRi.First();
|
||||
i2=aRi.Last();
|
||||
for (i=i1; i<=i2; ++i) {
|
||||
aALIR(TypeToInteger(myPDS->GetShapeType(i))).Append(i);
|
||||
}
|
||||
//
|
||||
for (jR=2; jR<=aNbR; ++jR) {
|
||||
const NMTDS_IndexRange& aRj=aRanges(jR);
|
||||
j1=aRj.First();
|
||||
j2=aRj.Last();
|
||||
for (j=j1; j<=j2; ++j) {
|
||||
aALJR(TypeToInteger(myPDS->GetShapeType(j))).Append(j);
|
||||
}
|
||||
}
|
||||
//
|
||||
for (iT=iT1; iT<=iT2; ++iT) {
|
||||
const TColStd_ListOfInteger& aLIT=aALIR(iT);
|
||||
if (aLIT.IsEmpty()) {
|
||||
continue;
|
||||
}
|
||||
for (jT=iT1; jT<=iT2; ++jT) {
|
||||
const TColStd_ListOfInteger& aLJT=aALJR(jT);
|
||||
if (aLJT.IsEmpty()) {
|
||||
continue;
|
||||
}
|
||||
//
|
||||
aItIT.Initialize(aLIT);
|
||||
for (; aItIT.More(); aItIT.Next()) {
|
||||
aItJT.Initialize(aLJT);
|
||||
for (; aItJT.More(); aItJT.Next()) {
|
||||
i1=aItIT.Value();
|
||||
j1=aItJT.Value();
|
||||
if (i1>j1) {
|
||||
iX=i1;
|
||||
i1=j1;
|
||||
j1=iX;
|
||||
}
|
||||
//
|
||||
i=i1-1;
|
||||
j=j1-1;
|
||||
k=i*aNb+j;
|
||||
//
|
||||
if (pTable[k]!=0 && pTable[k]!=2) {
|
||||
continue;
|
||||
}
|
||||
// enlarged boxes
|
||||
const Bnd_Box& aBoxEi=pBoxes[i];
|
||||
const Bnd_Box& aBoxEj=pBoxes[j];
|
||||
if (aBoxEi.IsOut(aBoxEj)) {
|
||||
iStatus=3; // Non-intersected
|
||||
PropagateState(i1, j1, iStatus, aNb, myPDS, pTable);
|
||||
}
|
||||
else {
|
||||
iStatus=1; // Bounding boxes are intersected
|
||||
const Bnd_Box& aBoxi=myPDS->GetBoundingBox(i1);
|
||||
const Bnd_Box& aBoxj=myPDS->GetBoundingBox(j1);
|
||||
if (aBoxi.IsOut(aBoxj)) {
|
||||
iStatus=2; // Bounding boxes of Sub-shapes are intersected
|
||||
}
|
||||
pTable[k]=iStatus;
|
||||
//
|
||||
aTi=myPDS->GetShapeType(i1);
|
||||
aTj=myPDS->GetShapeType(j1);
|
||||
iX=TypeToInteger(aTi, aTj);
|
||||
//
|
||||
if (iX>=0) {
|
||||
aPKXB.SetIds(i1, j1);
|
||||
if (aMPKXB.Add(aPKXB)) {
|
||||
bFlag=Standard_False;
|
||||
if(iStatus==2) {
|
||||
bFlag=!bFlag;
|
||||
}
|
||||
aPKXB.SetFlag(bFlag);
|
||||
myLists[iX].Append(aPKXB);
|
||||
}
|
||||
}//if (iX>=0) {
|
||||
}// else {
|
||||
}//for (; aItJT.More(); aItJT.Next()) {
|
||||
}//for (; aItIT.More(); aItIT.Next()) {
|
||||
}//for (jT=iT1; jT<=iT2; ++jT) {
|
||||
}//for (iT=iT1; iT<=iT2; ++iT) {
|
||||
}
|
||||
//
|
||||
//
|
||||
delete [] (Bnd_Box*)pBoxes;
|
||||
delete [] (Standard_Integer*)pTable;
|
||||
}
|
||||
//=======================================================================
|
||||
// function: PropagateState
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
void PropagateState(const Standard_Integer aIDS1,
|
||||
const Standard_Integer aIDS2,
|
||||
const Standard_Integer iStatus,
|
||||
const Standard_Integer aNb,
|
||||
NMTDS_ShapesDataStructure* pDS,
|
||||
Standard_Integer *pTable)
|
||||
{
|
||||
Standard_Integer i, j, k, i1, j1, iX, i11, j11;
|
||||
TColStd_MapOfInteger aMS1, aMS2;
|
||||
TColStd_MapIteratorOfMapOfInteger aIt1, aIt2;
|
||||
//
|
||||
FillSuccessors(aIDS1, pDS, aMS1);
|
||||
FillSuccessors(aIDS2, pDS, aMS2);
|
||||
//
|
||||
aIt1.Initialize(aMS1);
|
||||
for (; aIt1.More(); aIt1.Next()) {
|
||||
i1=aIt1.Key();
|
||||
//
|
||||
aIt2.Initialize(aMS2);
|
||||
for (; aIt2.More(); aIt2.Next()) {
|
||||
j1=aIt2.Key();
|
||||
//
|
||||
i11=i1;
|
||||
j11=j1;
|
||||
//
|
||||
if (i1>j1) {
|
||||
iX=i11;
|
||||
i11=j11;
|
||||
j11=iX;
|
||||
}
|
||||
i=i11-1;
|
||||
j=j11-1;
|
||||
k=i*aNb+j;
|
||||
if (!pTable[k]) {
|
||||
pTable[k]=iStatus;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
// function: FillSuccessors
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
void FillSuccessors(const Standard_Integer aIDS,
|
||||
NMTDS_ShapesDataStructure* pDS,
|
||||
TColStd_MapOfInteger& aMS)
|
||||
{
|
||||
Standard_Integer i, aNbS, iDS1;
|
||||
//
|
||||
aMS.Add(aIDS);
|
||||
aNbS=pDS->NumberOfSuccessors(aIDS);
|
||||
for (i=1; i<=aNbS; ++i) {
|
||||
iDS1=pDS->GetSuccessor(aIDS, i);
|
||||
FillSuccessors(iDS1, pDS, aMS);
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
// function: ComputeBoxEx
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
Bnd_Box& ComputeBoxEx(const Standard_Integer aIndexDS,
|
||||
NMTDS_ShapesDataStructure* pDS,
|
||||
Bnd_Box* pBoxes)
|
||||
{
|
||||
Standard_Boolean bIsVoid;
|
||||
Standard_Integer iX;
|
||||
//
|
||||
iX=aIndexDS-1;
|
||||
Bnd_Box& aBoxEx=pBoxes[iX];
|
||||
//
|
||||
bIsVoid=aBoxEx.IsVoid();
|
||||
if (bIsVoid) {
|
||||
Standard_Integer i, aNb, iS;
|
||||
//
|
||||
const Bnd_Box& aBox=pDS->GetBoundingBox(aIndexDS);
|
||||
aBoxEx.Add(aBox);
|
||||
//
|
||||
aNb=pDS->NumberOfSuccessors(aIndexDS);
|
||||
for (i=1; i<=aNb; ++i) {
|
||||
iS=pDS->GetSuccessor(aIndexDS, i);
|
||||
Bnd_Box& aBoxS=ComputeBoxEx(iS, pDS, pBoxes);
|
||||
aBoxEx.Add(aBoxS);
|
||||
}
|
||||
}
|
||||
return aBoxEx;
|
||||
}
|
||||
//=======================================================================
|
||||
// function: TypeToInteger
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType)
|
||||
{
|
||||
return (Standard_Integer)aType;
|
||||
}
|
||||
//=======================================================================
|
||||
// function: TypeToInteger
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType1,
|
||||
const TopAbs_ShapeEnum aType2)
|
||||
{
|
||||
Standard_Integer iRet, iT1, iT2, iX;
|
||||
//
|
||||
iRet=-1;
|
||||
iT1=(Standard_Integer)aType1;
|
||||
iT2=(Standard_Integer)aType2;
|
||||
//
|
||||
iX=iT2*10+iT1;
|
||||
switch (iX) {
|
||||
case 77:
|
||||
iRet=5; // VV
|
||||
break;
|
||||
case 76:
|
||||
case 67:
|
||||
iRet=4; // VE
|
||||
break;
|
||||
case 74:
|
||||
case 47:
|
||||
iRet=2; // VF
|
||||
break;
|
||||
case 66:
|
||||
iRet=3; // EE
|
||||
break;
|
||||
case 64:
|
||||
case 46:
|
||||
iRet=1; // EF
|
||||
break;
|
||||
case 44:
|
||||
iRet=0; // FF
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return iRet;
|
||||
}
|
||||
|
||||
/*
|
||||
printf(" *** pTable ***\n");
|
||||
for (i=0; i<aNb; ++i) {
|
||||
for (j=0; j<aNb; ++j) {
|
||||
k=i*aNb+j;
|
||||
printf(" %2d", pTable[k]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
*/
|
138
src/NMTDS/NMTDS_Iterator.hxx
Normal file
138
src/NMTDS/NMTDS_Iterator.hxx
Normal file
@ -0,0 +1,138 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#ifndef _NMTDS_Iterator_HeaderFile
|
||||
#define _NMTDS_Iterator_HeaderFile
|
||||
|
||||
#ifndef _NMTDS_PShapesDataStructure_HeaderFile
|
||||
#include <NMTDS_PShapesDataStructure.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile
|
||||
#include <NMTDS_ListOfPassKeyBoolean.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile
|
||||
#include <NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
#ifndef _TopAbs_ShapeEnum_HeaderFile
|
||||
#include <TopAbs_ShapeEnum.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
class NMTDS_ShapesDataStructure;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
class NMTDS_Iterator {
|
||||
|
||||
public:
|
||||
|
||||
void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// Methods PUBLIC
|
||||
//
|
||||
|
||||
|
||||
Standard_EXPORT NMTDS_Iterator();
|
||||
Standard_EXPORT virtual ~NMTDS_Iterator();
|
||||
|
||||
|
||||
Standard_EXPORT void SetDS(const NMTDS_PShapesDataStructure& pDS) ;
|
||||
|
||||
|
||||
Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const;
|
||||
|
||||
|
||||
Standard_EXPORT void Initialize(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Boolean More() const;
|
||||
|
||||
|
||||
Standard_EXPORT void Next() ;
|
||||
|
||||
|
||||
Standard_EXPORT void Current(Standard_Integer& aIndex1,Standard_Integer& aIndex2,Standard_Boolean& aWithSubShape) const;
|
||||
|
||||
|
||||
Standard_EXPORT void Prepare() ;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Integer ExpectedLength() const;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
NMTDS_PShapesDataStructure myPDS;
|
||||
NMTDS_ListOfPassKeyBoolean myLists[6];
|
||||
NMTDS_ListIteratorOfListOfPassKeyBoolean myIterator;
|
||||
NMTDS_ListOfPassKeyBoolean myEmptyList;
|
||||
Standard_Integer myLength;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// other Inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
24
src/NMTDS/NMTDS_Iterator.ixx
Normal file
24
src/NMTDS/NMTDS_Iterator.ixx
Normal file
@ -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 <NMTDS_Iterator.jxx>
|
||||
|
||||
|
||||
|
||||
|
25
src/NMTDS/NMTDS_Iterator.jxx
Normal file
25
src/NMTDS/NMTDS_Iterator.jxx
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#ifndef _NMTDS_ShapesDataStructure_HeaderFile
|
||||
#include <NMTDS_ShapesDataStructure.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_Iterator_HeaderFile
|
||||
#include <NMTDS_Iterator.hxx>
|
||||
#endif
|
141
src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx
Normal file
141
src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx
Normal file
@ -0,0 +1,141 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile
|
||||
#define _NMTDS_ListIteratorOfListOfPassKey_HeaderFile
|
||||
|
||||
#ifndef _Standard_Address_HeaderFile
|
||||
#include <Standard_Address.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile
|
||||
#include <Handle_NMTDS_ListNodeOfListOfPassKey.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
class Standard_NoMoreObject;
|
||||
class Standard_NoSuchObject;
|
||||
class NMTDS_ListOfPassKey;
|
||||
class NMTDS_PassKey;
|
||||
class NMTDS_ListNodeOfListOfPassKey;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
class NMTDS_ListIteratorOfListOfPassKey {
|
||||
|
||||
public:
|
||||
|
||||
void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// Methods PUBLIC
|
||||
//
|
||||
|
||||
|
||||
Standard_EXPORT NMTDS_ListIteratorOfListOfPassKey();
|
||||
|
||||
|
||||
Standard_EXPORT NMTDS_ListIteratorOfListOfPassKey(const NMTDS_ListOfPassKey& L);
|
||||
|
||||
|
||||
Standard_EXPORT void Initialize(const NMTDS_ListOfPassKey& L) ;
|
||||
|
||||
Standard_Boolean More() const;
|
||||
|
||||
|
||||
Standard_EXPORT void Next() ;
|
||||
|
||||
|
||||
Standard_EXPORT NMTDS_PassKey& Value() const;
|
||||
|
||||
|
||||
friend class NMTDS_ListOfPassKey;
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
Standard_Address current;
|
||||
Standard_Address previous;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#define Item NMTDS_PassKey
|
||||
#define Item_hxx <NMTDS_PassKey.hxx>
|
||||
#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey
|
||||
#define TCollection_ListNode_hxx <NMTDS_ListNodeOfListOfPassKey.hxx>
|
||||
#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey
|
||||
#define TCollection_ListIterator_hxx <NMTDS_ListIteratorOfListOfPassKey.hxx>
|
||||
#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey
|
||||
#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_()
|
||||
#define TCollection_List NMTDS_ListOfPassKey
|
||||
#define TCollection_List_hxx <NMTDS_ListOfPassKey.hxx>
|
||||
|
||||
#include <TCollection_ListIterator.lxx>
|
||||
|
||||
#undef Item
|
||||
#undef Item_hxx
|
||||
#undef TCollection_ListNode
|
||||
#undef TCollection_ListNode_hxx
|
||||
#undef TCollection_ListIterator
|
||||
#undef TCollection_ListIterator_hxx
|
||||
#undef Handle_TCollection_ListNode
|
||||
#undef TCollection_ListNode_Type_
|
||||
#undef TCollection_List
|
||||
#undef TCollection_List_hxx
|
||||
|
||||
|
||||
// other Inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
141
src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx
Normal file
141
src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx
Normal file
@ -0,0 +1,141 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile
|
||||
#define _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile
|
||||
|
||||
#ifndef _Standard_Address_HeaderFile
|
||||
#include <Standard_Address.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile
|
||||
#include <Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
class Standard_NoMoreObject;
|
||||
class Standard_NoSuchObject;
|
||||
class NMTDS_ListOfPassKeyBoolean;
|
||||
class NMTDS_PassKeyBoolean;
|
||||
class NMTDS_ListNodeOfListOfPassKeyBoolean;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
class NMTDS_ListIteratorOfListOfPassKeyBoolean {
|
||||
|
||||
public:
|
||||
|
||||
void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// Methods PUBLIC
|
||||
//
|
||||
|
||||
|
||||
Standard_EXPORT NMTDS_ListIteratorOfListOfPassKeyBoolean();
|
||||
|
||||
|
||||
Standard_EXPORT NMTDS_ListIteratorOfListOfPassKeyBoolean(const NMTDS_ListOfPassKeyBoolean& L);
|
||||
|
||||
|
||||
Standard_EXPORT void Initialize(const NMTDS_ListOfPassKeyBoolean& L) ;
|
||||
|
||||
Standard_Boolean More() const;
|
||||
|
||||
|
||||
Standard_EXPORT void Next() ;
|
||||
|
||||
|
||||
Standard_EXPORT NMTDS_PassKeyBoolean& Value() const;
|
||||
|
||||
|
||||
friend class NMTDS_ListOfPassKeyBoolean;
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
Standard_Address current;
|
||||
Standard_Address previous;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#define Item NMTDS_PassKeyBoolean
|
||||
#define Item_hxx <NMTDS_PassKeyBoolean.hxx>
|
||||
#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean
|
||||
#define TCollection_ListNode_hxx <NMTDS_ListNodeOfListOfPassKeyBoolean.hxx>
|
||||
#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean
|
||||
#define TCollection_ListIterator_hxx <NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx>
|
||||
#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean
|
||||
#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_()
|
||||
#define TCollection_List NMTDS_ListOfPassKeyBoolean
|
||||
#define TCollection_List_hxx <NMTDS_ListOfPassKeyBoolean.hxx>
|
||||
|
||||
#include <TCollection_ListIterator.lxx>
|
||||
|
||||
#undef Item
|
||||
#undef Item_hxx
|
||||
#undef TCollection_ListNode
|
||||
#undef TCollection_ListNode_hxx
|
||||
#undef TCollection_ListIterator
|
||||
#undef TCollection_ListIterator_hxx
|
||||
#undef Handle_TCollection_ListNode
|
||||
#undef TCollection_ListNode_Type_
|
||||
#undef TCollection_List
|
||||
#undef TCollection_List_hxx
|
||||
|
||||
|
||||
// other Inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
50
src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx
Normal file
50
src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx
Normal file
@ -0,0 +1,50 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#include <NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx>
|
||||
|
||||
#ifndef _Standard_NoMoreObject_HeaderFile
|
||||
#include <Standard_NoMoreObject.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_NoSuchObject_HeaderFile
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile
|
||||
#include <NMTDS_ListOfPassKeyBoolean.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_PassKeyBoolean_HeaderFile
|
||||
#include <NMTDS_PassKeyBoolean.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile
|
||||
#include <NMTDS_ListNodeOfListOfPassKeyBoolean.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#define Item NMTDS_PassKeyBoolean
|
||||
#define Item_hxx <NMTDS_PassKeyBoolean.hxx>
|
||||
#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean
|
||||
#define TCollection_ListNode_hxx <NMTDS_ListNodeOfListOfPassKeyBoolean.hxx>
|
||||
#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean
|
||||
#define TCollection_ListIterator_hxx <NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx>
|
||||
#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean
|
||||
#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_()
|
||||
#define TCollection_List NMTDS_ListOfPassKeyBoolean
|
||||
#define TCollection_List_hxx <NMTDS_ListOfPassKeyBoolean.hxx>
|
||||
#include <TCollection_ListIterator.gxx>
|
||||
|
50
src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx
Normal file
50
src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx
Normal file
@ -0,0 +1,50 @@
|
||||
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||
|
||||
#include <NMTDS_ListIteratorOfListOfPassKey.hxx>
|
||||
|
||||
#ifndef _Standard_NoMoreObject_HeaderFile
|
||||
#include <Standard_NoMoreObject.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_NoSuchObject_HeaderFile
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_ListOfPassKey_HeaderFile
|
||||
#include <NMTDS_ListOfPassKey.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_PassKey_HeaderFile
|
||||
#include <NMTDS_PassKey.hxx>
|
||||
#endif
|
||||
#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile
|
||||
#include <NMTDS_ListNodeOfListOfPassKey.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
#define Item NMTDS_PassKey
|
||||
#define Item_hxx <NMTDS_PassKey.hxx>
|
||||
#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey
|
||||
#define TCollection_ListNode_hxx <NMTDS_ListNodeOfListOfPassKey.hxx>
|
||||
#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey
|
||||
#define TCollection_ListIterator_hxx <NMTDS_ListIteratorOfListOfPassKey.hxx>
|
||||
#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey
|
||||
#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_()
|
||||
#define TCollection_List NMTDS_ListOfPassKey
|
||||
#define TCollection_List_hxx <NMTDS_ListOfPassKey.hxx>
|
||||
#include <TCollection_ListIterator.gxx>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user