Back to index

salome-geom  6.5.0
Public Member Functions | Protected Member Functions | Protected Attributes
GEOMAlgo_BuilderSolid Class Reference

The algorithm to build solids from set of faces
More...

#include <GEOMAlgo_BuilderSolid.hxx>

Inheritance diagram for GEOMAlgo_BuilderSolid:
Inheritance graph
[legend]
Collaboration diagram for GEOMAlgo_BuilderSolid:
Collaboration graph
[legend]

List of all members.

Public Member Functions

Standard_EXPORT GEOMAlgo_BuilderSolid ()
 Empty constructor

virtual Standard_EXPORT ~GEOMAlgo_BuilderSolid ()
virtual Standard_EXPORT void Perform ()
 Performs the algorithm

Standard_EXPORT void SetContext (const Handle(IntTools_Context)&theContext)
 Sets cashed geometrical tools

Standard_EXPORT const
Handle_IntTools_Context & 
Context () const
 Returns cashed geometrical tools

Standard_EXPORT void SetShapes (const TopTools_ListOfShape &theLS)
 Sets edges/faces to process

Standard_EXPORT const
TopTools_ListOfShape & 
Shapes () const
 Returns edges/faces to process

Standard_EXPORT const
TopTools_ListOfShape & 
Loops () const
 Returns wires/shells that have been built

Standard_EXPORT const
TopTools_ListOfShape & 
Areas () const
 Returns faces/solids that have been built

Standard_EXPORT Standard_Integer ErrorStatus () const
Standard_EXPORT Standard_Integer WarningStatus () const
Standard_EXPORT void ComputeInternalShapes (const Standard_Boolean theFlag)
 Allows to omit of creation of internal shapes (manifold topology).
Needed for the SALOME/TRIPOLI module.

Protected Member Functions

virtual Standard_EXPORT void PerformShapesToAvoid ()
 Collect the faces that
a) are internal
b) are the same and have different orientation

virtual Standard_EXPORT void PerformLoops ()
 Build draft shells
a)myLoops - draft shells that consist of
boundary faces
b)myLoopsInternal - draft shells that contains
inner faces

virtual Standard_EXPORT void PerformAreas ()
 Build draft solids that contains boundary faces

virtual Standard_EXPORT void PerformInternalShapes ()
 Build finalized solids with internal shells

virtual Standard_EXPORT void CheckData ()
virtual Standard_EXPORT void CheckResult ()

Protected Attributes

TopTools_ListOfShape myShapes
TopTools_ListOfShape myLoops
TopTools_ListOfShape myLoopsInternal
TopTools_MapOfOrientedShape myShapesToAvoid
TopTools_ListOfShape myAreas
Handle_IntTools_Context myContext
Standard_Integer myErrorStatus
Standard_Integer myWarningStatus
Standard_Boolean myComputeInternalShapes

Detailed Description

The algorithm to build solids from set of faces

Definition at line 39 of file GEOMAlgo_BuilderSolid.hxx.


Constructor & Destructor Documentation

Empty constructor

Definition at line 109 of file GEOMAlgo_BuilderSolid.cxx.

Definition at line 118 of file GEOMAlgo_BuilderSolid.cxx.

{
}

Member Function Documentation

const TopTools_ListOfShape & GEOMAlgo_BuilderArea::Areas ( ) const [inherited]

Returns faces/solids that have been built

Definition at line 110 of file GEOMAlgo_BuilderArea.cxx.

{
  return myAreas;
}

Here is the caller graph for this function:

void GEOMAlgo_Algo::CheckData ( ) [protected, virtual, inherited]
void GEOMAlgo_Algo::CheckResult ( ) [protected, virtual, inherited]

Reimplemented in GEOMAlgo_Gluer.

Definition at line 59 of file GEOMAlgo_Algo.cxx.

void GEOMAlgo_Algo::ComputeInternalShapes ( const Standard_Boolean  theFlag) [inherited]

Allows to omit of creation of internal shapes (manifold topology).
Needed for the SALOME/TRIPOLI module.

Definition at line 87 of file GEOMAlgo_Algo.cxx.

