mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-16 10:08:36 +03:00
This branch contains fixes for 26675 and 26431 bugs. 1. Normalization has been eliminated. 2. Interfaces of AppDef_Compute::Parametrization(...) and BRepAlgo_BooleanOperations::SetApproxParameters() methods have been changed. 3. Overloaded methods for ApproxInt_Approx::SetParameters(...), TopOpeBRepTool_GeomTool::GetTolerances(...) and TopOpeBRepTool_GeomTool::SetTolerances(...) have been removed (because some fields of these classes are not used more). 4. Comments for some methods have been changed in BRepApprox_TheMultiLineOfApprox.hxx and GeomInt_TheMultiLineOfWLApprox.hxx files. 5. Some fields have been deleted from ApproxInt_MultiLine class. Kept members have become constant. 6. Interface of ksection DRAW-command has been changed. 7. Now, 2dintersect DRAW-command prints information about found segments. 8. Some code fragments have been rewritten to make them easier. 9. Algorithm of splitting WLine, which goes through pole of sphere has been improved. 10. Improve approximation algorithm in order to it will compute correct 2D- and 3D-tangent at the end of bezier constraints (including case when curve goes through or finishes on singular points). 11. Interface of IntPatch_WLine::Dump(...) method has been corrected. 12. Some methods for working with Walking-line are made more universal (available for both GeomInt and IntTools packages). 13. Problem in BRepLib::SameParameter(...) method has been fixed (see corresponding comment). 14. Small correction in Draft package. 15. Any outputs in IntPatch_Intersection::Dump(...) method have become disabled because they are useless. If anybody need in this outputs he/she will correct this method himself/herself. Adjusting some test cases according to their new behavior. Creation of new test cases. ---------------------------------------------------------------------------------------------------------------------------- Some explanation of new behavior of some test cases: 1. Regressions: a) blend simple X4 The problem is described in the issue #0026740. According to this description, the result on the current MASTER seems to be wrong indeed. b) boolean bcommon_complex C7 and boolean bcut_complex Q1 These test case use same shapes with different Boolean operation (COMMON and CUT). They are already BAD (on the MASTER). Now, some sub-shapes have become not-shared, simply. In my opinion, we shall apply new behavior of these tests. c) boolean bsection M3 The problem described in the issue #0026777 exists even on the current MASTER. d) boolean bsection M9 The problem is described in the message http://tracker.dev.opencascade.org/view.php?id=26815#c47546. Here, we have really regression in the picture. e) boolean bsection N2 The problem is described in issue #0026814. f) boolean volumemaker G1 The problem is described in issue #26020. g) bugs modalg_1 bug1255 (and bug1255_1) The problem is described in issue #26815. h) bugs modalg_2 bug5805_18, bugs modalg_2 bug5805_42, bugs modalg_2 bug5805_46 The problem is described in issue #25925. i) bugs modalg_3 bug602 The problem is describes in issue #602. j) bugs modalg_5 bug24915 The problem is described in the message http://tracker.dev.opencascade.org/view.php?id=25929#c48565. It is not fixed by this issue. k) bugs modalg_5 bug25838 The main reason is described in issue #0026816. ---------------------------------------------------------------------------- 2. Improvements: a) boolean volumemaker F9 b) bugs modalg_1 bug10160_3 c) bugs modalg_2 bug22557 d) bugs modalg_5 bug25319_1 (_2) e) draft angle G2 f) offset shape A1 g) offset with_intersect_80 N7
141 lines
4.3 KiB
C++
141 lines
4.3 KiB
C++
// Created on: 1993-10-14
|
|
// Created by: Prestataire Mary FABIEN
|
|
// Copyright (c) 1993-1999 Matra Datavision
|
|
// Copyright (c) 1999-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 _BRepAlgo_BooleanOperations_HeaderFile
|
|
#define _BRepAlgo_BooleanOperations_HeaderFile
|
|
|
|
#include <Standard.hxx>
|
|
#include <Standard_DefineAlloc.hxx>
|
|
#include <Standard_Handle.hxx>
|
|
|
|
#include <BRepAlgo_DSAccess.hxx>
|
|
#include <TopoDS_Shape.hxx>
|
|
#include <TopTools_MapOfShape.hxx>
|
|
#include <Standard_Integer.hxx>
|
|
#include <Standard_Real.hxx>
|
|
#include <Standard_Boolean.hxx>
|
|
#include <TopAbs_State.hxx>
|
|
#include <TopTools_ListOfShape.hxx>
|
|
class TopoDS_Shape;
|
|
class TopOpeBRepDS_HDataStructure;
|
|
class TopOpeBRepBuild_HBuilder;
|
|
class BRepAlgo_DSAccess;
|
|
|
|
|
|
|
|
class BRepAlgo_BooleanOperations
|
|
{
|
|
public:
|
|
|
|
DEFINE_STANDARD_ALLOC
|
|
|
|
|
|
Standard_EXPORT BRepAlgo_BooleanOperations();
|
|
|
|
//! S1 is a Shell with ALL faces supported by the SAME S2 is
|
|
//! an Edge INCLUDED in that surface with pcurve.
|
|
//! this avoids a time-consuming 3D operation, compared to Shapes.
|
|
Standard_EXPORT void Shapes2d (const TopoDS_Shape& S1, const TopoDS_Shape& S2);
|
|
|
|
//! Defines the arguments.
|
|
Standard_EXPORT void Shapes (const TopoDS_Shape& S1, const TopoDS_Shape& S2);
|
|
|
|
//! Sets different parameters for the curve approximations :
|
|
//! NbPntMax : Maximum number of points to be approximated at
|
|
//! the same time in one curve.
|
|
//! Tol3D, Tol2D : Tolerances to be reached by the approximation.
|
|
//! RelativeTol : The given tolerances are relative.
|
|
Standard_EXPORT void SetApproxParameters (const Standard_Integer NbPntMax, const Standard_Real Tol3D, const Standard_Real Tol2D);
|
|
|
|
Standard_EXPORT void Define (const TopoDS_Shape& S1, const TopoDS_Shape& S2, Handle(TopOpeBRepDS_HDataStructure)& HDS);
|
|
|
|
//! returns the common part of the shapes.
|
|
Standard_EXPORT const TopoDS_Shape& Common();
|
|
|
|
//! returns the fuse part of the shapes.
|
|
Standard_EXPORT const TopoDS_Shape& Fus();
|
|
|
|
//! returns the cut part of the shapes.
|
|
Standard_EXPORT const TopoDS_Shape& Cut();
|
|
|
|
//! returns the intersection of the shapes.
|
|
Standard_EXPORT const TopoDS_Shape& Section();
|
|
|
|
//! returns the result of the boolean operation.
|
|
Standard_EXPORT const TopoDS_Shape& Shape();
|
|
|
|
//! Returns the shape(s) resulting of the boolean operation
|
|
//! issued from the shape <S>.
|
|
Standard_EXPORT const TopoDS_Shape& ShapeFrom (const TopoDS_Shape& S);
|
|
|
|
//! Returns the list of the descendant shapes of the shape <S>.
|
|
Standard_EXPORT const TopTools_ListOfShape& Modified (const TopoDS_Shape& S);
|
|
|
|
//! Returns the fact that the shape <S> has been deleted or not
|
|
//! by the boolean operation.
|
|
Standard_EXPORT Standard_Boolean IsDeleted (const TopoDS_Shape& S);
|
|
|
|
Standard_EXPORT const Handle(TopOpeBRepDS_HDataStructure)& DataStructure() const;
|
|
|
|
Standard_EXPORT Handle(TopOpeBRepDS_HDataStructure)& ChangeDataStructure();
|
|
|
|
Standard_EXPORT const Handle(TopOpeBRepBuild_HBuilder)& Builder() const;
|
|
|
|
Standard_EXPORT Handle(TopOpeBRepBuild_HBuilder)& ChangeBuilder();
|
|
|
|
//! returns the member myDSA. It is useful to then access
|
|
//! the method GetSectionEdgeSet (wich is a member of DSAccess)
|
|
Standard_EXPORT BRepAlgo_DSAccess& DataStructureAccess();
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
//! Performs the global boolean operation.
|
|
Standard_EXPORT void Perform();
|
|
|
|
//! Performs the global boolean operation and build the
|
|
//! result in regards of the given states.
|
|
Standard_EXPORT void Perform (const TopAbs_State State1, const TopAbs_State State2);
|
|
|
|
|
|
BRepAlgo_DSAccess myDSA;
|
|
TopoDS_Shape myS1;
|
|
TopoDS_Shape myS2;
|
|
TopoDS_Shape myShape;
|
|
TopTools_MapOfShape myMapShape;
|
|
TopoDS_Shape myResult;
|
|
Standard_Integer myApproxNbPntMax;
|
|
Standard_Real myApproxTol3D;
|
|
Standard_Real myApproxTol2D;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // _BRepAlgo_BooleanOperations_HeaderFile
|