Salome HOME
Optimization of GetShapesOn<xxx> functionality
authorjfa <jfa@opencascade.com>
Wed, 23 Mar 2005 07:27:20 +0000 (07:27 +0000)
committerjfa <jfa@opencascade.com>
Wed, 23 Mar 2005 07:27:20 +0000 (07:27 +0000)
98 files changed:
idl/GEOM_Gen.idl
src/GEOMAlgo/GEOMAlgo.cdl
src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx [deleted file]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx
src/GEOMAlgo/GEOMAlgo_Gluer.cdl
src/GEOMAlgo/GEOMAlgo_Gluer.cxx
src/GEOMAlgo/GEOMAlgo_Gluer.hxx
src/GEOMAlgo/GEOMAlgo_Gluer.jxx
src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_PassKey.cdl
src/GEOMAlgo/GEOMAlgo_PassKey.cxx
src/GEOMAlgo/GEOMAlgo_PassKey.hxx
src/GEOMAlgo/GEOMAlgo_PassKey.jxx
src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl [new file with mode: 0755]
src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx [new file with mode: 0755]
src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl [deleted file]
src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx [deleted file]
src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx [deleted file]
src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl [deleted file]
src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx [deleted file]
src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx [deleted file]
src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl [deleted file]
src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx [deleted file]
src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx [deleted file]
src/GEOMAlgo/GEOMAlgo_StateCollector.cdl [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_StateCollector.cxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_StateCollector.hxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_StateCollector.ixx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_StateCollector.jxx [new file with mode: 0644]
src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl
src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx
src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx
src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx
src/GEOMAlgo/GEOMAlgo_Tools.cdl
src/GEOMAlgo/GEOMAlgo_Tools.cxx
src/GEOMAlgo/GEOMAlgo_Tools.hxx
src/GEOMAlgo/GEOMAlgo_Tools.jxx
src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl [deleted file]
src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx [deleted file]
src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx [deleted file]
src/GEOMAlgo/GEOMAlgo_WireSolid.cdl [deleted file]
src/GEOMAlgo/GEOMAlgo_WireSolid.cxx [deleted file]
src/GEOMAlgo/GEOMAlgo_WireSolid.hxx [deleted file]
src/GEOMAlgo/GEOMAlgo_WireSolid.ixx [deleted file]
src/GEOMAlgo/GEOMAlgo_WireSolid.jxx [deleted file]
src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx [new file with mode: 0644]
src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx [deleted file]
src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx [new file with mode: 0644]
src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx [new file with mode: 0644]
src/GEOMAlgo/Makefile.in
src/GEOMImpl/GEOMImpl_IGroupOperations.cxx
src/GEOMImpl/GEOMImpl_IGroupOperations.hxx
src/GEOMImpl/GEOMImpl_IShapesOperations.cxx
src/GEOMImpl/GEOMImpl_IShapesOperations.hxx
src/GEOM_I/GEOM_IGroupOperations_i.cc
src/GEOM_I/GEOM_IGroupOperations_i.hh
src/GEOM_I/GEOM_IShapesOperations_i.cc
src/GEOM_I/GEOM_IShapesOperations_i.hh
src/Makefile.in

index 891f401e02eb7ed37a7f77399a3497c69b6a386f..4e948ae5ecd2afa4c794f568b54828df68bad1cf 100644 (file)
@@ -962,6 +962,54 @@ module GEOM
                                in double      theRadius,
                                in shape_state theState);
 
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified plane by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theAx1 Vector (or line, or linear edge), specifying normal
+     *                direction and location of the plane to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs of all found sub-shapes.
+     */
+    ListOfLong GetShapesOnPlaneIDs (in GEOM_Object theShape,
+                                   in long        theShapeType,
+                                   in GEOM_Object theAx1,
+                                   in shape_state theState);
+
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified cylinder by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theAxis Vector (or line, or linear edge), specifying
+     *                 axis of the cylinder to find shapes on.
+     *  \param theRadius Radius of the cylinder to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs of all found sub-shapes.
+     */
+    ListOfLong GetShapesOnCylinderIDs (in GEOM_Object theShape,
+                                      in long        theShapeType,
+                                      in GEOM_Object theAxis,
+                                      in double      theRadius,
+                                      in shape_state theState);
+
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified sphere by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theCenter Point, specifying center of the sphere to find shapes on.
+     *  \param theRadius Radius of the sphere to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs of all found sub-shapes.
+     */
+    ListOfLong GetShapesOnSphereIDs (in GEOM_Object theShape,
+                                    in long        theShapeType,
+                                    in GEOM_Object theCenter,
+                                    in double      theRadius,
+                                    in shape_state theState);
+
     /*!
      *  Get sub-shape(s) of theShapeWhere, which are
      *  coincident with \a theShapeWhat or could be a part of it.
@@ -1880,6 +1928,20 @@ module GEOM
      */
     void DifferenceList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
 