{
  myComputeInternalShapes = theFlag;
}

Here is the caller graph for this function:

Standard_EXPORT const Handle_IntTools_Context& GEOMAlgo_BuilderArea::Context ( ) const [inherited]

Returns cashed geometrical tools

Standard_Integer GEOMAlgo_Algo::ErrorStatus ( ) const [inherited]

Definition at line 67 of file GEOMAlgo_Algo.cxx.

{
  return myErrorStatus;
}

Here is the caller graph for this function:

const TopTools_ListOfShape & GEOMAlgo_BuilderArea::Loops ( ) const [inherited]

Returns wires/shells that have been built

Definition at line 102 of file GEOMAlgo_BuilderArea.cxx.

{
  return myLoops;
}
void GEOMAlgo_BuilderSolid::Perform ( ) [virtual]

Performs the algorithm

Reimplemented from GEOMAlgo_BuilderArea.

Definition at line 125 of file GEOMAlgo_BuilderSolid.cxx.

{
  myErrorStatus=0;
  //
  // Initialize the context
  GEOMAlgo_BuilderArea::Perform();
  //
  TopoDS_Compound aC;
  BRep_Builder aBB;
  TopTools_ListIteratorOfListOfShape aIt;

  aBB.MakeCompound(aC);
  aIt.Initialize(myShapes);
  for(; aIt.More(); aIt.Next()) {
    const TopoDS_Shape& aF=aIt.Value();
    aBB.Add(aC, aF);
  }
  //
  PerformShapesToAvoid();
  if (myErrorStatus) {
    return;
  }
  //
  PerformLoops();
  if (myErrorStatus) {
    return;
  }
  PerformAreas();
  if (myErrorStatus) {
    return;
  }
  if (myComputeInternalShapes) {
    PerformInternalShapes();
    if (myErrorStatus) {
      return;
    }
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void GEOMAlgo_BuilderSolid::PerformAreas ( ) [protected, virtual]

Build draft solids that contains boundary faces

Reimplemented from GEOMAlgo_BuilderArea.

Definition at line 486 of file GEOMAlgo_BuilderSolid.cxx.

{
  myErrorStatus=0;
  //
  Standard_Boolean bIsGrowthShell, bIsHole;
  TopTools_ListOfShape aNewSolids, aHoleShells;
  TopoDS_Shape anInfinitePointShape;
  TopTools_DataMapOfShapeShape aInOutMap;
  TopTools_DataMapOfShapeListOfShape aMSH;
  TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItMSH;
  TopTools_ListIteratorOfListOfShape aShellIt, aSolidIt;
  TopTools_IndexedMapOfShape aMHF;
  BRep_Builder aBB;
  //
  myAreas.Clear();
  //
  //  Draft solids [aNewSolids]
  aShellIt.Initialize(myLoops);
  for ( ; aShellIt.More(); aShellIt.Next()) {
    const TopoDS_Shape& aShell = aShellIt.Value();
    //
    bIsGrowthShell=IsGrowthShell(aShell, aMHF);
    if (bIsGrowthShell) {
      // make a growth solid from a shell
      TopoDS_Solid Solid;
      aBB.MakeSolid(Solid);
      aBB.Add (Solid, aShell);
      //
      aNewSolids.Append (Solid);
    }
    else{
      // check if a shell is a hole
      bIsHole=IsHole(aShell, myContext);
      //
      if (bIsHole) {
        aHoleShells.Append(aShell);
        TopExp::MapShapes(aShell, TopAbs_FACE, aMHF);
      }
      else {
        // make a growth solid from a shell
        TopoDS_Solid Solid;
        aBB.MakeSolid(Solid);
        aBB.Add (Solid, aShell);
        //
        aNewSolids.Append (Solid);
      }
    }
  }
  //
  // 2. Find outer growth shell that is most close to each hole shell
  aShellIt.Initialize(aHoleShells);
  for (; aShellIt.More(); aShellIt.Next()) {
    const TopoDS_Shape& aHole = aShellIt.Value();
    //
    aSolidIt.Initialize(aNewSolids);
    for ( ; aSolidIt.More(); aSolidIt.Next())    {
      const TopoDS_Shape& aSolid = aSolidIt.Value();
      //
      if (!IsInside(aHole, aSolid, myContext)){
        continue;
      }
      //
      if ( aInOutMap.IsBound (aHole)){
        const TopoDS_Shape& aSolid2 = aInOutMap(aHole);
        if (IsInside(aSolid, aSolid2, myContext)) {
          aInOutMap.UnBind(aHole);
          aInOutMap.Bind (aHole, aSolid);
        }
      }
      else{
        aInOutMap.Bind (aHole, aSolid);
      }
    }
    //
    // Add aHole to a map Solid/ListOfHoles [aMSH]
    if (aInOutMap.IsBound(aHole)){
      const TopoDS_Shape& aSolid=aInOutMap(aHole);
      if (aMSH.IsBound(aSolid)) {
        TopTools_ListOfShape& aLH=aMSH.ChangeFind(aSolid);
        aLH.Append(aHole);
      }
      else {
        TopTools_ListOfShape aLH;
        aLH.Append(aHole);
        aMSH.Bind(aSolid, aLH);
      }
      //aBB.Add (aSolid, aHole);
    }
  }// for (; aShellIt.More(); aShellIt.Next()) {
  //
  // 3. Add aHoles to Solids
  aItMSH.Initialize(aMSH);
  for (; aItMSH.More(); aItMSH.Next()) {
    TopoDS_Solid aSolid=*((TopoDS_Solid*)(&aItMSH.Key()));
    //
    const TopTools_ListOfShape& aLH=aItMSH.Value();
    aShellIt.Initialize(aLH);
    for (; aShellIt.More(); aShellIt.Next()) {
      const TopoDS_Shape& aHole = aShellIt.Value();
      aBB.Add (aSolid, aHole);
    }
    //
    // update classifier
    BRepClass3d_SolidClassifier& aSC=myContext->SolidClassifier(aSolid);
    aSC.Load(aSolid);
    //
  }
  //
  // These aNewSolids are draft solids that
  // do not contain any internal shapes
  //
  myAreas.Append(aNewSolids);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void GEOMAlgo_BuilderSolid::PerformInternalShapes ( ) [protected, virtual]

Build finalized solids with internal shells

Reimplemented from GEOMAlgo_BuilderArea.

Definition at line 603 of file GEOMAlgo_BuilderSolid.cxx.

{
  myErrorStatus=0;
  //
  Standard_Integer aNbFI=myLoopsInternal.Extent();
  if (!aNbFI) {// nothing to do
    return;
  }
  //
  Standard_Integer bFlag;
  BRep_Builder aBB;
  TopTools_ListIteratorOfListOfShape aShellIt, aSolidIt;
  TopoDS_Iterator aIt;
  TopTools_MapOfShape aMF, aMFP, aMFS;
  TopTools_MapIteratorOfMapOfShape aItMF;
  TopTools_IndexedDataMapOfShapeListOfShape aMEF;
  TopTools_ListOfShape aLSI;
  //
  // 1. All internal faces
  aShellIt.Initialize(myLoopsInternal);
  for (; aShellIt.More(); aShellIt.Next()) {
    const TopoDS_Shape& aShell=aShellIt.Value();
    aIt.Initialize(aShell);
    for (; aIt.More(); aIt.Next()) {
      const TopoDS_Shape& aF=aIt.Value();
      aMF.Add(aF);
    }
  }
  aNbFI=aMF.Extent();
  //
  // 2 Process solids
  aSolidIt.Initialize(myAreas);
  for ( ; aSolidIt.More(); aSolidIt.Next()) {
    TopoDS_Solid& aSolid=*((TopoDS_Solid*)(&aSolidIt.Value()));
    //
    //modified by NIZNHY-PKV Wed Mar 07 08:52:18 2012f
    aMFS.Clear();
    {
      TopExp_Explorer aExp(aSolid, TopAbs_FACE);
      while (aExp.More()) {
       aMFS.Add(aExp.Current());
       aExp.Next();
      }
    }
    //modified by NIZNHY-PKV Wed Mar 07 08:52:20 2012t
    aMEF.Clear();
    TopExp::MapShapesAndAncestors(aSolid, TopAbs_EDGE, TopAbs_FACE, aMEF);
    //
    // 2.1 Separate faces to process aMFP
    aMFP.Clear();
    aItMF.Initialize(aMF);
    for (; aItMF.More(); aItMF.Next()) {
      const TopoDS_Face& aF=*((TopoDS_Face*)(&aItMF.Key()));
      //modified by NIZNHY-PKV Wed Mar 07 08:54:56 2012f
      if (!aMFS.Contains(aF)) {
       bFlag=GEOMAlgo_Tools3D::IsInternalFace(aF, aSolid, aMEF, 1.e-14, myContext);
       if (bFlag) {
         aMFP.Add(aF);
       }
      }
      //if (GEOMAlgo_Tools3D::IsInternalFace(aF, aSolid, aMEF, 1.e-14, myContext)) {
      //  aMFP.Add(aF);
      //}
      //modified by NIZNHY-PKV Wed Mar 07 08:56:07 2012t
    }
    //
    // 2.2 Make Internal Shells
    aLSI.Clear();
    MakeInternalShells(aMFP, aLSI);
    //
    // 2.3 Add them to aSolid
    aShellIt.Initialize(aLSI);
    for (; aShellIt.More(); aShellIt.Next()) {
      const TopoDS_Shape& aSI=aShellIt.Value();
      aBB.Add (aSolid, aSI);
    }
    //
    // 2.4 Remove faces aMFP from aMF
    aItMF.Initialize(aMFP);
    for (; aItMF.More(); aItMF.Next()) {
      const TopoDS_Shape& aF=aItMF.Key();
      aMF.Remove(aF);
    }
    //
    aNbFI=aMF.Extent();
    if (!aNbFI) {
      break;
    }
  } //for ( ; aSolidIt.More(); aSolidIt.Next()) {
}

Here is the call graph for this function:

Here is the caller graph for this function:

void GEOMAlgo_BuilderSolid::PerformLoops ( ) [protected, virtual]

Build draft shells
a)myLoops - draft shells that consist of
boundary faces
b)myLoopsInternal - draft shells that contains
inner faces

Reimplemented from GEOMAlgo_BuilderArea.

Definition at line 261 of file GEOMAlgo_BuilderSolid.cxx.

{
  myErrorStatus=0;
  //
  myLoops.Clear();
  //
  Standard_Integer aNbLF, aNbOff, aNbFP;
  TopAbs_Orientation anOr;
  TopoDS_Edge aEL;
  BRep_Builder aBB;
  NMTTools_CoupleOfShape aCSOff;
  TopTools_MapOfOrientedShape AddedFacesMap;
  TopTools_IndexedDataMapOfShapeListOfShape aEFMap, aMEFP;
  TopTools_ListIteratorOfListOfShape aItF, aIt;
  TopTools_MapIteratorOfMapOfOrientedShape aItM;
  TopoDS_Iterator aItS;
  //
  //=================================================
  //
  // 1. Shells Usual
  //
  aItF.Initialize (myShapes);
  for (; aItF.More(); aItF.Next()) {
    const TopoDS_Shape& aFF = aItF.Value();
    TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aEFMap);
  }
  //
  aItF.Initialize (myShapes);
  for (; aItF.More(); aItF.Next()) {
    const TopoDS_Shape& aFF = aItF.Value();
    if (myShapesToAvoid.Contains(aFF)) {
      continue;
    }
    if (!AddedFacesMap.Add(aFF)) {
      continue;
    }
    //
    // make a new shell
    TopoDS_Shell aShell;
    aBB.MakeShell(aShell);
    aBB.Add(aShell, aFF);
    //
    aMEFP.Clear();
    TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aMEFP);
    //
    // loop on faces added to Shell; add their neighbor faces to Shell and so on
    TopoDS_Iterator aItAddedF (aShell);
    for (; aItAddedF.More(); aItAddedF.Next()) {
      const TopoDS_Face& aF = *((TopoDS_Face*)(&aItAddedF.Value()));
      //
      // loop on edges of aF; find a good neighbor face of aF by aE
      TopExp_Explorer aEdgeExp(aF, TopAbs_EDGE);
      for (; aEdgeExp.More(); aEdgeExp.Next()) {
        const TopoDS_Edge& aE=*((TopoDS_Edge*)(&aEdgeExp.Current()));
        //
        //1
        if (aMEFP.Contains(aE)) {
          const TopTools_ListOfShape& aLFP=aMEFP.FindFromKey(aE);
          aNbFP=aLFP.Extent();
          if (aNbFP>1) {
            continue;
          }
        }
        //2
        anOr=aE.Orientation();
        if (anOr==TopAbs_INTERNAL) {
          continue;
        }
        //3
        if (BRep_Tool::Degenerated(aE)) {
          continue;
        }
        //
        // candidate faces list
        const TopTools_ListOfShape& aLF=aEFMap.FindFromKey(aE);
        aNbLF=aLF.Extent();
        if (!aNbLF) {
          continue;
        }
        //
        // try to select one of neighbors
        // check if a face already added to Shell shares E
        Standard_Boolean bFound;
        TopTools_ListIteratorOfListOfShape aItLF;
        NMTTools_ListOfCoupleOfShape aLCSOff;
        //
        aItLF.Initialize(aLF);
        for (; aItLF.More(); aItLF.Next()) {
          const TopoDS_Face& aFL=*((TopoDS_Face*)(&aItLF.Value()));
          if (myShapesToAvoid.Contains(aFL)) {
            continue;
          }
          if (aF.IsSame(aFL)) {
            continue;
          }
          if (AddedFacesMap.Contains(aFL)){
            continue;
          }
          //
          bFound=GEOMAlgo_Tools3D::GetEdgeOff(aE, aFL, aEL);
          if (!bFound) {
            continue;
          }
          //
          aCSOff.SetShape1(aEL);
          aCSOff.SetShape2(aFL);
          aLCSOff.Append(aCSOff);
        }//for (; aItLF.More(); aItLF.Next()) {
        //
        aNbOff=aLCSOff.Extent();
        if (!aNbOff){
          continue;
        }
        //
        TopoDS_Face aSelF;
        if (aNbOff==1) {
          aSelF=*((TopoDS_Face*)(&aLCSOff.First().Shape2()));
        }
        else if (aNbOff>1){
          GEOMAlgo_Tools3D::GetFaceOff(aE, aF, aLCSOff, aSelF);
        }
        //
        if (!aSelF.IsNull() && AddedFacesMap.Add(aSelF)) {
          aBB.Add(aShell, aSelF);
          TopExp::MapShapesAndAncestors(aSelF, TopAbs_EDGE, TopAbs_FACE, aMEFP);
        }
      } // for (; aEdgeExp.More(); aEdgeExp.Next()) {
    } //for (; aItAddedF.More(); aItAddedF.Next()) {
    //
    if (IsClosedShell(aShell)) {
      myLoops.Append(aShell);
    }
    else {
      Standard_Boolean bRefine;
      TopoDS_Shell aShx;
      //
      bRefine=RefineShell(aShell, aShx);
      if (bRefine) {
       myLoops.Append(aShx);
      }
    }
  } // for (; aItF.More(); aItF.Next()) {
  //
  // Post Treatment
  TopTools_MapOfOrientedShape aMP;
  //
  // a. collect all edges that are in loops
  aIt.Initialize (myLoops);
  for (; aIt.More(); aIt.Next()) {
    const TopoDS_Shape& aS=aIt.Value();
    aItS.Initialize(aS);
    for (; aItS.More(); aItS.Next()) {
      const TopoDS_Shape& aF=aItS.Value();
      aMP.Add(aF);
    }
  }
  //
  // b. collect all faces that are to avoid
  aItM.Initialize(myShapesToAvoid);
  for (; aItM.More(); aItM.Next()) {
    const TopoDS_Shape& aF=aItM.Key();
    aMP.Add(aF);
  }
  //
  // c. add all faces that are not processed to myShapesToAvoid
  aIt.Initialize (myShapes);
  for (; aIt.More(); aIt.Next()) {
    const TopoDS_Shape& aF=aIt.Value();
    if (!aMP.Contains(aF)) {
      myShapesToAvoid.Add(aF);
    }
  }
  //=================================================
  //
  // 2.Internal Shells
  //
  myLoopsInternal.Clear();
  //
  aEFMap.Clear();
  AddedFacesMap.Clear();
  //
  if (myComputeInternalShapes) {
    aItM.Initialize(myShapesToAvoid);
    for (; aItM.More(); aItM.Next()) {
      const TopoDS_Shape& aFF=aItM.Key();
      TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aEFMap);
    }
    //
    aItM.Initialize(myShapesToAvoid);
    for (; aItM.More(); aItM.Next()) {
      const TopoDS_Shape& aFF=aItM.Key();
      if (!AddedFacesMap.Add(aFF)) {
        continue;
      }
      //
      // make a new shell
      TopoDS_Shell aShell;
      aBB.MakeShell(aShell);
      aBB.Add(aShell, aFF);
      //
      TopoDS_Iterator aItAddedF (aShell);
      for (; aItAddedF.More(); aItAddedF.Next()) {
        const TopoDS_Face& aF = *((TopoDS_Face*)(&aItAddedF.Value()));
        //
        TopExp_Explorer aEdgeExp(aF, TopAbs_EDGE);
        for (; aEdgeExp.More(); aEdgeExp.Next()) {
          const TopoDS_Edge& aE = *((TopoDS_Edge*)(&aEdgeExp.Current()));
          const TopTools_ListOfShape& aLF=aEFMap.FindFromKey(aE);
          aItF.Initialize(aLF);
          for (; aItF.More(); aItF.Next()) {
            const TopoDS_Face& aFL=*((TopoDS_Face*)(&aItF.Value()));
            if (AddedFacesMap.Add(aFL)){
              aBB.Add(aShell, aFL);
            }
          }
        }
      }
      myLoopsInternal.Append(aShell);
    }
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void GEOMAlgo_BuilderSolid::PerformShapesToAvoid ( ) [protected, virtual]

