1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-08 18:40:55 +03:00
occt/src/BOPAlgo/BOPAlgo_SectionAttribute.hxx
emv 03cca6f742 0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection algorithm
The usage of *BRepAlgo_Section* has been replaced with the usage of *BRepAlgoAPI_Section* in *BRepProj_Projection* algorithm.

The TODO statements have been removed from the failing test case in the "prj" grid as they are working correctly now.

The following changes have been made to improve the performance *BRepAlgoAPI_Section*:
1. Revision of the *IntPolyh_Intersection* class to avoid repeated calculation of the deflection of the same triangulation.
2. Small revision of the Edge/Face intersection algorithm to perform Extrema computation on the whole intersection range of the edge instead of discrete ranges.
3. Implementation of the extrema computation for the Circle and Sphere.
4. Correct computation of the parameter of the point on the Circle.
2018-02-01 18:46:36 +03:00

88 lines
2.2 KiB
C++

// Created on: 2002-03-04
// Created by: Michael KLOKOV
// Copyright (c) 2002-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _BOPAlgo_SectionAttribute_HeaderFile
#define _BOPAlgo_SectionAttribute_HeaderFile
#include <Standard_Boolean.hxx>
//! Class is a container of the flags used
//! by intersection algorithm
class BOPAlgo_SectionAttribute
{
public:
//! Default constructor
BOPAlgo_SectionAttribute()
: myApproximation(Standard_True),
myPCurve1(Standard_True),
myPCurve2(Standard_True) {}
//! Constructor
BOPAlgo_SectionAttribute(const Standard_Boolean theAproximation,
const Standard_Boolean thePCurveOnS1,
const Standard_Boolean thePCurveOnS2)
: myApproximation(theAproximation),
myPCurve1(thePCurveOnS1),
myPCurve2(thePCurveOnS2) {}
//! Sets the Approximation flag
void Approximation(const Standard_Boolean theApprox)
{
myApproximation = theApprox;
}
//! Sets the PCurveOnS1 flag
void PCurveOnS1(const Standard_Boolean thePCurveOnS1)
{
myPCurve1 = thePCurveOnS1;
}
//! Sets the PCurveOnS2 flag
void PCurveOnS2(const Standard_Boolean thePCurveOnS2)
{
myPCurve2 = thePCurveOnS2;
}
//! Returns the Approximation flag
Standard_Boolean Approximation() const
{
return myApproximation;
}
//! Returns the PCurveOnS1 flag
Standard_Boolean PCurveOnS1() const
{
return myPCurve1;
}
//! Returns the PCurveOnS2 flag
Standard_Boolean PCurveOnS2() const
{
return myPCurve2;
}
protected:
private:
Standard_Boolean myApproximation;
Standard_Boolean myPCurve1;
Standard_Boolean myPCurve2;
};
#endif // _BOPAlgo_SectionAttribute_HeaderFile