-// File: GEOMAlgo_SolidSolid.cxx
-// Created: Wed Jan 26 12:06:26 2005
-// Author: Peter KURNEV
-// <pkv@irinox>
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
-
-#include <GEOMAlgo_SolidSolid.ixx>
+// File: GEOMAlgo_SolidSolid.cxx
+// Created: Wed Jan 26 12:06:26 2005
+// Author: Peter KURNEV
+// <pkv@irinox>
+//
+#include <GEOMAlgo_SolidSolid.hxx>
#include <Standard_Failure.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 :
+//purpose :
//=======================================================================
GEOMAlgo_SolidSolid::GEOMAlgo_SolidSolid()
:
}
//=======================================================================
//function : ~
-//purpose :
+//purpose :
//=======================================================================
GEOMAlgo_SolidSolid::~GEOMAlgo_SolidSolid()
{
}
//=======================================================================
// function: SetShape2
-// purpose:
+// purpose:
//=======================================================================
void GEOMAlgo_SolidSolid::SetShape2(const TopoDS_Shape& aS2)
{
myS2=aS2;
-}
+}
//=======================================================================
// function: Shape2
-// purpose:
+// purpose:
//=======================================================================
const TopoDS_Shape& GEOMAlgo_SolidSolid::Shape2()const
{
return myS2;
-}
+}
//=======================================================================
// function: Perform
-// purpose:
+// purpose:
//=======================================================================
-void GEOMAlgo_SolidSolid::Perform()
+void GEOMAlgo_SolidSolid::Perform()
{
myErrorStatus=0;
try {
myErrorStatus=10;
return;
}
- if(!myDSFiller->IsDone()) {
+ if(myDSFiller->HasErrors()) {
myErrorStatus=11;
return;
}
//
- Standard_Boolean bIsNewFiller;
- //
- bIsNewFiller=myDSFiller->IsNewFiller();
- if (bIsNewFiller) {
- Prepare();
- myDSFiller->SetNewFiller(!bIsNewFiller);
- }
- //
myRank=2;
BuildResult();
}
}
//=================================================================================
// function: BuildResult
-// purpose:
+// purpose:
//=================================================================================
-void GEOMAlgo_SolidSolid::BuildResult()
+void GEOMAlgo_SolidSolid::BuildResult()
{
myErrorStatus=0;
//
GEOMAlgo_IndexedDataMapOfShapeState aMFS;
//
// 1. classify the faces
- GEOMAlgo_ShellSolid::BuildResult();
+ GEOMAlgo_ShellSolid::Perform();
//
// 2. fill Shape-State map
aIt.Initialize(myLSIN);
const TopoDS_Shape& aF=aIt.Value();
aMFS.Add(aF, TopAbs_ON);
}
+ //
myLSIN.Clear();
myLSON.Clear();
myLSOUT.Clear();
for(j=1; j<aNbF; ++j) {
const TopoDS_Shape& aF=aMF(j);
//
- if (!aMFS.Contains(aF)) {// the face is intesected
- ++aNbFINTR;
- break;
+ 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;
+ ++aNbFIN;
+ break;
+ case TopAbs_OUT:
+ ++aNbFOUT;
+ break;
+ case TopAbs_ON:
+ ++aNbFON;
+ break;
+ default:
+ break;
}
if (aNbFIN && aNbFOUT) {
- ++aNbFINTR;
- break;
+ ++aNbFINTR;
+ break;
}
}
//
if (!aNbFINTR) {
if (aNbFON==aNbF) {
- myLSON.Append(aSolid);
+ myLSON.Append(aSolid);
}
else if (aNbFIN) {
- myLSIN.Append(aSolid);
+ myLSIN.Append(aSolid);
}
else if (aNbFOUT) {
- myLSOUT.Append(aSolid);
+ myLSOUT.Append(aSolid);
}
}
}