Collect the faces that
a) are internal
b) are the same and have different orientation

Reimplemented from GEOMAlgo_BuilderArea.

Definition at line 167 of file GEOMAlgo_BuilderSolid.cxx.

{
  Standard_Boolean bFound;
  Standard_Integer i, iCnt, aNbE, aNbF;
  TopAbs_Orientation aOrE;
  TopTools_IndexedDataMapOfShapeListOfShape aMEF;
  TopTools_ListIteratorOfListOfShape aIt;
  //
  myShapesToAvoid.Clear();
  //
  iCnt=0;
  while (1) {
    ++iCnt;
    bFound=Standard_False;
    //
    // 1. MEF
    aMEF.Clear();
    aIt.Initialize (myShapes);
    for (; aIt.More(); aIt.Next()) {
      const TopoDS_Shape& aF=aIt.Value();
      if (!myShapesToAvoid.Contains(aF)) {
        TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aMEF);
      }
      /*
      else {
       int a=0;
      }
      */
    }
    aNbE=aMEF.Extent();
    //
    // 2. myFacesToAvoid
    for (i=1; i<=aNbE; ++i) {
      const TopoDS_Edge& aE=*((TopoDS_Edge*)(&aMEF.FindKey(i)));
      if (BRep_Tool::Degenerated(aE)) {
        continue;
      }
      //
      TopTools_ListOfShape& aLF=aMEF.ChangeFromKey(aE);
      //
      aNbF=aLF.Extent();
      if (!aNbF) {
        continue;
      }
      //
      aOrE=aE.Orientation();
      //
      const TopoDS_Face& aF1=*((TopoDS_Face*)(&aLF.First()));
      if (aNbF==1) {
        if (aOrE==TopAbs_INTERNAL) {
          continue;
        }
        bFound=Standard_True;
        myShapesToAvoid.Add(aF1);
      }
      else if (aNbF==2) {
        const TopoDS_Face& aF2=*((TopoDS_Face*)(&aLF.Last()));
        if (aF2.IsSame(aF1)) {
          if (BRep_Tool::IsClosed(aE, aF1)) {
            continue;
          }
          //
          if (aOrE==TopAbs_INTERNAL) {
            continue;
          }
          //
          bFound=Standard_True;
          myShapesToAvoid.Add(aF1);
          myShapesToAvoid.Add(aF2);
        }
      }
      /*//DEB
      else {
        TopTools_ListIteratorOfListOfShape aItLF;
        //
        aItLF.Initialize (aLF);
        for (; aItLF.More(); aItLF.Next()) {
          const TopoDS_Shape& aFx=aItLF.Value();
          int a=0;
        }
      }
      *///DEB
    }// for (i=1; i<=aNbE; ++i) {
    //
    if (!bFound) {
      break;
    }
    //
  }//while (1)
}

