Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/opencascade/TopOpeBRepBuild_Builder.hxx was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // Created on: 1993-06-14
0002 // Created by: Jean Yves LEBEY
0003 // Copyright (c) 1993-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _TopOpeBRepBuild_Builder_HeaderFile
0018 #define _TopOpeBRepBuild_Builder_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023 
0024 #include <TopAbs_State.hxx>
0025 #include <TopoDS_Shape.hxx>
0026 #include <TopOpeBRepDS_BuildTool.hxx>
0027 #include <NCollection_Array1.hxx>
0028 #include <NCollection_HArray1.hxx>
0029 #include <Standard_Integer.hxx>
0030 #include <NCollection_List.hxx>
0031 #include <NCollection_DataMap.hxx>
0032 #include <TopOpeBRepDS_ListOfShapeOn1State.hxx>
0033 #include <TopTools_ShapeMapHasher.hxx>
0034 #include <TopoDS_Solid.hxx>
0035 #include <TopoDS_Face.hxx>
0036 #include <TopoDS_Edge.hxx>
0037 #include <NCollection_IndexedMap.hxx>
0038 #include <TopOpeBRepTool_ShapeClassifier.hxx>
0039 #include <NCollection_Map.hxx>
0040 #include <TCollection_AsciiString.hxx>
0041 #include <NCollection_IndexedDataMap.hxx>
0042 #include <TopAbs_ShapeEnum.hxx>
0043 #include <TopAbs_Orientation.hxx>
0044 #include <TopOpeBRepDS_Config.hxx>
0045 class TopOpeBRepDS_HDataStructure;
0046 class TopOpeBRepTool_ShapeExplorer;
0047 class TopOpeBRepBuild_ShapeSet;
0048 class TopOpeBRepBuild_EdgeBuilder;
0049 class TopOpeBRepBuild_FaceBuilder;
0050 class TopOpeBRepBuild_SolidBuilder;
0051 class TopOpeBRepBuild_WireEdgeSet;
0052 class TopOpeBRepDS_PointIterator;
0053 class TopOpeBRepBuild_PaveSet;
0054 class TopOpeBRepBuild_GTopo;
0055 class TopOpeBRepBuild_ShellFaceSet;
0056 class TopOpeBRepDS_SurfaceIterator;
0057 class TopOpeBRepDS_CurveIterator;
0058 class TopoDS_Vertex;
0059 class gp_Pnt;
0060 
0061 // resolve name collisions with X11 headers
0062 #ifdef FillSolid
0063   #undef FillSolid
0064 #endif
0065 
0066 //! The Builder algorithm constructs topological
0067 //! objects from an existing topology and new
0068 //! geometries attached to the topology. It is used to
0069 //! construct the result of a topological operation;
0070 //! the existing topologies are the parts involved in
0071 //! the topological operation and the new geometries
0072 //! are the intersection lines and points.
0073 class TopOpeBRepBuild_Builder
0074 {
0075 public:
0076   DEFINE_STANDARD_ALLOC
0077 
0078   Standard_EXPORT TopOpeBRepBuild_Builder(const TopOpeBRepDS_BuildTool& BT);
0079 
0080   Standard_EXPORT virtual ~TopOpeBRepBuild_Builder();
0081 
0082   Standard_EXPORT TopOpeBRepDS_BuildTool& ChangeBuildTool();
0083 
0084   Standard_EXPORT const TopOpeBRepDS_BuildTool& BuildTool() const;
0085 
0086   //! Stores the data structure <HDS>,
0087   //! Create shapes from the new geometries.
0088   Standard_EXPORT virtual void Perform(const occ::handle<TopOpeBRepDS_HDataStructure>& HDS);
0089 
0090   //! Stores the data structure <HDS>,
0091   //! Create shapes from the new geometries,
0092   //! Evaluates if an operation performed on shapes S1,S2
0093   //! is a particular case.
0094   Standard_EXPORT virtual void Perform(const occ::handle<TopOpeBRepDS_HDataStructure>& HDS,
0095                                        const TopoDS_Shape&                             S1,
0096                                        const TopoDS_Shape&                             S2);
0097 
0098   //! returns the DS handled by this builder
0099   Standard_EXPORT occ::handle<TopOpeBRepDS_HDataStructure> DataStructure() const;
0100 
0101   //! Removes all splits and merges already performed.
0102   //! Does NOT clear the handled DS.
0103   Standard_EXPORT virtual void Clear();
0104 
0105   //! Merges the two edges <S1> and <S2> keeping the
0106   //! parts in each edge of states <TB1> and <TB2>.
0107   //! Booleans onA, onB, onAB indicate whether parts of edges
0108   //! found as state ON respectively on first, second, and both
0109   //! shapes must be (or not) built.
0110   Standard_EXPORT void MergeEdges(const NCollection_List<TopoDS_Shape>& L1,
0111                                   const TopAbs_State                    TB1,
0112                                   const NCollection_List<TopoDS_Shape>& L2,
0113                                   const TopAbs_State                    TB2,
0114                                   const bool                            onA  = false,
0115                                   const bool                            onB  = false,
0116                                   const bool                            onAB = false);
0117 
0118   //! Merges the two faces <S1> and <S2> keeping the
0119   //! parts in each face of states <TB1> and <TB2>.
0120   Standard_EXPORT void MergeFaces(const NCollection_List<TopoDS_Shape>& S1,
0121                                   const TopAbs_State                    TB1,
0122                                   const NCollection_List<TopoDS_Shape>& S2,
0123                                   const TopAbs_State                    TB2,
0124                                   const bool                            onA  = false,
0125                                   const bool                            onB  = false,
0126                                   const bool                            onAB = false);
0127 
0128   //! Merges the two solids <S1> and <S2> keeping the
0129   //! parts in each solid of states <TB1> and <TB2>.
0130   Standard_EXPORT void MergeSolids(const TopoDS_Shape& S1,
0131                                    const TopAbs_State  TB1,
0132                                    const TopoDS_Shape& S2,
0133                                    const TopAbs_State  TB2);
0134 
0135   //! Merges the two shapes <S1> and <S2> keeping the
0136   //! parts of states <TB1>,<TB2> in <S1>,<S2>.
0137   Standard_EXPORT void MergeShapes(const TopoDS_Shape& S1,
0138                                    const TopAbs_State  TB1,
0139                                    const TopoDS_Shape& S2,
0140                                    const TopAbs_State  TB2);
0141 
0142   Standard_EXPORT void End();
0143 
0144   Standard_EXPORT bool Classify() const;
0145 
0146   Standard_EXPORT void ChangeClassify(const bool B);
0147 
0148   //! Merges the solid <S> keeping the
0149   //! parts of state <TB>.
0150   Standard_EXPORT void MergeSolid(const TopoDS_Shape& S, const TopAbs_State TB);
0151 
0152   //! Returns the vertex created on point <I>.
0153   Standard_EXPORT const TopoDS_Shape& NewVertex(const int I) const;
0154 
0155   //! Returns the edges created on curve <I>.
0156   Standard_EXPORT const NCollection_List<TopoDS_Shape>& NewEdges(const int I) const;
0157 
0158   //! Returns the faces created on surface <I>.
0159   Standard_EXPORT const NCollection_List<TopoDS_Shape>& NewFaces(const int I) const;
0160 
0161   //! Returns True if the shape <S> has been split.
0162   Standard_EXPORT bool IsSplit(const TopoDS_Shape& S, const TopAbs_State TB) const;
0163 
0164   //! Returns the split parts <TB> of shape <S>.
0165   Standard_EXPORT const NCollection_List<TopoDS_Shape>& Splits(const TopoDS_Shape& S,
0166                                                                const TopAbs_State  TB) const;
0167 
0168   //! Returns True if the shape <S> has been merged.
0169   Standard_EXPORT bool IsMerged(const TopoDS_Shape& S, const TopAbs_State TB) const;
0170 
0171   //! Returns the merged parts <TB> of shape <S>.
0172   Standard_EXPORT const NCollection_List<TopoDS_Shape>& Merged(const TopoDS_Shape& S,
0173                                                                const TopAbs_State  TB) const;
0174 
0175   Standard_EXPORT void InitSection();
0176 
0177   //! create parts ON solid of section edges
0178   Standard_EXPORT void SplitSectionEdges();
0179 
0180   //! create parts ON solid of section edges
0181   Standard_EXPORT virtual void SplitSectionEdge(const TopoDS_Shape& E);
0182 
0183   //! return the section edges built on new curves.
0184   Standard_EXPORT void SectionCurves(NCollection_List<TopoDS_Shape>& L);
0185 
0186   //! return the parts of edges found ON the boundary
0187   //! of the two arguments S1,S2 of Perform()
0188   Standard_EXPORT void SectionEdges(NCollection_List<TopoDS_Shape>& L);
0189 
0190   //! Fills anAncMap with pairs (edge,ancestor edge) for each
0191   //! split from the map aMapON for the shape object identified
0192   //! by ShapeRank
0193   Standard_EXPORT void FillSecEdgeAncestorMap(
0194     const int                                                                 aShapeRank,
0195     const NCollection_Map<TopoDS_Shape, TopTools_ShapeMapHasher>&             aMapON,
0196     NCollection_DataMap<TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher>& anAncMap) const;
0197 
0198   //! return all section edges.
0199   Standard_EXPORT void Section(NCollection_List<TopoDS_Shape>& L);
0200 
0201   Standard_EXPORT const NCollection_List<TopoDS_Shape>& Section();
0202 
0203   //! update the DS by creating new geometries.
0204   //! create vertices on DS points.
0205   Standard_EXPORT void BuildVertices(const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0206 
0207   //! update the DS by creating new geometries.
0208   //! create shapes from the new geometries.
0209   Standard_EXPORT void BuildEdges(const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0210 
0211   Standard_EXPORT const NCollection_DataMap<TopoDS_Shape,
0212                                             TopOpeBRepDS_ListOfShapeOn1State,
0213                                             TopTools_ShapeMapHasher>&
0214                         MSplit(const TopAbs_State s) const;
0215 
0216   Standard_EXPORT NCollection_DataMap<TopoDS_Shape,
0217                                       TopOpeBRepDS_ListOfShapeOn1State,
0218                                       TopTools_ShapeMapHasher>&
0219                   ChangeMSplit(const TopAbs_State s);
0220 
0221   Standard_EXPORT void MakeEdges(const TopoDS_Shape&             E,
0222                                  TopOpeBRepBuild_EdgeBuilder&    B,
0223                                  NCollection_List<TopoDS_Shape>& L);
0224 
0225   Standard_EXPORT void MakeFaces(const TopoDS_Shape&             F,
0226                                  TopOpeBRepBuild_FaceBuilder&    B,
0227                                  NCollection_List<TopoDS_Shape>& L);
0228 
0229   Standard_EXPORT void MakeSolids(TopOpeBRepBuild_SolidBuilder&   B,
0230                                   NCollection_List<TopoDS_Shape>& L);
0231 
0232   Standard_EXPORT void MakeShells(TopOpeBRepBuild_SolidBuilder&   B,
0233                                   NCollection_List<TopoDS_Shape>& L);
0234 
0235   //! Returns a ref.on the list of shapes connected to <S> as
0236   //! <TB> split parts of <S>.
0237   //! Mark <S> as split in <TB> parts.
0238   Standard_EXPORT NCollection_List<TopoDS_Shape>& ChangeSplit(const TopoDS_Shape& S,
0239                                                               const TopAbs_State  TB);
0240 
0241   Standard_EXPORT bool Opec12() const;
0242 
0243   Standard_EXPORT bool Opec21() const;
0244 
0245   Standard_EXPORT bool Opecom() const;
0246 
0247   Standard_EXPORT bool Opefus() const;
0248 
0249   Standard_EXPORT TopAbs_State ShapePosition(const TopoDS_Shape&                   S,
0250                                              const NCollection_List<TopoDS_Shape>& LS);
0251 
0252   Standard_EXPORT bool KeepShape(const TopoDS_Shape&                   S,
0253                                  const NCollection_List<TopoDS_Shape>& LS,
0254                                  const TopAbs_State                    T);
0255 
0256   Standard_EXPORT static TopAbs_ShapeEnum TopType(const TopoDS_Shape& S);
0257 
0258   Standard_EXPORT static bool Reverse(const TopAbs_State T1, const TopAbs_State T2);
0259 
0260   Standard_EXPORT static TopAbs_Orientation Orient(const TopAbs_Orientation O, const bool R);
0261 
0262   Standard_EXPORT void FindSameDomain(NCollection_List<TopoDS_Shape>& L1,
0263                                       NCollection_List<TopoDS_Shape>& L2) const;
0264 
0265   Standard_EXPORT void FindSameDomainSameOrientation(NCollection_List<TopoDS_Shape>& LSO,
0266                                                      NCollection_List<TopoDS_Shape>& LDO) const;
0267 
0268   Standard_EXPORT void MapShapes(const TopoDS_Shape& S1, const TopoDS_Shape& S2);
0269 
0270   Standard_EXPORT void ClearMaps();
0271 
0272   Standard_EXPORT void FindSameRank(const NCollection_List<TopoDS_Shape>& L1,
0273                                     const int                             R,
0274                                     NCollection_List<TopoDS_Shape>&       L2) const;
0275 
0276   Standard_EXPORT int ShapeRank(const TopoDS_Shape& S) const;
0277 
0278   Standard_EXPORT bool IsShapeOf(const TopoDS_Shape& S, const int I12) const;
0279 
0280   Standard_EXPORT static bool Contains(const TopoDS_Shape&                   S,
0281                                        const NCollection_List<TopoDS_Shape>& L);
0282 
0283   Standard_EXPORT int FindIsKPart();
0284 
0285   Standard_EXPORT int IsKPart() const;
0286 
0287   Standard_EXPORT virtual void MergeKPart();
0288 
0289   Standard_EXPORT virtual void MergeKPart(const TopAbs_State TB1, const TopAbs_State TB2);
0290 
0291   Standard_EXPORT void MergeKPartiskole();
0292 
0293   Standard_EXPORT void MergeKPartiskoletge();
0294 
0295   Standard_EXPORT void MergeKPartisdisj();
0296 
0297   Standard_EXPORT void MergeKPartisfafa();
0298 
0299   Standard_EXPORT void MergeKPartissoso();
0300 
0301   Standard_EXPORT int KPiskole();
0302 
0303   Standard_EXPORT int KPiskoletge();
0304 
0305   Standard_EXPORT int KPisdisj();
0306 
0307   Standard_EXPORT int KPisfafa();
0308 
0309   Standard_EXPORT int KPissoso();
0310 
0311   Standard_EXPORT void KPClearMaps();
0312 
0313   Standard_EXPORT int KPlhg(const TopoDS_Shape&             S,
0314                             const TopAbs_ShapeEnum          T,
0315                             NCollection_List<TopoDS_Shape>& L) const;
0316 
0317   Standard_EXPORT int KPlhg(const TopoDS_Shape& S, const TopAbs_ShapeEnum T) const;
0318 
0319   Standard_EXPORT int KPlhsd(const TopoDS_Shape&             S,
0320                              const TopAbs_ShapeEnum          T,
0321                              NCollection_List<TopoDS_Shape>& L) const;
0322 
0323   Standard_EXPORT int KPlhsd(const TopoDS_Shape& S, const TopAbs_ShapeEnum T) const;
0324 
0325   Standard_EXPORT TopAbs_State KPclasSS(const TopoDS_Shape&                   S1,
0326                                         const NCollection_List<TopoDS_Shape>& exceptLS1,
0327                                         const TopoDS_Shape&                   S2);
0328 
0329   Standard_EXPORT TopAbs_State KPclasSS(const TopoDS_Shape& S1,
0330                                         const TopoDS_Shape& exceptS1,
0331                                         const TopoDS_Shape& S2);
0332 
0333   Standard_EXPORT TopAbs_State KPclasSS(const TopoDS_Shape& S1, const TopoDS_Shape& S2);
0334 
0335   Standard_EXPORT bool KPiskolesh(const TopoDS_Shape&             S,
0336                                   NCollection_List<TopoDS_Shape>& LS,
0337                                   NCollection_List<TopoDS_Shape>& LF) const;
0338 
0339   Standard_EXPORT bool KPiskoletgesh(const TopoDS_Shape&             S,
0340                                      NCollection_List<TopoDS_Shape>& LS,
0341                                      NCollection_List<TopoDS_Shape>& LF) const;
0342 
0343   Standard_EXPORT void KPSameDomain(NCollection_List<TopoDS_Shape>& L1,
0344                                     NCollection_List<TopoDS_Shape>& L2) const;
0345 
0346   Standard_EXPORT int KPisdisjsh(const TopoDS_Shape& S) const;
0347 
0348   Standard_EXPORT int KPisfafash(const TopoDS_Shape& S) const;
0349 
0350   Standard_EXPORT int KPissososh(const TopoDS_Shape& S) const;
0351 
0352   Standard_EXPORT void KPiskoleanalyse(const TopAbs_State FT1,
0353                                        const TopAbs_State FT2,
0354                                        const TopAbs_State ST1,
0355                                        const TopAbs_State ST2,
0356                                        int&               I,
0357                                        int&               I1,
0358                                        int&               I2) const;
0359 
0360   Standard_EXPORT void KPiskoletgeanalyse(const TopOpeBRepDS_Config Conf,
0361                                           const TopAbs_State        ST1,
0362                                           const TopAbs_State        ST2,
0363                                           int&                      I) const;
0364 
0365   Standard_EXPORT void KPisdisjanalyse(const TopAbs_State ST1,
0366                                        const TopAbs_State ST2,
0367                                        int&               I,
0368                                        int&               IC1,
0369                                        int&               IC2) const;
0370 
0371   Standard_EXPORT static int KPls(const TopoDS_Shape&             S,
0372                                   const TopAbs_ShapeEnum          T,
0373                                   NCollection_List<TopoDS_Shape>& L);
0374 
0375   Standard_EXPORT static int KPls(const TopoDS_Shape& S, const TopAbs_ShapeEnum T);
0376 
0377   Standard_EXPORT TopAbs_State KPclassF(const TopoDS_Shape& F1, const TopoDS_Shape& F2);
0378 
0379   Standard_EXPORT void KPclassFF(const TopoDS_Shape& F1,
0380                                  const TopoDS_Shape& F2,
0381                                  TopAbs_State&       T1,
0382                                  TopAbs_State&       T2);
0383 
0384   Standard_EXPORT bool KPiskoleFF(const TopoDS_Shape& F1,
0385                                   const TopoDS_Shape& F2,
0386                                   TopAbs_State&       T1,
0387                                   TopAbs_State&       T2);
0388 
0389   Standard_EXPORT static bool KPContains(const TopoDS_Shape&                   S,
0390                                          const NCollection_List<TopoDS_Shape>& L);
0391 
0392   Standard_EXPORT TopoDS_Shape KPmakeface(const TopoDS_Shape&                   F1,
0393                                           const NCollection_List<TopoDS_Shape>& LF2,
0394                                           const TopAbs_State                    T1,
0395                                           const TopAbs_State                    T2,
0396                                           const bool                            R1,
0397                                           const bool                            R2);
0398 
0399   Standard_EXPORT static int KPreturn(const int KP);
0400 
0401   Standard_EXPORT void SplitEvisoONperiodicF();
0402 
0403   Standard_EXPORT void GMergeSolids(const NCollection_List<TopoDS_Shape>& LSO1,
0404                                     const NCollection_List<TopoDS_Shape>& LSO2,
0405                                     const TopOpeBRepBuild_GTopo&          G);
0406 
0407   Standard_EXPORT void GFillSolidsSFS(const NCollection_List<TopoDS_Shape>& LSO1,
0408                                       const NCollection_List<TopoDS_Shape>& LSO2,
0409                                       const TopOpeBRepBuild_GTopo&          G,
0410                                       TopOpeBRepBuild_ShellFaceSet&         SFS);
0411 
0412   Standard_EXPORT virtual void GFillSolidSFS(const TopoDS_Shape&                   SO1,
0413                                              const NCollection_List<TopoDS_Shape>& LSO2,
0414                                              const TopOpeBRepBuild_GTopo&          G,
0415                                              TopOpeBRepBuild_ShellFaceSet&         SFS);
0416 
0417   Standard_EXPORT void GFillSurfaceTopologySFS(const TopoDS_Shape&           SO1,
0418                                                const TopOpeBRepBuild_GTopo&  G,
0419                                                TopOpeBRepBuild_ShellFaceSet& SFS);
0420 
0421   Standard_EXPORT void GFillSurfaceTopologySFS(const TopOpeBRepDS_SurfaceIterator& IT,
0422                                                const TopOpeBRepBuild_GTopo&        G,
0423                                                TopOpeBRepBuild_ShellFaceSet&       SFS) const;
0424 
0425   Standard_EXPORT virtual void GFillShellSFS(const TopoDS_Shape&                   SH1,
0426                                              const NCollection_List<TopoDS_Shape>& LSO2,
0427                                              const TopOpeBRepBuild_GTopo&          G,
0428                                              TopOpeBRepBuild_ShellFaceSet&         SFS);
0429 
0430   Standard_EXPORT void GFillFaceSFS(const TopoDS_Shape&                   F1,
0431                                     const NCollection_List<TopoDS_Shape>& LSO2,
0432                                     const TopOpeBRepBuild_GTopo&          G,
0433                                     TopOpeBRepBuild_ShellFaceSet&         SFS);
0434 
0435   Standard_EXPORT void GSplitFaceSFS(const TopoDS_Shape&                   F1,
0436                                      const NCollection_List<TopoDS_Shape>& LSclass,
0437                                      const TopOpeBRepBuild_GTopo&          G,
0438                                      TopOpeBRepBuild_ShellFaceSet&         SFS);
0439 
0440   Standard_EXPORT void GMergeFaceSFS(const TopoDS_Shape&           F,
0441                                      const TopOpeBRepBuild_GTopo&  G,
0442                                      TopOpeBRepBuild_ShellFaceSet& SFS);
0443 
0444   Standard_EXPORT void GSplitFace(const TopoDS_Shape&                   F,
0445                                   const TopOpeBRepBuild_GTopo&          G,
0446                                   const NCollection_List<TopoDS_Shape>& LSclass);
0447 
0448   Standard_EXPORT void AddONPatchesSFS(const TopOpeBRepBuild_GTopo&  G,
0449                                        TopOpeBRepBuild_ShellFaceSet& SFS);
0450 
0451   Standard_EXPORT void FillOnPatches(const NCollection_List<TopoDS_Shape>&       anEdgesON,
0452                                      const TopoDS_Shape&                         aBaseFace,
0453                                      const NCollection_IndexedMap<TopoDS_Shape>& avoidMap);
0454 
0455   Standard_EXPORT void FindFacesTouchingEdge(const TopoDS_Shape&             aFace,
0456                                              const TopoDS_Shape&             anEdge,
0457                                              const int                       aShRank,
0458                                              NCollection_List<TopoDS_Shape>& aFaces) const;
0459 
0460   Standard_EXPORT void GMergeFaces(const NCollection_List<TopoDS_Shape>& LF1,
0461                                    const NCollection_List<TopoDS_Shape>& LF2,
0462                                    const TopOpeBRepBuild_GTopo&          G);
0463 
0464   Standard_EXPORT void GFillFacesWES(const NCollection_List<TopoDS_Shape>& LF1,
0465                                      const NCollection_List<TopoDS_Shape>& LF2,
0466                                      const TopOpeBRepBuild_GTopo&          G,
0467                                      TopOpeBRepBuild_WireEdgeSet&          WES);
0468 
0469   Standard_EXPORT void GFillFacesWESK(const NCollection_List<TopoDS_Shape>& LF1,
0470                                       const NCollection_List<TopoDS_Shape>& LF2,
0471                                       const TopOpeBRepBuild_GTopo&          G,
0472                                       TopOpeBRepBuild_WireEdgeSet&          WES,
0473                                       const int                             K);
0474 
0475   Standard_EXPORT void GFillFacesWESMakeFaces(const NCollection_List<TopoDS_Shape>& LF1,
0476                                               const NCollection_List<TopoDS_Shape>& LF2,
0477                                               const NCollection_List<TopoDS_Shape>& LSO,
0478                                               const TopOpeBRepBuild_GTopo&          G);
0479 
0480   Standard_EXPORT void GFillFaceWES(const TopoDS_Shape&                   F,
0481                                     const NCollection_List<TopoDS_Shape>& LF2,
0482                                     const TopOpeBRepBuild_GTopo&          G,
0483                                     TopOpeBRepBuild_WireEdgeSet&          WES);
0484 
0485   Standard_EXPORT void GFillCurveTopologyWES(const TopoDS_Shape&          F,
0486                                              const TopOpeBRepBuild_GTopo& G,
0487                                              TopOpeBRepBuild_WireEdgeSet& WES);
0488 
0489   Standard_EXPORT void GFillCurveTopologyWES(const TopOpeBRepDS_CurveIterator& IT,
0490                                              const TopOpeBRepBuild_GTopo&      G,
0491                                              TopOpeBRepBuild_WireEdgeSet&      WES) const;
0492 
0493   Standard_EXPORT void GFillONPartsWES(const TopoDS_Shape&                   F,
0494                                        const TopOpeBRepBuild_GTopo&          G,
0495                                        const NCollection_List<TopoDS_Shape>& LSclass,
0496                                        TopOpeBRepBuild_WireEdgeSet&          WES);
0497 
0498   Standard_EXPORT void GFillWireWES(const TopoDS_Shape&                   W,
0499                                     const NCollection_List<TopoDS_Shape>& LF2,
0500                                     const TopOpeBRepBuild_GTopo&          G,
0501                                     TopOpeBRepBuild_WireEdgeSet&          WES);
0502 
0503   Standard_EXPORT void GFillEdgeWES(const TopoDS_Shape&                   E,
0504                                     const NCollection_List<TopoDS_Shape>& LF2,
0505                                     const TopOpeBRepBuild_GTopo&          G,
0506                                     TopOpeBRepBuild_WireEdgeSet&          WES);
0507 
0508   Standard_EXPORT void GSplitEdgeWES(const TopoDS_Shape&                   E,
0509                                      const NCollection_List<TopoDS_Shape>& LF2,
0510                                      const TopOpeBRepBuild_GTopo&          G,
0511                                      TopOpeBRepBuild_WireEdgeSet&          WES);
0512 
0513   Standard_EXPORT void GMergeEdgeWES(const TopoDS_Shape&          E,
0514                                      const TopOpeBRepBuild_GTopo& G,
0515                                      TopOpeBRepBuild_WireEdgeSet& WES);
0516 
0517   Standard_EXPORT void GSplitEdge(const TopoDS_Shape&                   E,
0518                                   const TopOpeBRepBuild_GTopo&          G,
0519                                   const NCollection_List<TopoDS_Shape>& LSclass);
0520 
0521   Standard_EXPORT void GMergeEdges(const NCollection_List<TopoDS_Shape>& LE1,
0522                                    const NCollection_List<TopoDS_Shape>& LE2,
0523                                    const TopOpeBRepBuild_GTopo&          G);
0524 
0525   Standard_EXPORT void GFillEdgesPVS(const NCollection_List<TopoDS_Shape>& LE1,
0526                                      const NCollection_List<TopoDS_Shape>& LE2,
0527                                      const TopOpeBRepBuild_GTopo&          G,
0528                                      TopOpeBRepBuild_PaveSet&              PVS);
0529 
0530   Standard_EXPORT void GFillEdgePVS(const TopoDS_Shape&                   E,
0531                                     const NCollection_List<TopoDS_Shape>& LE2,
0532                                     const TopOpeBRepBuild_GTopo&          G,
0533                                     TopOpeBRepBuild_PaveSet&              PVS);
0534 
0535   Standard_EXPORT void GFillPointTopologyPVS(const TopoDS_Shape&          E,
0536                                              const TopOpeBRepBuild_GTopo& G,
0537                                              TopOpeBRepBuild_PaveSet&     PVS);
0538 
0539   Standard_EXPORT void GFillPointTopologyPVS(const TopoDS_Shape&               E,
0540                                              const TopOpeBRepDS_PointIterator& IT,
0541                                              const TopOpeBRepBuild_GTopo&      G,
0542                                              TopOpeBRepBuild_PaveSet&          PVS) const;
0543 
0544   Standard_EXPORT bool GParamOnReference(const TopoDS_Vertex& V,
0545                                          const TopoDS_Edge&   E,
0546                                          double&              P) const;
0547 
0548   Standard_EXPORT bool GKeepShape(const TopoDS_Shape&                   S,
0549                                   const NCollection_List<TopoDS_Shape>& Lref,
0550                                   const TopAbs_State                    T);
0551 
0552   //! return True if S is classified <T> / Lref shapes
0553   Standard_EXPORT bool GKeepShape1(const TopoDS_Shape&                   S,
0554                                    const NCollection_List<TopoDS_Shape>& Lref,
0555                                    const TopAbs_State                    T,
0556                                    TopAbs_State&                         pos);
0557 
0558   //! add to Lou the shapes of Lin classified <T> / Lref shapes.
0559   //! Lou is not cleared. (S is a dummy trace argument)
0560   Standard_EXPORT void GKeepShapes(const TopoDS_Shape&                   S,
0561                                    const NCollection_List<TopoDS_Shape>& Lref,
0562                                    const TopAbs_State                    T,
0563                                    const NCollection_List<TopoDS_Shape>& Lin,
0564                                    NCollection_List<TopoDS_Shape>&       Lou);
0565 
0566   Standard_EXPORT void GSFSMakeSolids(const TopoDS_Shape&             SOF,
0567                                       TopOpeBRepBuild_ShellFaceSet&   SFS,
0568                                       NCollection_List<TopoDS_Shape>& LOSO);
0569 
0570   Standard_EXPORT void GSOBUMakeSolids(const TopoDS_Shape&             SOF,
0571                                        TopOpeBRepBuild_SolidBuilder&   SOBU,
0572                                        NCollection_List<TopoDS_Shape>& LOSO);
0573 
0574   Standard_EXPORT virtual void GWESMakeFaces(const TopoDS_Shape&             FF,
0575                                              TopOpeBRepBuild_WireEdgeSet&    WES,
0576                                              NCollection_List<TopoDS_Shape>& LOF);
0577 
0578   Standard_EXPORT void GFABUMakeFaces(
0579     const TopoDS_Shape&                                              FF,
0580     TopOpeBRepBuild_FaceBuilder&                                     FABU,
0581     NCollection_List<TopoDS_Shape>&                                  LOF,
0582     NCollection_DataMap<TopoDS_Shape, int, TopTools_ShapeMapHasher>& MWisOld);
0583 
0584   Standard_EXPORT void RegularizeFaces(const TopoDS_Shape&                   FF,
0585                                        const NCollection_List<TopoDS_Shape>& lnewFace,
0586                                        NCollection_List<TopoDS_Shape>&       LOF);
0587 
0588   Standard_EXPORT void RegularizeFace(const TopoDS_Shape&             FF,
0589                                       const TopoDS_Shape&             newFace,
0590                                       NCollection_List<TopoDS_Shape>& LOF);
0591 
0592   Standard_EXPORT void RegularizeSolids(const TopoDS_Shape&                   SS,
0593                                         const NCollection_List<TopoDS_Shape>& lnewSolid,
0594                                         NCollection_List<TopoDS_Shape>&       LOS);
0595 
0596   Standard_EXPORT void RegularizeSolid(const TopoDS_Shape&             SS,
0597                                        const TopoDS_Shape&             newSolid,
0598                                        NCollection_List<TopoDS_Shape>& LOS);
0599 
0600   Standard_EXPORT void GPVSMakeEdges(const TopoDS_Shape&             EF,
0601                                      TopOpeBRepBuild_PaveSet&        PVS,
0602                                      NCollection_List<TopoDS_Shape>& LOE) const;
0603 
0604   Standard_EXPORT void GEDBUMakeEdges(const TopoDS_Shape&             EF,
0605                                       TopOpeBRepBuild_EdgeBuilder&    EDBU,
0606                                       NCollection_List<TopoDS_Shape>& LOE) const;
0607 
0608   Standard_EXPORT bool GToSplit(const TopoDS_Shape& S, const TopAbs_State TB) const;
0609 
0610   Standard_EXPORT bool GToMerge(const TopoDS_Shape& S) const;
0611 
0612   Standard_EXPORT static bool GTakeCommonOfSame(const TopOpeBRepBuild_GTopo& G);
0613 
0614   Standard_EXPORT static bool GTakeCommonOfDiff(const TopOpeBRepBuild_GTopo& G);
0615 
0616   Standard_EXPORT void GFindSamDom(const TopoDS_Shape&             S,
0617                                    NCollection_List<TopoDS_Shape>& L1,
0618                                    NCollection_List<TopoDS_Shape>& L2) const;
0619 
0620   Standard_EXPORT void GFindSamDom(NCollection_List<TopoDS_Shape>& L1,
0621                                    NCollection_List<TopoDS_Shape>& L2) const;
0622 
0623   Standard_EXPORT void GFindSamDomSODO(const TopoDS_Shape&             S,
0624                                        NCollection_List<TopoDS_Shape>& LSO,
0625                                        NCollection_List<TopoDS_Shape>& LDO) const;
0626 
0627   Standard_EXPORT void GFindSamDomSODO(NCollection_List<TopoDS_Shape>& LSO,
0628                                        NCollection_List<TopoDS_Shape>& LDO) const;
0629 
0630   Standard_EXPORT void GMapShapes(const TopoDS_Shape& S1, const TopoDS_Shape& S2);
0631 
0632   Standard_EXPORT void GClearMaps();
0633 
0634   Standard_EXPORT void GFindSameRank(const NCollection_List<TopoDS_Shape>& L1,
0635                                      const int                             R,
0636                                      NCollection_List<TopoDS_Shape>&       L2) const;
0637 
0638   Standard_EXPORT int GShapeRank(const TopoDS_Shape& S) const;
0639 
0640   Standard_EXPORT bool GIsShapeOf(const TopoDS_Shape& S, const int I12) const;
0641 
0642   Standard_EXPORT static bool GContains(const TopoDS_Shape&                   S,
0643                                         const NCollection_List<TopoDS_Shape>& L);
0644 
0645   Standard_EXPORT static void GCopyList(const NCollection_List<TopoDS_Shape>& Lin,
0646                                         const int                             i1,
0647                                         const int                             i2,
0648                                         NCollection_List<TopoDS_Shape>&       Lou);
0649 
0650   Standard_EXPORT static void GCopyList(const NCollection_List<TopoDS_Shape>& Lin,
0651                                         NCollection_List<TopoDS_Shape>&       Lou);
0652 
0653   Standard_EXPORT void GdumpLS(const NCollection_List<TopoDS_Shape>& L) const;
0654 
0655   Standard_EXPORT static void GdumpPNT(const gp_Pnt& P);
0656 
0657   Standard_EXPORT static void GdumpORIPARPNT(const TopAbs_Orientation o,
0658                                              const double             p,
0659                                              const gp_Pnt&            Pnt);
0660 
0661   Standard_EXPORT void GdumpSHA(const TopoDS_Shape& S, void* const str = nullptr) const;
0662 
0663   Standard_EXPORT void GdumpSHAORI(const TopoDS_Shape& S, void* const str = nullptr) const;
0664 
0665   Standard_EXPORT void GdumpSHAORIGEO(const TopoDS_Shape& S, void* const str = nullptr) const;
0666 
0667   Standard_EXPORT void GdumpSHASTA(const int                      iS,
0668                                    const TopAbs_State             T,
0669                                    const TCollection_AsciiString& a = "",
0670                                    const TCollection_AsciiString& b = "") const;
0671 
0672   Standard_EXPORT void GdumpSHASTA(const TopoDS_Shape&            S,
0673                                    const TopAbs_State             T,
0674                                    const TCollection_AsciiString& a = "",
0675                                    const TCollection_AsciiString& b = "") const;
0676 
0677   Standard_EXPORT void GdumpSHASTA(const int                       iS,
0678                                    const TopAbs_State              T,
0679                                    const TopOpeBRepBuild_ShapeSet& SS,
0680                                    const TCollection_AsciiString&  a = "",
0681                                    const TCollection_AsciiString&  b = "",
0682                                    const TCollection_AsciiString&  c = "\n") const;
0683 
0684   Standard_EXPORT void GdumpEDG(const TopoDS_Shape& S, void* const str = nullptr) const;
0685 
0686   Standard_EXPORT void GdumpEDGVER(const TopoDS_Shape& E,
0687                                    const TopoDS_Shape& V,
0688                                    void* const         str = nullptr) const;
0689 
0690   Standard_EXPORT void GdumpSAMDOM(const NCollection_List<TopoDS_Shape>& L,
0691                                    void* const                           str = nullptr) const;
0692 
0693   Standard_EXPORT void GdumpEXP(const TopOpeBRepTool_ShapeExplorer& E) const;
0694 
0695   Standard_EXPORT void GdumpSOBU(TopOpeBRepBuild_SolidBuilder& SB) const;
0696 
0697   Standard_EXPORT void GdumpFABU(TopOpeBRepBuild_FaceBuilder& FB) const;
0698 
0699   Standard_EXPORT void GdumpEDBU(TopOpeBRepBuild_EdgeBuilder& EB) const;
0700 
0701   Standard_EXPORT bool GtraceSPS(const int iS) const;
0702 
0703   Standard_EXPORT bool GtraceSPS(const int iS, const int jS) const;
0704 
0705   Standard_EXPORT bool GtraceSPS(const TopoDS_Shape& S) const;
0706 
0707   Standard_EXPORT bool GtraceSPS(const TopoDS_Shape& S, int& IS) const;
0708 
0709   Standard_EXPORT void GdumpSHASETreset();
0710 
0711   Standard_EXPORT int GdumpSHASETindex();
0712 
0713   Standard_EXPORT static void PrintGeo(const TopoDS_Shape& S);
0714 
0715   Standard_EXPORT static void PrintSur(const TopoDS_Face& F);
0716 
0717   Standard_EXPORT static void PrintCur(const TopoDS_Edge& E);
0718 
0719   Standard_EXPORT static void PrintPnt(const TopoDS_Vertex& V);
0720 
0721   Standard_EXPORT static void PrintOri(const TopoDS_Shape& S);
0722 
0723   Standard_EXPORT static TCollection_AsciiString StringState(const TopAbs_State S);
0724 
0725   Standard_EXPORT static bool GcheckNBOUNDS(const TopoDS_Shape& E);
0726 
0727   friend class TopOpeBRepBuild_HBuilder;
0728 
0729 protected:
0730   //! update the DS by creating new geometries.
0731   //! create edges on the new curve <Icurv>.
0732   Standard_EXPORT void BuildEdges(const int iC, const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0733 
0734   //! update the DS by creating new geometries.
0735   //! create faces on the new surface <ISurf>.
0736   Standard_EXPORT void BuildFaces(const int iS, const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0737 
0738   //! update the DS by creating new geometries.
0739   //! create shapes from the new geometries.
0740   Standard_EXPORT void BuildFaces(const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0741 
0742   //! Split <E1> keeping the parts of state <TB1>.
0743   Standard_EXPORT void SplitEdge(const TopoDS_Shape& E1,
0744                                  const TopAbs_State  TB1,
0745                                  const TopAbs_State  TB2);
0746 
0747   //! Split <E1> keeping the parts of state <TB1>.
0748   Standard_EXPORT void SplitEdge1(const TopoDS_Shape& E1,
0749                                   const TopAbs_State  TB1,
0750                                   const TopAbs_State  TB2);
0751 
0752   //! Split <E1> keeping the parts of state <TB1>.
0753   Standard_EXPORT void SplitEdge2(const TopoDS_Shape& E1,
0754                                   const TopAbs_State  TB1,
0755                                   const TopAbs_State  TB2);
0756 
0757   //! Split <F1> keeping the parts of state <TB1>.
0758   //! Merge faces with same domain, keeping parts of
0759   //! state <TB2>.
0760   Standard_EXPORT void SplitFace(const TopoDS_Shape& F1,
0761                                  const TopAbs_State  TB1,
0762                                  const TopAbs_State  TB2);
0763 
0764   Standard_EXPORT void SplitFace1(const TopoDS_Shape& F1,
0765                                   const TopAbs_State  TB1,
0766                                   const TopAbs_State  TB2);
0767 
0768   Standard_EXPORT void SplitFace2(const TopoDS_Shape& F1,
0769                                   const TopAbs_State  TB1,
0770                                   const TopAbs_State  TB2);
0771 
0772   //! Split <S1> keeping the parts of state <TB1>.
0773   Standard_EXPORT void SplitSolid(const TopoDS_Shape& S1,
0774                                   const TopAbs_State  TB1,
0775                                   const TopAbs_State  TB2);
0776 
0777   //! Explore shapes of given by explorer <Ex> to split them.
0778   //! Store new shapes in the set <SS>.
0779   //! According to RevOri, reverse or not their orientation.
0780   Standard_EXPORT void SplitShapes(TopOpeBRepTool_ShapeExplorer& Ex,
0781                                    const TopAbs_State            TB1,
0782                                    const TopAbs_State            TB2,
0783                                    TopOpeBRepBuild_ShapeSet&     SS,
0784                                    const bool                    RevOri);
0785 
0786   //! Split edges of <F1> and store wires and edges in
0787   //! the set <WES>. According to RevOri, reverse (or not) orientation.
0788   Standard_EXPORT void FillFace(const TopoDS_Shape&                   F1,
0789                                 const TopAbs_State                    TB1,
0790                                 const NCollection_List<TopoDS_Shape>& LF2,
0791                                 const TopAbs_State                    TB2,
0792                                 TopOpeBRepBuild_WireEdgeSet&          WES,
0793                                 const bool                            RevOri);
0794 
0795   //! Split faces of <S1> and store shells and faces in
0796   //! the set <SS>. According to RevOri, reverse (or not) orientation.
0797   Standard_EXPORT void FillSolid(const TopoDS_Shape&                   S1,
0798                                  const TopAbs_State                    TB1,
0799                                  const NCollection_List<TopoDS_Shape>& LS2,
0800                                  const TopAbs_State                    TB2,
0801                                  TopOpeBRepBuild_ShapeSet&             SS,
0802                                  const bool                            RevOri);
0803 
0804   //! Split subshapes of <S1> and store subshapes in
0805   //! the set <SS>. According to RevOri, reverse (or not) orientation.
0806   Standard_EXPORT void FillShape(const TopoDS_Shape&                   S1,
0807                                  const TopAbs_State                    TB1,
0808                                  const NCollection_List<TopoDS_Shape>& LS2,
0809                                  const TopAbs_State                    TB2,
0810                                  TopOpeBRepBuild_ShapeSet&             SS,
0811                                  const bool                            RevOri);
0812 
0813   //! fills the vertex set PVS with the point iterator IT.
0814   //! IT accesses a list of interferences which geometry is a point or a vertex.
0815   //! TB indicates the orientation to give to the geometries
0816   //! found in interference list accessed by IT.
0817   Standard_EXPORT void FillVertexSet(TopOpeBRepDS_PointIterator& IT,
0818                                      const TopAbs_State          TB,
0819                                      TopOpeBRepBuild_PaveSet&    PVS) const;
0820 
0821   //! fills vertex set PVS with the current value of IT.
0822   //! I geometry is a point or a vertex.
0823   //! TB indicates the orientation to give to geometries found I
0824   Standard_EXPORT void FillVertexSetOnValue(const TopOpeBRepDS_PointIterator& IT,
0825                                             const TopAbs_State                TB,
0826                                             TopOpeBRepBuild_PaveSet&          PVS) const;
0827 
0828   //! Returns True if the shape <S> has not already been split
0829   Standard_EXPORT bool ToSplit(const TopoDS_Shape& S, const TopAbs_State TB) const;
0830 
0831   //! add the shape <S> to the map of split shapes.
0832   //! mark <S> as split/not split on <state>, according to B value.
0833   Standard_EXPORT void MarkSplit(const TopoDS_Shape& S, const TopAbs_State TB, const bool B = true);
0834 
0835   //! Returns a ref. on the list of shapes connected to <S> as
0836   //! <TB> merged parts of <S>.
0837   Standard_EXPORT NCollection_List<TopoDS_Shape>& ChangeMerged(const TopoDS_Shape& S,
0838                                                                const TopAbs_State  TB);
0839 
0840   //! Returns a ref. on the vertex created on point <I>.
0841   Standard_EXPORT TopoDS_Shape& ChangeNewVertex(const int I);
0842 
0843   //! Returns a ref. on the list of edges created on curve <I>.
0844   Standard_EXPORT NCollection_List<TopoDS_Shape>& ChangeNewEdges(const int I);
0845 
0846   //! Returns a ref. on the list of faces created on surface <I>.
0847   Standard_EXPORT NCollection_List<TopoDS_Shape>& ChangeNewFaces(const int I);
0848 
0849   Standard_EXPORT void AddIntersectionEdges(TopoDS_Shape&             F,
0850                                             const TopAbs_State        TB,
0851                                             const bool                RevOri,
0852                                             TopOpeBRepBuild_ShapeSet& ES) const;
0853 
0854   Standard_EXPORT void UpdateSplitAndMerged(
0855     const NCollection_DataMap<int, NCollection_List<TopoDS_Shape>>&                 mle,
0856     const NCollection_DataMap<int, TopoDS_Shape>&                                   mre,
0857     const NCollection_DataMap<TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher>& mlf,
0858     const TopAbs_State                                                              state);
0859 
0860   TopAbs_State                                                     myState1;
0861   TopAbs_State                                                     myState2;
0862   TopoDS_Shape                                                     myShape1;
0863   TopoDS_Shape                                                     myShape2;
0864   occ::handle<TopOpeBRepDS_HDataStructure>                         myDataStructure;
0865   TopOpeBRepDS_BuildTool                                           myBuildTool;
0866   occ::handle<NCollection_HArray1<TopoDS_Shape>>                   myNewVertices;
0867   NCollection_DataMap<int, NCollection_List<TopoDS_Shape>>         myNewEdges;
0868   occ::handle<NCollection_HArray1<NCollection_List<TopoDS_Shape>>> myNewFaces;
0869   NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0870     mySplitIN;
0871   NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0872     mySplitON;
0873   NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0874     mySplitOUT;
0875   NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0876     myMergedIN;
0877   NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0878     myMergedON;
0879   NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0880                                  myMergedOUT;
0881   NCollection_List<TopoDS_Shape> myEmptyShapeList;
0882   NCollection_List<TopoDS_Shape> myListOfSolid;
0883   NCollection_List<TopoDS_Shape> myListOfFace;
0884   NCollection_List<TopoDS_Shape> myListOfEdge;
0885   NCollection_DataMap<TopoDS_Shape, NCollection_List<TopoDS_Shape>, TopTools_ShapeMapHasher>
0886     myFSplits;
0887   NCollection_DataMap<TopoDS_Shape, NCollection_List<TopoDS_Shape>, TopTools_ShapeMapHasher>
0888                                                                 myESplits;
0889   bool                                                          mySectionDone;
0890   bool                                                          mySplitSectionEdgesDone;
0891   NCollection_List<TopoDS_Shape>                                mySection;
0892   TopoDS_Solid                                                  mySolidReference;
0893   TopoDS_Solid                                                  mySolidToFill;
0894   NCollection_List<TopoDS_Shape>                                myFaceAvoid;
0895   TopoDS_Face                                                   myFaceReference;
0896   TopoDS_Face                                                   myFaceToFill;
0897   NCollection_List<TopoDS_Shape>                                myEdgeAvoid;
0898   TopoDS_Edge                                                   myEdgeReference;
0899   TopoDS_Edge                                                   myEdgeToFill;
0900   NCollection_List<TopoDS_Shape>                                myVertexAvoid;
0901   NCollection_IndexedMap<TopoDS_Shape, TopTools_ShapeMapHasher> myMAP1;
0902   NCollection_IndexedMap<TopoDS_Shape, TopTools_ShapeMapHasher> myMAP2;
0903   int                                                           myIsKPart;
0904   NCollection_DataMap<TopoDS_Shape, NCollection_List<TopoDS_Shape>, TopTools_ShapeMapHasher>
0905                                                                                   myKPMAPf1f2;
0906   int                                                                             mySHASETindex;
0907   bool                                                                            myClassifyDef;
0908   bool                                                                            myClassifyVal;
0909   TopOpeBRepTool_ShapeClassifier                                                  myShapeClassifier;
0910   NCollection_Map<TopoDS_Shape, TopTools_ShapeMapHasher>                          myMemoSplit;
0911   TCollection_AsciiString                                                         myEmptyAS;
0912   bool                                                                            myProcessON;
0913   NCollection_IndexedDataMap<TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher> myONFacesMap;
0914   NCollection_IndexedMap<TopoDS_Shape>                                            myONElemMap;
0915 };
0916 
0917 #endif // _TopOpeBRepBuild_Builder_HeaderFile