+    /*!
+     *  Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+     *  \param theGroup is a GEOM group to which the new sub shapes are added.
+     *  \param theSubShapes is a list of IDs of sub shapes to be added.
+     */
+    void UnionIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
+
+    /*!
+     *  Removes from the group all the given shapes. No errors, if some shapes are not included.
+     *  \param theGroup is a GEOM group from which the sub-shapes are removed.
+     *  \param theSubShapes is a list of IDs of sub-shapes to be removed.
+     */
+    void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
+
     /*!
      *  Returns a type of sub objects stored in the group
      *  \param theGroup is a GEOM group which type is returned.
index 98ed925d1ff5d4d78b3fe794ad53a6ffa2aa0946..ec463fbcea18cc350d01da941b047fd4e4c7d1cc 100755 (executable)
@@ -14,7 +14,8 @@ uses
     TColStd, 
     Geom,     
     Bnd, 
-    gp,         
+    gp,          
+    GeomAdaptor,
     TopAbs,
     TopoDS, 
     TopTools, 
@@ -44,10 +45,12 @@ is
     class Gluer; 
     class GlueAnalyser; 
     class CoupleOfShapes; 
-    class PassKey; 
+    class PassKey;  
     class PassKeyMapHasher; 
+    class PassKeyShape;  
     class SurfaceTools; 
-    class Tools; 
+    class Tools;  
+    
     --      
     --  finder on 
     deferred class ShapeSolid;
@@ -56,10 +59,13 @@ is
     class VertexSolid; 
     class SolidSolid; 
     class FinderShapeOn; 
+    -- 
+    class FinderShapeOn1;
+    class StateCollector;
     --
     --  instantiations
-    class IndexedDataMapOfPassKeyListOfShape   
-       instantiates IndexedDataMap from TCollection (PassKey from GEOMAlgo, 
+    class IndexedDataMapOfPassKeyShapeListOfShape   
+       instantiates IndexedDataMap from TCollection (PassKeyShape from GEOMAlgo, 
                                                      ListOfShape from TopTools, 
                                                       PassKeyMapHasher from GEOMAlgo); 
      
@@ -80,5 +86,20 @@ is
        instantiates IndexedDataMap from TCollection    (Shape from TopoDS,
                                                         State from TopAbs,  
                                                         ShapeMapHasher from TopTools);
+--
+    class ListOfPnt  
+       instantiates List from TCollection  (Pnt from gp);
+
+--    class IndexedDataMapOfPassKeyInteger   
+--     instantiates IndexedDataMap from TCollection (PassKeyRoot from GEOMAlgo, 
+--                                                   Integer from Standard, 
+--                                                      PassKeyMapHasher from GEOMAlgo); 
+                                                      
+
+    class DataMapOfPassKeyInteger   
+       instantiates DataMap from TCollection (PassKey from GEOMAlgo, 
+                                              Integer from Standard, 
+                                               PassKeyMapHasher from GEOMAlgo);
+
 
 end GEOMAlgo;
diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx
new file mode 100644 (file)
index 0000000..292bb3a
--- /dev/null
@@ -0,0 +1,106 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile
+#define _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile
+
+#ifndef _TCollection_BasicMapIterator_HeaderFile
+#include <TCollection_BasicMapIterator.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile
+#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#endif
+class Standard_NoSuchObject;
+class GEOMAlgo_PassKey;
+class GEOMAlgo_PassKeyMapHasher;
+class GEOMAlgo_DataMapOfPassKeyInteger;
+class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger  : 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_DataMapIteratorOfDataMapOfPassKeyInteger();
+Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger(const GEOMAlgo_DataMapOfPassKeyInteger& aMap);
+Standard_EXPORT   void Initialize(const GEOMAlgo_DataMapOfPassKeyInteger& aMap) ;
+Standard_EXPORT  const GEOMAlgo_PassKey& Key() const;
+Standard_EXPORT  const Standard_Integer& Value() const;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx
new file mode 100644 (file)
index 0000000..53a99ba
--- /dev/null
@@ -0,0 +1,56 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
+
+#ifndef _Standard_NoSuchObject_HeaderFile
+#include <Standard_NoSuchObject.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKey_HeaderFile
+#include <GEOMAlgo_PassKey.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile
+#include <GEOMAlgo_PassKeyMapHasher.hxx>
+#endif
+#ifndef _GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile
+#include <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
+#endif
+#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile
+#include <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#endif
+
+#define TheKey GEOMAlgo_PassKey
+#define TheKey_hxx <GEOMAlgo_PassKey.hxx>
+#define TheItem Standard_Integer
+#define TheItem_hxx <Standard_Integer.hxx>
+#define Hasher GEOMAlgo_PassKeyMapHasher
+#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
+#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger
+#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger
+#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
+#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger
+#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_()
+#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyInteger
+#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
+#include <TCollection_DataMapIterator.gxx>
+
diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx
new file mode 100644 (file)
index 0000000..7226f82
--- /dev/null
@@ -0,0 +1,144 @@
+// File generated by CPPExt (Transient)
+//
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile
+#define _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile
+#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#endif
+
+#ifndef _GEOMAlgo_PassKey_HeaderFile
+#include <GEOMAlgo_PassKey.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _TCollection_MapNode_HeaderFile
+#include <TCollection_MapNode.hxx>
+#endif
+#ifndef _TCollection_MapNodePtr_HeaderFile
+#include <TCollection_MapNodePtr.hxx>
+#endif
+class GEOMAlgo_PassKey;
+class GEOMAlgo_PassKeyMapHasher;
+class GEOMAlgo_DataMapOfPassKeyInteger;
+class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger;
+
+
+class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger : public TCollection_MapNode {
+
+public:
+
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+ // Methods PUBLIC
+ // 
+GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger(const GEOMAlgo_PassKey& K,const Standard_Integer& I,const TCollection_MapNodePtr& n);
+  GEOMAlgo_PassKey& Key() const;
+  Standard_Integer& Value() const;
+Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger();
+
+
+
+
+ // Type management
+ //
+ Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_();
+ Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
+ Standard_EXPORT Standard_Boolean             IsKind(const Handle(Standard_Type)&) const;
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+GEOMAlgo_PassKey myKey;
+Standard_Integer myValue;
+
+
+};
+
+#define TheKey GEOMAlgo_PassKey
+#define TheKey_hxx <GEOMAlgo_PassKey.hxx>
+#define TheItem Standard_Integer
+#define TheItem_hxx <Standard_Integer.hxx>
+#define Hasher GEOMAlgo_PassKeyMapHasher
+#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
+#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger
+#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger
+#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
+#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger
+#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_()
+#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyInteger
+#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfPassKeyInteger.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
diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx
new file mode 100644 (file)
index 0000000..6035a47
--- /dev/null
@@ -0,0 +1,105 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+
+#ifndef _Standard_TypeMismatch_HeaderFile
+#include <Standard_TypeMismatch.hxx>
+#endif
+
+#ifndef _GEOMAlgo_PassKey_HeaderFile
+#include <GEOMAlgo_PassKey.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile
+#include <GEOMAlgo_PassKeyMapHasher.hxx>
+#endif
+#ifndef _GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile
+#include <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
+#endif
+#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile
+#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
+#endif
+GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::~GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger() {}
+
+
+Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_()
+{
+
+    static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode);
+  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode);
+  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
+  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
+  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
+  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
+
+  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
+  static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger",
+                                                        sizeof(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger),
+                                                        1,
+                                                        (Standard_Address)_Ancestors,
+                                                        (Standard_Address)NULL);
+
+  return _aType;
+}
+
+
+// DownCast method
+//   allow safe downcasting
+//
+const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)::DownCast(const Handle(Standard_Transient)& AnObject) 
+{
+  Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) _anOtherObject;
+
+  if (!AnObject.IsNull()) {
+     if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger))) {
+       _anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)&)AnObject);
+     }
+  }
+
+  return _anOtherObject ;
+}
+const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::DynamicType() const 
+{ 
+  return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) ; 
+}
+Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::IsKind(const Handle(Standard_Type)& AType) const 
+{ 
+  return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) == AType || TCollection_MapNode::IsKind(AType)); 
+}
+Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger() {}
+#define TheKey GEOMAlgo_PassKey
+#define TheKey_hxx <GEOMAlgo_PassKey.hxx>
+#define TheItem Standard_Integer
+#define TheItem_hxx <Standard_Integer.hxx>
+#define Hasher GEOMAlgo_PassKeyMapHasher
+#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
+#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger
+#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger
+#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
+#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger
+#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_()
+#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyInteger
+#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
+#include <TCollection_DataMapNode.gxx>
+
diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger.hxx
new file mode 100644 (file)
index 0000000..746ac54
--- /dev/null
@@ -0,0 +1,135 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile
+#define _GEOMAlgo_DataMapOfPassKeyInteger_HeaderFile
+
+#ifndef _TCollection_BasicMap_HeaderFile
+#include <TCollection_BasicMap.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile
+#include <Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+class Standard_DomainError;
+class Standard_NoSuchObject;
+class GEOMAlgo_PassKey;
+class GEOMAlgo_PassKeyMapHasher;
+class GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger;
+class GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class GEOMAlgo_DataMapOfPassKeyInteger  : 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_DataMapOfPassKeyInteger(const Standard_Integer NbBuckets = 1);
+Standard_EXPORT   GEOMAlgo_DataMapOfPassKeyInteger& Assign(const GEOMAlgo_DataMapOfPassKeyInteger& Other) ;
+  GEOMAlgo_DataMapOfPassKeyInteger& operator =(const GEOMAlgo_DataMapOfPassKeyInteger& Other) 
+{
+  return Assign(Other);
+}
+
+Standard_EXPORT   void ReSize(const Standard_Integer NbBuckets) ;
+Standard_EXPORT   void Clear() ;
+~GEOMAlgo_DataMapOfPassKeyInteger()
+{
+  Clear();
+}
+
+Standard_EXPORT   Standard_Boolean Bind(const GEOMAlgo_PassKey& K,const Standard_Integer& I) ;
+Standard_EXPORT   Standard_Boolean IsBound(const GEOMAlgo_PassKey& K) const;
+Standard_EXPORT   Standard_Boolean UnBind(const GEOMAlgo_PassKey& K) ;
+Standard_EXPORT  const Standard_Integer& Find(const GEOMAlgo_PassKey& K) const;
+ const Standard_Integer& operator()(const GEOMAlgo_PassKey& K) const
+{
+  return Find(K);
+}
+
+Standard_EXPORT   Standard_Integer& ChangeFind(const GEOMAlgo_PassKey& K) ;
+  Standard_Integer& operator()(const GEOMAlgo_PassKey& K) 
+{
+  return ChangeFind(K);
+}
+
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+Standard_EXPORT GEOMAlgo_DataMapOfPassKeyInteger(const GEOMAlgo_DataMapOfPassKeyInteger& Other);
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx
new file mode 100644 (file)
index 0000000..0163b4e
--- /dev/null
@@ -0,0 +1,59 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
+
+#ifndef _Standard_DomainError_HeaderFile
+#include <Standard_DomainError.hxx>
+#endif
+#ifndef _Standard_NoSuchObject_HeaderFile
+#include <Standard_NoSuchObject.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKey_HeaderFile
+#include <GEOMAlgo_PassKey.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile
+#include <GEOMAlgo_PassKeyMapHasher.hxx>
+#endif
+#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile
+#include <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#endif
+#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_HeaderFile
+#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
+#endif
+
+#define TheKey GEOMAlgo_PassKey
+#define TheKey_hxx <GEOMAlgo_PassKey.hxx>
+#define TheItem Standard_Integer
+#define TheItem_hxx <Standard_Integer.hxx>
+#define Hasher GEOMAlgo_PassKeyMapHasher
+#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
+#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger
+#define TCollection_DataMapNode_hxx <GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx>
+#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger
+#define TCollection_DataMapIterator_hxx <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
+#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger
+#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_Type_()
+#define TCollection_DataMap GEOMAlgo_DataMapOfPassKeyInteger
+#define TCollection_DataMap_hxx <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
+#include <TCollection_DataMap.gxx>
+
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl
deleted file mode 100644 (file)
index 4f8cfaa..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
--- File:       GEOMAlgo_FinderShapeOn.cdl
--- Created:    Tue Jan 11 14:35:52 2005
--- Author:     Peter KURNEV
---             <pkv@irinox>
----Copyright:   Matra Datavision 2005
-
-
-class FinderShapeOn from GEOMAlgo 
-    inherits ShapeAlgo from GEOMAlgo 
-    
-       ---Purpose: 
-
-uses
-    Surface from Geom, 
-    ShapeEnum from TopAbs, 
-    ListOfShape from TopTools, 
-    DataMapOfShapeShape from TopTools, 
-    Shape from TopoDS, 
-    State from GEOMAlgo, 
-    IndexedDataMapOfShapeState from GEOMAlgo 
-    
---raises
-
-is 
-    Create   
-       returns FinderShapeOn from GEOMAlgo; 
-    ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn();" 
-     
-    Perform(me:out) 
-       is redefined;  
-        
-    SetSurface(me:out; 
-           aS:Surface from Geom); 
-        
-    SetShapeType(me:out; 
-           aST:ShapeEnum from TopAbs); 
-        
-    SetState(me:out; 
-           aSF:State from GEOMAlgo);      
-     
-    Surface(me) 
-       returns Surface from Geom; 
-    ---C++: return const & 
-     
-    ShapeType(me) 
-       returns ShapeEnum from TopAbs; 
-        
-    State(me)
-       returns State from GEOMAlgo;  
-     
-    Shapes(me)
-       returns ListOfShape from TopTools; 
-    ---C++: return const &  
-     
-    -- 
-    --  protected  methods
-    -- 
-    CheckData(me:out) 
-       is redefined protected; 
-
-    MakeArgument1(me:out) 
-       is protected;  
-
-    MakeArgument2(me:out) 
-       is protected;
-     
-    Find(me:out) 
-       is protected; 
-
-    Find(me:out; 
-           aS:Shape from TopoDS) 
-       is protected; 
-
-    FindVertices(me:out) 
-       is protected; 
-        
-    CopySource(myclass; 
-       aS  :Shape from TopoDS; 
-       aImages   : out DataMapOfShapeShape from TopTools;       
-       aOriginals: out DataMapOfShapeShape from TopTools;       
-       aSC : out Shape from TopoDS); 
-       
-                                       
-
-fields 
-    mySurface    : Surface from Geom is protected;  
-    myShapeType  : ShapeEnum from TopAbs is protected;  
-    myState      : State from GEOMAlgo is protected; 
-    myArg1       : Shape from TopoDS is protected;  
-    myArg2       : Shape from TopoDS is protected;  
-    myLS         : ListOfShape from TopTools is protected;
-    myImages     : DataMapOfShapeShape from TopTools is protected; 
-    myMSS        : IndexedDataMapOfShapeState from GEOMAlgo is protected; 
-    myIsAnalytic : Boolean from Standard is protected; 
-     
-end FinderShapeOn;
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx
deleted file mode 100644 (file)
index ce9b55f..0000000
+++ /dev/null
@@ -1,528 +0,0 @@
-// File:       GEOMAlgo_FinderShapeOn.cxx
-// Created:    Tue Jan 11 14:44:31 2005
-// Author:     Peter KURNEV
-//             <pkv@irinox>
-
-
-#include <GEOMAlgo_FinderShapeOn.ixx>
-
-#include <gp_Pnt.hxx>
-
-#include <TopAbs_ShapeEnum.hxx>
-#include <TopAbs_Orientation.hxx>
-
-#include <TopoDS.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopoDS_Compound.hxx>
-#include <TopoDS_Shell.hxx>
-#include <TopoDS_Solid.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Iterator.hxx>
-
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-#include <TopTools_DataMapOfShapeShape.hxx>
-
-#include <BRep_Builder.hxx>
-#include <BRep_Tool.hxx>
-
-#include <TopExp.hxx>
-#include <TopExp_Explorer.hxx>
-
-#include <BRepLib_MakeFace.hxx>
-#include <BRepLib_FaceError.hxx>
-
-#include <BOPTools_DSFiller.hxx>
-
-#include <GEOMAlgo_WireSolid.hxx>
-#include <GEOMAlgo_ShellSolid.hxx>
-#include <GEOMAlgo_VertexSolid.hxx>
-#include <GEOMAlgo_ShapeSolid.hxx>
-#include <GEOMAlgo_SolidSolid.hxx>
-#include <GEOMAlgo_SurfaceTools.hxx>
-#include <GEOMAlgo_Tools.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_FinderShapeOn
-//purpose  : 
-//=======================================================================
-GEOMAlgo_FinderShapeOn::GEOMAlgo_FinderShapeOn()
-:
-  GEOMAlgo_ShapeAlgo()
-{
-  myTolerance=0.0001;
-  myShapeType=TopAbs_VERTEX;
-  myState=GEOMAlgo_ST_UNKNOWN;
-  myIsAnalytic=Standard_True;
-}
-//=======================================================================
-//function : ~
-//purpose  : 
-//=======================================================================
-GEOMAlgo_FinderShapeOn::~GEOMAlgo_FinderShapeOn()
-{
-}
-//=======================================================================
-//function : SetSurface
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::SetSurface(const Handle(Geom_Surface)& aS)
-{
-  mySurface=aS;
-}
-//=======================================================================
-//function : Surface
-//purpose  : 
-//=======================================================================
-const Handle(Geom_Surface)& GEOMAlgo_FinderShapeOn::Surface() const
-{
-  return mySurface;
-}
-//=======================================================================
-//function : SetShapeType
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::SetShapeType(const TopAbs_ShapeEnum aType)
-{
-  myShapeType=aType;
-}
-//=======================================================================
-//function : ShapeType
-//purpose  : 
-//=======================================================================
-TopAbs_ShapeEnum GEOMAlgo_FinderShapeOn::ShapeType()const
-{
-  return myShapeType;
-}
-//=======================================================================
-//function : SetState
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::SetState(const GEOMAlgo_State aState)
-{
-  myState=aState;
-}
-//=======================================================================
-//function : State
-//purpose  : 
-//=======================================================================
-GEOMAlgo_State GEOMAlgo_FinderShapeOn::State() const
-{
-  return myState;
-}
-//=======================================================================
-// function: Shapes
-// purpose: 
-//=======================================================================
-const TopTools_ListOfShape& GEOMAlgo_FinderShapeOn::Shapes() const
-{
-  Standard_Boolean bIsConformState;
-  Standard_Integer i, aNb;
-  TopAbs_State aSt;
-  TopTools_ListOfShape* pL;
-  //
-  pL=(TopTools_ListOfShape*) &myLS;
-  pL->Clear();
-  //
-  aNb=myMSS.Extent();
-  for (i=1; i<=aNb; ++i) {
-    const TopoDS_Shape& aS=myMSS.FindKey(i);
-    aSt=myMSS.FindFromIndex(i);
-    //
-    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
-    if (bIsConformState) {
-      pL->Append(aS);
-    }
-  }
-  return myLS;
-}
-//=======================================================================
-//function : Perform
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::Perform()
-{
-  myErrorStatus=0;
-  myWarningStatus=0;
-  myLS.Clear();
-  myMSS.Clear();
-  //
-  if (!myResult.IsNull()){
-    myResult.Nullify();
-  }
-  //
-  CheckData();
-  if(myErrorStatus) {
-    return;
-  }
-  //
-  myIsAnalytic=GEOMAlgo_SurfaceTools::IsAnalytic(mySurface);
-  //
-  MakeArgument1();
-  if(myErrorStatus) {
-    return;
-  }
-  //
-  if (myIsAnalytic && myShapeType==TopAbs_VERTEX) {
-    FindVertices();
-    return;
-  }
-  //
-  MakeArgument2();
-  if(myErrorStatus) {
-    return;
-  }
-  //
-  Find();
-  if(myErrorStatus || myWarningStatus) {
-    return;
-  }
-  //
-}
-//=======================================================================
-//function : FindVertices
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::FindVertices()
-{ 
-  Standard_Integer i, aNb, iErr;
-  TopAbs_State aSt;
-  TopAbs_Orientation aOr;
-  gp_Pnt aP;
-  TopTools_IndexedMapOfShape aM;
-  //
-  TopExp::MapShapes(myArg1, TopAbs_FACE, aM);
-  const TopoDS_Face& aF=TopoDS::Face(aM(1));
-  aOr=aF.Orientation();
-  //
-  aM.Clear();
-  TopExp::MapShapes(myShape, myShapeType, aM);
-  aNb=aM.Extent();
-  if (!aNb) {
-    myWarningStatus=10; // No found subshapes of type myShapeType
-    return;
-  }
-  //
-  for (i=1; i<=aNb; ++i) {
-    const TopoDS_Shape& aS=aM(i);
-    const TopoDS_Vertex& aV=TopoDS::Vertex(aS);
-    aP=BRep_Tool::Pnt(aV);
-    iErr=GEOMAlgo_SurfaceTools::GetState(aP, mySurface, myTolerance, aSt);
-    if (aOr==TopAbs_REVERSED) {
-      aSt=GEOMAlgo_SurfaceTools::ReverseState(aSt);
-    }
-    myMSS.Add(aS, aSt);
-  }
-}
-//=======================================================================
-//function : Find
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::Find()
-{
-  Standard_Integer i, aNb;
-  Standard_Boolean bICS;
-  TopTools_IndexedMapOfShape aM;
-  //
-  TopExp::MapShapes(myArg2, myShapeType, aM);
-  //
-  aNb=aM.Extent();
-  if (!aNb) {
-    myWarningStatus=10; // No found subshapes of type myShapeType
-    return;
-  }
-  //
-  bICS=GEOMAlgo_Tools::IsCompositeShape(myArg2);
-  if (!bICS || myIsAnalytic) {
-    TopoDS_Compound aCmp;
-    BRep_Builder aBB;
-    //
-    aBB.MakeCompound(aCmp);
-    for (i=1; i<=aNb; ++i) {
-      const TopoDS_Shape& aSi=aM(i);
-      aBB.Add(aCmp, aSi);
-    }
-    //
-    aM.Clear();
-    aM.Add(aCmp);
-    aNb=1;
-  }
-  //
-  for (i=1; i<=aNb; ++i) {
-    const TopoDS_Shape& aS=aM(i);
-    Find(aS);
-    if (myErrorStatus) {
-      return;
-    }
-  }
-}
-//=======================================================================
-//function : Find
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::Find(const TopoDS_Shape& aS)
-{
-  myErrorStatus=0;
-  //
-  Standard_Boolean bIsDone;
-  Standard_Integer i, iErr;
-  TopAbs_State aSts[]={TopAbs_IN, TopAbs_OUT, TopAbs_ON};
-  TopTools_ListIteratorOfListOfShape aIt;
-  BOPTools_DSFiller aDF;
-  //
-  // 1. Prepare DSFiller
-  aDF.SetShapes (myArg1, aS);
-  bIsDone=aDF.IsDone();
-  if (!bIsDone) {
-    myErrorStatus=30; // wrong args are used for DSFiller
-    return;
-  }
-  aDF.Perform();
-  bIsDone=aDF.IsDone();
-  if (!bIsDone) {
-    myErrorStatus=31; // DSFiller failed
-    return;
-  }
-  // 
-  // 2. Find shapes
-  GEOMAlgo_ShapeSolid* pSS;
-  GEOMAlgo_VertexSolid aVXS;
-  GEOMAlgo_WireSolid aWRS;
-  GEOMAlgo_ShellSolid aSHS;
-  GEOMAlgo_SolidSolid aSLS;
-  //
-  pSS=NULL;
-  //
-  switch (myShapeType) {
-    case TopAbs_VERTEX:
-      pSS=&aVXS;
-      break;
-    case TopAbs_EDGE:
-      pSS=&aWRS;
-      break;
-    case TopAbs_FACE:
-      pSS=&aSHS;
-      break;
-    case TopAbs_SOLID:
-      aSLS.SetShape2(myArg2);
-      pSS=&aSLS;
-      break;
-    default:
-      myErrorStatus=12; // unallowed subshape type
-      return;
-  }
-  //
-  pSS->SetFiller(aDF);
-  pSS->Perform();
-  iErr=pSS->ErrorStatus();
-  if (iErr) {
-    myErrorStatus=32; // builder ShapeSolid failed
-    return;
-  }
-  //
-  for (i=0; i<3; ++i) {
-    const TopTools_ListOfShape& aLS=pSS->Shapes(aSts[i]);
-    aIt.Initialize(aLS);
-    for (; aIt.More(); aIt.Next()) {
-      const TopoDS_Shape& aSImage=aIt.Value(); 
-      if (myImages.IsBound(aSImage)) { 
-       const TopoDS_Shape& aSx=myImages.Find(aSImage); 
-       myMSS.Add(aSx, aSts[i]);
-      }
-      else {
-       myErrorStatus=33;// can not find original shape
-       return; 
-      }
-    }
-  }
-}
-//=======================================================================
-//function : MakeArgument1
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::MakeArgument1()
-{
-  myErrorStatus=0;
-  //
-  Standard_Integer i, aNb;
-  TopAbs_ShapeEnum aType;
-  BRepLib_FaceError aFErr;
-  BRepLib_MakeFace aMF;
-  TopTools_IndexedMapOfShape aM;
-  BRep_Builder aBB;
-  TopoDS_Face aFace;
-  TopoDS_Shell aSh;
-  TopoDS_Solid aSd;
-  //
-  // Argument 1
-  if (!myIsAnalytic) {
-    aMF.Init(mySurface, Standard_True);
-    aFErr=aMF.Error();
-    if (aFErr!=BRepLib_FaceDone) {
-      myErrorStatus=20; // can not build the face
-      return;
-    }
-    //
-    const TopoDS_Shape& aF=aMF.Shape();
-    aFace=TopoDS::Face(aF);
-    //
-    // update tolerances
-    aM.Add(aF);
-    TopExp::MapShapes(aF, TopAbs_VERTEX, aM);
-    TopExp::MapShapes(aF, TopAbs_EDGE, aM);
-    aNb=aM.Extent();
-    for (i=1; i<=aNb; ++i) {
-      const TopoDS_Shape& aS=aM(i);
-      aType=aS.ShapeType();
-      switch (aType) {
-      case TopAbs_VERTEX: {
-        const TopoDS_Vertex& aVx=TopoDS::Vertex(aS);
-       aBB.UpdateVertex(aVx, myTolerance);
-      }
-       break;
-      case TopAbs_EDGE: {
-        const TopoDS_Edge& aEx=TopoDS::Edge(aS);
-       aBB.UpdateEdge(aEx, myTolerance);
-      }
-       break;
-      case TopAbs_FACE: {
-        const TopoDS_Face& aFx=TopoDS::Face(aS);
-       aBB.UpdateFace(aFx, myTolerance);
-      }
-       break;
-      default:
-       break;
-      }
-    }
-  } //  
-  else {
-    aBB.MakeFace(aFace, mySurface, myTolerance);
-  }
-  //
-  // make solid
-  aBB.MakeShell(aSh);
-  aBB.Add(aSh, aFace);
-  aBB.MakeSolid(aSd);
-  aBB.Add(aSd, aSh);
-  myArg1=aSd;
-}
-//=======================================================================
-//function : MakeArgument2
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::MakeArgument2()
-{
-  myErrorStatus=0;
-  //
-  TopoDS_Shape aSC;
-  TopTools_DataMapOfShapeShape aOriginals;
-  //
-  myImages.Clear();
-  //
-  GEOMAlgo_FinderShapeOn::CopySource(myShape, myImages, aOriginals, aSC);
-  //
-  myArg2=aSC;
-}
-//=======================================================================
-//function : CheckData
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::CheckData()
-{
-  myErrorStatus=0;
-  //
-  if(mySurface.IsNull()) {
-    myErrorStatus=10; // mySurface=NULL
-    return;
-  }
-  //
-  if (myShape.IsNull()) {
-    myErrorStatus=11; // myShape=NULL
-    return;
-  }
-  //
-  if (!(myShapeType==TopAbs_VERTEX ||
-       myShapeType==TopAbs_EDGE ||
-       myShapeType==TopAbs_FACE ||
-       myShapeType==TopAbs_SOLID)) {
-    myErrorStatus=12; // unallowed subshape type
-    return;
-  }
-  //
-  if (myState==GEOMAlgo_ST_UNKNOWN || 
-      myState==GEOMAlgo_ST_INOUT) {
-    myErrorStatus=13; // unallowed state type
-    return;
-  }
-}
-//
-//=======================================================================
-//function : CopySource
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_FinderShapeOn::CopySource(const TopoDS_Shape& aE,
-                                       TopTools_DataMapOfShapeShape& aImages,
-                                       TopTools_DataMapOfShapeShape& aOriginals,
-                                       TopoDS_Shape& aEx)
-{
-  Standard_Boolean bFree;
-  TopAbs_ShapeEnum aType;
-  Standard_Integer aR;
-  BRep_Builder BB;
-  TopoDS_Iterator aIt;
-  //
-  aType=aE.ShapeType();
-  //
-  if (aOriginals.IsBound(aE)) {
-    aEx=aOriginals.ChangeFind(aE);
-    return;
-  }
-  else {
-    aEx=aE.EmptyCopied();
-    aOriginals.Bind(aE, aEx);
-    aImages.Bind(aEx, aE);
-  }
-  //
-  aR=(Standard_Integer)aType+1;
-  if (aR>TopAbs_VERTEX) {
-    return;
-  }
-  //
-  bFree=aEx.Free();
-  aEx.Free(Standard_True);
-  //
-  aType=(TopAbs_ShapeEnum) aR;
-  //
-  aIt.Initialize(aE);//, Standard_False);
-  for (; aIt.More();  aIt.Next()) {
-    const TopoDS_Shape& aV=aIt.Value();
-    TopoDS_Shape aVx;
-    //
-    CopySource (aV, aImages, aOriginals, aVx);  
-    //
-    aVx.Orientation(aV.Orientation());
-    BB.Add(aEx, aVx);
-  }
-  //
-  aEx.Free(bFree);
-}
-
-//
-// myErrorStatus :
-//
-// 10 -mySurface=NULL
-// 11 -myShape=NULL
-// 12 -unallowed type of subshapes 
-// 13 -unallowed state  
-// 20 -can not build the face
-// 30 -wrong args are used for DSFiller
-// 31 -DSFiller failed
-// 32 -builder ShapeSolid failed
-// 33 -can not find original shape
-//
-// myWarningStatus
-//
-// 10 -subshapes of type myShapeType can not be fond in myShape
-
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx
deleted file mode 100644 (file)
index 42129bc..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _GEOMAlgo_FinderShapeOn_HeaderFile
-#define _GEOMAlgo_FinderShapeOn_HeaderFile
-
-#ifndef _Handle_Geom_Surface_HeaderFile
-#include <Handle_Geom_Surface.hxx>
-#endif
-#ifndef _TopAbs_ShapeEnum_HeaderFile
-#include <TopAbs_ShapeEnum.hxx>
-#endif
-#ifndef _GEOMAlgo_State_HeaderFile
-#include <GEOMAlgo_State.hxx>
-#endif
-#ifndef _TopoDS_Shape_HeaderFile
-#include <TopoDS_Shape.hxx>
-#endif
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
-#endif
-#ifndef _TopTools_DataMapOfShapeShape_HeaderFile
-#include <TopTools_DataMapOfShapeShape.hxx>
-#endif
-#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile
-#include <GEOMAlgo_IndexedDataMapOfShapeState.hxx>
-#endif
-#ifndef _Standard_Boolean_HeaderFile
-#include <Standard_Boolean.hxx>
-#endif
-#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile
-#include <GEOMAlgo_ShapeAlgo.hxx>
-#endif
-class Geom_Surface;
-class TopTools_ListOfShape;
-class TopoDS_Shape;
-class TopTools_DataMapOfShapeShape;
-
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-
-class GEOMAlgo_FinderShapeOn  : public GEOMAlgo_ShapeAlgo {
-
-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_FinderShapeOn();
-Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn();
-Standard_EXPORT virtual  void Perform() ;
-Standard_EXPORT   void SetSurface(const Handle(Geom_Surface)& aS) ;
-Standard_EXPORT   void SetShapeType(const TopAbs_ShapeEnum aST) ;
-Standard_EXPORT   void SetState(const GEOMAlgo_State aSF) ;
-Standard_EXPORT  const Handle_Geom_Surface& Surface() const;
-Standard_EXPORT   TopAbs_ShapeEnum ShapeType() const;
-Standard_EXPORT   GEOMAlgo_State State() const;
-Standard_EXPORT  const TopTools_ListOfShape& Shapes() const;
-Standard_EXPORT static  void CopySource(const TopoDS_Shape& aS,TopTools_DataMapOfShapeShape& aImages,TopTools_DataMapOfShapeShape& aOriginals,TopoDS_Shape& aSC) ;
-
-
-
-
-
-protected:
-
- // Methods PROTECTED
- // 
-Standard_EXPORT virtual  void CheckData() ;
-Standard_EXPORT   void MakeArgument1() ;
-Standard_EXPORT   void MakeArgument2() ;
-Standard_EXPORT   void Find() ;
-Standard_EXPORT   void Find(const TopoDS_Shape& aS) ;
-Standard_EXPORT   void FindVertices() ;
-
-
- // Fields PROTECTED
- //
-Handle_Geom_Surface mySurface;
-TopAbs_ShapeEnum myShapeType;
-GEOMAlgo_State myState;
-TopoDS_Shape myArg1;
-TopoDS_Shape myArg2;
-TopTools_ListOfShape myLS;
-TopTools_DataMapOfShapeShape myImages;
-GEOMAlgo_IndexedDataMapOfShapeState myMSS;
-Standard_Boolean myIsAnalytic;
-
-
-private: 
-
- // Methods PRIVATE
- // 
-
-
- // Fields PRIVATE
- //
-
-
-};
-
-
-
-
-
-// other Inline functions and methods (like "C++: function call" methods)
-//
-
-
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx
deleted file mode 100644 (file)
index 00afa2d..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#include <GEOMAlgo_FinderShapeOn.jxx>
-
-
-
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx
deleted file mode 100644 (file)
index d9a8480..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef _Geom_Surface_HeaderFile
-#include <Geom_Surface.hxx>
-#endif
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
-#endif
-#ifndef _TopoDS_Shape_HeaderFile
-#include <TopoDS_Shape.hxx>
-#endif
-#ifndef _TopTools_DataMapOfShapeShape_HeaderFile
-#include <TopTools_DataMapOfShapeShape.hxx>
-#endif
-#ifndef _GEOMAlgo_FinderShapeOn_HeaderFile
-#include <GEOMAlgo_FinderShapeOn.hxx>
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl
new file mode 100644 (file)
index 0000000..24c3459
--- /dev/null
@@ -0,0 +1,120 @@
+-- File:       GEOMAlgo_FinderShapeOn1.cdl
+-- Created:    Fri Mar  4 10:26:54 2005
+-- Author:     Peter KURNEV
+--             <pkv@irinox>
+---Copyright:   Matra Datavision 2005
+
+
+class FinderShapeOn1 from GEOMAlgo  
+    inherits ShapeAlgo from GEOMAlgo 
+
+       ---Purpose: 
+
+uses
+    Surface from Geom, 
+    Surface from GeomAdaptor, 
+     
+    ShapeEnum from TopAbs, 
+    Face from TopoDS, 
+    Edge from TopoDS, 
+    ListOfShape from TopTools,  
+     
+    State from GEOMAlgo, 
+    ListOfPnt from GEOMAlgo, 
+    IndexedDataMapOfShapeState from GEOMAlgo 
+    
+--raises
+
+is 
+    Create   
+       returns FinderShapeOn1 from GEOMAlgo; 
+    ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn1();" 
+
+    SetSurface(me:out; 
+           aS:Surface from Geom); 
+        
+    SetShapeType(me:out; 
+           aST:ShapeEnum from TopAbs); 
+        
+    SetState(me:out; 
+           aSF:State from GEOMAlgo);      
+     
+    SetNbPntsMin(me:out; 
+           aNb:Integer from Standard);   
+
+    NbPntsMin(me) 
+       returns Integer from Standard; 
+        
+    SetNbPntsMax(me:out; 
+           aNb:Integer from Standard);   
+
+    NbPntsMax(me) 
+       returns Integer from Standard; 
+        
+    Surface(me) 
+       returns Surface from Geom; 
+    ---C++: return const & 
+     
+    ShapeType(me) 
+       returns ShapeEnum from TopAbs; 
+        
+    State(me)
+       returns State from GEOMAlgo;  
+     
+    Perform(me:out) 
+       is redefined; 
+        
+    Shapes(me)
+       returns ListOfShape from TopTools; 
+    ---C++: return const &  
+    -- 
+    --  protected  methods
+    -- 
+    CheckData(me:out) 
+       is redefined protected; 
+        
+    ProcessVertices(me:out) 
+       is protected; 
+     
+    ProcessEdges(me:out) 
+       is protected; 
+  
+    ProcessFaces(me:out) 
+       is protected; 
+        
+    ProcessSolids(me:out) 
+       is protected; 
+         
+    InnerPoints(me:out; 
+           aF :Face from TopoDS;            
+           aLP:out ListOfPnt from GEOMAlgo) 
+       is protected;  
+        
+    InnerPoints(me:out; 
+           aE :Edge from TopoDS;            
+           aLP:out ListOfPnt from GEOMAlgo) 
+       is protected; 
+        
+    InnerPoints(me:out; 
+           aE :Edge from TopoDS;            
+           aNbPnts: Integer from Standard;     
+           aLP:out ListOfPnt from GEOMAlgo) 
+       is protected;  
+      
+    MSS (me)  
+       returns IndexedDataMapOfShapeState from GEOMAlgo; 
+    ---C++:return const &      
+    
+fields
+    mySurface   : Surface from Geom is protected;  
+    myShapeType : ShapeEnum from TopAbs is protected;  
+    myState     : State from GEOMAlgo is protected;  
+    myNbPntsMin : Integer from Standard is protected;   
+    myNbPntsMax : Integer from Standard is protected;   
+    -- 
+    myGAS       : Surface from GeomAdaptor is protected;
+    myLS        : ListOfShape from TopTools is protected; 
+    --     
+    myMSS       : IndexedDataMapOfShapeState from GEOMAlgo is protected;
+end FinderShapeOn1;
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx
new file mode 100644 (file)
index 0000000..8ceaf7c
--- /dev/null
@@ -0,0 +1,822 @@
+// File:       GEOMAlgo_FinderShapeOn1.cxx
+// Created:    Fri Mar  4 10:31:06 2005
+// Author:     Peter KURNEV
+//             <pkv@irinox>
+
+
+#include <GEOMAlgo_FinderShapeOn1.ixx>
+#include <math.h>
+
+
+#include <Precision.hxx>
+#include <TColStd_Array1OfInteger.hxx>
+#include <TColStd_MapOfInteger.hxx>
+
+#include <gp_Trsf.hxx>
+#include <gp_Cylinder.hxx>
+#include <gp_Pnt.hxx>
+
+#include <TColgp_Array1OfPnt.hxx>
+
+#include <Poly_Array1OfTriangle.hxx>
+#include <Poly_Triangle.hxx>
+#include <Poly_PolygonOnTriangulation.hxx>
+#include <Poly_Triangulation.hxx>
+
+#include <Geom_Curve.hxx>
+#include <Geom_Surface.hxx>
+#include <GeomAdaptor_Surface.hxx>
+#include <GeomAbs_SurfaceType.hxx>
+#include <GeomAdaptor_Curve.hxx>
+#include <GeomAbs_CurveType.hxx>
+
+#include <TopAbs_State.hxx>
+
+#include <TopLoc_Location.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <TopoDS_Face.hxx>
+#include <TopoDS_Edge.hxx>
+
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
+
+#include <TopTools_IndexedMapOfShape.hxx>
+
+#include <BRep_Tool.hxx>
+#include <BRepLib_MakeEdge.hxx>
+
+#include <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#include <GEOMAlgo_PassKey.hxx>
+#include <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
+#include <GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx>
+#include <GEOMAlgo_SurfaceTools.hxx>
+#include <GEOMAlgo_StateCollector.hxx>
+
+
+//=======================================================================
+//function : GEOMAlgo_FinderShapeOn1
+//purpose  : 
+//=======================================================================
+GEOMAlgo_FinderShapeOn1::GEOMAlgo_FinderShapeOn1()
+:
+  GEOMAlgo_ShapeAlgo()
+{
+  myTolerance=0.0001;
+  myShapeType=TopAbs_VERTEX;
+  myState=GEOMAlgo_ST_UNKNOWN;
+  myNbPntsMin=3;
+  myNbPntsMax=0;
+}
+//=======================================================================
+//function : ~
+//purpose  : 
+//=======================================================================
+GEOMAlgo_FinderShapeOn1::~GEOMAlgo_FinderShapeOn1()
+{
+}
+//=======================================================================
+//function : SetSurface
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::SetSurface(const Handle(Geom_Surface)& aS)
+{
+  mySurface=aS;
+}
+//=======================================================================
+//function : Surface
+//purpose  : 
+//=======================================================================
+const Handle(Geom_Surface)& GEOMAlgo_FinderShapeOn1::Surface() const
+{
+  return mySurface;
+}
+//=======================================================================
+//function : SetShapeType
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::SetShapeType(const TopAbs_ShapeEnum aType)
+{
+  myShapeType=aType;
+}
+//=======================================================================
+//function : ShapeType
+//purpose  : 
+//=======================================================================
+TopAbs_ShapeEnum GEOMAlgo_FinderShapeOn1::ShapeType()const
+{
+  return myShapeType;
+}
+//=======================================================================
+//function : SetState
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::SetState(const GEOMAlgo_State aState)
+{
+  myState=aState;
+}
+//=======================================================================
+//function : State
+//purpose  : 
+//=======================================================================
+GEOMAlgo_State GEOMAlgo_FinderShapeOn1::State() const
+{
+  return myState;
+}
+//=======================================================================
+//function : SetNbPntsMin
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::SetNbPntsMin(const Standard_Integer aNb)
+{
+  myNbPntsMin=aNb;
+}
+//=======================================================================
+//function : NbPntsMin
+//purpose  : 
+//=======================================================================
+Standard_Integer GEOMAlgo_FinderShapeOn1::NbPntsMin()const
+{
+  return myNbPntsMin;
+}
+//=======================================================================
+//function : SetNbPntsMax
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::SetNbPntsMax(const Standard_Integer aNb)
+{
+  myNbPntsMax=aNb;
+}
+//=======================================================================
+//function : NbPntsMax
+//purpose  : 
+//=======================================================================
+Standard_Integer GEOMAlgo_FinderShapeOn1::NbPntsMax()const
+{
+  return myNbPntsMax;
+}
+//=======================================================================
+// function: MSS
+// purpose: 
+//=======================================================================
+const GEOMAlgo_IndexedDataMapOfShapeState& GEOMAlgo_FinderShapeOn1::MSS() const
+{
+  return myMSS;
+}
+//=======================================================================
+// function: Shapes
+// purpose: 
+//=======================================================================
+const TopTools_ListOfShape& GEOMAlgo_FinderShapeOn1::Shapes() const
+{
+  Standard_Integer i, aNb;
+  TopTools_ListOfShape* pL;
+  //
+  pL=(TopTools_ListOfShape*) &myLS;
+  pL->Clear();
+  //
+  aNb=myMSS.Extent();
+  for (i=1; i<=aNb; ++i) {
+    const TopoDS_Shape& aS=myMSS.FindKey(i);
+    if (aS.ShapeType()==myShapeType) {
+      pL->Append(aS);
+    }
+  }
+  return myLS;
+}
+//=======================================================================
+//function : Perform
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::Perform()
+{
+  myErrorStatus=0;
+  myWarningStatus=0;
+  myLS.Clear();
+  myMSS.Clear();
+  //
+  CheckData();
+  if(myErrorStatus) {
+    return;
+  }
+  //
+  // 1
+  ProcessVertices();
+  if(myErrorStatus) {
+    return;
+  }
+  if (myShapeType==TopAbs_VERTEX) {
+    return;
+  }
+  //
+  // 2
+  ProcessEdges();
+  if(myErrorStatus) {
+    return;
+  }
+  if (myShapeType==TopAbs_EDGE) {
+    return;
+  }
+  //
+  // 3
+  ProcessFaces();
+  if(myErrorStatus) {
+    return;
+  }
+  if (myShapeType==TopAbs_FACE) {
+    return;
+  }
+  //
+  // 4
+  ProcessSolids(); 
+  //
+}
+//=======================================================================
+//function : ProcessVertices
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::ProcessVertices()
+{
+  myErrorStatus=0;
+  //
+  Standard_Boolean bIsConformState;
+  Standard_Integer i, aNb;
+  gp_Pnt aP;
+  TopTools_IndexedMapOfShape aM;
+  TopAbs_State aSt;
+  //
+  TopExp::MapShapes(myShape, TopAbs_VERTEX, aM);
+  aNb=aM.Extent();
+  for (i=1; i<=aNb; ++i) {
+    const TopoDS_Vertex& aV=TopoDS::Vertex(aM(i));
+    aP=BRep_Tool::Pnt(aV);
+    //
+    GEOMAlgo_SurfaceTools::GetState(aP, myGAS, myTolerance, aSt);
+    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
+    //
+    if (myShapeType==TopAbs_VERTEX){
+      if (bIsConformState) {
+       myMSS.Add(aV, aSt);
+      }
+    }
+    else if (bIsConformState || aSt==TopAbs_ON) {
+      myMSS.Add(aV, aSt);
+    }
+  }
+}
+//=======================================================================
+//function : ProcessEdges
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::ProcessEdges()
+{
+  myErrorStatus=0;
+  //
+  Standard_Boolean bIsConformState, bIsToBreak;
+  Standard_Integer i, aNb, iCnt;
+  TopAbs_State aSt;
+  TopTools_IndexedMapOfShape aM;
+  TopExp_Explorer aExp;
+  GEOMAlgo_ListIteratorOfListOfPnt aIt;
+  GeomAbs_SurfaceType aType1;
+  //
+  aType1=myGAS.GetType();
+  //
+  TopExp::MapShapes(myShape, TopAbs_EDGE, aM);
+  aNb=aM.Extent();
+  for (i=1; i<=aNb; ++i) {
+    GEOMAlgo_ListOfPnt aLP;
+    GEOMAlgo_StateCollector aSC;
+    //
+    const TopoDS_Edge& aE=TopoDS::Edge(aM(i));
+    //
+    aExp.Init(aE, TopAbs_VERTEX);
+    for (; aExp.More(); aExp.Next()) {
+      const TopoDS_Shape& aV=aExp.Current();
+      //
+      bIsConformState=myMSS.Contains(aV);
+      if (!bIsConformState) {
+       break;// vertex has non-conformed state
+      }
+      else {
+       aSt=myMSS.FindFromKey(aV);
+       aSC.AppendState(aSt);
+      }
+    }
+    //
+    if (!bIsConformState) {
+      continue; // vertex has non-conformed state,skip edge
+    }
+    //
+    if (BRep_Tool::Degenerated(aE)) {
+      myMSS.Add(aE, aSt); 
+      continue;
+    }
+    //
+    if (myState==GEOMAlgo_ST_ON && aType1==GeomAbs_Sphere) {
+      Standard_Real aT1, aT2;
+      Handle(Geom_Curve) aC; 
+      GeomAdaptor_Curve aGAC;
+      GeomAbs_CurveType aType2;
+      //
+      aC=BRep_Tool::Curve(aE, aT1, aT2);
+      aGAC.Load(aC);
+      //
+      aType2=aGAC.GetType();
+      if (aType2==GeomAbs_Line) {
+       continue;
+      }
+    }
+    //
+    InnerPoints(aE, aLP);
+    if (myErrorStatus) {
+      return;  
+    }
+    //
+    bIsConformState=Standard_True;
+    aIt.Initialize(aLP);
+    for (iCnt=0; aIt.More(); aIt.Next(), ++iCnt) {
+      if (myNbPntsMax) {
+       if (iCnt > myNbPntsMax) {
+         break;
+       }
+      }
+      //
+      const gp_Pnt& aP=aIt.Value();
+      GEOMAlgo_SurfaceTools::GetState(aP, myGAS, myTolerance, aSt);
+      bIsToBreak=aSC.AppendState(aSt);
+      if (bIsToBreak) {
+       break;
+      }
+    }
+    //
+    aSt=aSC.State();    
+    //
+    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
+    if (myShapeType==TopAbs_EDGE) {
+      if (bIsConformState) {
+       myMSS.Add(aE, aSt);
+      }
+    }
+    else if (bIsConformState || aSt==TopAbs_ON) {
+      myMSS.Add(aE, aSt);
+    }
+  } //  for (i=1; i<=aNb; ++i) next edge 
+}
+//=======================================================================
+//function : ProcessFaces
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::ProcessFaces()
+{
+  myErrorStatus=0;
+  //
+  Standard_Boolean bIsConformState, bIsToBreak;
+  Standard_Integer i, aNbF, iCnt;
+  TopAbs_State aSt;
+  TopTools_IndexedMapOfShape aM;
+  TopExp_Explorer aExp;
+  GEOMAlgo_ListIteratorOfListOfPnt aIt;
+  GeomAbs_SurfaceType aType1, aType2;
+  //
+  aType1=myGAS.GetType();
+  //
+  TopExp::MapShapes(myShape, TopAbs_FACE, aM);
+  aNbF=aM.Extent();
+  for (i=1; i<=aNbF; ++i) {
+    GEOMAlgo_StateCollector aSC;
+    GEOMAlgo_ListOfPnt aLP;
+    //
+    const TopoDS_Face& aF=TopoDS::Face(aM(i));
+    //
+    if (myState==GEOMAlgo_ST_ON) {
+      Handle(Geom_Surface) aS;
+      GeomAdaptor_Surface aGAS;
+      //
+      aS=BRep_Tool::Surface(aF);
+      aGAS.Load(aS);
+      aType2=aGAS.GetType();
+      if (aType2!=aType1) {
+       continue;
+      }
+    }
+    //
+    aExp.Init(aF, TopAbs_EDGE);
+    for (; aExp.More(); aExp.Next()) {
+      const TopoDS_Shape& aE=aExp.Current();
+      bIsConformState=myMSS.Contains(aE);
+      if (!bIsConformState) {
+       break;// edge has non-conformed state
+      }
+      else {
+       aSt=myMSS.FindFromKey(aE);
+       aSC.AppendState(aSt);
+      }
+    }
+    //
+    if (!bIsConformState) {
+      continue; // edge has non-conformed state,skip face
+    }
+    //
+    InnerPoints(aF, aLP);
+    if (myErrorStatus) {
+      return;
+    }
+    //
+    bIsConformState=Standard_True;
+    aIt.Initialize(aLP);
+    for (iCnt=0; aIt.More(); aIt.Next(), ++iCnt) {
+      if (myNbPntsMax) {
+       if (iCnt > myNbPntsMax) {
+         break;
+       }
+      }
+      //
+      const gp_Pnt& aP=aIt.Value();
+      GEOMAlgo_SurfaceTools::GetState(aP, myGAS, myTolerance, aSt);
+      bIsToBreak=aSC.AppendState(aSt);
+      if (bIsToBreak) {
+       break;
+      }
+    }
+    //
+    aSt=aSC.State();    
+    //
+    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
+    if (myShapeType==TopAbs_FACE) {
+      if (bIsConformState) {
+       myMSS.Add(aF, aSt);
+      }
+    }
+    else if (bIsConformState || aSt==TopAbs_ON) {
+      myMSS.Add(aF, aSt);
+    }
+  }//  for (i=1; i<=aNb; ++i) next face 
+}
+//=======================================================================
+//function : ProcessSolids
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::ProcessSolids()
+{
+  myErrorStatus=0;
+  //
+  Standard_Boolean bIsConformState;
+  Standard_Integer i, aNbS, j, aNbF;
+  TopTools_IndexedMapOfShape aM, aMF;
+  TopAbs_State aSt;
+  //
+  TopExp::MapShapes(myShape, TopAbs_SOLID, aM);
+  aNbS=aM.Extent();
+  for (i=1; i<=aNbS; ++i) {
+    GEOMAlgo_StateCollector aSC;
+    //
+    const TopoDS_Shape& aSd=aM(i);
+    aMF.Clear();
+    TopExp::MapShapes(aSd, TopAbs_FACE, aMF);
+    aNbF=aMF.Extent();
+    for (j=1; j<=aNbF; ++j) {
+      const TopoDS_Shape& aF=aMF(j);
+      bIsConformState=myMSS.Contains(aF);
+      if (!bIsConformState) {
+       break;// face has non-conformed state
+      }
+      else {
+       aSt=myMSS.FindFromKey(aF);
+       aSC.AppendState(aSt);
+      }
+    }
+    //
+    if (!bIsConformState) {
+      continue; // face has non-conformed state,skip solid
+    }
+    //
+    aSt=aSC.State();    
+    //
+    bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState);
+    if (bIsConformState) {
+      myMSS.Add(aSd, aSt);
+    }
+  }
+}
+//
+//=======================================================================
+//function : InnerPoints
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Face& aF,
+                                         GEOMAlgo_ListOfPnt& aLP)
+{
+  myErrorStatus=0;
+  //
+  Standard_Integer j, j1, j2, k, n[4], aNbLinks, aNx, aNbMax, aNb;
+  Standard_Integer iCnt, *pIds;
+  TopLoc_Location aLoc;
+  Handle(Poly_Triangulation) aTRF;
+  TColStd_MapOfInteger aMBN;
+  GEOMAlgo_DataMapOfPassKeyInteger aMPKI;
+  GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger aIt;
+  gp_Pnt aP, aP1, aP2;
+  //
+  aLP.Clear();
+  //
+  aTRF=BRep_Tool::Triangulation(aF, aLoc);
+  if (aTRF.IsNull()) {
+    myErrorStatus=20; // no triangulation found
+    return;  
+  }
+  //
+  const gp_Trsf& aTrsf=aLoc.Transformation();
+  const Poly_Array1OfTriangle& aTrs=aTRF->Triangles();
+  const TColgp_Array1OfPnt& aNodes=aTRF->Nodes();
+  //
+  // map link/nbtriangles
+  j1=aTrs.Lower();
+  j2=aTrs.Upper();
+  for (j=j1; j<=j2; ++j) {
+    const Poly_Triangle& aTr=aTrs(j);
+    aTr.Get(n[0], n[1], n[2]);
+    n[3]=n[0];
+    for (k=0; k<3; ++k) {
+      GEOMAlgo_PassKey aPK;
+      //
+      aPK.SetIds(n[k], n[k+1]);
+      if (aMPKI.IsBound(aPK)) {
+       Standard_Integer& iCntX=aMPKI.ChangeFind(aPK);
+       ++iCntX;
+      }
+      else {
+       aMPKI.Bind(aPK, 1);
+      }
+    }
+  }
+  //
+  // boundary nodes aMBN
+  aNbLinks=aMPKI.Extent();
+  aIt.Initialize(aMPKI);
+  for (; aIt.More(); aIt.Next()) {
+    iCnt=aIt.Value();
+    if (iCnt==1) {
+      const GEOMAlgo_PassKey& aPK=aIt.Key();
+      aNbMax=aPK.NbMax();
+      pIds=(Standard_Integer*)aPK.Key();
+      for (k=1; k<3; ++k) {
+       aNx=*(pIds+aNbMax-k);
+       aMBN.Add(aNx);
+      }
+    }
+  }
+  //
+  // inner nodes=all_nodes - boundary_nodes 
+  j1=aNodes.Lower();
+  j2=aNodes.Upper();
+  for (j=j1; j<=j2; ++j) {
+    if (!aMBN.Contains(j)) {
+      aP=aNodes(j).Transformed(aTrsf);
+      aLP.Append(aP);
+    }
+  }
+  //
+  aNb=aLP.Extent();
+  //
+  if (!aNb && myNbPntsMin) { 
+    // try to fill it yourself
+    Standard_Boolean bIsDone;
+    Standard_Integer aN1, aN2;
+    Handle(Geom_Surface) aS;
+    GeomAdaptor_Surface aGAS;
+    GeomAbs_SurfaceType aType;
+    //
+    aS=BRep_Tool::Surface(aF);
+    aGAS.Load(aS);
+    aType=aGAS.GetType();
+    if (aType==GeomAbs_Plane || aType==GeomAbs_Cylinder) {
+      // inner links
+      aNbLinks=aMPKI.Extent();
+      aIt.Initialize(aMPKI);
+      for (; aIt.More(); aIt.Next()) {
+       iCnt=aIt.Value();
+       if (iCnt>1) {
+         // take the first having occured inner link
+         // and discretize it
+         const GEOMAlgo_PassKey& aPK=aIt.Key();
+         aNbMax=aPK.NbMax();
+         pIds=(Standard_Integer*)aPK.Key();
+         aN1=*(pIds+aNbMax-1);
+         aN2=*(pIds+aNbMax-2);
+         aP1=aNodes(aN1).Transformed(aTrsf);
+         aP2=aNodes(aN2).Transformed(aTrsf);
+         //
+         if (aType==GeomAbs_Cylinder) {
+           Standard_Real aTolSM;
+           gp_Cylinder aCyl;
+           //
+           aTolSM=1.523e-6;//~1.-cos(0.1 deg)
+           aCyl=aGAS.Cylinder();
+           if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, aTolSM)) {
+             continue;
+           }
+         }
+         //
+         BRepLib_MakeEdge aBME(aP1, aP2);
+         bIsDone=aBME.IsDone();
+         if (!bIsDone) {
+           myErrorStatus=30; //can not obtain the line fron the link
+           return;
+         }
+         //
+         const TopoDS_Shape& aSx=aBME.Shape();
+         const TopoDS_Edge& aE=TopoDS::Edge(aSx);
+         //
+         InnerPoints(aE, myNbPntsMin, aLP);
+         break;
+       }// if (iCnt>1)
+      }// for (; aIt.More(); aIt.Next())
+    }// if (aType==GeomAbs_Plane || aType==GeomAbs_Cylinder) 
+  }// if (!aNb && myNbPntsMin) { 
+}
+//=======================================================================
+//function : InnerPoints
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Edge& aE,
+                                         GEOMAlgo_ListOfPnt& aLP)
+{
+  myErrorStatus=0;
+  //
+  Standard_Integer j, aNbNodes, aIndex, aNb;
+  Handle(Poly_PolygonOnTriangulation) aPTE;
+  Handle(Poly_Triangulation) aTRE;
+  TopLoc_Location aLoc;
+  gp_Pnt aP;
+  //
+  aLP.Clear();
+  BRep_Tool::PolygonOnTriangulation(aE, aPTE, aTRE, aLoc);
+  if (aTRE.IsNull() || aPTE.IsNull()) {
+    myErrorStatus=20; // no triangulation found
+    return;  
+  }
+  //
+  const gp_Trsf& aTrsf=aLoc.Transformation();
+  const TColgp_Array1OfPnt& aNodes=aTRE->Nodes();
+  //
+  aNbNodes=aPTE->NbNodes();
+  const TColStd_Array1OfInteger& aInds=aPTE->Nodes();
+  for (j=2; j<aNbNodes; ++j) {
+    aIndex=aInds(j);
+    aP=aNodes(aIndex).Transformed(aTrsf);
+    aLP.Append(aP);
+  }
+  //
+  aNb=aLP.Extent();
+  if (!aNb && myNbPntsMin) { 
+    // try to fill it yourself
+    InnerPoints(aE, myNbPntsMin, aLP);
+    aNb=aLP.Extent();
+    
+  }
+}
+//=======================================================================
+//function : InnerPoints
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::InnerPoints(const TopoDS_Edge& aE,
+                                         const Standard_Integer aNbPntsMin,
+                                         GEOMAlgo_ListOfPnt& aLP)
+{
+  // try to fill it yourself
+  Standard_Boolean bInf1, bInf2;
+  Standard_Integer j, aNbT;
+  Standard_Real dT, aT, aT1, aT2;
+  gp_Pnt aP;
+  Handle(Geom_Curve) aC3D;
+  //
+  aC3D=BRep_Tool::Curve(aE, aT1, aT2);
+  if (aC3D.IsNull()) {
+    return;
+  }
+  //
+  bInf1=Precision::IsNegativeInfinite(aT1);
+  bInf2=Precision::IsPositiveInfinite(aT2);
+  if (bInf1 || bInf2) {
+    return;
+  }
+  //
+  aNbT=myNbPntsMin+1;
+  dT=(aT2-aT1)/aNbT;
+  for (j=1; j<=aNbPntsMin; ++j) {
+    aT=aT1+j*dT;
+    aC3D->D0(aT, aP);
+    aLP.Append(aP);
+  }
+}
+
+//=======================================================================
+//function : CheckData
+//purpose  : 
+//=======================================================================
+void GEOMAlgo_FinderShapeOn1::CheckData()
+{
+  myErrorStatus=0;
+  //
+  if(mySurface.IsNull()) {
+    myErrorStatus=10; // mySurface=NULL
+    return;
+  }
+  //
+  if (myShape.IsNull()) {
+    myErrorStatus=11; // myShape=NULL
+    return;
+  }
+  //
+  if (!(myShapeType==TopAbs_VERTEX ||
+       myShapeType==TopAbs_EDGE ||
+       myShapeType==TopAbs_FACE ||
+       myShapeType==TopAbs_SOLID)) {
+    myErrorStatus=12; // unallowed subshape type
+    return;
+  }
+  //
+  if (myState==GEOMAlgo_ST_UNKNOWN || 
+      myState==GEOMAlgo_ST_INOUT) {
+    myErrorStatus=13; // unallowed state type
+    return;
+  }
+  //
+  GeomAbs_SurfaceType aType;
+  //
+  myGAS.Load(mySurface);
+  aType=myGAS.GetType();
+  if (!(aType==GeomAbs_Plane || 
+       aType==GeomAbs_Cylinder ||
+       aType==GeomAbs_Sphere)) {
+    myErrorStatus=14; // unallowed surface type
+  }
+}
+
+//
+// myErrorStatus :
+//
+// 10 -mySurface=NULL
+// 11 -myShape=NULL
+// 12 -unallowed type of subshapes 
+// 13 -unallowed state  
+// 14 -unallowed surface type
+// 15 -unallowed surface type
+// 20- no triangulation found
+// 30- can not obtain the line from the link
+
+
+/*
+// Chronometer
+#include <OSD_Chronometer.hxx>
+#include <Standard_Static.hxx>
+
+Standard_STATIC(OSD_Chronometer, x_S_Chrono);
+static void x_StartChrono();
+static void x_StopChrono(); 
+static Standard_Boolean x_IsToShow(); 
+//
+//=======================================================================
+//function : x_StartChrono
+//purpose  : 
+//=======================================================================
+void x_StartChrono() 
+{
+  if (x_IsToShow()){
+    x_S_Chrono().Reset();
+    x_S_Chrono().Start();
+  }
+}
+//=======================================================================
+//function : x_StopChrono
+//purpose  : 
+//=======================================================================
+void x_StopChrono() 
+{ 
+  if (x_IsToShow()){
+    Standard_Real Chrono;
+    x_S_Chrono().Stop();
+    x_S_Chrono().Show(Chrono);
+    printf(" Tps: %lf\n", Chrono);
+    //cout << "Tps: " << Chrono << endl;
+  }
+}
+//=======================================================================
+//function : x_IsToShow
+//purpose  : 
+//=======================================================================
+Standard_Boolean x_IsToShow() 
+{ 
+  Standard_Boolean bFlag=Standard_False;
+  //
+  char *xr=getenv ("STDCHRONO");
+  if (xr!=NULL){
+    if (!strcmp (xr, "yes")) {
+      bFlag=!bFlag;
+    }
+  }
+  return bFlag;
+}
+*/
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx
new file mode 100644 (file)
index 0000000..975e80b
--- /dev/null
@@ -0,0 +1,148 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_FinderShapeOn1_HeaderFile
+#define _GEOMAlgo_FinderShapeOn1_HeaderFile
+
+#ifndef _Handle_Geom_Surface_HeaderFile
+#include <Handle_Geom_Surface.hxx>
+#endif
+#ifndef _TopAbs_ShapeEnum_HeaderFile
+#include <TopAbs_ShapeEnum.hxx>
+#endif
+#ifndef _GEOMAlgo_State_HeaderFile
+#include <GEOMAlgo_State.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _GeomAdaptor_Surface_HeaderFile
+#include <GeomAdaptor_Surface.hxx>
+#endif
+#ifndef _TopTools_ListOfShape_HeaderFile
+#include <TopTools_ListOfShape.hxx>
+#endif
+#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile
+#include <GEOMAlgo_IndexedDataMapOfShapeState.hxx>
+#endif
+#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile
+#include <GEOMAlgo_ShapeAlgo.hxx>
+#endif
+class Geom_Surface;
+class TopTools_ListOfShape;
+class TopoDS_Face;
+class GEOMAlgo_ListOfPnt;
+class TopoDS_Edge;
+class GEOMAlgo_IndexedDataMapOfShapeState;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class GEOMAlgo_FinderShapeOn1  : public GEOMAlgo_ShapeAlgo {
+
+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_FinderShapeOn1();
+Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn1();
+Standard_EXPORT   void SetSurface(const Handle(Geom_Surface)& aS) ;
+Standard_EXPORT   void SetShapeType(const TopAbs_ShapeEnum aST) ;
+Standard_EXPORT   void SetState(const GEOMAlgo_State aSF) ;
+Standard_EXPORT   void SetNbPntsMin(const Standard_Integer aNb) ;
+Standard_EXPORT   Standard_Integer NbPntsMin() const;
+Standard_EXPORT   void SetNbPntsMax(const Standard_Integer aNb) ;
+Standard_EXPORT   Standard_Integer NbPntsMax() const;
+Standard_EXPORT  const Handle_Geom_Surface& Surface() const;
+Standard_EXPORT   TopAbs_ShapeEnum ShapeType() const;
+Standard_EXPORT   GEOMAlgo_State State() const;
+Standard_EXPORT virtual  void Perform() ;
+Standard_EXPORT  const TopTools_ListOfShape& Shapes() const;
+Standard_EXPORT  const GEOMAlgo_IndexedDataMapOfShapeState& MSS() const;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ // 
+Standard_EXPORT virtual  void CheckData() ;
+Standard_EXPORT   void ProcessVertices() ;
+Standard_EXPORT   void ProcessEdges() ;
+Standard_EXPORT   void ProcessFaces() ;
+Standard_EXPORT   void ProcessSolids() ;
+Standard_EXPORT   void InnerPoints(const TopoDS_Face& aF,GEOMAlgo_ListOfPnt& aLP) ;
+Standard_EXPORT   void InnerPoints(const TopoDS_Edge& aE,GEOMAlgo_ListOfPnt& aLP) ;
+Standard_EXPORT   void InnerPoints(const TopoDS_Edge& aE,const Standard_Integer aNbPnts,GEOMAlgo_ListOfPnt& aLP) ;
+
+
+ // Fields PROTECTED
+ //
+Handle_Geom_Surface mySurface;
+TopAbs_ShapeEnum myShapeType;
+GEOMAlgo_State myState;
+Standard_Integer myNbPntsMin;
+Standard_Integer myNbPntsMax;
+GeomAdaptor_Surface myGAS;
+TopTools_ListOfShape myLS;
+GEOMAlgo_IndexedDataMapOfShapeState myMSS;
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx
new file mode 100644 (file)
index 0000000..6c89328
--- /dev/null
@@ -0,0 +1,26 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_FinderShapeOn1.jxx>
+
+
+
diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx
new file mode 100644 (file)
index 0000000..2dc017a
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef _Geom_Surface_HeaderFile
+#include <Geom_Surface.hxx>
+#endif
+#ifndef _TopTools_ListOfShape_HeaderFile
+#include <TopTools_ListOfShape.hxx>
+#endif
+#ifndef _TopoDS_Face_HeaderFile
+#include <TopoDS_Face.hxx>
+#endif
+#ifndef _GEOMAlgo_ListOfPnt_HeaderFile
+#include <GEOMAlgo_ListOfPnt.hxx>
+#endif
+#ifndef _TopoDS_Edge_HeaderFile
+#include <TopoDS_Edge.hxx>
+#endif
+#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile
+#include <GEOMAlgo_IndexedDataMapOfShapeState.hxx>
+#endif
+#ifndef _GEOMAlgo_FinderShapeOn1_HeaderFile
+#include <GEOMAlgo_FinderShapeOn1.hxx>
+#endif
index b2d4e75834c584ed865133ec03b2b418545bf2f2..dfdc79c7c8304f058ce2ad9b0a9e0b70c994a6e0 100644 (file)
@@ -22,8 +22,8 @@
 #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
 #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
 
-#include <GEOMAlgo_PassKey.hxx>
-#include <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
+#include <GEOMAlgo_PassKeyShape.hxx>
+#include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
 #include <GEOMAlgo_Tools.hxx>
 #include <GEOMAlgo_CoupleOfShapes.hxx>
 
   TopoDS_Shape aNewShape;
   TopTools_IndexedMapOfShape aMF;
   TopTools_ListIteratorOfListOfShape aItS;
-  GEOMAlgo_PassKey aPKF;
-  GEOMAlgo_IndexedDataMapOfPassKeyListOfShape aMPKLF;
+  GEOMAlgo_PassKeyShape aPKF;
+  GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF;
   //
   TopExp::MapShapes(myShape, aType, aMF);
   //
   TopTools_IndexedDataMapOfShapeListOfShape aMFS;
   TopTools_IndexedMapOfShape aMx, aMS;
   TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItIm;
-  GEOMAlgo_IndexedDataMapOfPassKeyListOfShape aMPKLS;
-  GEOMAlgo_PassKey aPKSx;
+  GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLS;
+  GEOMAlgo_PassKeyShape aPKSx;
   GEOMAlgo_CoupleOfShapes aCS;
   //
   aBB.MakeCompound(aCmp);
index a8c778b6ebf11cf04c2e6f2e6314e151616d20ce..00447584a4a10298f09ba81098b30a6ce22fe58a 100755 (executable)
@@ -20,7 +20,7 @@ uses
     DataMapOfShapeShape from TopTools,
     DataMapOfShapeListOfShape from TopTools, 
     Context from IntTools, 
-    PassKey from GEOMAlgo
+    PassKeyShape from GEOMAlgo
 
 --raises
 
@@ -87,12 +87,12 @@ is
  
     EdgePassKey(me:out; 
            aE:Edge from TopoDS;  
-           aPK:out PassKey from GEOMAlgo) 
+           aPK:out PassKeyShape from GEOMAlgo) 
        is protected;     
    
     FacePassKey(me:out; 
            aF:Face from TopoDS;  
-           aPK:out PassKey from GEOMAlgo) 
+           aPK:out PassKeyShape from GEOMAlgo) 
        is protected; 
         
     MakeVertex(me:out; 
index 53f7a6957f56ca8fb64a82f1c7b2fa49e99abedf..76bba07cceb1e4da88e635e9e2875e504e1b0877 100755 (executable)
@@ -58,8 +58,8 @@
 
 #include <GEOMAlgo_IndexedDataMapOfIntegerShape.hxx>
 #include <GEOMAlgo_IndexedDataMapOfShapeBox.hxx>
-#include <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
-#include <GEOMAlgo_PassKey.hxx>
+#include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#include <GEOMAlgo_PassKeyShape.hxx>
 #include <GEOMAlgo_Tools.hxx>
 //
 
@@ -324,7 +324,7 @@ void GEOMAlgo_Gluer::MakeSolids()
   //
   aNbS=aMS.Extent();
   if (aNbS) {
-    //Standard_Real aTol=1.e-7;
+    Standard_Real aTol=1.e-7;
     BOP_CorrectTolerances::CorrectCurveOnSurface(myResult);
   }
 }
@@ -405,8 +405,8 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
   TopoDS_Shape aNewShape;
   TopTools_IndexedMapOfShape aMF;
   TopTools_ListIteratorOfListOfShape aItS;
-  GEOMAlgo_PassKey aPKF;
-  GEOMAlgo_IndexedDataMapOfPassKeyListOfShape aMPKLF;
+  GEOMAlgo_PassKeyShape aPKF;
+  GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF;
   //
   TopExp::MapShapes(myShape, aType, aMF);
   //
@@ -460,8 +460,6 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
     //
     const TopoDS_Shape& aS1=aLSDF.First();
     //
-    //modified by NIZNHY-PKV Fri Jan 21 15:34:00 2005 f
-    //
     bHasNewSubShape=Standard_True;
     // prevent creation of a new shape if there are not
     // new subshapes of aSS among the originals
@@ -472,9 +470,8 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
        aNewShape.Orientation(TopAbs_FORWARD);
       }
     }
-    //modified by NIZNHY-PKV Fri Jan 21 15:34:05 2005 t
     //
-    if (bHasNewSubShape) {//modified by NIZNHY-PKV Fri Jan 21 15:34:10 2005ft 
+    if (bHasNewSubShape) { 
       if (aType==TopAbs_FACE) {
        TopoDS_Face aNewFace;
        //
@@ -604,7 +601,7 @@ void GEOMAlgo_Gluer::InnerTolerance()
 //purpose  : 
 //=======================================================================
 void GEOMAlgo_Gluer::FacePassKey(const TopoDS_Face& aF, 
-                                GEOMAlgo_PassKey& aPK)
+                                GEOMAlgo_PassKeyShape& aPK)
 {
   Standard_Integer i, aNbE, aNbMax;
   TopTools_ListOfShape aLE;
@@ -634,7 +631,7 @@ void GEOMAlgo_Gluer::FacePassKey(const TopoDS_Face& aF,
 //purpose  : 
 //=======================================================================
 void GEOMAlgo_Gluer::EdgePassKey(const TopoDS_Edge& aE, 
-                                GEOMAlgo_PassKey& aPK)
+                                GEOMAlgo_PassKeyShape& aPK)
 {
   TopoDS_Vertex aV1, aV2;
   //
@@ -867,8 +864,6 @@ Standard_Boolean GEOMAlgo_Gluer::IsToReverse(const TopoDS_Face& aFR,
   }
   return bRet;
 }
-//
-//modified by NIZNHY-PKV Fri Jan 21 10:55:42 2005 f
 //=======================================================================
 //function : HasNewSubShape
 //purpose  : 
@@ -975,7 +970,6 @@ Standard_Boolean GEOMAlgo_Gluer::IsDeleted (const TopoDS_Shape& aS)
   //
   return bRet;
 }
-//modified by NIZNHY-PKV Fri Jan 21 10:59:21 2005 t
 //
 // ErrorStatus
 //
index 994b717fa4db6f0d85cf06ec9499f9d5e4a139a5..f37b8010cb7464626c2af0a1f6ba65376b4b6402 100644 (file)
@@ -49,7 +49,7 @@
 class TopTools_ListOfShape;
 class TopoDS_Shape;
 class TopoDS_Edge;
-class GEOMAlgo_PassKey;
+class GEOMAlgo_PassKeyShape;
 class TopoDS_Face;
 class TopoDS_Vertex;
 class TopTools_DataMapOfShapeListOfShape;
@@ -110,8 +110,8 @@ Standard_EXPORT   void MakeShapes(const TopAbs_ShapeEnum aType) ;
 Standard_EXPORT   void MakeShells() ;
 Standard_EXPORT   void MakeSolids() ;
 Standard_EXPORT   void InnerTolerance() ;
-Standard_EXPORT   void EdgePassKey(const TopoDS_Edge& aE,GEOMAlgo_PassKey& aPK) ;
-Standard_EXPORT   void FacePassKey(const TopoDS_Face& aF,GEOMAlgo_PassKey& aPK) ;
+Standard_EXPORT   void EdgePassKey(const TopoDS_Edge& aE,GEOMAlgo_PassKeyShape& aPK) ;
+Standard_EXPORT   void FacePassKey(const TopoDS_Face& aF,GEOMAlgo_PassKeyShape& aPK) ;
 Standard_EXPORT   void MakeVertex(const TopTools_ListOfShape& aLV,TopoDS_Vertex& aNewV) ;
 Standard_EXPORT   void MakeEdge(const TopoDS_Edge& aEdge,TopoDS_Edge& aNewEdge) ;
 Standard_EXPORT   void MakeFace(const TopoDS_Face& aFace,TopoDS_Face& aNewEdge) ;
index a80b13204d1d45de08ce4f0b911fc0a0921755ae..62ed2afca4b8d9222efa1c533c39a58ee98c741c 100644 (file)
@@ -7,8 +7,8 @@
 #ifndef _TopoDS_Edge_HeaderFile
 #include <TopoDS_Edge.hxx>
 #endif
-#ifndef _GEOMAlgo_PassKey_HeaderFile
-#include <GEOMAlgo_PassKey.hxx>
+#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
+#include <GEOMAlgo_PassKeyShape.hxx>
 #endif
 #ifndef _TopoDS_Face_HeaderFile
 #include <TopoDS_Face.hxx>
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx
deleted file mode 100644 (file)
index af09ac4..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-// File generated by CPPExt (Transient)
-//
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile
-#define _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile
-#include <Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx>
-#endif
-
-#ifndef _GEOMAlgo_PassKey_HeaderFile
-#include <GEOMAlgo_PassKey.hxx>
-#endif
-#ifndef _Standard_Integer_HeaderFile
-#include <Standard_Integer.hxx>
-#endif
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
-#endif
-#ifndef _TCollection_MapNodePtr_HeaderFile
-#include <TCollection_MapNodePtr.hxx>
-#endif
-#ifndef _TCollection_MapNode_HeaderFile
-#include <TCollection_MapNode.hxx>
-#endif
-class GEOMAlgo_PassKey;
-class TopTools_ListOfShape;
-class GEOMAlgo_PassKeyMapHasher;
-class GEOMAlgo_IndexedDataMapOfPassKeyListOfShape;
-
-
-class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape : public TCollection_MapNode {
-
-public:
-
-    void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
- // Methods PUBLIC
- // 
-GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape(const GEOMAlgo_PassKey& K1,const Standard_Integer K2,const TopTools_ListOfShape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2);
-  GEOMAlgo_PassKey& Key1() const;
-  Standard_Integer& Key2() const;
-  TCollection_MapNodePtr& Next2() const;
-  TopTools_ListOfShape& Value() const;
-Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape();
-
-
-
-
- // Type management
- //
- Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_();
- 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
- //
-GEOMAlgo_PassKey myKey1;
-Standard_Integer myKey2;
-TopTools_ListOfShape myValue;
-TCollection_MapNodePtr myNext2;
-
-
-};
-
-#define TheKey GEOMAlgo_PassKey
-#define TheKey_hxx <GEOMAlgo_PassKey.hxx>
-#define TheItem TopTools_ListOfShape
-#define TheItem_hxx <TopTools_ListOfShape.hxx>
-#define Hasher GEOMAlgo_PassKeyMapHasher
-#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
-#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx>
-#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_()
-#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
-
-#include <TCollection_IndexedDataMapNode.lxx>
-
-#undef TheKey
-#undef TheKey_hxx
-#undef TheItem
-#undef TheItem_hxx
-#undef Hasher
-#undef Hasher_hxx
-#undef TCollection_IndexedDataMapNode
-#undef TCollection_IndexedDataMapNode_hxx
-#undef Handle_TCollection_IndexedDataMapNode
-#undef TCollection_IndexedDataMapNode_Type_
-#undef TCollection_IndexedDataMap
-#undef TCollection_IndexedDataMap_hxx
-
-
-// other Inline functions and methods (like "C++: function call" methods)
-//
-
-
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx
deleted file mode 100644 (file)
index 97be9da..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-// File generated by CPPExt (Transient)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#include <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx>
-
-#ifndef _Standard_TypeMismatch_HeaderFile
-#include <Standard_TypeMismatch.hxx>
-#endif
-
-#ifndef _GEOMAlgo_PassKey_HeaderFile
-#include <GEOMAlgo_PassKey.hxx>
-#endif
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
-#endif
-#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile
-#include <GEOMAlgo_PassKeyMapHasher.hxx>
-#endif
-#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_HeaderFile
-#include <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
-#endif
-GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape() {}
-
-
-Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_()
-{
-
-    static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape",
-                                                        sizeof(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape),
-                                                        1,
-                                                        (Standard_Address)_Ancestors,
-                                                        (Standard_Address)NULL);
-
-  return _aType;
-}
-
-
-// DownCast method
-//   allow safe downcasting
-//
-const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) 
-{
-  Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape))) {
-       _anOtherObject = Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)((Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)&)AnObject);
-     }
-  }
-
-  return _anOtherObject ;
-}
-const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape::DynamicType() const 
-{ 
-  return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) ; 
-}
-Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape::IsKind(const Handle(Standard_Type)& AType) const 
-{ 
-  return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) == AType || TCollection_MapNode::IsKind(AType)); 
-}
-Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape() {}
-#define TheKey GEOMAlgo_PassKey
-#define TheKey_hxx <GEOMAlgo_PassKey.hxx>
-#define TheItem TopTools_ListOfShape
-#define TheItem_hxx <TopTools_ListOfShape.hxx>
-#define Hasher GEOMAlgo_PassKeyMapHasher
-#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
-#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx>
-#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_()
-#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
-#include <TCollection_IndexedDataMapNode.gxx>
-
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx
new file mode 100644 (file)
index 0000000..94b521f
--- /dev/null
@@ -0,0 +1,147 @@
+// File generated by CPPExt (Transient)
+//
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+#define _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+#include <Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#endif
+
+#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
+#include <GEOMAlgo_PassKeyShape.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _TopTools_ListOfShape_HeaderFile
+#include <TopTools_ListOfShape.hxx>
+#endif
+#ifndef _TCollection_MapNodePtr_HeaderFile
+#include <TCollection_MapNodePtr.hxx>
+#endif
+#ifndef _TCollection_MapNode_HeaderFile
+#include <TCollection_MapNode.hxx>
+#endif
+class GEOMAlgo_PassKeyShape;
+class TopTools_ListOfShape;
+class GEOMAlgo_PassKeyMapHasher;
+class GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape;
+
+
+class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape : public TCollection_MapNode {
+
+public:
+
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+ // Methods PUBLIC
+ // 
+GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape(const GEOMAlgo_PassKeyShape& K1,const Standard_Integer K2,const TopTools_ListOfShape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2);
+  GEOMAlgo_PassKeyShape& Key1() const;
+  Standard_Integer& Key2() const;
+  TCollection_MapNodePtr& Next2() const;
+  TopTools_ListOfShape& Value() const;
+Standard_EXPORT ~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape();
+
+
+
+
+ // Type management
+ //
+ Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_();
+ Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
+ Standard_EXPORT Standard_Boolean             IsKind(const Handle(Standard_Type)&) const;
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+GEOMAlgo_PassKeyShape myKey1;
+Standard_Integer myKey2;
+TopTools_ListOfShape myValue;
+TCollection_MapNodePtr myNext2;
+
+
+};
+
+#define TheKey GEOMAlgo_PassKeyShape
+#define TheKey_hxx <GEOMAlgo_PassKeyShape.hxx>
+#define TheItem TopTools_ListOfShape
+#define TheItem_hxx <TopTools_ListOfShape.hxx>
+#define Hasher GEOMAlgo_PassKeyMapHasher
+#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
+#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_()
+#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
+
+#include <TCollection_IndexedDataMapNode.lxx>
+
+#undef TheKey
+#undef TheKey_hxx
+#undef TheItem
+#undef TheItem_hxx
+#undef Hasher
+#undef Hasher_hxx
+#undef TCollection_IndexedDataMapNode
+#undef TCollection_IndexedDataMapNode_hxx
+#undef Handle_TCollection_IndexedDataMapNode
+#undef TCollection_IndexedDataMapNode_Type_
+#undef TCollection_IndexedDataMap
+#undef TCollection_IndexedDataMap_hxx
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx
new file mode 100644 (file)
index 0000000..be0803d
--- /dev/null
@@ -0,0 +1,103 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx>
+
+#ifndef _Standard_TypeMismatch_HeaderFile
+#include <Standard_TypeMismatch.hxx>
+#endif
+
+#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
+#include <GEOMAlgo_PassKeyShape.hxx>
+#endif
+#ifndef _TopTools_ListOfShape_HeaderFile
+#include <TopTools_ListOfShape.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile
+#include <GEOMAlgo_PassKeyMapHasher.hxx>
+#endif
+#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+#include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#endif
+GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::~GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape() {}
+
+
+Standard_EXPORT Handle_Standard_Type& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_()
+{
+
+    static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode);
+  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode);
+  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
+  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
+  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
+  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
+
+  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
+  static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape",
+                                                        sizeof(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape),
+                                                        1,
+                                                        (Standard_Address)_Ancestors,
+                                                        (Standard_Address)NULL);
+
+  return _aType;
+}
+
+
+// DownCast method
+//   allow safe downcasting
+//
+const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) 
+{
+  Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) _anOtherObject;
+
+  if (!AnObject.IsNull()) {
+     if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape))) {
+       _anOtherObject = Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)((Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)&)AnObject);
+     }
+  }
+
+  return _anOtherObject ;
+}
+const Handle(Standard_Type)& GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::DynamicType() const 
+{ 
+  return STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) ; 
+}
+Standard_Boolean GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::IsKind(const Handle(Standard_Type)& AType) const 
+{ 
+  return (STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) == AType || TCollection_MapNode::IsKind(AType)); 
+}
+Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape::~Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape() {}
+#define TheKey GEOMAlgo_PassKeyShape
+#define TheKey_hxx <GEOMAlgo_PassKeyShape.hxx>
+#define TheItem TopTools_ListOfShape
+#define TheItem_hxx <TopTools_ListOfShape.hxx>
+#define Hasher GEOMAlgo_PassKeyMapHasher
+#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
+#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_()
+#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#include <TCollection_IndexedDataMapNode.gxx>
+
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx
deleted file mode 100644 (file)
index e89044f..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_HeaderFile
-#define _GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_HeaderFile
-
-#ifndef _TCollection_BasicMap_HeaderFile
-#include <TCollection_BasicMap.hxx>
-#endif
-#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile
-#include <Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.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_OutOfRange;
-class Standard_NoSuchObject;
-class GEOMAlgo_PassKey;
-class TopTools_ListOfShape;
-class GEOMAlgo_PassKeyMapHasher;
-class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape;
-
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-
-class GEOMAlgo_IndexedDataMapOfPassKeyListOfShape  : 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_IndexedDataMapOfPassKeyListOfShape(const Standard_Integer NbBuckets = 1);
-Standard_EXPORT   GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& Assign(const GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& Other) ;
-  GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& operator =(const GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& Other) 
-{
-  return Assign(Other);
-}
-
-Standard_EXPORT   void ReSize(const Standard_Integer NbBuckets) ;
-Standard_EXPORT   void Clear() ;
-~GEOMAlgo_IndexedDataMapOfPassKeyListOfShape()
-{
-  Clear();
-}
-
-Standard_EXPORT   Standard_Integer Add(const GEOMAlgo_PassKey& K,const TopTools_ListOfShape& I) ;
-Standard_EXPORT   void Substitute(const Standard_Integer I,const GEOMAlgo_PassKey& K,const TopTools_ListOfShape& T) ;
-Standard_EXPORT   void RemoveLast() ;
-Standard_EXPORT   Standard_Boolean Contains(const GEOMAlgo_PassKey& K) const;
-Standard_EXPORT  const GEOMAlgo_PassKey& FindKey(const Standard_Integer I) const;
-Standard_EXPORT  const TopTools_ListOfShape& FindFromIndex(const Standard_Integer I) const;
- const TopTools_ListOfShape& operator ()(const Standard_Integer I) const
-{
-  return FindFromIndex(I);
-}
-
-Standard_EXPORT   TopTools_ListOfShape& ChangeFromIndex(const Standard_Integer I) ;
-  TopTools_ListOfShape& operator ()(const Standard_Integer I) 
-{
-  return ChangeFromIndex(I);
-}
-
-Standard_EXPORT   Standard_Integer FindIndex(const GEOMAlgo_PassKey& K) const;
-Standard_EXPORT  const TopTools_ListOfShape& FindFromKey(const GEOMAlgo_PassKey& K) const;
-Standard_EXPORT   TopTools_ListOfShape& ChangeFromKey(const GEOMAlgo_PassKey& K) ;
-
-
-
-
-
-protected:
-
- // Methods PROTECTED
- // 
-
-
- // Fields PROTECTED
- //
-
-
-private: 
-
- // Methods PRIVATE
- // 
-Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyListOfShape(const GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& Other);
-
-
- // Fields PRIVATE
- //
-
-
-};
-
-
-
-
-
-// other Inline functions and methods (like "C++: function call" methods)
-//
-
-
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx
deleted file mode 100644 (file)
index 94bdc32..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#include <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
-
-#ifndef _Standard_DomainError_HeaderFile
-#include <Standard_DomainError.hxx>
-#endif
-#ifndef _Standard_OutOfRange_HeaderFile
-#include <Standard_OutOfRange.hxx>
-#endif
-#ifndef _Standard_NoSuchObject_HeaderFile
-#include <Standard_NoSuchObject.hxx>
-#endif
-#ifndef _GEOMAlgo_PassKey_HeaderFile
-#include <GEOMAlgo_PassKey.hxx>
-#endif
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
-#endif
-#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile
-#include <GEOMAlgo_PassKeyMapHasher.hxx>
-#endif
-#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile
-#include <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx>
-#endif
-
-#define TheKey GEOMAlgo_PassKey
-#define TheKey_hxx <GEOMAlgo_PassKey.hxx>
-#define TheItem TopTools_ListOfShape
-#define TheItem_hxx <TopTools_ListOfShape.hxx>
-#define Hasher GEOMAlgo_PassKeyMapHasher
-#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
-#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx>
-#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_Type_()
-#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyListOfShape
-#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
-#include <TCollection_IndexedDataMap.gxx>
-
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx
new file mode 100644 (file)
index 0000000..5550699
--- /dev/null
@@ -0,0 +1,141 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+#define _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+
+#ifndef _TCollection_BasicMap_HeaderFile
+#include <TCollection_BasicMap.hxx>
+#endif
+#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+#include <Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.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_OutOfRange;
+class Standard_NoSuchObject;
+class GEOMAlgo_PassKeyShape;
+class TopTools_ListOfShape;
+class GEOMAlgo_PassKeyMapHasher;
+class GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape  : 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_IndexedDataMapOfPassKeyShapeListOfShape(const Standard_Integer NbBuckets = 1);
+Standard_EXPORT   GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Assign(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other) ;
+  GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& operator =(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other) 
+{
+  return Assign(Other);
+}
+
+Standard_EXPORT   void ReSize(const Standard_Integer NbBuckets) ;
+Standard_EXPORT   void Clear() ;
+~GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape()
+{
+  Clear();
+}
+
+Standard_EXPORT   Standard_Integer Add(const GEOMAlgo_PassKeyShape& K,const TopTools_ListOfShape& I) ;
+Standard_EXPORT   void Substitute(const Standard_Integer I,const GEOMAlgo_PassKeyShape& K,const TopTools_ListOfShape& T) ;
+Standard_EXPORT   void RemoveLast() ;
+Standard_EXPORT   Standard_Boolean Contains(const GEOMAlgo_PassKeyShape& K) const;
+Standard_EXPORT  const GEOMAlgo_PassKeyShape& FindKey(const Standard_Integer I) const;
+Standard_EXPORT  const TopTools_ListOfShape& FindFromIndex(const Standard_Integer I) const;
+ const TopTools_ListOfShape& operator ()(const Standard_Integer I) const
+{
+  return FindFromIndex(I);
+}
+
+Standard_EXPORT   TopTools_ListOfShape& ChangeFromIndex(const Standard_Integer I) ;
+  TopTools_ListOfShape& operator ()(const Standard_Integer I) 
+{
+  return ChangeFromIndex(I);
+}
+
+Standard_EXPORT   Standard_Integer FindIndex(const GEOMAlgo_PassKeyShape& K) const;
+Standard_EXPORT  const TopTools_ListOfShape& FindFromKey(const GEOMAlgo_PassKeyShape& K) const;
+Standard_EXPORT   TopTools_ListOfShape& ChangeFromKey(const GEOMAlgo_PassKeyShape& K) ;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+Standard_EXPORT GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape(const GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& Other);
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx
new file mode 100644 (file)
index 0000000..8d5b2b3
--- /dev/null
@@ -0,0 +1,60 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
+
+#ifndef _Standard_DomainError_HeaderFile
+#include <Standard_DomainError.hxx>
+#endif
+#ifndef _Standard_OutOfRange_HeaderFile
+#include <Standard_OutOfRange.hxx>
+#endif
+#ifndef _Standard_NoSuchObject_HeaderFile
+#include <Standard_NoSuchObject.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
+#include <GEOMAlgo_PassKeyShape.hxx>
+#endif
+#ifndef _TopTools_ListOfShape_HeaderFile
+#include <TopTools_ListOfShape.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKeyMapHasher_HeaderFile
+#include <GEOMAlgo_PassKeyMapHasher.hxx>
+#endif
+#ifndef _GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+#include <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#endif
+
+#define TheKey GEOMAlgo_PassKeyShape
+#define TheKey_hxx <GEOMAlgo_PassKeyShape.hxx>
+#define TheItem TopTools_ListOfShape
+#define TheItem_hxx <TopTools_ListOfShape.hxx>
+#define Hasher GEOMAlgo_PassKeyMapHasher
+#define Hasher_hxx <GEOMAlgo_PassKeyMapHasher.hxx>
+#define TCollection_IndexedDataMapNode GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMapNode_hxx <GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#define Handle_TCollection_IndexedDataMapNode Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMapNode_Type_() GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_Type_()
+#define TCollection_IndexedDataMap GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape
+#define TCollection_IndexedDataMap_hxx <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
+#include <TCollection_IndexedDataMap.gxx>
+
diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt.hxx
new file mode 100644 (file)
index 0000000..b370cbb
--- /dev/null
@@ -0,0 +1,131 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile
+#define _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile
+
+#ifndef _Standard_Address_HeaderFile
+#include <Standard_Address.hxx>
+#endif
+#ifndef _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile
+#include <Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+class Standard_NoMoreObject;
+class Standard_NoSuchObject;
+class GEOMAlgo_ListOfPnt;
+class gp_Pnt;
+class GEOMAlgo_ListNodeOfListOfPnt;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class GEOMAlgo_ListIteratorOfListOfPnt  {
+
+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_ListIteratorOfListOfPnt();
+Standard_EXPORT GEOMAlgo_ListIteratorOfListOfPnt(const GEOMAlgo_ListOfPnt& L);
+Standard_EXPORT   void Initialize(const GEOMAlgo_ListOfPnt& L) ;
+  Standard_Boolean More() const;
+Standard_EXPORT   void Next() ;
+Standard_EXPORT   gp_Pnt& Value() const;
+
+
+friend class GEOMAlgo_ListOfPnt;
+
+
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+Standard_Address current;
+Standard_Address previous;
+
+
+};
+
+#define Item gp_Pnt
+#define Item_hxx <gp_Pnt.hxx>
+#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_hxx <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt
+#define TCollection_ListIterator_hxx <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_()
+#define TCollection_List GEOMAlgo_ListOfPnt
+#define TCollection_List_hxx <GEOMAlgo_ListOfPnt.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
diff --git a/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx
new file mode 100644 (file)
index 0000000..bc1684b
--- /dev/null
@@ -0,0 +1,52 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+
+#ifndef _Standard_NoMoreObject_HeaderFile
+#include <Standard_NoMoreObject.hxx>
+#endif
+#ifndef _Standard_NoSuchObject_HeaderFile
+#include <Standard_NoSuchObject.hxx>
+#endif
+#ifndef _GEOMAlgo_ListOfPnt_HeaderFile
+#include <GEOMAlgo_ListOfPnt.hxx>
+#endif
+#ifndef _gp_Pnt_HeaderFile
+#include <gp_Pnt.hxx>
+#endif
+#ifndef _GEOMAlgo_ListNodeOfListOfPnt_HeaderFile
+#include <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#endif
+
+#define Item gp_Pnt
+#define Item_hxx <gp_Pnt.hxx>
+#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_hxx <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt
+#define TCollection_ListIterator_hxx <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_()
+#define TCollection_List GEOMAlgo_ListOfPnt
+#define TCollection_List_hxx <GEOMAlgo_ListOfPnt.hxx>
+#include <TCollection_ListIterator.gxx>
+
diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx
new file mode 100644 (file)
index 0000000..fd9b15d
--- /dev/null
@@ -0,0 +1,130 @@
+// File generated by CPPExt (Transient)
+//
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_ListNodeOfListOfPnt_HeaderFile
+#define _GEOMAlgo_ListNodeOfListOfPnt_HeaderFile
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile
+#include <Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#endif
+
+#ifndef _gp_Pnt_HeaderFile
+#include <gp_Pnt.hxx>
+#endif
+#ifndef _TCollection_MapNode_HeaderFile
+#include <TCollection_MapNode.hxx>
+#endif
+#ifndef _TCollection_MapNodePtr_HeaderFile
+#include <TCollection_MapNodePtr.hxx>
+#endif
+class gp_Pnt;
+class GEOMAlgo_ListOfPnt;
+class GEOMAlgo_ListIteratorOfListOfPnt;
+
+
+class GEOMAlgo_ListNodeOfListOfPnt : public TCollection_MapNode {
+
+public:
+
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+ // Methods PUBLIC
+ // 
+GEOMAlgo_ListNodeOfListOfPnt(const gp_Pnt& I,const TCollection_MapNodePtr& n);
+  gp_Pnt& Value() const;
+Standard_EXPORT ~GEOMAlgo_ListNodeOfListOfPnt();
+
+
+
+
+ // Type management
+ //
+ Standard_EXPORT friend Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfPnt_Type_();
+ Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
+ Standard_EXPORT Standard_Boolean             IsKind(const Handle(Standard_Type)&) const;
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+gp_Pnt myValue;
+
+
+};
+
+#define Item gp_Pnt
+#define Item_hxx <gp_Pnt.hxx>
+#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_hxx <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt
+#define TCollection_ListIterator_hxx <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_()
+#define TCollection_List GEOMAlgo_ListOfPnt
+#define TCollection_List_hxx <GEOMAlgo_ListOfPnt.hxx>
+
+#include <TCollection_ListNode.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
diff --git a/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx
new file mode 100644 (file)
index 0000000..bb34737
--- /dev/null
@@ -0,0 +1,98 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+
+#ifndef _Standard_TypeMismatch_HeaderFile
+#include <Standard_TypeMismatch.hxx>
+#endif
+
+#ifndef _gp_Pnt_HeaderFile
+#include <gp_Pnt.hxx>
+#endif
+#ifndef _GEOMAlgo_ListOfPnt_HeaderFile
+#include <GEOMAlgo_ListOfPnt.hxx>
+#endif
+#ifndef _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile
+#include <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#endif
+GEOMAlgo_ListNodeOfListOfPnt::~GEOMAlgo_ListNodeOfListOfPnt() {}
+
+
+Standard_EXPORT Handle_Standard_Type& GEOMAlgo_ListNodeOfListOfPnt_Type_()
+{
+
+    static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode);
+  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode);
+  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
+  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
+  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
+  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
+
+  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
+  static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_ListNodeOfListOfPnt",
+                                                        sizeof(GEOMAlgo_ListNodeOfListOfPnt),
+                                                        1,
+                                                        (Standard_Address)_Ancestors,
+                                                        (Standard_Address)NULL);
+
+  return _aType;
+}
+
+
+// DownCast method
+//   allow safe downcasting
+//
+const Handle(GEOMAlgo_ListNodeOfListOfPnt) Handle(GEOMAlgo_ListNodeOfListOfPnt)::DownCast(const Handle(Standard_Transient)& AnObject) 
+{
+  Handle(GEOMAlgo_ListNodeOfListOfPnt) _anOtherObject;
+
+  if (!AnObject.IsNull()) {
+     if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt))) {
+       _anOtherObject = Handle(GEOMAlgo_ListNodeOfListOfPnt)((Handle(GEOMAlgo_ListNodeOfListOfPnt)&)AnObject);
+     }
+  }
+
+  return _anOtherObject ;
+}
+const Handle(Standard_Type)& GEOMAlgo_ListNodeOfListOfPnt::DynamicType() const 
+{ 
+  return STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt) ; 
+}
+Standard_Boolean GEOMAlgo_ListNodeOfListOfPnt::IsKind(const Handle(Standard_Type)& AType) const 
+{ 
+  return (STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt) == AType || TCollection_MapNode::IsKind(AType)); 
+}
+Handle_GEOMAlgo_ListNodeOfListOfPnt::~Handle_GEOMAlgo_ListNodeOfListOfPnt() {}
+#define Item gp_Pnt
+#define Item_hxx <gp_Pnt.hxx>
+#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_hxx <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt
+#define TCollection_ListIterator_hxx <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_()
+#define TCollection_List GEOMAlgo_ListOfPnt
+#define TCollection_List_hxx <GEOMAlgo_ListOfPnt.hxx>
+#include <TCollection_ListNode.gxx>
+
diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx b/src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx
new file mode 100644 (file)
index 0000000..2702076
--- /dev/null
@@ -0,0 +1,157 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_ListOfPnt_HeaderFile
+#define _GEOMAlgo_ListOfPnt_HeaderFile
+
+#ifndef _Standard_Address_HeaderFile
+#include <Standard_Address.hxx>
+#endif
+#ifndef _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile
+#include <Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+class Standard_NoSuchObject;
+class GEOMAlgo_ListIteratorOfListOfPnt;
+class gp_Pnt;
+class GEOMAlgo_ListNodeOfListOfPnt;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class GEOMAlgo_ListOfPnt  {
+
+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_ListOfPnt();
+Standard_EXPORT   void Assign(const GEOMAlgo_ListOfPnt& Other) ;
+  void operator=(const GEOMAlgo_ListOfPnt& Other) 
+{
+  Assign(Other);
+}
+
+Standard_EXPORT   Standard_Integer Extent() const;
+Standard_EXPORT   void Clear() ;
+~GEOMAlgo_ListOfPnt()
+{
+  Clear();
+}
+
+  Standard_Boolean IsEmpty() const;
+Standard_EXPORT   void Prepend(const gp_Pnt& I) ;
+Standard_EXPORT   void Prepend(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& theIt) ;
+Standard_EXPORT   void Prepend(GEOMAlgo_ListOfPnt& Other) ;
+Standard_EXPORT   void Append(const gp_Pnt& I) ;
+Standard_EXPORT   void Append(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& theIt) ;
+Standard_EXPORT   void Append(GEOMAlgo_ListOfPnt& Other) ;
+Standard_EXPORT   gp_Pnt& First() const;
+Standard_EXPORT   gp_Pnt& Last() const;
+Standard_EXPORT   void RemoveFirst() ;
+Standard_EXPORT   void Remove(GEOMAlgo_ListIteratorOfListOfPnt& It) ;
+Standard_EXPORT   void InsertBefore(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& It) ;
+Standard_EXPORT   void InsertBefore(GEOMAlgo_ListOfPnt& Other,GEOMAlgo_ListIteratorOfListOfPnt& It) ;
+Standard_EXPORT   void InsertAfter(const gp_Pnt& I,GEOMAlgo_ListIteratorOfListOfPnt& It) ;
+Standard_EXPORT   void InsertAfter(GEOMAlgo_ListOfPnt& Other,GEOMAlgo_ListIteratorOfListOfPnt& It) ;
+
+
+friend class GEOMAlgo_ListIteratorOfListOfPnt;
+
+
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+Standard_EXPORT GEOMAlgo_ListOfPnt(const GEOMAlgo_ListOfPnt& Other);
+
+
+ // Fields PRIVATE
+ //
+Standard_Address myFirst;
+Standard_Address myLast;
+
+
+};
+
+#define Item gp_Pnt
+#define Item_hxx <gp_Pnt.hxx>
+#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_hxx <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt
+#define TCollection_ListIterator_hxx <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_()
+#define TCollection_List GEOMAlgo_ListOfPnt
+#define TCollection_List_hxx <GEOMAlgo_ListOfPnt.hxx>
+
+#include <TCollection_List.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
diff --git a/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx b/src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx
new file mode 100644 (file)
index 0000000..4d8ff2b
--- /dev/null
@@ -0,0 +1,49 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_ListOfPnt.hxx>
+
+#ifndef _Standard_NoSuchObject_HeaderFile
+#include <Standard_NoSuchObject.hxx>
+#endif
+#ifndef _GEOMAlgo_ListIteratorOfListOfPnt_HeaderFile
+#include <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#endif
+#ifndef _gp_Pnt_HeaderFile
+#include <gp_Pnt.hxx>
+#endif
+#ifndef _GEOMAlgo_ListNodeOfListOfPnt_HeaderFile
+#include <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#endif
+
+#define Item gp_Pnt
+#define Item_hxx <gp_Pnt.hxx>
+#define TCollection_ListNode GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_hxx <GEOMAlgo_ListNodeOfListOfPnt.hxx>
+#define TCollection_ListIterator GEOMAlgo_ListIteratorOfListOfPnt
+#define TCollection_ListIterator_hxx <GEOMAlgo_ListIteratorOfListOfPnt.hxx>
+#define Handle_TCollection_ListNode Handle_GEOMAlgo_ListNodeOfListOfPnt
+#define TCollection_ListNode_Type_() GEOMAlgo_ListNodeOfListOfPnt_Type_()
+#define TCollection_List GEOMAlgo_ListOfPnt
+#define TCollection_List_hxx <GEOMAlgo_ListOfPnt.hxx>
+#include <TCollection_List.gxx>
+
index fe864b984acb3f6ff00eeea6a9f4358e37798f01..5de666d1769fb686fdffca44afe846645cfb9695 100755 (executable)
@@ -11,40 +11,40 @@ class PassKey from GEOMAlgo
 
 uses
     Shape from TopoDS, 
-    ListOfShape from TopTools   
+    ListOfInteger from TColStd   
         
 --raises
 
 is 
     Create  
        returns PassKey from GEOMAlgo; 
-      
+     
     Assign(me:out;  
-       Other : PassKey from GEOMAlgo) 
+           Other : PassKey from GEOMAlgo) 
        returns PassKey from GEOMAlgo; 
     ---C++: alias operator =
     ---C++: return & 
-     
+--    
     SetIds(me:out; 
-           aS  :Shape from TopoDS); 
-           
+           aI1  :Integer from Standard); 
+            
     SetIds(me:out; 
-           aS1  :Shape from TopoDS; 
-           aS2  :Shape from TopoDS); 
-     
+           aI1 :Integer from Standard;    
+           aI2 :Integer from Standard);  
+            
     SetIds(me:out; 
-           aS1  :Shape from TopoDS; 
-           aS2  :Shape from TopoDS; 
-           aS3  :Shape from TopoDS); 
-    SetIds(me:out;  
-           aS1  :Shape from TopoDS; 
-           aS2  :Shape from TopoDS; 
-           aS3  :Shape from TopoDS;
-           aS4  :Shape from TopoDS);
+           aI1 :Integer from Standard;    
+           aI2 :Integer from Standard;    
+           aI3 :Integer from Standard);  
+
+    SetIds(me:out; 
+           aI1 :Integer from Standard;    
+           aI2 :Integer from Standard;    
+           aI3 :Integer from Standard;    
+           aI4 :Integer from Standard); 
+     
     SetIds(me:out;  
-           aLS  :ListOfShape from TopTools); 
+           aLS  :ListOfInteger from TColStd);   
  
     NbMax(me) 
        returns Integer  from Standard; 
@@ -64,6 +64,11 @@ is
            Upper : Integer  from Standard)  
        returns Integer from Standard;           
      
+    Id(me; 
+           aIndex: Integer  from Standard)  
+       returns Integer from Standard;
+       
+
     Dump(me); 
 
 fields 
@@ -72,7 +77,5 @@ fields
     myNbMax: Integer from Standard is protected; 
     mySum  : Integer from Standard is protected;   
     myIds  : Integer from Standard [8] is protected; 
-    myShapes : Shape from TopoDS [8] is protected; 
-    myUpper  : Integer from Standard is protected; 
 
 end PassKey;
index 54a392cf7ef0ef8482c8970194eb60aeb3da74ce..61c70febb240c32b68535463f8b99313516a7da4 100755 (executable)
@@ -8,8 +8,7 @@
 
 #include <stdio.h>
 #include <string.h>
-
-#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TColStd_ListIteratorOfListOfInteger.hxx>
 
 #ifdef WNT
 #pragma warning( disable : 4101) 
@@ -17,6 +16,9 @@
 
 static 
   void SortShell(const int n, int* a); 
+static
+  Standard_Integer NormalizedId(const Standard_Integer aId,
+                               const Standard_Integer aDiv);
 
 //=======================================================================
 //function :
@@ -27,19 +29,6 @@ static
   Clear();
 }
 //=======================================================================
-//function :Clear
-//purpose  : 
-//=======================================================================
-  void GEOMAlgo_PassKey::Clear()
-{
-  myNbIds=0;
-  myNbMax=8;
-  mySum=0;
-  myIds[0]=0;  myIds[1]=0;  myIds[2]=0;  myIds[3]=0;
-  myIds[4]=0;  myIds[5]=0;  myIds[6]=0;  myIds[7]=0;
-  myUpper=432123;//2147483647;
-}
-//=======================================================================
 //function :Assign
 //purpose  : 
 //=======================================================================
@@ -52,115 +41,140 @@ static
   return *this;
 }
 //=======================================================================
+//function :Clear
+//purpose  : 
+//=======================================================================
+  void GEOMAlgo_PassKey::Clear()
+{
+  Standard_Integer i;
+  //
+  myNbIds=0;
+  myNbMax=8;
+  mySum=0;
+  for (i=0; i<myNbMax; ++i) {
+    myIds[i]=0;
+  }
+}
+//=======================================================================
 //function :SetIds
 //purpose  : 
 //=======================================================================
-  void GEOMAlgo_PassKey::SetIds(const TopoDS_Shape& aS1)
+  void GEOMAlgo_PassKey::SetIds(const Standard_Integer anId1)
                               
 {
-  Standard_Integer anId1;
-  //
-  anId1=aS1.HashCode(myUpper);
-  //
   myNbIds=1;
-  myIds[7]=anId1;
+  myIds[myNbMax-1]=anId1;
   mySum=anId1;
 }
 //=======================================================================
 //function :SetIds
 //purpose  : 
 //=======================================================================
-  void GEOMAlgo_PassKey::SetIds(const TopoDS_Shape& aS1,
-                               const TopoDS_Shape& aS2)
+  void GEOMAlgo_PassKey::SetIds(const Standard_Integer anId1,
+                               const Standard_Integer anId2)
 {
-  Standard_Integer anId1, anId2;
-  //
-  anId1=aS1.HashCode(myUpper);
-  anId2=aS2.HashCode(myUpper);
+  Standard_Integer aIdN1, aIdN2;
   //
   myNbIds=2;
-  mySum=anId1+anId2;
+  aIdN1=NormalizedId(anId1, myNbIds);
+  aIdN2=NormalizedId(anId2, myNbIds);
+  mySum=aIdN1+aIdN2;
+  //
   if (anId1<anId2) {
-    myIds[6]=anId1;
-    myIds[7]=anId2;
+    myIds[myNbMax-2]=anId1;
+    myIds[myNbMax-1]=anId2;
     return;
   }
-  myIds[6]=anId2;
-  myIds[7]=anId1;
+  myIds[myNbMax-2]=anId2;
+  myIds[myNbMax-1]=anId1;
 }
+
 //=======================================================================
 //function :SetIds
 //purpose  : 
 //=======================================================================
-  void GEOMAlgo_PassKey::SetIds(const TopoDS_Shape& aS1,
-                               const TopoDS_Shape& aS2,
-                               const TopoDS_Shape& aS3)
+  void GEOMAlgo_PassKey::SetIds(const Standard_Integer anId1,
+                               const Standard_Integer anId2,
+                               const Standard_Integer anId3)
 {
-  Standard_Integer anId1, anId2, anId3;
-  //
-  anId1=aS1.HashCode(myUpper);
-  anId2=aS2.HashCode(myUpper);
-  anId3=aS3.HashCode(myUpper);
+  Standard_Integer aIdN1, aIdN2, aIdN3;
   //
   myNbIds=3;
-  myIds[5]=anId1;
-  myIds[6]=anId2;
-  myIds[7]=anId3;
-  mySum=anId1+anId2+anId3;
+  aIdN1=NormalizedId(anId1, myNbIds);
+  aIdN2=NormalizedId(anId2, myNbIds);
+  aIdN3=NormalizedId(anId3, myNbIds);
+  mySum=aIdN1+aIdN2+aIdN3;
+  //
+  myIds[myNbMax-3]=anId1;
+  myIds[myNbMax-2]=anId2;
+  myIds[myNbMax-1]=anId3;
+  //
   Compute();
 }
 //=======================================================================
 //function :SetIds
 //purpose  : 
 //=======================================================================
-  void GEOMAlgo_PassKey::SetIds(const TopoDS_Shape& aS1,
-                               const TopoDS_Shape& aS2,
-                               const TopoDS_Shape& aS3,
-                               const TopoDS_Shape& aS4)
+  void GEOMAlgo_PassKey::SetIds(const Standard_Integer anId1,
+                               const Standard_Integer anId2,
+                               const Standard_Integer anId3,
+                               const Standard_Integer anId4)
 {
-  Standard_Integer anId1, anId2, anId3, anId4;
-  //
-  anId1=aS1.HashCode(myUpper);
-  anId2=aS2.HashCode(myUpper);
-  anId3=aS3.HashCode(myUpper);
-  anId4=aS4.HashCode(myUpper);
+  Standard_Integer aIdN1, aIdN2, aIdN3, aIdN4;
   //
   myNbIds=4;
-  myIds[4]=anId1;
-  myIds[5]=anId2;
-  myIds[6]=anId3;
-  myIds[7]=anId4;
-  mySum=anId1+anId2+anId3+anId4;
+  aIdN1=NormalizedId(anId1, myNbIds);
+  aIdN2=NormalizedId(anId2, myNbIds);
+  aIdN3=NormalizedId(anId3, myNbIds);
+  aIdN4=NormalizedId(anId4, myNbIds);
+  mySum=aIdN1+aIdN2+aIdN3+aIdN4;
+  //
+  myIds[myNbMax-4]=anId1;
+  myIds[myNbMax-3]=anId2;
+  myIds[myNbMax-2]=anId3;
+  myIds[myNbMax-1]=anId4;
+  //
   Compute();
 }
 //=======================================================================
 //function :SetIds
 //purpose  : 
 //=======================================================================
-  void GEOMAlgo_PassKey::SetIds(const TopTools_ListOfShape& aLS)
+  void GEOMAlgo_PassKey::SetIds(const TColStd_ListOfInteger& aLI)
 {
-  Standard_Integer aNb, i, anId;
-  TopTools_ListIteratorOfListOfShape aIt;
+  Standard_Integer aNb, i, anId, aIdN;
+  TColStd_ListIteratorOfListOfInteger aIt;
   //
-  aNb=aLS.Extent();
-  if (aNb<1 || aNb > myNbMax) {
+  aNb=aLI.Extent();
+  if (!aNb || aNb > myNbMax) {
     return;
   }
   //
   myNbIds=aNb;
   mySum=0;
   i=myNbMax-myNbIds;
-  aIt.Initialize(aLS);
+  aIt.Initialize(aLI);
   for (; aIt.More(); aIt.Next(), ++i) {
-    const TopoDS_Shape& aS=aIt.Value();
-    anId=aS.HashCode(myUpper);
+    anId=aIt.Value();
     myIds[i]=anId;
-    mySum+=anId;
+    aIdN=NormalizedId(anId, myNbIds);
+    mySum+=aIdN;
   }
   //
   Compute();
 }
 //=======================================================================
+//function :Id
+//purpose  : 
+//=======================================================================
+  Standard_Integer GEOMAlgo_PassKey::Id(const Standard_Integer aIndex)const
+{
+  if (aIndex < 0 || aIndex >= myNbMax) {
+    return 0;
+  }
+  return myIds[aIndex];
+}
+//=======================================================================
 //function :NbMax
 //purpose  : 
 //=======================================================================
@@ -206,7 +220,8 @@ static
 //=======================================================================
   Standard_Integer GEOMAlgo_PassKey::HashCode(const Standard_Integer Upper) const
 {
-  return (mySum % Upper);
+  //return (mySum % Upper);
+  return ::HashCode(mySum, Upper);
 }
 //=======================================================================
 //function : Dump
@@ -223,6 +238,23 @@ static
   printf(" }");
 }
 //=======================================================================
+// function: NormalizedId
+// purpose : 
+//=======================================================================
+Standard_Integer NormalizedId(const Standard_Integer aId,
+                             const Standard_Integer aDiv)
+{
+  Standard_Integer aMax, aTresh, aIdRet;
+  //
+  aIdRet=aId;
+  aMax=::IntegerLast();
+  aTresh=aMax/aDiv;
+  if (aId>aTresh) {
+    aIdRet=aId%aTresh;
+  }
+  return aIdRet;
+}
+//=======================================================================
 // function: SortShell
 // purpose : 
 //=======================================================================
index ef1844e777c439fe7725959cb9a68794ccf81cef..880fa62a94dec44203f48c92f0a83c77166da30e 100644 (file)
 #ifndef _Standard_Integer_HeaderFile
 #include <Standard_Integer.hxx>
 #endif
-#ifndef _TopoDS_Shape_HeaderFile
-#include <TopoDS_Shape.hxx>
-#endif
 #ifndef _Standard_Boolean_HeaderFile
 #include <Standard_Boolean.hxx>
 #endif
 #ifndef _Standard_Address_HeaderFile
 #include <Standard_Address.hxx>
 #endif
-class TopoDS_Shape;
-class TopTools_ListOfShape;
+class TColStd_ListOfInteger;
 
 
 #ifndef _Standard_HeaderFile
@@ -70,17 +66,18 @@ Standard_EXPORT   GEOMAlgo_PassKey& Assign(const GEOMAlgo_PassKey& Other) ;
   return Assign(Other);
 }
 
-Standard_EXPORT   void SetIds(const TopoDS_Shape& aS) ;
-Standard_EXPORT   void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ;
-Standard_EXPORT   void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3) ;
-Standard_EXPORT   void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3,const TopoDS_Shape& aS4) ;
-Standard_EXPORT   void SetIds(const TopTools_ListOfShape& aLS) ;
+Standard_EXPORT   void SetIds(const Standard_Integer aI1) ;
+Standard_EXPORT   void SetIds(const Standard_Integer aI1,const Standard_Integer aI2) ;
+Standard_EXPORT   void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3) ;
+Standard_EXPORT   void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3,const Standard_Integer aI4) ;
+Standard_EXPORT   void SetIds(const TColStd_ListOfInteger& aLS) ;
 Standard_EXPORT   Standard_Integer NbMax() const;
 Standard_EXPORT   void Clear() ;
 Standard_EXPORT   void Compute() ;
 Standard_EXPORT   Standard_Boolean IsEqual(const GEOMAlgo_PassKey& aOther) const;
 Standard_EXPORT   Standard_Address Key() const;
 Standard_EXPORT   Standard_Integer HashCode(const Standard_Integer Upper) const;
+Standard_EXPORT   Standard_Integer Id(const Standard_Integer aIndex) const;
 Standard_EXPORT   void Dump() const;
 
 
@@ -99,8 +96,6 @@ Standard_Integer myNbIds;
 Standard_Integer myNbMax;
 Standard_Integer mySum;
 Standard_Integer myIds[8];
-TopoDS_Shape myShapes[8];
-Standard_Integer myUpper;
 
 
 private: 
index c66ea0df6c001893a2307e29e45370a861eb7b39..a96f716153db6bfe26f916af09eb644fa1f4a2e6 100644 (file)
@@ -1,8 +1,5 @@
-#ifndef _TopoDS_Shape_HeaderFile
-#include <TopoDS_Shape.hxx>
-#endif
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
+#ifndef _TColStd_ListOfInteger_HeaderFile
+#include <TColStd_ListOfInteger.hxx>
 #endif
 #ifndef _GEOMAlgo_PassKey_HeaderFile
 #include <GEOMAlgo_PassKey.hxx>
diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl
new file mode 100755 (executable)
index 0000000..b0e1fe1
--- /dev/null
@@ -0,0 +1,48 @@
+-- File:       GEOMAlgo_PassKeyShape.cdl
+-- Created:    
+-- Author:     Peter KURNEV
+--             <pkv@irinox>
+---Copyright:   
+
+
+class PassKeyShape from GEOMAlgo 
+    inherits PassKey from GEOMAlgo  
+    
+       ---Purpose: 
+
+uses
+    Shape from TopoDS, 
+    ListOfShape from TopTools   
+        
+--raises
+
+is 
+    Create  
+       returns PassKeyShape from GEOMAlgo; 
+      
+    SetIds(me:out; 
+           aS  :Shape from TopoDS); 
+           
+    SetIds(me:out; 
+           aS1  :Shape from TopoDS; 
+           aS2  :Shape from TopoDS); 
+     
+    SetIds(me:out; 
+           aS1  :Shape from TopoDS; 
+           aS2  :Shape from TopoDS; 
+           aS3  :Shape from TopoDS); 
+    SetIds(me:out;  
+           aS1  :Shape from TopoDS; 
+           aS2  :Shape from TopoDS; 
+           aS3  :Shape from TopoDS;
+           aS4  :Shape from TopoDS);
+    SetIds(me:out;  
+           aLS  :ListOfShape from TopTools); 
+            
+
+fields 
+    myUpper  : Integer from Standard is protected; 
+
+end PassKeyShape;
diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx
new file mode 100755 (executable)
index 0000000..3b7e7f2
--- /dev/null
@@ -0,0 +1,112 @@
+// File:       GEOMAlgo_PassKeyShape.cxx
+// Created:    
+// Author:     Peter KURNEV
+//             <pkv@irinox>
+
+
+#include <GEOMAlgo_PassKeyShape.ixx>
+
+#include <stdio.h>
+#include <string.h>
+
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TColStd_ListOfInteger.hxx>
+
+//=======================================================================
+//function :
+//purpose  : 
+//=======================================================================
+  GEOMAlgo_PassKeyShape::GEOMAlgo_PassKeyShape()
+:
+  GEOMAlgo_PassKey()
+{
+  myUpper=432123;
+  GEOMAlgo_PassKey::Clear();
+}
+//=======================================================================
+//function :SetIds
+//purpose  : 
+//=======================================================================
+  void GEOMAlgo_PassKeyShape::SetIds(const TopoDS_Shape& aS1)
+                              
+{
+  Standard_Integer anId1;
+  //
+  anId1=aS1.HashCode(myUpper);
+  GEOMAlgo_PassKey::SetIds(anId1);
+}
+//=======================================================================
+//function :SetIds
+//purpose  : 
+//=======================================================================
+  void GEOMAlgo_PassKeyShape::SetIds(const TopoDS_Shape& aS1,
+                                    const TopoDS_Shape& aS2)
+{
+  Standard_Integer anId1, anId2;
+  //
+  anId1=aS1.HashCode(myUpper);
+  anId2=aS2.HashCode(myUpper);
+  //
+  GEOMAlgo_PassKey::SetIds(anId1, anId2);
+}
+//=======================================================================
+//function :SetIds
+//purpose  : 
+//=======================================================================
+  void GEOMAlgo_PassKeyShape::SetIds(const TopoDS_Shape& aS1,
+                                    const TopoDS_Shape& aS2,
+                                    const TopoDS_Shape& aS3)
+{
+  Standard_Integer anId1, anId2, anId3;
+  //
+  anId1=aS1.HashCode(myUpper);
+  anId2=aS2.HashCode(myUpper);
+  anId3=aS3.HashCode(myUpper);
+  //
+  GEOMAlgo_PassKey::SetIds(anId1, anId2, anId3);
+}
+//=======================================================================
+//function :SetIds
+//purpose  : 
+//=======================================================================
+  void GEOMAlgo_PassKeyShape::SetIds(const TopoDS_Shape& aS1,
+                               const TopoDS_Shape& aS2,
+                               const TopoDS_Shape& aS3,
+                               const TopoDS_Shape& aS4)
+{
+  Standard_Integer anId1, anId2, anId3, anId4;
+  //
+  anId1=aS1.HashCode(myUpper);
+  anId2=aS2.HashCode(myUpper);
+  anId3=aS3.HashCode(myUpper);
+  anId4=aS4.HashCode(myUpper);
+  //
+  GEOMAlgo_PassKey::SetIds(anId1, anId2, anId3, anId4);
+}
+//=======================================================================
+//function :SetIds
+//purpose  : 
+//=======================================================================
+  void GEOMAlgo_PassKeyShape::SetIds(const TopTools_ListOfShape& aLS)
+{
+  Standard_Integer anId;
+  TopTools_ListIteratorOfListOfShape aIt;
+  TColStd_ListOfInteger aLI;
+  //
+  //aNb=aLS.Extent();
+  //if (aNb<1 || aNb > myNbMax) {
+  //  return;
+  //}
+  //
+  //myNbIds=aNb;
+  //mySum=0;
+  //i=myNbMax-myNbIds;
+  
+  aIt.Initialize(aLS);
+  for (; aIt.More(); aIt.Next()) {
+    const TopoDS_Shape& aS=aIt.Value();
+    anId=aS.HashCode(myUpper);
+    aLI.Append(anId);
+  }
+  GEOMAlgo_PassKey::SetIds(aLI);
+}
diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx
new file mode 100644 (file)
index 0000000..9bb52df
--- /dev/null
@@ -0,0 +1,102 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
+#define _GEOMAlgo_PassKeyShape_HeaderFile
+
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKey_HeaderFile
+#include <GEOMAlgo_PassKey.hxx>
+#endif
+class TopoDS_Shape;
+class TopTools_ListOfShape;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class GEOMAlgo_PassKeyShape  : public GEOMAlgo_PassKey {
+
+public:
+
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+ // Methods PUBLIC
+ // 
+Standard_EXPORT GEOMAlgo_PassKeyShape();
+Standard_EXPORT   void SetIds(const TopoDS_Shape& aS) ;
+Standard_EXPORT   void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ;
+Standard_EXPORT   void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3) ;
+Standard_EXPORT   void SetIds(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3,const TopoDS_Shape& aS4) ;
+Standard_EXPORT   void SetIds(const TopTools_ListOfShape& aLS) ;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+Standard_Integer myUpper;
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx
new file mode 100644 (file)
index 0000000..befc4fd
--- /dev/null
@@ -0,0 +1,26 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_PassKeyShape.jxx>
+
+
+
diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx
new file mode 100644 (file)
index 0000000..f895275
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef _TopoDS_Shape_HeaderFile
+#include <TopoDS_Shape.hxx>
+#endif
+#ifndef _TopTools_ListOfShape_HeaderFile
+#include <TopTools_ListOfShape.hxx>
+#endif
+#ifndef _GEOMAlgo_PassKeyShape_HeaderFile
+#include <GEOMAlgo_PassKeyShape.hxx>
+#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl
deleted file mode 100644 (file)
index c0dcdd4..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
--- File:       GEOMAlgo_ShapeSolid.cdl
--- Created:    Thu Jan 13 12:44:07 2005
--- Author:     Peter KURNEV
---             <pkv@irinox>
----Copyright:   Matra Datavision 2005
-
-
-deferred class ShapeSolid from GEOMAlgo 
-       inherits Algo from GEOMAlgo 
-        
-       ---Purpose: 
-
-uses 
-    State from TopAbs,
-    ListOfShape from TopTools, 
-    PDSFiller from BOPTools,
-    DSFiller  from BOPTools
---raises
-
-is 
-    Initialize 
-       returns ShapeSolid from GEOMAlgo;  
-    
-
-    SetFiller(me:out; 
-           aDSF:DSFiller  from BOPTools); 
-    ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ShapeSolid();"  
-     
-      
-    Shapes(me;
-            aState:State from TopAbs) 
-       returns ListOfShape from TopTools; 
-    ---C++: return const &  
-       
-    BuildResult (me:out) 
-       is deferred protected;  
-       
-    Prepare(me:out)  
-       is deferred protected; 
-       
-fields
-    myLSIN  :  ListOfShape from TopTools is protected;  
-    myLSOUT :  ListOfShape from TopTools is protected;  
-    myLSON  :  ListOfShape from TopTools is protected;  
-    myRank  :  Integer from Standard is protected; 
-    myDSFiller : PDSFiller from BOPTools is protected; 
-
-end ShapeSolid;
diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx
deleted file mode 100644 (file)
index e0cebcf..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-// File:       GEOMAlgo_ShapeSolid.cxx
-// Created:    Thu Jan 13 12:54:48 2005
-// Author:     Peter KURNEV
-//             <pkv@irinox>
-
-
-#include <GEOMAlgo_ShapeSolid.ixx>
-
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_ShapeSolid
-//purpose  : 
-//=======================================================================
-GEOMAlgo_ShapeSolid::GEOMAlgo_ShapeSolid()
-:
-  GEOMAlgo_Algo(),
-  myRank(0),
-  myDSFiller(NULL)
-{
-}
-//=======================================================================
-//function : ~
-//purpose  : 
-//=======================================================================
-GEOMAlgo_ShapeSolid::~GEOMAlgo_ShapeSolid()
-{
-}
-//=======================================================================
-//function : SetFiller
-//purpose  : 
-//=======================================================================
-void GEOMAlgo_ShapeSolid::SetFiller(const BOPTools_DSFiller& aDSFiller)
-{
-  myDSFiller=(BOPTools_DSFiller*) &aDSFiller;
-}
-//=======================================================================
-// function: Shapes
-// purpose: 
-//=======================================================================
-const TopTools_ListOfShape& GEOMAlgo_ShapeSolid::Shapes(const TopAbs_State aState) const
-{
-  const TopTools_ListOfShape *pL;
-  //
-  switch (aState) {
-    case TopAbs_IN:
-      pL=&myLSIN;
-      break;
-    case TopAbs_OUT:
-      pL=&myLSOUT;
-      break;
-    case TopAbs_ON:
-      pL=&myLSON;
-      break;  
-    default:
-      pL=&myLSON;
-      break; 
-  }
-  return *pL;
-}
diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx
deleted file mode 100644 (file)
index 6142c1b..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _GEOMAlgo_ShapeSolid_HeaderFile
-#define _GEOMAlgo_ShapeSolid_HeaderFile
-
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
-#endif
-#ifndef _Standard_Integer_HeaderFile
-#include <Standard_Integer.hxx>
-#endif
-#ifndef _BOPTools_PDSFiller_HeaderFile
-#include <BOPTools_PDSFiller.hxx>
-#endif
-#ifndef _GEOMAlgo_Algo_HeaderFile
-#include <GEOMAlgo_Algo.hxx>
-#endif
-#ifndef _TopAbs_State_HeaderFile
-#include <TopAbs_State.hxx>
-#endif
-class BOPTools_DSFiller;
-class TopTools_ListOfShape;
-
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-
-class GEOMAlgo_ShapeSolid  : 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   void SetFiller(const BOPTools_DSFiller& aDSF) ;
-Standard_EXPORT virtual ~GEOMAlgo_ShapeSolid();
-Standard_EXPORT  const TopTools_ListOfShape& Shapes(const TopAbs_State aState) const;
-
-
-
-
-
-protected:
-
- // Methods PROTECTED
- // 
-Standard_EXPORT GEOMAlgo_ShapeSolid();
-Standard_EXPORT virtual  void BuildResult()  = 0;
-Standard_EXPORT virtual  void Prepare()  = 0;
-
-
- // Fields PROTECTED
- //
-TopTools_ListOfShape myLSIN;
-TopTools_ListOfShape myLSOUT;
-TopTools_ListOfShape myLSON;
-Standard_Integer myRank;
-BOPTools_PDSFiller myDSFiller;
-
-
-private: 
-
- // Methods PRIVATE
- // 
-
-
- // Fields PRIVATE
- //
-
-
-};
-
-
-
-
-
-// other Inline functions and methods (like "C++: function call" methods)
-//
-
-
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx
deleted file mode 100644 (file)
index 1ef4475..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#include <GEOMAlgo_ShapeSolid.jxx>
-
-
-
diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx b/src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx
deleted file mode 100644 (file)
index d0cdc37..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef _BOPTools_DSFiller_HeaderFile
-#include <BOPTools_DSFiller.hxx>
-#endif
-#ifndef _TopTools_ListOfShape_HeaderFile
-#include <TopTools_ListOfShape.hxx>
-#endif
-#ifndef _GEOMAlgo_ShapeSolid_HeaderFile
-#include <GEOMAlgo_ShapeSolid.hxx>
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl b/src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl
deleted file mode 100644 (file)
index 7489b6a..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
--- File:       GEOMAlgo_ShellSolid.cdl
--- Created:    Wed Jan 12 12:45:20 2005
--- Author:     Peter KURNEV
---             <pkv@irinox>
----Copyright:   Matra Datavision 2005
-
-
-class ShellSolid from GEOMAlgo 
-    inherits ShapeSolid from GEOMAlgo
-       ---Purpose: 
-
---uses
---raises
-
-is 
-    Create   
-       returns ShellSolid from GEOMAlgo; 
-    ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ShellSolid();" 
-    
-    Perform (me:out) 
-       is redefined; 
-        
-    Prepare(me:out)  
-        is redefined protected;
-     
-    BuildResult (me:out) 
-       is redefined protected;         
-    
-    DetectSDFaces(me:out) 
-       is protected;
-     
---fields
-    
-end ShellSolid;
diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx
deleted file mode 100644 (file)
index e7da2ac..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-// File:       GEOMAlgo_ShellSolid.cxx
-// Created:    Wed Jan 12 12:49:45 2005
-// Author:     Peter KURNEV
-//             <pkv@irinox>
-
-
-#include <GEOMAlgo_ShellSolid.ixx>
-
-#include <Standard_Failure.hxx>
-
-#include <gp_Pnt2d.hxx>
-#include <gp_Pnt.hxx>
-#include <gp_Dir.hxx>
-
-#include <TopoDS.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopoDS_Solid.hxx>
-
-#include <BRep_Tool.hxx>
-#include <BRepTools.hxx>
-
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopExp_Explorer.hxx>
-
-#include <BRepClass3d_SolidClassifier.hxx>
-
-#include <IntTools_Context.hxx>
-#include <BOPTColStd_Dump.hxx>
-#include <BooleanOperations_ShapesDataStructure.hxx>
-
-#include <BOPTools_PaveFiller.hxx>
-#include <BOPTools_SolidStateFiller.hxx>
-#include <BOPTools_PCurveMaker.hxx>
-#include <BOPTools_DEProcessor.hxx>
-#include <BOPTools_InterferencePool.hxx>
-#include <BOPTools_CArray1OfSSInterference.hxx>
-#include <BOPTools_ListOfPaveBlock.hxx>
-#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
-#include <BOPTools_PaveBlock.hxx>
-#include <BOPTools_SSInterference.hxx>
-#include <BOPTools_SequenceOfCurves.hxx>
-#include <BOPTools_Curve.hxx>
-#include <BOPTools_PaveFiller.hxx>
-#include <BOPTools_SplitShapesPool.hxx>
-#include <BOPTools_Tools3D.hxx>
-#include <BOPTools_DSFiller.hxx>
-
-#include <BOP_WireEdgeSet.hxx>
-#include <BOP_SDFWESFiller.hxx>
-#include <BOP_FaceBuilder.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_ShellSolid
-//purpose  : 
-//=======================================================================
-GEOMAlgo_ShellSolid::GEOMAlgo_ShellSolid()
-:
-  GEOMAlgo_ShapeSolid()
-{
-}
-//=======================================================================
-//function : ~
-//purpose  : 
-//=======================================================================
-GEOMAlgo_ShellSolid::~GEOMAlgo_ShellSolid()
-{
-}
-//=======================================================================
-// function: 
-// purpose: 
-//=======================================================================
-void GEOMAlgo_ShellSolid::Perform() 
-{
-  myErrorStatus=0;
-  //
-  try {
-    if (myDSFiller==NULL) {
-      myErrorStatus=10;
-      return;
-    }
-    if(!myDSFiller->IsDone()) {
-      myErrorStatus=11;
-      return;
-    }
-    //
-    Standard_Boolean bIsNewFiller;
-    //
-    bIsNewFiller=myDSFiller->IsNewFiller();
-    if (bIsNewFiller) {
-      Prepare();
-      myDSFiller->SetNewFiller(!bIsNewFiller);
-    }
-    //
-    myRank=(myDSFiller->DS().Object().ShapeType()==TopAbs_SHELL) ? 1 : 2;
-    BuildResult();
-  }
-  catch (Standard_Failure) {
-    myErrorStatus=12;
-  }
-}
-//=======================================================================
-// function: Prepare
-// purpose: 
-//=======================================================================
-void GEOMAlgo_ShellSolid::Prepare() 
-{
-  const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller();
-  // 
-  // 1 States
-  BOPTools_SolidStateFiller aStateFiller(aPaveFiller);
-  aStateFiller.Do();
-  //
-  // 2 Project section edges on corresp. faces -> P-Curves on edges.
-  BOPTools_PCurveMaker aPCurveMaker(aPaveFiller);
-  aPCurveMaker.Do();
-  //
-  // 3. Degenerated Edges Processing
-  BOPTools_DEProcessor aDEProcessor(aPaveFiller);
-  aDEProcessor.Do();
-  //
-  // 4. Detect Same Domain Faces
-  DetectSDFaces();
-}
-//=================================================================================
-// function: BuildResult
-// purpose: 
-//=================================================================================
-void GEOMAlgo_ShellSolid::BuildResult() 
-{
-  Standard_Boolean bIsTouchCase;
-  Standard_Integer i, j, nF1, nF2, aNbFFs, aNbS, aNbCurves, nSp, iRank1;
-  Standard_Integer nE, nF, aNbPB, iBeg, iEnd;
-  BooleanOperations_StateOfShape aState;
-  TopExp_Explorer anExp;
-  TopAbs_ShapeEnum aType;
-  gp_Pnt2d aP2D;
-  gp_Pnt aP3D;
-  //
-  const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS();
-  const BOPTools_InterferencePool& anInterfPool=myDSFiller->InterfPool();
-  BOPTools_InterferencePool* pInterfPool=(BOPTools_InterferencePool*) &anInterfPool;
-  BOPTools_CArray1OfSSInterference& aFFs=pInterfPool->SSInterferences();
-  const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller();
-  const BOPTools_SplitShapesPool& aSplitShapesPool=aPaveFiller.SplitShapesPool();
-  //
-  // 1. process pf non-interferring faces
-  iBeg=1;
-  iEnd=aDS.NumberOfShapesOfTheObject();
-  if (myRank==2) {
-    iBeg=iEnd+1;
-    iEnd=aDS.NumberOfSourceShapes();
-  }
-  //
-  for (i=iBeg; i<=iEnd; ++i) {
-    aType=aDS.GetShapeType(i);
-    if (aType!=TopAbs_FACE) {
-      continue;
-    }
-    //
-    const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(i));
-    aState=aDS.GetState(i);
-    if (aState==BooleanOperations_IN) {
-      myLSIN.Append(aF1);
-    }
-    else if (aState==BooleanOperations_OUT) {
-      myLSOUT.Append(aF1);
-    }
-  }
-  //
-  // 2. process pf interferred faces
-  aNbFFs=aFFs.Extent();
-  for (i=1; i<=aNbFFs; ++i) {
-    BOPTools_SSInterference& aFFi=aFFs(i);
-    //
-    nF1=aFFi.Index1();
-    nF2=aFFi.Index2();
-    iRank1=aDS.Rank(nF1);
-    nF=(iRank1==myRank) ? nF1 : nF2;
-    const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(nF));
-    //
-    bIsTouchCase=aFFi.IsTangentFaces();
-    //
-    if (bIsTouchCase) {
-      myLSON.Append(aF1);
-      continue;
-    }
-    //
-    // Has section edges ?
-    aNbS=0;
-    BOPTools_SequenceOfCurves& aBCurves=aFFi.Curves();
-    aNbCurves=aBCurves.Length();
-    for (j=1; j<=aNbCurves; j++) {
-      BOPTools_Curve& aBC=aBCurves(j);
-      const BOPTools_ListOfPaveBlock& aSectEdges=aBC.NewPaveBlocks();
-      aNbS=aSectEdges.Extent();
-      if (aNbS) {
-       break;
-      }
-    }
-    //
-    if (aNbS) { // it has
-      continue;
-    }
-    //
-    anExp.Init(aF1, TopAbs_EDGE);
-    for (; anExp.More(); anExp.Next()) {
-      const TopoDS_Edge& aE=TopoDS::Edge(anExp.Current());
-      if (BRep_Tool::Degenerated(aE)) {
-       continue;
-      }
-      //
-      nE=aDS.ShapeIndex(aE, myRank);
-      const BOPTools_ListOfPaveBlock& aLPB=aSplitShapesPool(aDS.RefEdge(nE));
-      aNbPB=aLPB.Extent();
-      //
-      if (aNbPB<2) {
-       nSp=nE;
-       if (aNbPB) {
-         const BOPTools_PaveBlock& aPB=aLPB.First();
-         nSp=aPB.Edge();
-       }
-       const TopoDS_Shape& aSp=aDS.Shape(nSp);
-       //
-       aState=aDS.GetState(nSp);
-       if (aState==BooleanOperations_IN) {
-         myLSIN.Append(aF1);
-       }
-       else if (aState==BooleanOperations_OUT) {
-         myLSOUT.Append(aF1);
-       }
-       else if (aState==BooleanOperations_ON) {
-         Standard_Real aTol;
-         TopAbs_State aSt;
-         //
-         //const TopoDS_Face& aF2=TopoDS::Face(aDS.Shape((iRank1==myRank)? nF2 : nF1));
-         //aTol=BRep_Tool::Tolerance(aF2);
-         aTol=1.e-7;
-         //
-         BOPTools_Tools3D::PointNearEdge(aE, aF1, aP2D, aP3D);
-         const TopoDS_Solid& aRefSolid=(myRank==1) ? 
-           TopoDS::Solid(aDS.Tool()) : TopoDS::Solid(aDS.Object());
-         //
-         BOPTools_PaveFiller* pPF=(BOPTools_PaveFiller*)& aPaveFiller;
-         IntTools_Context& aCtx=pPF->ChangeContext();
-         //
-         BRepClass3d_SolidClassifier& aSC=aCtx.SolidClassifier(aRefSolid);
-         aSC.Perform(aP3D, aTol);
-         aSt=aSC.State();
-         if (aSt==TopAbs_IN) {
-           myLSIN.Append(aF1);
-         }
-         else if (aSt==TopAbs_OUT) {
-           myLSOUT.Append(aF1);
-         }
-       } 
-       break; 
-      } // if (aNbPB<2) { 
-    } //for (; anExp.More(); anExp.Next())
-  } 
-}
-//=======================================================================
-// function: DetectSDFaces
-// purpose: 
-//=======================================================================
-void GEOMAlgo_ShellSolid::DetectSDFaces()
-{
-  const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS();
-  BOPTools_InterferencePool* pIntrPool=(BOPTools_InterferencePool*)&myDSFiller->InterfPool();
-  BOPTools_CArray1OfSSInterference& aFFs=pIntrPool->SSInterferences();
-  //
-  Standard_Boolean bFlag;
-  Standard_Integer i, aNb, nF1, nF2,  iZone, aNbSps, iSenseFlag;
-  gp_Dir aDNF1, aDNF2;
-
-  aNb=aFFs.Extent();
-  for (i=1; i<=aNb; i++) {
-    bFlag=Standard_False;
-    
-    BOPTools_SSInterference& aFF=aFFs(i);
-    
-    nF1=aFF.Index1();
-    nF2=aFF.Index2();
-    const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(nF1));
-    const TopoDS_Face& aF2=TopoDS::Face(aDS.Shape(nF2));
-    //
-    // iSenseFlag;
-    const BOPTools_ListOfPaveBlock& aLPB=aFF.PaveBlocks();
-    aNbSps=aLPB.Extent();
-
-    if (!aNbSps) {
-      continue;
-    }
-    
-    const BOPTools_PaveBlock& aPB=aLPB.First();
-    const TopoDS_Edge& aSpE=TopoDS::Edge(aDS.Shape(aPB.Edge()));
-    
-    BOPTools_Tools3D::GetNormalToFaceOnEdge (aSpE, aF1, aDNF1); 
-    BOPTools_Tools3D::GetNormalToFaceOnEdge (aSpE, aF2, aDNF2);
-    iSenseFlag=BOPTools_Tools3D::SenseFlag (aDNF1, aDNF2);
-    //
-    if (iSenseFlag==1 || iSenseFlag==-1) {
-    //
-    //
-      TopoDS_Face aF1FWD=aF1;
-      aF1FWD.Orientation (TopAbs_FORWARD);
-      
-      BOP_WireEdgeSet aWES (aF1FWD);
-      BOP_SDFWESFiller aWESFiller(nF1, nF2, *myDSFiller);
-      aWESFiller.SetSenseFlag(iSenseFlag);
-      aWESFiller.SetOperation(BOP_COMMON);
-      aWESFiller.Do(aWES);
-      
-      BOP_FaceBuilder aFB;
-      aFB.Do(aWES);
-      const TopTools_ListOfShape& aLF=aFB.NewFaces();
-
-      iZone=0;
-      TopTools_ListIteratorOfListOfShape anIt(aLF);
-      for (; anIt.More(); anIt.Next()) {
-       const TopoDS_Shape& aFR=anIt.Value();
-
-       if (aFR.ShapeType()==TopAbs_FACE) {
-         const TopoDS_Face& aFaceResult=TopoDS::Face(aFR);
-         //
-         Standard_Boolean bIsValidIn2D, bNegativeFlag;
-         bIsValidIn2D=BOPTools_Tools3D::IsValidArea (aFaceResult, bNegativeFlag);
-         if (bIsValidIn2D) { 
-           //if(CheckSameDomainFaceInside(aFaceResult, aF2)) {
-           iZone=1;
-           break;
-           //}
-         }
-         //
-       }
-      }
-      
-      if (iZone) { 
-       bFlag=Standard_True;
-       aFF.SetStatesMap(aWESFiller.StatesMap());
-      }
-      
-    }// if (iSenseFlag)
-  
-  aFF.SetTangentFacesFlag(bFlag);
-  aFF.SetSenseFlag (iSenseFlag);
-  }// end of for (i=1; i<=aNb; i++) 
-}
diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx
deleted file mode 100644 (file)
index 16415ec..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _GEOMAlgo_ShellSolid_HeaderFile
-#define _GEOMAlgo_ShellSolid_HeaderFile
-
-#ifndef _GEOMAlgo_ShapeSolid_HeaderFile
-#include <GEOMAlgo_ShapeSolid.hxx>
-#endif
-
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-
-class GEOMAlgo_ShellSolid  : public GEOMAlgo_ShapeSolid {
-
-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_ShellSolid();
-Standard_EXPORT virtual ~GEOMAlgo_ShellSolid();
-Standard_EXPORT virtual  void Perform() ;
-
-
-
-
-
-protected:
-
- // Methods PROTECTED
- // 
-Standard_EXPORT virtual  void Prepare() ;
-Standard_EXPORT virtual  void BuildResult() ;
-Standard_EXPORT   void DetectSDFaces() ;
-
-
- // Fields PROTECTED
- //
-
-
-private: 
-
- // Methods PRIVATE
- // 
-
-
- // Fields PRIVATE
- //
-
-
-};
-
-
-
-
-
-// other Inline functions and methods (like "C++: function call" methods)
-//
-
-
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx
deleted file mode 100644 (file)
index f5b12e1..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#include <GEOMAlgo_ShellSolid.jxx>
-
-
-
diff --git a/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx b/src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx
deleted file mode 100644 (file)
index e9afe6d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#ifndef _GEOMAlgo_ShellSolid_HeaderFile
-#include <GEOMAlgo_ShellSolid.hxx>
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl b/src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl
deleted file mode 100644 (file)
index 3634282..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
--- File:       GEOMAlgo_SolidSolid.cdl
--- Created:    Wed Jan 26 12:05:14 2005
--- Author:     Peter KURNEV
---             <pkv@irinox>
----Copyright:   Matra Datavision 2005
-
-
-class SolidSolid from GEOMAlgo 
-    inherits ShellSolid from GEOMAlgo 
-    
-       ---Purpose: 
-
-uses 
-    Shape from TopoDS
-
---raises
-
-is
-    Create   
-       returns SolidSolid from GEOMAlgo; 
-    ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_SolidSolid();" 
-    
-    Perform (me:out) 
-       is redefined; 
-        
-    BuildResult (me:out) 
-       is redefined protected;         
-    
-    SetShape2 (me:out;  
-           aS: Shape from TopoDS);
-
-    Shape2 (me)  
-       returns Shape from TopoDS; 
-    ---C++: return const &  
-
-fields
-    myS2: Shape from TopoDS is protected; 
-    
-end SolidSolid;
diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx
deleted file mode 100644 (file)
index c4596bd..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-// File:       GEOMAlgo_SolidSolid.cxx
-// Created:    Wed Jan 26 12:06:26 2005
-// Author:     Peter KURNEV
-//             <pkv@irinox>
-
-
-#include <GEOMAlgo_SolidSolid.ixx>
-
-#include <Standard_Failure.hxx>
-
-#include <TopAbs_State.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopExp.hxx>
-
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-
-#include <BooleanOperations_ShapesDataStructure.hxx>
-#include <BOPTools_DSFiller.hxx>
-
-#include <GEOMAlgo_IndexedDataMapOfShapeState.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_SolidSolid
-//purpose  : 
-//=======================================================================
-GEOMAlgo_SolidSolid::GEOMAlgo_SolidSolid()
-:
-  GEOMAlgo_ShellSolid()
-{
-}
-//=======================================================================
-//function : ~
-//purpose  : 
-//=======================================================================
-GEOMAlgo_SolidSolid::~GEOMAlgo_SolidSolid()
-{
-}
-//=======================================================================
-// function: SetShape2
-// purpose: 
-//=======================================================================
-void GEOMAlgo_SolidSolid::SetShape2(const TopoDS_Shape& aS2)
-{
-  myS2=aS2;
-} 
-//=======================================================================
-// function: Shape2
-// purpose: 
-//=======================================================================
-const TopoDS_Shape& GEOMAlgo_SolidSolid::Shape2()const
-{
-  return myS2;
-} 
-//=======================================================================
-// function: Perform
-// purpose: 
-//=======================================================================
-void GEOMAlgo_SolidSolid::Perform() 
-{
-  myErrorStatus=0;
-  try {
-    if (myDSFiller==NULL) {
-      myErrorStatus=10;
-      return;
-    }
-    if(!myDSFiller->IsDone()) {
-      myErrorStatus=11;
-      return;
-    }
-    //
-    Standard_Boolean bIsNewFiller;
-    //
-    bIsNewFiller=myDSFiller->IsNewFiller();
-    if (bIsNewFiller) {
-      Prepare();
-      myDSFiller->SetNewFiller(!bIsNewFiller);
-    }
-    //
-    myRank=2;
-    BuildResult();
-  }
-  catch (Standard_Failure) {
-    myErrorStatus=12;
-  }
-}
-//=================================================================================
-// function: BuildResult
-// purpose: 
-//=================================================================================
-void GEOMAlgo_SolidSolid::BuildResult() 
-{
-  myErrorStatus=0;
-  //
-  Standard_Integer i, j, aNbF, aNbS;
-  Standard_Integer aNbFIN, aNbFOUT, aNbFON, aNbFINTR;
-  TopAbs_State aState;
-  TopTools_ListIteratorOfListOfShape aIt;
-  TopTools_IndexedMapOfShape aMF, aMS;
-  GEOMAlgo_IndexedDataMapOfShapeState aMFS;
-  //
-  // 1. classify the faces
-  GEOMAlgo_ShellSolid::BuildResult(); 
-  //
-  // 2. fill Shape-State map
-  aIt.Initialize(myLSIN);
-  for (; aIt.More(); aIt.Next()) {
-    const TopoDS_Shape& aF=aIt.Value();
-    aMFS.Add(aF, TopAbs_IN);
-  }
-  aIt.Initialize(myLSOUT);
-  for (; aIt.More(); aIt.Next()) {
-    const TopoDS_Shape& aF=aIt.Value();
-    aMFS.Add(aF, TopAbs_OUT);
-  }
-  aIt.Initialize(myLSON);
-  for (; aIt.More(); aIt.Next()) {
-    const TopoDS_Shape& aF=aIt.Value();
-    aMFS.Add(aF, TopAbs_ON);
-  }
-  myLSIN.Clear();
-  myLSON.Clear();
-  myLSOUT.Clear();
-  //
-  // 3. fill states for solids
-  TopExp::MapShapes(myS2, TopAbs_SOLID, aMS);
-  //
-  aNbS=aMS.Extent();
-  for (i=1; i<=aNbS; ++i) {
-    const TopoDS_Shape& aSolid=aMS(i);
-    //
-    aMF.Clear();
-    TopExp::MapShapes(aSolid, TopAbs_FACE, aMF);
-    //
-    aNbFIN=0;
-    aNbFOUT=0;
-    aNbFON=0;
-    aNbFINTR=0;
-    //
-    aNbF=aMF.Extent();
-    for(j=1; j<aNbF; ++j) {
-      const TopoDS_Shape& aF=aMF(j);
-      //
-      if (!aMFS.Contains(aF)) {// the face is intesected 
-       ++aNbFINTR;
-       break; 
-      }
-      //
-      aState=aMFS.FindFromKey(aF);
-      switch (aState) {
-        case TopAbs_IN:
-         ++aNbFIN;
-         break;
-       case TopAbs_OUT:
-         ++aNbFOUT;
-         break;
-       case TopAbs_ON:
-         ++aNbFON;
-         break;
-       default:
-         break;
-      }
-      if (aNbFIN && aNbFOUT) {
-       ++aNbFINTR;
-       break;
-      }
-    }
-    //
-    if (!aNbFINTR) {
-      if (aNbFON==aNbF) {
-       myLSON.Append(aSolid);
-      }
-      else if (aNbFIN) {
-       myLSIN.Append(aSolid);
-      }
-      else if (aNbFOUT) {
-       myLSOUT.Append(aSolid);
-      }
-    }
-  }
-}
diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx
deleted file mode 100644 (file)
index 5a90d31..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _GEOMAlgo_SolidSolid_HeaderFile
-#define _GEOMAlgo_SolidSolid_HeaderFile
-
-#ifndef _TopoDS_Shape_HeaderFile
-#include <TopoDS_Shape.hxx>
-#endif
-#ifndef _GEOMAlgo_ShellSolid_HeaderFile
-#include <GEOMAlgo_ShellSolid.hxx>
-#endif
-class TopoDS_Shape;
-
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-
-class GEOMAlgo_SolidSolid  : public GEOMAlgo_ShellSolid {
-
-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_SolidSolid();
-Standard_EXPORT virtual ~GEOMAlgo_SolidSolid();
-Standard_EXPORT virtual  void Perform() ;
-Standard_EXPORT   void SetShape2(const TopoDS_Shape& aS) ;
-Standard_EXPORT  const TopoDS_Shape& Shape2() const;
-
-
-
-
-
-protected:
-
- // Methods PROTECTED
- // 
-Standard_EXPORT virtual  void BuildResult() ;
-
-
- // Fields PROTECTED
- //
-TopoDS_Shape myS2;
-
-
-private: 
-
- // Methods PRIVATE
- // 
-
-
- // Fields PRIVATE
- //
-
-
-};
-
-
-
-
-
-// other Inline functions and methods (like "C++: function call" methods)
-//
-
-
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx
deleted file mode 100644 (file)
index 9db5bd6..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#include <GEOMAlgo_SolidSolid.jxx>
-
-
-
diff --git a/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx b/src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx
deleted file mode 100644 (file)
index abe70c5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _TopoDS_Shape_HeaderFile
-#include <TopoDS_Shape.hxx>
-#endif
-#ifndef _GEOMAlgo_SolidSolid_HeaderFile
-#include <GEOMAlgo_SolidSolid.hxx>
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl b/src/GEOMAlgo/GEOMAlgo_StateCollector.cdl
new file mode 100644 (file)
index 0000000..7919dbd
--- /dev/null
@@ -0,0 +1,31 @@
+-- File:       GEOMAlgo_StateCollector.cdl
+-- Created:    Thu Mar 10 09:39:25 2005
+-- Author:     Peter KURNEV
+--             <pkv@irinox>
+---Copyright:   Matra Datavision 2005
+
+
+class StateCollector from GEOMAlgo 
+
+       ---Purpose: 
+
+uses
+    State from TopAbs 
+
+--raises
+
+is 
+    Create 
+       returns StateCollector from GEOMAlgo; 
+
+    AppendState(me:out; 
+           aSt:State from TopAbs) 
+       returns Boolean from Standard; 
+            
+    State(me) 
+       returns State from TopAbs; 
+        
+fields 
+    myCounter:Integer from Standard[3];  
+
+end StateCollector;
diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.cxx b/src/GEOMAlgo/GEOMAlgo_StateCollector.cxx
new file mode 100644 (file)
index 0000000..1e754ff
--- /dev/null
@@ -0,0 +1,71 @@
+// File:       GEOMAlgo_StateCollector.cxx
+// Created:    Thu Mar 10 09:42:11 2005
+// Author:     Peter KURNEV
+//             <pkv@irinox>
+
+
+#include <GEOMAlgo_StateCollector.ixx>
+
+//=======================================================================
+//function : GEOMAlgo_StateCollector
+//purpose  : 
+//=======================================================================
+GEOMAlgo_StateCollector::GEOMAlgo_StateCollector() 
+{
+  myCounter[0]=0;
+  myCounter[1]=0;
+  myCounter[2]=0;
+}
+//=======================================================================
+//function : AppendState
+//purpose  : 
+//=======================================================================
+Standard_Boolean GEOMAlgo_StateCollector::AppendState(const TopAbs_State aSt) 
+{
+  Standard_Boolean bIsToBreak;
+  //
+  switch(aSt) {
+    case TopAbs_IN:
+      ++myCounter[0];
+      break;
+    case TopAbs_OUT:
+      ++myCounter[1];
+      break; 
+    case TopAbs_ON:
+      ++myCounter[2];
+      break;
+    default:
+      break;
+  }
+  bIsToBreak=(myCounter[0] && myCounter[1]);
+  //
+  return bIsToBreak;
+}
+//=======================================================================
+//function : State
+//purpose  : 
+//=======================================================================
+TopAbs_State GEOMAlgo_StateCollector::State()const 
+{
+  TopAbs_State aSt;
+  //
+  aSt=TopAbs_UNKNOWN;
+  //
+  if (myCounter[0] && myCounter[1]) {
+    return aSt;
+  }
+  //
+  else if (myCounter[0] && myCounter[2]>=0) {
+    aSt=TopAbs_IN;
+  }
+  //
+  else if (myCounter[1] && myCounter[2]>=0) {
+    aSt=TopAbs_OUT;
+  }
+  //
+  else if (!myCounter[0] && !myCounter[1] && myCounter[2]) {
+    aSt=TopAbs_ON;
+  }
+  //
+  return aSt;
+}
diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx b/src/GEOMAlgo/GEOMAlgo_StateCollector.hxx
new file mode 100644 (file)
index 0000000..3c1e25b
--- /dev/null
@@ -0,0 +1,100 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _GEOMAlgo_StateCollector_HeaderFile
+#define _GEOMAlgo_StateCollector_HeaderFile
+
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+#ifndef _TopAbs_State_HeaderFile
+#include <TopAbs_State.hxx>
+#endif
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class GEOMAlgo_StateCollector  {
+
+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_StateCollector();
+Standard_EXPORT   Standard_Boolean AppendState(const TopAbs_State aSt) ;
+Standard_EXPORT   TopAbs_State State() const;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+Standard_Integer myCounter[3];
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx b/src/GEOMAlgo/GEOMAlgo_StateCollector.ixx
new file mode 100644 (file)
index 0000000..d3cb9c3
--- /dev/null
@@ -0,0 +1,26 @@
+// File generated by CPPExt (Value)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#include <GEOMAlgo_StateCollector.jxx>
+
+
+
diff --git a/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx b/src/GEOMAlgo/GEOMAlgo_StateCollector.jxx
new file mode 100644 (file)
index 0000000..3fe123a
--- /dev/null
@@ -0,0 +1,3 @@
+#ifndef _GEOMAlgo_StateCollector_HeaderFile
+#include <GEOMAlgo_StateCollector.hxx>
+#endif
index f5ffe9e42a8f1d152a246080360c79d911387ceb..8242aca944dc4d14aa6fdd21f0196ddd81658637 100644 (file)
@@ -15,21 +15,38 @@ uses
     Cylinder from gp, 
     Sphere   from gp,
     Surface  from Geom, 
+    Surface from GeomAdaptor, 
     State    from TopAbs,      
     State from GEOMAlgo
 
 --raises
 
 is 
+
     IsAnalytic(myclass;  
            aS:Surface from Geom) 
        returns Boolean from Standard; 
-   
+    
+    IsCoaxial(myclass;  
+           aP1  :  Pnt from gp; 
+           aP2  :  Pnt from gp; 
+           aCyl :  Cylinder from gp; 
+            aTol :  Real from Standard)             
+       returns Boolean from Standard; 
+     
     IsConformState(myclass;  
            aST1:State from TopAbs; 
            aST2:State from GEOMAlgo) 
        returns Boolean from Standard;            
 
+    GetState(myclass; 
+           aP:Pnt from gp;          
+           aS:Surface from GeomAdaptor; 
+           aTol:Real from Standard; 
+           aSt:out State from TopAbs)
+       returns Integer from Standard; 
+       
     GetState(myclass; 
            aP:Pnt from gp;          
            aS:Surface from Geom; 
index b07749692d85e256c433e9417ba857cde1461290..16b20746de880dbeedcf55983f3d8923e2caa0cd 100644 (file)
@@ -6,6 +6,8 @@
 
 #include <GEOMAlgo_SurfaceTools.ixx>
 
+#include <math.h>
+
 #include <gp_Pln.hxx>
 #include <gp_Cylinder.hxx>
 #include <gp_Sphere.hxx>
 #include <gp_Lin.hxx>
 #include <gp_Ax3.hxx>
 #include <gp_Dir.hxx>
+#include <gp_Ax1.hxx>
+#include <gp_Vec.hxx>
 
 #include <GeomAbs_SurfaceType.hxx>
 #include <GeomAdaptor_Surface.hxx>
 
+
 //=======================================================================
 //function : GetState
 //purpose  : 
 //=======================================================================
  Standard_Integer GEOMAlgo_SurfaceTools::GetState(const gp_Pnt& aP,
-                                                 const Handle(Geom_Surface)& aSurf,
+                                                 const GeomAdaptor_Surface& aGAS,
                                                  const Standard_Real aTol,
                                                  TopAbs_State& aState)
 {
   Standard_Integer iErr;
   Standard_Real aDp, aR;
   GeomAbs_SurfaceType aType;
-  GeomAdaptor_Surface aGAS;
   gp_Sphere aSph;
   gp_Cylinder aCyl;
   gp_Pln aPln;
   //
   iErr=0;
   aState=TopAbs_UNKNOWN;
-  aGAS.Load(aSurf);
   //
   aType=aGAS.GetType();
   switch (aType) {
   return iErr;
 }
 //=======================================================================
+//function : GetState
+//purpose  : 
+//=======================================================================
+ Standard_Integer GEOMAlgo_SurfaceTools::GetState(const gp_Pnt& aP,
+                                                 const Handle(Geom_Surface)& aSurf,
+                                                 const Standard_Real aTol,
+                                                 TopAbs_State& aState)
+{
+  Standard_Integer iErr;
+  GeomAdaptor_Surface aGAS;
+  //
+  aState=TopAbs_UNKNOWN;
+  aGAS.Load(aSurf);
+  //
+  iErr=GEOMAlgo_SurfaceTools::GetState(aP, aGAS, aTol, aState);
+  //
+  return iErr;
+}
+//=======================================================================
 //function : ReverseState
 //purpose  : 
 //=======================================================================
 Standard_Real GEOMAlgo_SurfaceTools::Distance(const gp_Pnt& aP, 
                                              const gp_Sphere& aSph)
 {
-  Standard_Real aD, aR;
+  Standard_Real aD;
   //
-  aR=aSph.Radius();
   const gp_Pnt& aLoc=aSph.Location();
   aD=aLoc.Distance(aP);
   //
@@ -118,9 +139,8 @@ Standard_Real GEOMAlgo_SurfaceTools::Distance(const gp_Pnt& aP,
 Standard_Real GEOMAlgo_SurfaceTools::Distance(const gp_Pnt& aP, 
                                              const gp_Cylinder& aCyl)
 {
-  Standard_Real aD, aR;
+  Standard_Real aD;
   //
-  aR=aCyl.Radius();
   const gp_Ax1& aAxis=aCyl.Axis();
   gp_Lin aLin(aAxis);
   aD=aLin.Distance(aP);
@@ -146,6 +166,31 @@ Standard_Real GEOMAlgo_SurfaceTools::Distance(const gp_Pnt& aP,
   return aD;
 }
 //=======================================================================
+//function : IsCoaxial
+//purpose  : 
+//=======================================================================
+Standard_Boolean GEOMAlgo_SurfaceTools::IsCoaxial(const gp_Pnt& aP1,
+                                                 const gp_Pnt& aP2,
+                                                 const gp_Cylinder& aCyl,
+                                                 const Standard_Real aTol)
+{
+  Standard_Boolean bRet=Standard_False;
+  Standard_Real aSM;
+  //
+  gp_Vec aV12(aP1, aP2);
+  gp_Dir aD12(aV12);
+  //
+  const gp_Ax1& aAxis=aCyl.Axis();
+  const gp_Dir& aDAxis=aAxis.Direction();
+  //
+  aSM=fabs(aD12*aDAxis);
+  if (fabs(1.-aSM) > aTol) {
+    return bRet;
+  }
+  //
+  return !bRet;
+}
+//=======================================================================
 //function : IsAnalytic
 //purpose  : 
 //=======================================================================
index 94b8c2d80e204631378332998a0a9d217fd02682..19f616025315af6624d1846468e373ae570be126 100644 (file)
@@ -28,6 +28,9 @@
 #ifndef _Handle_Geom_Surface_HeaderFile
 #include <Handle_Geom_Surface.hxx>
 #endif
+#ifndef _Standard_Real_HeaderFile
+#include <Standard_Real.hxx>
+#endif
 #ifndef _TopAbs_State_HeaderFile
 #include <TopAbs_State.hxx>
 #endif
 #ifndef _Standard_Integer_HeaderFile
 #include <Standard_Integer.hxx>
 #endif
-#ifndef _Standard_Real_HeaderFile
-#include <Standard_Real.hxx>
-#endif
 class Geom_Surface;
 class gp_Pnt;
-class gp_Pln;
 class gp_Cylinder;
+class GeomAdaptor_Surface;
+class gp_Pln;
 class gp_Sphere;
 
 
@@ -73,7 +74,9 @@ public:
  // Methods PUBLIC
  // 
 Standard_EXPORT static  Standard_Boolean IsAnalytic(const Handle(Geom_Surface)& aS) ;
+Standard_EXPORT static  Standard_Boolean IsCoaxial(const gp_Pnt& aP1,const gp_Pnt& aP2,const gp_Cylinder& aCyl,const Standard_Real aTol) ;
 Standard_EXPORT static  Standard_Boolean IsConformState(const TopAbs_State aST1,const GEOMAlgo_State aST2) ;
+Standard_EXPORT static  Standard_Integer GetState(const gp_Pnt& aP,const GeomAdaptor_Surface& aS,const Standard_Real aTol,TopAbs_State& aSt) ;
 Standard_EXPORT static  Standard_Integer GetState(const gp_Pnt& aP,const Handle(Geom_Surface)& aS,const Standard_Real aTol,TopAbs_State& aSt) ;
 Standard_EXPORT static  Standard_Real Distance(const gp_Pnt& aP,const gp_Pln& aPln) ;
 Standard_EXPORT static  Standard_Real Distance(const gp_Pnt& aP,const gp_Cylinder& aCyl) ;
index 061597445eb448d96fecea60d31a3cb64d292789..ceb9617403b1ab53584085201fc560e60742b3e0 100644 (file)
@@ -4,12 +4,15 @@
 #ifndef _gp_Pnt_HeaderFile
 #include <gp_Pnt.hxx>
 #endif
-#ifndef _gp_Pln_HeaderFile
-#include <gp_Pln.hxx>
-#endif
 #ifndef _gp_Cylinder_HeaderFile
 #include <gp_Cylinder.hxx>
 #endif
+#ifndef _GeomAdaptor_Surface_HeaderFile
+#include <GeomAdaptor_Surface.hxx>
+#endif
+#ifndef _gp_Pln_HeaderFile
+#include <gp_Pln.hxx>
+#endif
 #ifndef _gp_Sphere_HeaderFile
 #include <gp_Sphere.hxx>
 #endif
index 7b50b0c3969cb8ba3505a7f27ec814670fee556a..922d14a14abb769e8dbb151c1ce83af232af1fa0 100644 (file)
@@ -19,7 +19,7 @@ uses
     ListOfShape from TopTools,  
     IndexedDataMapOfShapeListOfShape from TopTools,
     Context from IntTools, 
-    IndexedDataMapOfPassKeyListOfShape from GEOMAlgo 
+    IndexedDataMapOfPassKeyShapeListOfShape from GEOMAlgo 
     
 --raises
 
@@ -29,7 +29,7 @@ is
        returns Boolean from Standard;    
 
     RefineSDShapes(myclass; 
-           aMSD:out IndexedDataMapOfPassKeyListOfShape from GEOMAlgo; 
+           aMSD:out IndexedDataMapOfPassKeyShapeListOfShape from GEOMAlgo; 
            aTol:Real from Standard; 
            aCtx:out Context from IntTools) 
        returns Integer from Standard;
index e9f4df6216934c462ffccc7458ff3fe119daa16d..1a4437b7fd3a264412d23b85b86295b49ef2c8f5 100644 (file)
@@ -33,8 +33,8 @@
 #include <BOPTools_Tools2D.hxx>
 #include <IntTools_Context.hxx>
 
-#include <GEOMAlgo_PassKey.hxx>
-#include <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
+#include <GEOMAlgo_PassKeyShape.hxx>
+#include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
 
 static 
   void GetCount(const TopoDS_Shape& aS,
@@ -88,7 +88,7 @@ void GetCount(const TopoDS_Shape& aS,
 //function : RefineSDShapes
 //purpose  : 
 //=======================================================================
-Standard_Integer GEOMAlgo_Tools::RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyListOfShape &aMPKLE,
+Standard_Integer GEOMAlgo_Tools::RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape &aMPKLE,
                                                const Standard_Real aTol,
                                                IntTools_Context& aCtx)
 {
@@ -132,7 +132,7 @@ Standard_Integer GEOMAlgo_Tools::RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKey
   }
   //
   for (i=1; i<=aNbToAdd; ++i) {
-    GEOMAlgo_PassKey aPKE1;
+    GEOMAlgo_PassKeyShape aPKE1;
     //
     const TopoDS_Shape& aE1=aMEToAdd.FindKey(i);
     const TopTools_ListOfShape& aLE=aMEToAdd(i);
index 947c0c8bd259c09b60e099b0dd4abb89dbf233b0..73d9bc35fc6f2ef5544921d0483c40f2a3f633d9 100644 (file)
@@ -35,7 +35,7 @@
 #include <Handle_Geom_Surface.hxx>
 #endif
 class TopoDS_Shape;
-class GEOMAlgo_IndexedDataMapOfPassKeyListOfShape;
+class GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape;
 class IntTools_Context;
 class TopTools_ListOfShape;
 class TopTools_IndexedDataMapOfShapeListOfShape;
@@ -71,7 +71,7 @@ public:
  // Methods PUBLIC
  // 
 Standard_EXPORT static  Standard_Boolean IsCompositeShape(const TopoDS_Shape& aS) ;
-Standard_EXPORT static  Standard_Integer RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyListOfShape& aMSD,const Standard_Real aTol,IntTools_Context& aCtx) ;
+Standard_EXPORT static  Standard_Integer RefineSDShapes(GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape& aMSD,const Standard_Real aTol,IntTools_Context& aCtx) ;
 Standard_EXPORT static  Standard_Integer FindSDShapes(const TopTools_ListOfShape& aLE,const Standard_Real aTol,TopTools_IndexedDataMapOfShapeListOfShape& aMEE,IntTools_Context& aCtx) ;
 Standard_EXPORT static  Standard_Integer FindSDShapes(const TopoDS_Shape& aE1,const TopTools_ListOfShape& aLE,const Standard_Real aTol,TopTools_ListOfShape& aLESD,IntTools_Context& aCtx) ;
 Standard_EXPORT static  Standard_Boolean ProjectPointOnShape(const gp_Pnt& aP1,const TopoDS_Shape& aS,gp_Pnt& aP2,IntTools_Context& aCtx) ;
index e22f3c3ea685eab62ad7249686a4c80b822c1900..379b7f29849689c04f11fba8f14a67b701e630a3 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _TopoDS_Shape_HeaderFile
 #include <TopoDS_Shape.hxx>
 #endif
-#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_HeaderFile
-#include <GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx>
+#ifndef _GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+#include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
 #endif
 #ifndef _IntTools_Context_HeaderFile
 #include <IntTools_Context.hxx>
diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl b/src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl
deleted file mode 100644 (file)
index 9a7c623..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
--- File:       GEOMAlgo_VertexSolid.cdl
--- Created:    Wed Jan 12 16:34:53 2005
--- Author:     Peter KURNEV
---             <pkv@irinox>
----Copyright:   Matra Datavision 2005
-
-
-class VertexSolid from GEOMAlgo  
-       inherits ShapeSolid from GEOMAlgo
-
-       ---Purpose: 
-
---uses
---raises
-
-is
-    Create   
-       returns  VertexSolid from GEOMAlgo; 
-    ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_VertexSolid();"
-     
-    Perform (me:out) 
-       is redefined; 
-        
-    Prepare(me:out)  
-        is redefined protected;
-     
-    BuildResult (me:out) 
-       is redefined protected; 
-    
---fields
-
-end VertexSolid;
diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx
deleted file mode 100644 (file)
index 1257362..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-// File:       GEOMAlgo_VertexSolid.cxx
-// Created:    Wed Jan 12 16:36:40 2005
-// Author:     Peter KURNEV
-//             <pkv@irinox>
-
-
-#include <GEOMAlgo_VertexSolid.ixx>
-
-#include <gp_Pnt.hxx>
-
-#include <TopAbs_ShapeEnum.hxx>
-#include <TopAbs_State.hxx>
-
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-
-#include <TopoDS.hxx>
-#include <TopoDS_Solid.hxx>
-#include <TopoDS_Vertex.hxx>
-
-#include <TopExp.hxx>
-
-#include <BRep_Tool.hxx>
-#include <BRepClass3d_SolidClassifier.hxx>
-
-#include <BOPTColStd_Dump.hxx>
-
-#include <IntTools_Context.hxx>
-
-#include <BooleanOperations_StateOfShape.hxx>
-#include <BooleanOperations_ShapesDataStructure.hxx>
-
-#include <BOPTools_InterferencePool.hxx>
-#include <BOPTools_CArray1OfVVInterference.hxx>
-#include <BOPTools_VVInterference.hxx>
-#include <BOPTools_PaveFiller.hxx>
-#include <BOPTools_DSFiller.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_VertexSolid
-//purpose  : 
-//=======================================================================
-GEOMAlgo_VertexSolid::GEOMAlgo_VertexSolid()
-:
-  GEOMAlgo_ShapeSolid()
-{
-}
-//=======================================================================
-//function : ~
-//purpose  : 
-//=======================================================================
-GEOMAlgo_VertexSolid::~GEOMAlgo_VertexSolid()
-{
-}
-//=======================================================================
-// function: Perform
-// purpose: 
-//=======================================================================
-void GEOMAlgo_VertexSolid::Perform()
-{
-  myErrorStatus=0;
-  //
-  try {
-    if (myDSFiller==NULL) {
-      myErrorStatus=10;
-      return;
-    }
-    if(!myDSFiller->IsDone()) {
-      myErrorStatus=11;
-      return;
-    }
-    //
-    Standard_Boolean bIsNewFiller;
-    Standard_Integer aNbF;
-    TopTools_IndexedMapOfShape aM;
-    //
-    const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS();
-    const TopoDS_Shape& aObj=aDS.Object();
-    //
-    TopExp::MapShapes(aObj, TopAbs_FACE, aM);
-    aNbF=aM.Extent();
-    myRank=(aNbF) ? 2 : 1;
-    //
-    bIsNewFiller=myDSFiller->IsNewFiller();
-    
-    if (bIsNewFiller) {
-      Prepare();
-      myDSFiller->SetNewFiller(!bIsNewFiller);
-    }
-    BuildResult();
-  }
-  //
-  catch (Standard_Failure) {
-    myErrorStatus = 12;
-  }
-} 
-//=======================================================================
-// function: Prepare
-// purpose: 
-//=======================================================================
-void GEOMAlgo_VertexSolid::Prepare()
-{
-  Standard_Integer i, iBeg, iEnd, aNbVV, j, n1, n2, iFound;
-  Standard_Real aTol;
-  TopAbs_State aSt;
-  TopAbs_ShapeEnum aType;
-  BooleanOperations_StateOfShape aState;
-  gp_Pnt aP3D;
-  //
-  const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS();
-  BooleanOperations_ShapesDataStructure* pDS=(BooleanOperations_ShapesDataStructure*)&aDS;
-  const BOPTools_InterferencePool& aIP=myDSFiller->InterfPool();
-  BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*) &aIP;
-  BOPTools_CArray1OfVVInterference& aVVs=pIP->VVInterferences();
-  const BOPTools_PaveFiller& aPF=myDSFiller->PaveFiller();
-  BOPTools_PaveFiller* pPF=(BOPTools_PaveFiller*)&aPF; 
-  IntTools_Context& aCtx=pPF->ChangeContext();
-  //
-  const TopoDS_Shape& aObj=aDS.Object();
-  const TopoDS_Shape& aTool=aDS.Tool();
-  //
-  const TopoDS_Solid& aSolid=(myRank==1) ? TopoDS::Solid(aTool) : TopoDS::Solid(aObj);
-  const TopoDS_Shape& aSV   =(myRank==1)? aObj : aTool;
-  //
-  BRepClass3d_SolidClassifier& aSC=aCtx.SolidClassifier(aSolid);
-  //
-  iBeg=1;
-  iEnd=aDS.NumberOfShapesOfTheObject();
-  if (myRank==2) {
-    iBeg=iEnd+1;
-    iEnd=aDS.NumberOfSourceShapes();
-  }
-  //
-  for (i=iBeg; i<=iEnd; ++i) {
-    aType=aDS.GetShapeType(i);
-    if (aType!=TopAbs_VERTEX) {
-      continue;
-    }
-    //
-    const TopoDS_Vertex& aV=TopoDS::Vertex(aDS.Shape(i));
-    //
-    aState=aDS.GetState(i);
-    if (aState==BooleanOperations_ON ||
-       aState==BooleanOperations_IN ||
-       aState==BooleanOperations_OUT) {
-      continue;
-    }
-    //
-    iFound=0;
-    aNbVV=aVVs.Extent();
-    for (j=1; j<=aNbVV; ++j) {
-      BOPTools_VVInterference& aVV=aVVs(j);
-      aVV.Indices(n1, n2);
-      if (n1==i || n2==i) {
-       pDS->SetState (n1, BooleanOperations_ON);
-       pDS->SetState (n2, BooleanOperations_ON);
-       iFound=1;
-       break;
-      } 
-    }
-    if (iFound) {
-      continue;
-    }
-    // 
-    aP3D=BRep_Tool::Pnt(aV);
-    aTol=1.E-7;
-    aSC.Perform(aP3D, aTol);
-    aSt=aSC.State();
-    if (aSt==TopAbs_IN) {
-      pDS->SetState (i, BooleanOperations_IN);
-    }
-    else if (aSt==TopAbs_OUT) {
-      pDS->SetState (i, BooleanOperations_OUT);
-    }
-  }
-}
-//=======================================================================
-// function: BuildResult
-// purpose: 
-//=======================================================================
-void GEOMAlgo_VertexSolid::BuildResult()
-{
-  const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS();
-  //
-  Standard_Integer i, iBeg, iEnd;
-  TopAbs_ShapeEnum aType;
-  BooleanOperations_StateOfShape aState;
-  //
-  myLSIN.Clear();
-  myLSOUT.Clear();
-  myLSON.Clear();
-  //
-  iBeg=1;
-  iEnd=aDS.NumberOfShapesOfTheObject();
-  if (myRank==2) {
-    iBeg=iEnd+1;
-    iEnd=aDS.NumberOfSourceShapes();
-  }
-  //
-  for (i=iBeg; i<=iEnd; ++i) {
-    aType=aDS.GetShapeType(i);
-    if (aType!=TopAbs_VERTEX) {
-      continue;
-    }
-    const TopoDS_Shape& aV=aDS.Shape(i);
-    aState=aDS.GetState(i);
-    //
-    if (aState==BooleanOperations_IN) {
-      myLSIN.Append(aV);
-    }
-    else if (aState==BooleanOperations_OUT) {
-      myLSOUT.Append(aV);
-    }
-    else if (aState==BooleanOperations_ON) {
-      myLSON.Append(aV);
-    }
-  }
-}
diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx
deleted file mode 100644 (file)
index 103c7f2..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _GEOMAlgo_VertexSolid_HeaderFile
-#define _GEOMAlgo_VertexSolid_HeaderFile
-
-#ifndef _GEOMAlgo_ShapeSolid_HeaderFile
-#include <GEOMAlgo_ShapeSolid.hxx>
-#endif
-
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-
-class GEOMAlgo_VertexSolid  : public GEOMAlgo_ShapeSolid {
-
-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_VertexSolid();
-Standard_EXPORT virtual ~GEOMAlgo_VertexSolid();
-Standard_EXPORT virtual  void Perform() ;
-
-
-
-
-
-protected:
-
- // Methods PROTECTED
- // 
-Standard_EXPORT virtual  void Prepare() ;
-Standard_EXPORT virtual  void BuildResult() ;
-
-
- // Fields PROTECTED
- //
-
-
-private: 
-
- // Methods PRIVATE
- // 
-
-
- // Fields PRIVATE
- //
-
-
-};
-
-
-
-
-
-// other Inline functions and methods (like "C++: function call" methods)
-//
-
-
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx
deleted file mode 100644 (file)
index e2351fe..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#include <GEOMAlgo_VertexSolid.jxx>
-
-
-
diff --git a/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx b/src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx
deleted file mode 100644 (file)
index 8c7c253..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#ifndef _GEOMAlgo_VertexSolid_HeaderFile
-#include <GEOMAlgo_VertexSolid.hxx>
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl b/src/GEOMAlgo/GEOMAlgo_WireSolid.cdl
deleted file mode 100644 (file)
index d85db12..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
--- File:       GEOMAlgo_WireSolid.cdl
--- Created:    Wed Jan 12 10:17:00 2005
--- Author:     Peter KURNEV
---             <pkv@irinox>
----Copyright:   Matra Datavision 2005
-
-
-class WireSolid from GEOMAlgo 
-       inherits ShapeSolid from GEOMAlgo
-       ---Purpose: 
-
---uses 
---raises
-
-is 
-    Create   
-       returns WireSolid from GEOMAlgo; 
-    ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_WireSolid();" 
-    
-    Perform (me:out) 
-       is redefined; 
-        
-    Prepare(me:out)  
-        is redefined protected;
-     
-    BuildResult (me:out) 
-       is redefined protected; 
-    
---fields
-    
-end WireSolid;
diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.cxx
deleted file mode 100644 (file)
index faaf361..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-// File:       GEOMAlgo_WireSolid.cxx
-// Created:    Wed Jan 12 10:19:31 2005
-// Author:     Peter KURNEV
-//             <pkv@irinox>
-
-
-#include <GEOMAlgo_WireSolid.ixx>
-
-#include <Standard_Failure.hxx>
-
-#include <TopAbs_ShapeEnum.hxx>
-
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-
-#include <BOPTColStd_Dump.hxx>
-
-#include <BooleanOperations_ShapesDataStructure.hxx>
-#include <BooleanOperations_StateOfShape.hxx>
-
-#include <BOPTools_PaveFiller.hxx>
-#include <BOPTools_SplitShapesPool.hxx>
-#include <BOPTools_PaveBlock.hxx>
-#include <BOPTools_ListOfPaveBlock.hxx>
-#include <BOPTools_DSFiller.hxx>
-#include <BOPTools_WireStateFiller.hxx>
-
-//=======================================================================
-//function : GEOMAlgo_WireSolid
-//purpose  : 
-//=======================================================================
-GEOMAlgo_WireSolid::GEOMAlgo_WireSolid()
-: 
-  GEOMAlgo_ShapeSolid()
-{
-}
-//=======================================================================
-//function : ~
-//purpose  : 
-//=======================================================================
-GEOMAlgo_WireSolid::~GEOMAlgo_WireSolid()
-{
-}
-//=======================================================================
-// function: Perform
-// purpose: 
-//=======================================================================
-void GEOMAlgo_WireSolid::Perform()
-{
-  myErrorStatus=0;
-  //
-  try {
-    if (myDSFiller==NULL) {
-      myErrorStatus=10;
-      return;
-    }
-    if(!myDSFiller->IsDone()) {
-      myErrorStatus=11;
-      return;
-    }
-    //
-    Standard_Boolean bIsNewFiller;
-    //
-    bIsNewFiller=myDSFiller->IsNewFiller();
-    
-    if (bIsNewFiller) {
-      Prepare();
-      myDSFiller->SetNewFiller(!bIsNewFiller);
-    }
-    BuildResult();
-  }
-  //
-  catch (Standard_Failure) {
-    myErrorStatus= 12;
-  }
-} 
-//=======================================================================
-// function: Prepare
-// purpose: 
-//=======================================================================
-void GEOMAlgo_WireSolid::Prepare()
-{
-  const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller();
-  //
-  BOPTools_WireStateFiller aStateFiller(aPaveFiller);
-  aStateFiller.Do();
-  //
-}
-//=======================================================================
-// function: BuildResult
-// purpose: 
-//=======================================================================
-void GEOMAlgo_WireSolid::BuildResult()
-{
-  const BooleanOperations_ShapesDataStructure& aDS=myDSFiller->DS();
-  const BOPTools_PaveFiller& aPaveFiller=myDSFiller->PaveFiller();
-  const BOPTools_SplitShapesPool& aSplitShapesPool=aPaveFiller.SplitShapesPool();
-  //
-  Standard_Integer i, aNbPB, nSp, iBeg, iEnd;
-  TopAbs_ShapeEnum aType;
-  BooleanOperations_StateOfShape aState;
-  //
-  myLSIN.Clear();
-  myLSOUT.Clear();
-  myLSON.Clear();
-  //
-  iBeg=1;
-  iEnd=aDS.NumberOfShapesOfTheObject();
-  if (aDS.Tool().ShapeType()==TopAbs_WIRE) {
-    iBeg=iEnd+1;
-    iEnd=aDS.NumberOfSourceShapes();
-  }
-  //
-  for (i=iBeg; i<=iEnd; ++i) {
-    aType=aDS.GetShapeType(i);
-    if (aType==TopAbs_EDGE) {
-      const TopoDS_Shape& aE=aDS.Shape(i);
-      const BOPTools_ListOfPaveBlock& aLPB=aSplitShapesPool(aDS.RefEdge(i));
-      aNbPB=aLPB.Extent();
-      //
-      if (!aNbPB) {
-       aState=aDS.GetState(i);
-       //
-       if (aState==BooleanOperations_IN) {
-         myLSIN.Append(aE);
-       }
-       else if (aState==BooleanOperations_OUT) {
-         myLSOUT.Append(aE);
-       }
-       else if (aState==BooleanOperations_ON) {
-         myLSON.Append(aE);
-       }
-      }
-      //
-      else if (aNbPB==1) {
-       const BOPTools_PaveBlock& aPB=aLPB.First();
-       nSp=aPB.Edge();
-       const TopoDS_Shape& aSp=aDS.Shape(nSp);
-       aState=aDS.GetState(nSp);
-        //
-       if (aState==BooleanOperations_IN) {
-         myLSIN.Append(aE);
-       }
-       else if (aState==BooleanOperations_OUT) {
-         myLSOUT.Append(aE);
-       }
-       else if (aState==BooleanOperations_ON) {
-         myLSON.Append(aE);
-       } 
-      }
-    }
-  }
-}
diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.hxx
deleted file mode 100644 (file)
index 7212908..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _GEOMAlgo_WireSolid_HeaderFile
-#define _GEOMAlgo_WireSolid_HeaderFile
-
-#ifndef _GEOMAlgo_ShapeSolid_HeaderFile
-#include <GEOMAlgo_ShapeSolid.hxx>
-#endif
-
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-
-class GEOMAlgo_WireSolid  : public GEOMAlgo_ShapeSolid {
-
-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_WireSolid();
-Standard_EXPORT virtual ~GEOMAlgo_WireSolid();
-Standard_EXPORT virtual  void Perform() ;
-
-
-
-
-
-protected:
-
- // Methods PROTECTED
- // 
-Standard_EXPORT virtual  void Prepare() ;
-Standard_EXPORT virtual  void BuildResult() ;
-
-
- // Fields PROTECTED
- //
-
-
-private: 
-
- // Methods PRIVATE
- // 
-
-
- // Fields PRIVATE
- //
-
-
-};
-
-
-
-
-
-// other Inline functions and methods (like "C++: function call" methods)
-//
-
-
-#endif
diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx b/src/GEOMAlgo/GEOMAlgo_WireSolid.ixx
deleted file mode 100644 (file)
index 37b35b4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// File generated by CPPExt (Value)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#include <GEOMAlgo_WireSolid.jxx>
-
-
-
diff --git a/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx b/src/GEOMAlgo/GEOMAlgo_WireSolid.jxx
deleted file mode 100644 (file)
index a37f27e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#ifndef _GEOMAlgo_WireSolid_HeaderFile
-#include <GEOMAlgo_WireSolid.hxx>
-#endif
diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx
new file mode 100644 (file)
index 0000000..9e15b51
--- /dev/null
@@ -0,0 +1,91 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_HeaderFile
+#define _Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_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_DataMapNodeOfDataMapOfPassKeyInteger;
+Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger);
+
+class Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) : public Handle(TCollection_MapNode) {
+  public:
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+    Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)():Handle(TCollection_MapNode)() {} 
+    Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) 
+     {
+     }
+
+    Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)(const GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) 
+     {
+     }
+
+    Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& operator=(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& aHandle)
+     {
+      Assign(aHandle.Access());
+      return *this;
+     }
+
+    Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)& operator=(const GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* anItem)
+     {
+      Assign((Standard_Transient *)anItem);
+      return *this;
+     }
+
+    GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* operator->() 
+     {
+      return (GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger *)ControlAccess();
+     }
+
+    GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger* operator->() const 
+     {
+      return (GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger *)ControlAccess();
+     }
+
+   Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger)();
+   Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger) DownCast(const Handle(Standard_Transient)& AnObject);
+};
+#endif
diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx
deleted file mode 100644 (file)
index e246513..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-// File generated by CPPExt (Transient)
-//
-//                     Copyright (C) 1991 - 2000 by  
-//                      Matra Datavision SA.  All rights reserved.
-//  
-//                     Copyright (C) 2001 - 2004 by
-//                     Open CASCADE SA.  All rights reserved.
-// 
-// This file is part of the Open CASCADE Technology software.
-//
-// This software may be distributed and/or modified under the terms and
-// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
-// and appearing in the file LICENSE included in the packaging of this file.
-//  
-// This software is distributed on an "AS IS" basis, without warranty of any
-// kind, and Open CASCADE SA hereby disclaims all such warranties,
-// including without limitation, any warranties of merchantability, fitness
-// for a particular purpose or non-infringement. Please see the License for
-// the specific terms and conditions governing rights and limitations under the
-// License.
-
-#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_HeaderFile
-#define _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_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_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape;
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape);
-
-class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) : public Handle(TCollection_MapNode) {
-  public:
-    void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)():Handle(TCollection_MapNode)() {} 
-    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) 
-     {
-     }
-
-    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) 
-     {
-     }
-
-    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)& operator=(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)& operator=(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape* operator->() 
-     {
-      return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape *)ControlAccess();
-     }
-
-    GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape* operator->() const 
-     {
-      return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape)();
-   Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-#endif
diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx
new file mode 100644 (file)
index 0000000..dd43aac
--- /dev/null
@@ -0,0 +1,91 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
+#define _Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_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_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape;
+Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape);
+
+class Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) : public Handle(TCollection_MapNode) {
+  public:
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)():Handle(TCollection_MapNode)() {} 
+    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) 
+     {
+     }
+
+    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) 
+     {
+     }
+
+    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& operator=(const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& aHandle)
+     {
+      Assign(aHandle.Access());
+      return *this;
+     }
+
+    Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)& operator=(const GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* anItem)
+     {
+      Assign((Standard_Transient *)anItem);
+      return *this;
+     }
+
+    GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* operator->() 
+     {
+      return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape *)ControlAccess();
+     }
+
+    GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape* operator->() const 
+     {
+      return (GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape *)ControlAccess();
+     }
+
+   Standard_EXPORT ~Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape)();
+   Standard_EXPORT static const Handle(GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape) DownCast(const Handle(Standard_Transient)& AnObject);
+};
+#endif
diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx
new file mode 100644 (file)
index 0000000..d073a4c
--- /dev/null
@@ -0,0 +1,91 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991 - 2000 by  
+//                      Matra Datavision SA.  All rights reserved.
+//  
+//                     Copyright (C) 2001 - 2004 by
+//                     Open CASCADE SA.  All rights reserved.
+// 
+// This file is part of the Open CASCADE Technology software.
+//
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//  
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
+
+#ifndef _Handle_GEOMAlgo_ListNodeOfListOfPnt_HeaderFile
+#define _Handle_GEOMAlgo_ListNodeOfListOfPnt_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_ListNodeOfListOfPnt;
+Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_ListNodeOfListOfPnt);
+
+class Handle(GEOMAlgo_ListNodeOfListOfPnt) : public Handle(TCollection_MapNode) {
+  public:
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+    Handle(GEOMAlgo_ListNodeOfListOfPnt)():Handle(TCollection_MapNode)() {} 
+    Handle(GEOMAlgo_ListNodeOfListOfPnt)(const Handle(GEOMAlgo_ListNodeOfListOfPnt)& aHandle) : Handle(TCollection_MapNode)(aHandle) 
+     {
+     }
+
+    Handle(GEOMAlgo_ListNodeOfListOfPnt)(const GEOMAlgo_ListNodeOfListOfPnt* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) 
+     {
+     }
+
+    Handle(GEOMAlgo_ListNodeOfListOfPnt)& operator=(const Handle(GEOMAlgo_ListNodeOfListOfPnt)& aHandle)
+     {
+      Assign(aHandle.Access());
+      return *this;
+     }
+
+    Handle(GEOMAlgo_ListNodeOfListOfPnt)& operator=(const GEOMAlgo_ListNodeOfListOfPnt* anItem)
+     {
+      Assign((Standard_Transient *)anItem);
+      return *this;
+     }
+
+    GEOMAlgo_ListNodeOfListOfPnt* operator->() 
+     {
+      return (GEOMAlgo_ListNodeOfListOfPnt *)ControlAccess();
+     }
+
+    GEOMAlgo_ListNodeOfListOfPnt* operator->() const 
+     {
+      return (GEOMAlgo_ListNodeOfListOfPnt *)ControlAccess();
+     }
+
+   Standard_EXPORT ~Handle(GEOMAlgo_ListNodeOfListOfPnt)();
+   Standard_EXPORT static const Handle(GEOMAlgo_ListNodeOfListOfPnt) DownCast(const Handle(Standard_Transient)& AnObject);
+};
+#endif
index 0af9311f19cadbcfacc16fbd07ab1748295178ff..934d12095ab941a13947a3c2bb8a32018ec4d402 100644 (file)
@@ -36,61 +36,64 @@ VPATH=.:@srcdir@
 # Libraries targets
 LIB = libGEOMAlgo.la
 LIB_SRC = \
+       BlockFix.cxx \
+       BlockFix_BlockFixAPI.cxx \
+       BlockFix_CheckTool.cxx \
+       BlockFix_PeriodicSurfaceModifier.cxx \
+       BlockFix_SphereSpaceModifier.cxx \
+       BlockFix_UnionEdges.cxx \
+       BlockFix_UnionFaces.cxx \
        GEOMAlgo_Algo.cxx \
        GEOMAlgo_CoupleOfShapes.cxx \
+       GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx \
+       GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx \
+       GEOMAlgo_DataMapOfPassKeyInteger_0.cxx \
+       GEOMAlgo_FinderShapeOn1.cxx \
        GEOMAlgo_GlueAnalyser.cxx \
        GEOMAlgo_Gluer.cxx \
        GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx \
-       GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx \
+       GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx \
        GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx \
+       GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx \
        GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx \
-       GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx \
+       GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx \
        GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx \
+       GEOMAlgo_IndexedDataMapOfShapeState_0.cxx \
        GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx \
+       GEOMAlgo_ListIteratorOfListOfPnt_0.cxx \
        GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx \
+       GEOMAlgo_ListNodeOfListOfPnt_0.cxx \
        GEOMAlgo_ListOfCoupleOfShapes_0.cxx \
+       GEOMAlgo_ListOfPnt_0.cxx \
        GEOMAlgo_PassKey.cxx \
        GEOMAlgo_PassKeyMapHasher.cxx \
+       GEOMAlgo_PassKeyShape.cxx \
        GEOMAlgo_ShapeAlgo.cxx \
-       GEOMAlgo_Tools.cxx \
-       BlockFix.cxx \
-       BlockFix_BlockFixAPI.cxx \
-       BlockFix_CheckTool.cxx \
-       BlockFix_PeriodicSurfaceModifier.cxx \
-       BlockFix_SphereSpaceModifier.cxx \
-       BlockFix_UnionEdges.cxx \
-       BlockFix_UnionFaces.cxx \
-       GEOMAlgo_FinderShapeOn.cxx \
-       GEOMAlgo_ShapeSolid.cxx \
-       GEOMAlgo_ShellSolid.cxx \
-       GEOMAlgo_VertexSolid.cxx \
-       GEOMAlgo_WireSolid.cxx \
-       GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx \
-       GEOMAlgo_IndexedDataMapOfShapeState_0.cxx \
-       GEOMAlgo_SolidSolid.cxx \
-       GEOMAlgo_SurfaceTools.cxx
+       GEOMAlgo_StateCollector.cxx \
+       GEOMAlgo_SurfaceTools.cxx \
+       GEOMAlgo_Tools.cxx
 
 LIB_CLIENT_IDL = 
 LIB_SERVER_IDL = 
 
 # header files 
 EXPORT_HEADERS = \
-       GEOMAlgo_Gluer.hxx \
-       GEOMAlgo_ShapeAlgo.hxx \
-       GEOMAlgo_Algo.hxx \
-       GEOMAlgo_GlueAnalyser.hxx \
-       GEOMAlgo_CoupleOfShapes.hxx \
-       GEOMAlgo_ListOfCoupleOfShapes.hxx \
-       GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx \
-       Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx \
        BlockFix_BlockFixAPI.hxx \
        BlockFix_BlockFixAPI.lxx \
        BlockFix_CheckTool.hxx \
        Handle_BlockFix_BlockFixAPI.hxx \
-       GEOMAlgo_State.hxx \
-       GEOMAlgo_FinderShapeOn.hxx \
+       GEOMAlgo_Algo.hxx \
+       GEOMAlgo_CoupleOfShapes.hxx \
+       GEOMAlgo_GlueAnalyser.hxx \
+       GEOMAlgo_Gluer.hxx \
+       GEOMAlgo_FinderShapeOn1.hxx \
        GEOMAlgo_IndexedDataMapOfShapeState.hxx \
-       Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx
+       GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx \
+       GEOMAlgo_ListOfCoupleOfShapes.hxx \
+       GEOMAlgo_ShapeAlgo.hxx \
+       GEOMAlgo_State.hxx \
+       Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx \
+       Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx
 
 # idl files
 EXPORT_IDLS=
index f4bedb504db39c9cfa05fa30d2f269fb5f0de33b..12b1602ed38716870e0f896a246561d75a1d9d4f 100644 (file)
@@ -457,6 +457,149 @@ void GEOMImpl_IGroupOperations::DifferenceList (Handle(GEOM_Object) theGroup,
   SetErrorCode(OK);
 }
 
+//=============================================================================
+/*!
+ *  UnionIDs
+ */
+//=============================================================================
+void GEOMImpl_IGroupOperations::UnionIDs (Handle(GEOM_Object) theGroup,
+                                          const Handle(TColStd_HSequenceOfInteger)& theSubShapes)
+{
+  SetErrorCode(KO);
+  if (theGroup.IsNull()) return;
+
+  Handle(GEOM_Function) aFunction = theGroup->GetFunction(1);
+  if (aFunction.IsNull()) return;
+
+  GEOM_ISubShape aSSI (aFunction);
+
+  // New contents of the group
+  TColStd_ListOfInteger aNewIDs;
+  TColStd_MapOfInteger mapIDs;
+
+  // Add current IDs to the list
+  Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices();
+  if (aSeq.IsNull()) return;
+  Standard_Integer val_j, aLength = aSeq->Length();
+
+  for (Standard_Integer j = 1; j <= aLength; j++) {
+    val_j = aSeq->Value(j);
+    if (val_j > 0 && mapIDs.Add(val_j)) {
+      aNewIDs.Append(val_j);
+    }
+  }
+
+  // Get Main Shape
+  Handle(GEOM_Function) aMainShapeFunc = aSSI.GetMainShape();
+  if (aMainShapeFunc.IsNull()) return;
+  TDF_Label aLabel = aMainShapeFunc->GetOwnerEntry();
+  if (aLabel.IsRoot()) return;
+  Handle(GEOM_Object) aMainObj = GEOM_Object::GetObject(aLabel);
+  if (aMainObj.IsNull()) return;
+  TopoDS_Shape aMainShape = aMainObj->GetValue();
+  if (aMainShape.IsNull()) return;
+
+  TopTools_IndexedMapOfShape mapIndices;
+  TopExp::MapShapes(aMainShape, mapIndices);
+
+  // Get IDs of sub-shapes to add
+  Standard_Integer i, new_id, aLen = theSubShapes->Length();
+  for (i = 1; i <= aLen; i++) {
+    new_id = theSubShapes->Value(i);
+
+    if (0 < new_id && new_id <= mapIndices.Extent()) {
+      if (mapIDs.Add(new_id)) {
+        aNewIDs.Append(new_id);
+      }
+    }
+  }
+
+  if (aNewIDs.Extent() > 0) {
+    Standard_Integer k = 1;
+    TColStd_ListIteratorOfListOfInteger aNewIDsIter (aNewIDs);
+    Handle(TColStd_HArray1OfInteger) aNewSeq = new TColStd_HArray1OfInteger(1, aNewIDs.Extent());
+    for (; aNewIDsIter.More(); aNewIDsIter.Next(), k++) {
+      aNewSeq->SetValue(k, aNewIDsIter.Value());
+    }
+
+    aSSI.SetIndices(aNewSeq);
+  }
+
+  SetErrorCode(OK);
+}
+
+//=============================================================================
+/*!
+ *  DifferenceIDs
+ */
+//=============================================================================
+void GEOMImpl_IGroupOperations::DifferenceIDs (Handle(GEOM_Object) theGroup,
+                                               const Handle(TColStd_HSequenceOfInteger)& theSubShapes)
+{
+  SetErrorCode(KO);
+  if (theGroup.IsNull()) return;
+
+  Handle(GEOM_Function) aFunction = theGroup->GetFunction(1);
+  if (aFunction.IsNull()) return;
+
+  GEOM_ISubShape aSSI (aFunction);
+
+  // Map of IDs to be removed
+  TColStd_MapOfInteger mapIDsToRemove;
+
+  // Map of current IDs
+  Handle(TColStd_HArray1OfInteger) aSeq = aSSI.GetIndices();
+  if (aSeq.IsNull()) return;
+  Standard_Integer aLength = aSeq->Length();
+
+  if (aLength == 1 && aSeq->Value(1) == -1) // empty group
+    return;
+
+  TColStd_MapOfInteger mapIDsCurrent;
+  Standard_Integer j = 1;
+  for (; j <= aLength; j++) {
+    mapIDsCurrent.Add(aSeq->Value(j));
+  }
+
+  // Get Main Shape
+  Handle(GEOM_Function) aMainShapeFunc = aSSI.GetMainShape();
+  if (aMainShapeFunc.IsNull()) return;
+  TDF_Label aLabel = aMainShapeFunc->GetOwnerEntry();
+  if (aLabel.IsRoot()) return;
+  Handle(GEOM_Object) aMainObj = GEOM_Object::GetObject(aLabel);
+  if (aMainObj.IsNull()) return;
+  TopoDS_Shape aMainShape = aMainObj->GetValue();
+  if (aMainShape.IsNull()) return;
+
+  TopTools_IndexedMapOfShape mapIndices;
+  TopExp::MapShapes(aMainShape, mapIndices);
+
+  // Get IDs of sub-shapes to be removed
+  Standard_Integer i, rem_id, aLen = theSubShapes->Length();
+  for (i = 1; i <= aLen; i++) {
+    rem_id = theSubShapes->Value(i);
+    if (mapIDsCurrent.Contains(rem_id)) {
+      mapIDsToRemove.Add(rem_id);
+    }
+  }
+
+  if (mapIDsToRemove.Extent() > 0) {
+    Standard_Integer k = 1, aRemLength = mapIDsToRemove.Extent();
+    Handle(TColStd_HArray1OfInteger) aNewSeq = new TColStd_HArray1OfInteger(1, aLength - aRemLength);
+
+    for (j = 1; j <= aLength; j++) {
+      if (!mapIDsToRemove.Contains(aSeq->Value(j))) {
+        aNewSeq->SetValue(k, aSeq->Value(j));
+        k++;
+      }
+    }
+
+    aSSI.SetIndices(aNewSeq);
+  }
+
+  SetErrorCode(OK);
+}
+
 //=============================================================================
 /*!
  *  GetType
index ea9075844c093b6c951f0c5ff5d7917ebc2a1d41..61d0d903761c478e05edecd95a7c35fbbab41a50 100644 (file)
@@ -8,6 +8,7 @@
 #include "GEOM_Object.hxx"
 #include <TDocStd_Document.hxx>
 #include <TColStd_HArray1OfInteger.hxx> 
+#include <TColStd_HSequenceOfInteger.hxx>
 #include <TopAbs.hxx>
 
 class GEOMImpl_IGroupOperations : public GEOM_IOperations {
@@ -27,6 +28,12 @@ class GEOMImpl_IGroupOperations : public GEOM_IOperations {
   void DifferenceList (Handle(GEOM_Object) theGroup,
                        const Handle(TColStd_HSequenceOfTransient)& theSubShapes);
 
+  void UnionIDs (Handle(GEOM_Object) theGroup,
+                 const Handle(TColStd_HSequenceOfInteger)& theSubShapes);
+
+  void DifferenceIDs (Handle(GEOM_Object) theGroup,
+                      const Handle(TColStd_HSequenceOfInteger)& theSubShapes);
+
   TopAbs_ShapeEnum GetType(Handle(GEOM_Object) theGroup);
 
   Handle(GEOM_Object) GetMainShape(Handle(GEOM_Object) theGroup);
index bbe4f5803fd6ba3366c0e9e131ff6228e6bbe966..48c9a0d74e62a1661ae8a1d3f9f1bb2dad47b4fb 100644 (file)
@@ -17,7 +17,7 @@ using namespace std;
 
 #include "GEOM_Function.hxx"
 
-#include "GEOMAlgo_FinderShapeOn.hxx"
+#include "GEOMAlgo_FinderShapeOn1.hxx"
 
 #include "utilities.h"
 #include "OpUtil.hxx"
@@ -35,7 +35,9 @@ using namespace std;
 #include <BRep_Tool.hxx>
 #include <BRepGProp.hxx>
 #include <BRepAdaptor_Curve.hxx>
+#include <BRepBndLib.hxx>
 #include <BRepBuilderAPI_MakeFace.hxx>
+#include <BRepMesh_IncrementalMesh.hxx>
 
 #include <TopAbs.hxx>
 #include <TopExp.hxx>
@@ -60,6 +62,7 @@ using namespace std;
 
 #include <Geom2d_Curve.hxx>
 
+#include <Bnd_Box.hxx>
 #include <GProp_GProps.hxx>
 #include <gp_Pnt.hxx>
 #include <gp_Lin.hxx>
@@ -1027,6 +1030,10 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
 {
   SetErrorCode(KO);
 
+//  MESSAGE("--------------------------- GetShapesOnPlane phase 1 takes:");
+//  OSD_Timer timer1;
+//  timer1.Start();
+
   if (theShape.IsNull() || theAx1.IsNull()) return NULL;
 
   TopoDS_Shape aShape = theShape->GetValue();
@@ -1061,8 +1068,12 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
 
   Handle(Geom_Plane) aPlane = new Geom_Plane(aLoc, aVec);
 
+  // Check presence of triangulation, build if need
+  if (!CheckTriangulation(aShape))
+    return NULL;
+
   // Call algo
-  GEOMAlgo_FinderShapeOn aFinder;
+  GEOMAlgo_FinderShapeOn1 aFinder;
   Standard_Real aTol = 0.0001; // default value
 
   aFinder.SetShape(aShape);
@@ -1071,11 +1082,33 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
   aFinder.SetShapeType(aShapeType);
   aFinder.SetState(theState);
 
+  // Sets the minimal number of inner points for the faces that do not have own
+  // inner points at all (for e.g. rectangular planar faces have just 2 triangles).
+  // Default value=3
+  aFinder.SetNbPntsMin(3);
+  // Sets the maximal number of inner points for edges or faces.
+  // It is usefull for the cases when this number is very big (e.g =2000) to improve
+  // the performance. If this value =0, all inner points will be taken into account.
+  // Default value=0
+  aFinder.SetNbPntsMax(100);
+
+//  timer1.Stop();
+//  timer1.Show();
+
+//  MESSAGE("--------------------------- Perform on Plane takes:");
+//  timer1.Reset();
+//  timer1.Start();
   aFinder.Perform();
+//  timer1.Stop();
+//  timer1.Show();
+
+//  MESSAGE("--------------------------- GetShapesOnPlane phase 3 takes:");
+//  timer1.Reset();
+//  timer1.Start();
 
   // Interprete results
   Standard_Integer iErr = aFinder.ErrorStatus();
-  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn.cxx
+  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx
   if (iErr) {
     MESSAGE(" iErr : " << iErr);
     TCollection_AsciiString aMsg (" iErr : ");
@@ -1084,7 +1117,7 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
     return NULL;
   }
   Standard_Integer iWrn = aFinder.WarningStatus();
-  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn.cxx
+  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx
   if (iWrn) {
     MESSAGE(" *** iWrn : " << iWrn);
   }
@@ -1096,6 +1129,13 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
     return NULL;
   }
 
+//  timer1.Stop();
+//  timer1.Show();
+
+//  MESSAGE("--------------------------- GetShapesOnPlane phase 4 takes:");
+//  timer1.Reset();
+//  timer1.Start();
+
   // Fill sequence of objects
   TopTools_IndexedMapOfShape anIndices;
   TopExp::MapShapes(aShape, anIndices);
@@ -1112,6 +1152,13 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
     anObj = GetEngine()->AddSubShape(theShape, anArray);
     aSeq->Append(anObj);
   }
+
+//  timer1.Stop();
+//  timer1.Show();
+
+//  MESSAGE("--------------------------- GetShapesOnPlane phase 5 takes:");
+//  timer1.Reset();
+//  timer1.Start();
   
   // The GetShapesOnPlane() doesn't change object so no new function is required.
   Handle(GEOM_Function) aFunction = theShape->GetLastFunction();
@@ -1129,6 +1176,9 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
   anOldDescr += aDescr;
   aFunction->SetDescription(anOldDescr);
 
+//  timer1.Stop();
+//  timer1.Show();
+
   SetErrorCode(OK);
   return aSeq;
 }
@@ -1186,8 +1236,12 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnCyli
   Handle(Geom_CylindricalSurface) aCylinder =
     new Geom_CylindricalSurface(anAx3, theRadius);
 
+  // Check presence of triangulation, build if need
+  if (!CheckTriangulation(aShape))
+    return NULL;
+
   // Call algo
-  GEOMAlgo_FinderShapeOn aFinder;
+  GEOMAlgo_FinderShapeOn1 aFinder;
   Standard_Real aTol = 0.0001; // default value
 
   aFinder.SetShape(aShape);
@@ -1196,11 +1250,14 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnCyli
   aFinder.SetShapeType(aShapeType);
   aFinder.SetState(theState);
 
+  aFinder.SetNbPntsMin(3);
+  aFinder.SetNbPntsMax(100);
+
   aFinder.Perform();
 
   // Interprete results
   Standard_Integer iErr = aFinder.ErrorStatus();
-  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn.cxx
+  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx
   if (iErr) {
     MESSAGE(" iErr : " << iErr);
     TCollection_AsciiString aMsg (" iErr : ");
@@ -1209,7 +1266,7 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnCyli
     return NULL;
   }
   Standard_Integer iWrn = aFinder.WarningStatus();
-  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn.cxx
+  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx
   if (iWrn) {
     MESSAGE(" *** iWrn : " << iWrn);
   }
@@ -1297,8 +1354,12 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnSphe
   Handle(Geom_SphericalSurface) aSphere =
     new Geom_SphericalSurface(anAx3, theRadius);
 
+  // Check presence of triangulation, build if need
+  if (!CheckTriangulation(aShape))
+    return NULL;
+
   // Call algo
-  GEOMAlgo_FinderShapeOn aFinder;
+  GEOMAlgo_FinderShapeOn1 aFinder;
   Standard_Real aTol = 0.0001; // default value
 
   aFinder.SetShape(aShape);
@@ -1307,11 +1368,14 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnSphe
   aFinder.SetShapeType(aShapeType);
   aFinder.SetState(theState);
 
+  aFinder.SetNbPntsMin(3);
+  aFinder.SetNbPntsMax(100);
+
   aFinder.Perform();
 
   // Interprete results
   Standard_Integer iErr = aFinder.ErrorStatus();
-  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn.cxx
+  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx
   if (iErr) {
     MESSAGE(" iErr : " << iErr);
     TCollection_AsciiString aMsg (" iErr : ");
@@ -1320,7 +1384,7 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnSphe
     return NULL;
   }
   Standard_Integer iWrn = aFinder.WarningStatus();
-  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn.cxx
+  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx
   if (iWrn) {
     MESSAGE(" *** iWrn : " << iWrn);
   }
@@ -1370,6 +1434,368 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnSphe
   return aSeq;
 }
 
+//=============================================================================
+/*!
+ *  GetShapesOnPlaneIDs
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnPlaneIDs
+                                        (const Handle(GEOM_Object)& theShape,
+                                         const Standard_Integer     theShapeType,
+                                         const Handle(GEOM_Object)& theAx1,
+                                         const GEOMAlgo_State       theState)
+{
+  SetErrorCode(KO);
+
+  if (theShape.IsNull() || theAx1.IsNull()) return NULL;
+
+  TopoDS_Shape aShape = theShape->GetValue();
+  TopoDS_Shape anAx1  = theAx1->GetValue();
+
+  if (aShape.IsNull() || anAx1.IsNull()) return NULL;
+
+  TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType);
+  if (aShapeType != TopAbs_VERTEX &&
+      aShapeType != TopAbs_EDGE &&
+      aShapeType != TopAbs_FACE &&
+      aShapeType != TopAbs_SOLID) {
+    SetErrorCode("Only solids, vertices, edges or faces can be found by this method");
+    return NULL;
+  }
+
+  // Create plane
+  if (anAx1.ShapeType() != TopAbs_EDGE) return NULL;
+  TopoDS_Edge anEdge = TopoDS::Edge(anAx1);
+  TopoDS_Vertex V1, V2;
+  TopExp::Vertices(anEdge, V1, V2, Standard_True);
+  if (V1.IsNull() || V2.IsNull()) {
+    SetErrorCode("Bad edge given for the plane normal vector");
+    return NULL;
+  }
+  gp_Pnt aLoc = BRep_Tool::Pnt(V1);
+  gp_Vec aVec (aLoc, BRep_Tool::Pnt(V2));
+  if (aVec.Magnitude() < Precision::Confusion()) {
+    SetErrorCode("Vector with null magnitude given");
+    return NULL;
+  }
+
+  Handle(Geom_Plane) aPlane = new Geom_Plane(aLoc, aVec);
+
+  // Check presence of triangulation, build if need
+  if (!CheckTriangulation(aShape))
+    return NULL;
+
+  // Call algo
+  GEOMAlgo_FinderShapeOn1 aFinder;
+  Standard_Real aTol = 0.0001; // default value
+
+  aFinder.SetShape(aShape);
+  aFinder.SetTolerance(aTol);
+  aFinder.SetSurface(aPlane);
+  aFinder.SetShapeType(aShapeType);
+  aFinder.SetState(theState);
+
+  aFinder.SetNbPntsMin(3);
+  aFinder.SetNbPntsMax(100);
+
+  aFinder.Perform();
+
+  // Interprete results
+  Standard_Integer iErr = aFinder.ErrorStatus();
+  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx
+  if (iErr) {
+    MESSAGE(" iErr : " << iErr);
+    TCollection_AsciiString aMsg (" iErr : ");
+    aMsg += TCollection_AsciiString(iErr);
+    SetErrorCode(aMsg);
+    return NULL;
+  }
+  Standard_Integer iWrn = aFinder.WarningStatus();
+  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx
+  if (iWrn) {
+    MESSAGE(" *** iWrn : " << iWrn);
+  }
+
+  const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result
+
+  if (listSS.Extent() < 1) {
+    SetErrorCode("Not a single sub-shape of the requested type found on the given plane");
+    return NULL;
+  }
+
+  // Fill sequence of objects
+  TopTools_IndexedMapOfShape anIndices;
+  TopExp::MapShapes(aShape, anIndices);
+
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  TopTools_ListIteratorOfListOfShape itSub (listSS);
+  for (int index = 1; itSub.More(); itSub.Next(), ++index) {
+    int id = anIndices.FindIndex(itSub.Value());
+    aSeq->Append(id);
+  }
+
+  // The GetShapesOnPlane() doesn't change object so no new function is required.
+  Handle(GEOM_Function) aFunction = theShape->GetLastFunction();
+
+  // Make a Python command
+  TCollection_AsciiString anEntry, aDescr
+    ("\nlistShapesOnPlane = IShapesOperations.GetShapesOnPlaneIDs(");
+  TDF_Tool::Entry(theShape->GetEntry(), anEntry);
+  aDescr += anEntry + TCollection_AsciiString(theShapeType) + ",";
+  TDF_Tool::Entry(theAx1->GetEntry(), anEntry);
+  aDescr += anEntry + ",";
+  aDescr += TCollection_AsciiString(theState) + ")";
+
+  TCollection_AsciiString anOldDescr = aFunction->GetDescription();
+  anOldDescr += aDescr;
+  aFunction->SetDescription(anOldDescr);
+
+  SetErrorCode(OK);
+  return aSeq;
+}
+
+//=============================================================================
+/*!
+ *  GetShapesOnCylinderIDs
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnCylinderIDs
+                                          (const Handle(GEOM_Object)& theShape,
+                                           const Standard_Integer     theShapeType,
+                                           const Handle(GEOM_Object)& theAxis,
+                                           const Standard_Real        theRadius,
+                                           const GEOMAlgo_State       theState)
+{
+  SetErrorCode(KO);
+
+  if (theShape.IsNull() || theAxis.IsNull()) return NULL;
+
+  TopoDS_Shape aShape = theShape->GetValue();
+  TopoDS_Shape anAxis = theAxis->GetValue();
+
+  if (aShape.IsNull() || anAxis.IsNull()) return NULL;
+
+  TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType);
+  if (aShapeType != TopAbs_VERTEX &&
+      aShapeType != TopAbs_EDGE &&
+      aShapeType != TopAbs_FACE &&
+      aShapeType != TopAbs_SOLID) {
+    SetErrorCode("Only solids, vertices, edges or faces can be found by this method");
+    return NULL;
+  }
+
+  //Axis of the cylinder
+  if (anAxis.ShapeType() != TopAbs_EDGE) {
+    SetErrorCode("Not an edge given for the axis");
+    return NULL;
+  }
+  TopoDS_Edge anEdge = TopoDS::Edge(anAxis);
+  TopoDS_Vertex V1, V2;
+  TopExp::Vertices(anEdge, V1, V2, Standard_True);
+  if (V1.IsNull() || V2.IsNull()) {
+    SetErrorCode("Bad edge given for the axis");
+    return NULL;
+  }
+  gp_Pnt aLoc = BRep_Tool::Pnt(V1);
+  gp_Vec aVec (aLoc, BRep_Tool::Pnt(V2));
+  if (aVec.Magnitude() < Precision::Confusion()) {
+    SetErrorCode("Vector with null magnitude given");
+    return NULL;
+  }
+
+  gp_Ax3 anAx3 (aLoc, aVec);
+  Handle(Geom_CylindricalSurface) aCylinder =
+    new Geom_CylindricalSurface(anAx3, theRadius);
+
+  // Check presence of triangulation, build if need
+  if (!CheckTriangulation(aShape))
+    return NULL;
+
+  // Call algo
+  GEOMAlgo_FinderShapeOn1 aFinder;
+  Standard_Real aTol = 0.0001; // default value
+
+  aFinder.SetShape(aShape);
+  aFinder.SetTolerance(aTol);
+  aFinder.SetSurface(aCylinder);
+  aFinder.SetShapeType(aShapeType);
+  aFinder.SetState(theState);
+
+  aFinder.SetNbPntsMin(3);
+  aFinder.SetNbPntsMax(100);
+
+  aFinder.Perform();
+
+  // Interprete results
+  Standard_Integer iErr = aFinder.ErrorStatus();
+  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx
+  if (iErr) {
+    MESSAGE(" iErr : " << iErr);
+    TCollection_AsciiString aMsg (" iErr : ");
+    aMsg += TCollection_AsciiString(iErr);
+    SetErrorCode(aMsg);
+    return NULL;
+  }
+  Standard_Integer iWrn = aFinder.WarningStatus();
+  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx
+  if (iWrn) {
+    MESSAGE(" *** iWrn : " << iWrn);
+  }
+
+  const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result
+
+  if (listSS.Extent() < 1) {
+    SetErrorCode("Not a single sub-shape of the requested type found on the given cylinder");
+    return NULL;
+  }
+
+  // Fill sequence of objects
+  TopTools_IndexedMapOfShape anIndices;
+  TopExp::MapShapes(aShape, anIndices);
+
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  TopTools_ListIteratorOfListOfShape itSub (listSS);
+  for (int index = 1; itSub.More(); itSub.Next(), ++index) {
+    int id = anIndices.FindIndex(itSub.Value());
+    aSeq->Append(id);
+  }
+  
+  // The GetShapesOnCylinder() doesn't change object so no new function is required.
+  Handle(GEOM_Function) aFunction = theShape->GetLastFunction();
+
+  // Make a Python command
+  TCollection_AsciiString anEntry, aDescr
+    ("\nlistShapesOnCylinder = IShapesOperations.GetShapesOnCylinderIDs(");
+  TDF_Tool::Entry(theShape->GetEntry(), anEntry);
+  aDescr += anEntry + TCollection_AsciiString(theShapeType) + ",";
+  TDF_Tool::Entry(theAxis->GetEntry(), anEntry);
+  aDescr += anEntry + ",";
+  aDescr += TCollection_AsciiString(theRadius) + ",";
+  aDescr += TCollection_AsciiString(theState) + ")";
+
+  TCollection_AsciiString anOldDescr = aFunction->GetDescription();
+  anOldDescr += aDescr;
+  aFunction->SetDescription(anOldDescr);
+
+  SetErrorCode(OK);
+  return aSeq;
+}
+
+//=============================================================================
+/*!
+ *  GetShapesOnSphereIDs
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnSphereIDs
+                                          (const Handle(GEOM_Object)& theShape,
+                                           const Standard_Integer     theShapeType,
+                                           const Handle(GEOM_Object)& theCenter,
+                                           const Standard_Real        theRadius,
+                                           const GEOMAlgo_State       theState)
+{
+  SetErrorCode(KO);
+
+  if (theShape.IsNull() || theCenter.IsNull()) return NULL;
+
+  TopoDS_Shape aShape  = theShape->GetValue();
+  TopoDS_Shape aCenter = theCenter->GetValue();
+
+  if (aShape.IsNull() || aCenter.IsNull()) return NULL;
+
+  TopAbs_ShapeEnum aShapeType = TopAbs_ShapeEnum(theShapeType);
+  if (aShapeType != TopAbs_VERTEX &&
+      aShapeType != TopAbs_EDGE &&
+      aShapeType != TopAbs_FACE &&
+      aShapeType != TopAbs_SOLID) {
+    SetErrorCode("Only solids, vertices, edges or faces can be found by this method");
+    return NULL;
+  }
+
+  // Center of the sphere
+  if (aCenter.ShapeType() != TopAbs_VERTEX) return NULL;
+  gp_Pnt aLoc = BRep_Tool::Pnt(TopoDS::Vertex(aCenter));
+
+  gp_Ax3 anAx3 (aLoc, gp::DZ());
+  Handle(Geom_SphericalSurface) aSphere =
+    new Geom_SphericalSurface(anAx3, theRadius);
+
+  // Check presence of triangulation, build if need
+  if (!CheckTriangulation(aShape))
+    return NULL;
+
+  // Call algo
+  GEOMAlgo_FinderShapeOn1 aFinder;
+  Standard_Real aTol = 0.0001; // default value
+
+  aFinder.SetShape(aShape);
+  aFinder.SetTolerance(aTol);
+  aFinder.SetSurface(aSphere);
+  aFinder.SetShapeType(aShapeType);
+  aFinder.SetState(theState);
+
+  aFinder.SetNbPntsMin(3);
+  aFinder.SetNbPntsMax(100);
+
+  aFinder.Perform();
+
+  // Interprete results
+  Standard_Integer iErr = aFinder.ErrorStatus();
+  // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx
+  if (iErr) {
+    MESSAGE(" iErr : " << iErr);
+    TCollection_AsciiString aMsg (" iErr : ");
+    aMsg += TCollection_AsciiString(iErr);
+    SetErrorCode(aMsg);
+    return NULL;
+  }
+  Standard_Integer iWrn = aFinder.WarningStatus();
+  // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx
+  if (iWrn) {
+    MESSAGE(" *** iWrn : " << iWrn);
+  }
+
+  const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result
+
+  if (listSS.Extent() < 1) {
+    SetErrorCode("Not a single sub-shape of the requested type found on the given sphere");
+    return NULL;
+  }
+
+  // Fill sequence of objects
+  TopTools_IndexedMapOfShape anIndices;
+  TopExp::MapShapes(aShape, anIndices);
+
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  TopTools_ListIteratorOfListOfShape itSub (listSS);
+  for (int index = 1; itSub.More(); itSub.Next(), ++index) {
+    int id = anIndices.FindIndex(itSub.Value());
+    aSeq->Append(id);
+  }
+  
+  // The GetShapesOnSphere() doesn't change object so no new function is required.
+  Handle(GEOM_Function) aFunction = theShape->GetLastFunction();
+
+  // Make a Python command
+  TCollection_AsciiString anEntry, aDescr
+    ("\nlistShapesOnSphere = IShapesOperations.GetShapesOnSphereIDs(");
+  TDF_Tool::Entry(theShape->GetEntry(), anEntry);
+  aDescr += anEntry + TCollection_AsciiString(theShapeType) + ",";
+  TDF_Tool::Entry(theCenter->GetEntry(), anEntry);
+  aDescr += anEntry + ",";
+  aDescr += TCollection_AsciiString(theRadius) + ",";
+  aDescr += TCollection_AsciiString(theState) + ")";
+
+  TCollection_AsciiString anOldDescr = aFunction->GetDescription();
+  anOldDescr += aDescr;
+  aFunction->SetDescription(anOldDescr);
+
+  SetErrorCode(OK);
+  return aSeq;
+}
+
 //=============================================================================
 /*!
  *  GetInPlace
@@ -1562,3 +1988,47 @@ void GEOMImpl_IShapesOperations::SortShapes(TopTools_ListOfShape& SL)
   for (Index=1; Index <= MaxShapes; Index++)
     SL.Append( aShapes( OrderInd(Index) ));
 }
+
+//=======================================================================
+//function : CheckTriangulation
+//purpose  :
+//=======================================================================
+bool GEOMImpl_IShapesOperations::CheckTriangulation (const TopoDS_Shape& aShape)
+{
+//  MESSAGE("CheckTriangulation");
+//
+//  OSD_Timer timer1;
+//  timer1.Start();
+
+  TopExp_Explorer exp (aShape, TopAbs_FACE);
+  if (!exp.More()) {
+    SetErrorCode("Shape without faces given");
+    return false;
+  }
+
+  TopLoc_Location aTopLoc;
+  Handle(Poly_Triangulation) aTRF;
+  aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc);
+  if (aTRF.IsNull()) {
+    // calculate deflection
+    Standard_Real aDeviationCoefficient = 0.001;
+
+    Bnd_Box B;
+    BRepBndLib::Add(aShape, B);
+    Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
+    B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
+
+    Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin;
+    Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4;
+
+//    MESSAGE("Deflection = " << aDeflection);
+
+    Standard_Real aHLRAngle = 0.349066;
+
+    BRepMesh_IncrementalMesh Inc (aShape, aDeflection, Standard_False, aHLRAngle);
+  }
+//  timer1.Stop();
+//  timer1.Show();
+
+  return true;
+}
index 3980e8878265a415b9bb0b0d5710b06d2d0b799e..0c8f57395061dbbb1580e0e7686e8b5dc01de45d 100644 (file)
@@ -81,6 +81,23 @@ class GEOMImpl_IShapesOperations : public GEOM_IOperations {
                                                           const Standard_Real        theRadius,
                                                           const GEOMAlgo_State       theState);
 
+  Handle(TColStd_HSequenceOfInteger) GetShapesOnPlaneIDs (const Handle(GEOM_Object)& theShape,
+                                                          const Standard_Integer     theShapeType,
+                                                          const Handle(GEOM_Object)& theAx1,
+                                                          const GEOMAlgo_State       theState);
+
+  Handle(TColStd_HSequenceOfInteger) GetShapesOnCylinderIDs (const Handle(GEOM_Object)& theShape,
+                                                             const Standard_Integer     theShapeType,
+                                                             const Handle(GEOM_Object)& theAxis,
+                                                             const Standard_Real        theRadius,
+                                                             const GEOMAlgo_State       theState);
+
+  Handle(TColStd_HSequenceOfInteger) GetShapesOnSphereIDs (const Handle(GEOM_Object)& theShape,
+                                                           const Standard_Integer     theShapeType,
+                                                           const Handle(GEOM_Object)& theCenter,
+                                                           const Standard_Real        theRadius,
+                                                           const GEOMAlgo_State       theState);
+
   Handle(GEOM_Object) GetShapesOnCylinderOld (Handle(GEOM_Object)    theShape,
                                               const Standard_Integer theShapeType,
                                               Handle(GEOM_Object)    theAxis,
@@ -101,6 +118,8 @@ class GEOMImpl_IShapesOperations : public GEOM_IOperations {
                                  const Standard_Integer        theObjectType,
                                  const Standard_Integer        theFunctionType,
                                  const TCollection_AsciiString theMethodName);
+
+  bool CheckTriangulation (const TopoDS_Shape& aShape);
 };
 
 #endif
index b0689d0dd8aed1d3b6b093acbe1682007fb7984d..3ee63ba8403898d0e35f2be2fdc0c9959f52a825 100644 (file)
@@ -174,6 +174,68 @@ void GEOM_IGroupOperations_i::DifferenceList (GEOM::GEOM_Object_ptr theGroup,
   return;
 }
 
+//=============================================================================
+/*!
+ *  UnionIDs
+ */
+//=============================================================================
+void GEOM_IGroupOperations_i::UnionIDs (GEOM::GEOM_Object_ptr   theGroup,
+                                       const GEOM::ListOfLong& theSubShapes) 
+{
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  if (theGroup == NULL) return;
+
+  //Get the reference group
+  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject
+    (theGroup->GetStudyID(), theGroup->GetEntry());
+  if (aGroupRef.IsNull()) return;
+
+  //Get sub-shape to add
+  Handle(TColStd_HSequenceOfInteger) aSubShapes = new TColStd_HSequenceOfInteger;
+
+  int ind, aLen = theSubShapes.length();
+  for (ind = 0; ind < aLen; ind++) {
+    aSubShapes->Append(theSubShapes[ind]);
+  }
+
+  //Perform the operation
+  GetOperations()->UnionIDs(aGroupRef, aSubShapes);
+  return;
+}
+
+//=============================================================================
+/*!
+ *  DifferenceIDs
+ */
+//=============================================================================
+void GEOM_IGroupOperations_i::DifferenceIDs (GEOM::GEOM_Object_ptr   theGroup,
+                                            const GEOM::ListOfLong& theSubShapes) 
+{
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  if (theGroup == NULL) return;
+
+  //Get the reference group
+  Handle(GEOM_Object) aGroupRef = GetOperations()->GetEngine()->GetObject
+    (theGroup->GetStudyID(), theGroup->GetEntry());
+  if (aGroupRef.IsNull()) return;
+
+  //Get sub-shape to remove
+  Handle(TColStd_HSequenceOfInteger) aSubShapes = new TColStd_HSequenceOfInteger;
+
+  int ind, aLen = theSubShapes.length();
+  for (ind = 0; ind < aLen; ind++) {
+    aSubShapes->Append(theSubShapes[ind]);
+  }
+
+  //Perform the operation
+  GetOperations()->DifferenceIDs(aGroupRef, aSubShapes);
+  return;
+}
+
 //=============================================================================
 /*!
  *  GetType
index 068f0916dccb1ff304b3a14dd296eb4905dfeeac..e730101d4d03274499737dad9c6781301537f253 100644 (file)
@@ -30,6 +30,10 @@ class GEOM_IGroupOperations_i :
 
   void DifferenceList (GEOM::GEOM_Object_ptr theGroup, const GEOM::ListOfGO& theSubShapes);
 
+  void UnionIDs (GEOM::GEOM_Object_ptr theGroup, const GEOM::ListOfLong& theSubShapes);
+
+  void DifferenceIDs (GEOM::GEOM_Object_ptr theGroup, const GEOM::ListOfLong& theSubShapes);
+
   CORBA::Long GetType (GEOM::GEOM_Object_ptr theGroup);
   
   GEOM::GEOM_Object_ptr GetMainShape (GEOM::GEOM_Object_ptr theGroup);
index e595f2a88c501578c192d6e061e575480f034322..718f5683ffc9259c4fbb06802dac511078d8353a 100644 (file)
@@ -699,6 +699,128 @@ GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnSphere
   return aSeq._retn();
 }
 
+//=============================================================================
+/*!
+ *  GetShapesOnPlaneIDs
+ */
+//=============================================================================
+GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnPlaneIDs
+                                                (GEOM::GEOM_Object_ptr   theShape,
+                                                const CORBA::Long       theShapeType,
+                                                GEOM::GEOM_Object_ptr   theAx1,
+                                                const GEOM::shape_state theState)
+{
+  GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  if (theShape == NULL || theAx1 == NULL) return aSeq._retn();
+
+  //Get the reference objects
+  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) anAx1 = GetOperations()->GetEngine()->GetObject
+    (theAx1->GetStudyID(), theAx1->GetEntry());
+
+  if (aShape.IsNull() || anAx1.IsNull()) return aSeq._retn();
+
+  //Get Shapes On Plane
+  Handle(TColStd_HSequenceOfInteger) aHSeq =
+    GetOperations()->GetShapesOnPlaneIDs(aShape, theShapeType, anAx1, ShapeState(theState));
+  if (!GetOperations()->IsDone() || aHSeq.IsNull())
+    return aSeq._retn();
+
+  Standard_Integer aLength = aHSeq->Length();
+  aSeq->length(aLength);
+  for (Standard_Integer i = 1; i <= aLength; i++)
+    aSeq[i-1] = aHSeq->Value(i);
+
+  return aSeq._retn();
+}
+
+//=============================================================================
+/*!
+ *  GetShapesOnCylinderIDs
+ */
+//=============================================================================
+GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnCylinderIDs
+                                                (GEOM::GEOM_Object_ptr   theShape,
+                                                const CORBA::Long       theShapeType,
+                                                GEOM::GEOM_Object_ptr   theAxis,
+                                                const CORBA::Double     theRadius,
+                                                const GEOM::shape_state theState)
+{
+  GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  if (theShape == NULL || theAxis == NULL) return aSeq._retn();
+
+  //Get the reference objects
+  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject
+    (theAxis->GetStudyID(), theAxis->GetEntry());
+
+  if (aShape.IsNull() || anAxis.IsNull()) return aSeq._retn();
+
+  //Get Shapes On Cylinder
+  Handle(TColStd_HSequenceOfInteger) aHSeq = GetOperations()->GetShapesOnCylinderIDs
+    (aShape, theShapeType, anAxis, theRadius, ShapeState(theState));
+  if (!GetOperations()->IsDone() || aHSeq.IsNull())
+    return aSeq._retn();
+
+  Standard_Integer aLength = aHSeq->Length();
+  aSeq->length(aLength);
+  for (Standard_Integer i = 1; i <= aLength; i++)
+    aSeq[i-1] = aHSeq->Value(i);
+
+  return aSeq._retn();
+}
+
+//=============================================================================
+/*!
+ *  GetShapesOnSphereIDs
+ */
+//=============================================================================
+GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnSphereIDs
+                                                (GEOM::GEOM_Object_ptr   theShape,
+                                                const CORBA::Long       theShapeType,
+                                                GEOM::GEOM_Object_ptr   theCenter,
+                                                const CORBA::Double     theRadius,
+                                                const GEOM::shape_state theState)
+{
+  GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
+
+  //Set a not done flag
+  GetOperations()->SetNotDone();
+
+  if (theShape == NULL || theCenter == NULL) return aSeq._retn();
+
+  //Get the reference objects
+  Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+    (theShape->GetStudyID(), theShape->GetEntry());
+  Handle(GEOM_Object) aCenter = GetOperations()->GetEngine()->GetObject
+    (theCenter->GetStudyID(), theCenter->GetEntry());
+
+  if (aShape.IsNull() || aCenter.IsNull()) return aSeq._retn();
+
+  //Get Shapes On Sphere
+  Handle(TColStd_HSequenceOfInteger) aHSeq = GetOperations()->GetShapesOnSphereIDs
+    (aShape, theShapeType, aCenter, theRadius, ShapeState(theState));
+  if (!GetOperations()->IsDone() || aHSeq.IsNull())
+    return aSeq._retn();
+
+  Standard_Integer aLength = aHSeq->Length();
+  aSeq->length(aLength);
+  for (Standard_Integer i = 1; i <= aLength; i++)
+    aSeq[i-1] = aHSeq->Value(i);
+
+  return aSeq._retn();
+}
+
 //=============================================================================
 /*!
  *  GetInPlace
index e4e8c4a1111b9f44b98b988887c110a4b3a9c085..0ad390980997bb91d7d1e9c788db178cf51f3786 100644 (file)
@@ -82,6 +82,23 @@ class GEOM_IShapesOperations_i :
                                     const CORBA::Double     theRadius,
                                     const GEOM::shape_state theState);
 
+  GEOM::ListOfLong* GetShapesOnPlaneIDs (GEOM::GEOM_Object_ptr   theShape,
+                                        const CORBA::Long       theShapeType,
+                                        GEOM::GEOM_Object_ptr   theAx1,
+                                        const GEOM::shape_state theState);
+
+  GEOM::ListOfLong* GetShapesOnCylinderIDs (GEOM::GEOM_Object_ptr   theShape,
+                                           const CORBA::Long       theShapeType,
+                                           GEOM::GEOM_Object_ptr   theAxis,
+                                           const CORBA::Double     theRadius,
+                                           const GEOM::shape_state theState);
+
+  GEOM::ListOfLong* GetShapesOnSphereIDs (GEOM::GEOM_Object_ptr   theShape,
+                                         const CORBA::Long       theShapeType,
+                                         GEOM::GEOM_Object_ptr   theCenter,
+                                         const CORBA::Double     theRadius,
+                                         const GEOM::shape_state theState);
+
   GEOM::GEOM_Object_ptr GetInPlace (GEOM::GEOM_Object_ptr theShapeWhere,
                                    GEOM::GEOM_Object_ptr theShapeWhat);
 
index bf9b91068d6008363114e02937b9812387a4ff05..ac330ca23d82187f1bb7560d1de5676a426021d3 100644 (file)
@@ -32,6 +32,6 @@ VPATH=.:@srcdir@
 
 @COMMENCE@
 
-SUBDIRS = OBJECT ARCHIMEDE NMTDS NMTTools NMTAlgo GEOMAlgo SKETCHER PARTITION GEOM BREPExport BREPImport IGESExport IGESImport STEPExport STEPImport ShHealOper GEOMImpl GEOM_I GEOMClient DlgRef GEOMFiltersSelection GEOMGUI GEOMBase DisplayGUI GEOMToolsGUI BasicGUI PrimitiveGUI GenerationGUI EntityGUI BuildGUI BooleanGUI TransformationGUI OperationGUI RepairGUI MeasureGUI GroupGUI BlocksGUI GEOM_SWIG GEOM_I_Superv
+SUBDIRS = OBJECT ARCHIMEDE NMTDS NMTTools NMTAlgo GEOMAlgo SKETCHER GEOM BREPExport BREPImport IGESExport IGESImport STEPExport STEPImport ShHealOper GEOMImpl GEOM_I GEOMClient DlgRef GEOMFiltersSelection GEOMGUI GEOMBase DisplayGUI GEOMToolsGUI BasicGUI PrimitiveGUI GenerationGUI EntityGUI BuildGUI BooleanGUI TransformationGUI OperationGUI RepairGUI MeasureGUI GroupGUI BlocksGUI GEOM_SWIG GEOM_I_Superv
 
 @MODULE@