Here is the call graph for this function:

Here is the caller graph for this function:

void GEOMAlgo_BuilderArea::SetContext ( const Handle(IntTools_Context)&  theContext) [inherited]

Sets cashed geometrical tools

Definition at line 53 of file GEOMAlgo_BuilderArea.cxx.

{
  myContext=theContext;
}

Here is the caller graph for this function:

void GEOMAlgo_BuilderArea::SetShapes ( const TopTools_ListOfShape &  theLS) [inherited]

Sets edges/faces to process

Definition at line 79 of file GEOMAlgo_BuilderArea.cxx.

{
  TopTools_ListIteratorOfListOfShape aIt;
  //
  myShapes.Clear();
  aIt.Initialize(theLF);
  for(; aIt.More(); aIt.Next()) {
    const TopoDS_Shape& aF=aIt.Value();
    myShapes.Append(aF);
  }
}

Here is the caller graph for this function:

const TopTools_ListOfShape & GEOMAlgo_BuilderArea::Shapes ( ) const [inherited]

Returns edges/faces to process

Definition at line 94 of file GEOMAlgo_BuilderArea.cxx.

{
  return myShapes;
}
Standard_Integer GEOMAlgo_Algo::WarningStatus ( ) const [inherited]

Definition at line 75 of file GEOMAlgo_Algo.cxx.

{
  return myWarningStatus;
}

Here is the caller graph for this function:


Member Data Documentation

TopTools_ListOfShape GEOMAlgo_BuilderArea::myAreas [protected, inherited]

Definition at line 109 of file GEOMAlgo_BuilderArea.hxx.

Standard_Boolean GEOMAlgo_Algo::myComputeInternalShapes [protected, inherited]

Definition at line 73 of file GEOMAlgo_Algo.hxx.

Handle_IntTools_Context GEOMAlgo_BuilderArea::myContext [protected, inherited]

Definition at line 110 of file GEOMAlgo_BuilderArea.hxx.

Standard_Integer GEOMAlgo_Algo::myErrorStatus [protected, inherited]

Definition at line 71 of file GEOMAlgo_Algo.hxx.

TopTools_ListOfShape GEOMAlgo_BuilderArea::myLoops [protected, inherited]

Definition at line 106 of file GEOMAlgo_BuilderArea.hxx.

TopTools_ListOfShape GEOMAlgo_BuilderArea::myLoopsInternal [protected, inherited]

Definition at line 107 of file GEOMAlgo_BuilderArea.hxx.

TopTools_ListOfShape GEOMAlgo_BuilderArea::myShapes [protected, inherited]

Definition at line 105 of file GEOMAlgo_BuilderArea.hxx.

TopTools_MapOfOrientedShape GEOMAlgo_BuilderArea::myShapesToAvoid [protected, inherited]

Definition at line 108 of file GEOMAlgo_BuilderArea.hxx.

Standard_Integer GEOMAlgo_Algo::myWarningStatus [protected, inherited]

Definition at line 72 of file GEOMAlgo_Algo.hxx.


The documentation for this class was generated from the following files: