Files
OCCT/src/IntTools/IntTools_BeanFaceIntersector.cdl
emv 4e57c75ee1 0021762: Integration of new Boolean Operation algorithm to OCCT.
Modifications:
- BRepOffset/BRepOffset_Tool.cxx, Features and Fillets algorithms have been ported on new BO algorithm.
- Old BO algorithm, that was implemented in BOP, BooleanOperations and BOPTools packages, has - been deleted.
- Porting SALOME algorithms to new BOP algorithm.
- Fixing regressions. Rebased on current master.
- Corrections in post treatment of section edges;
- Corrections in the accordance with the bug 0023293;
- Small corrections in the bopcheck and bopargcheck commands.
- NCollection maps have been replaced by NCollection indexed maps to guarantee the constant order of sub-shapes in the result of boolean operation.
- Test case feat featprism M9 has been fixed.
- Test cases chl 902 E3 H3 have been fixed (corrections in the treatment of section edges).
- Test cases caf driver B6 B7, caf named_shape F6 F7 have been modified according to the new order of sub-shapes in the result of boolean operation.
- Test cases blend buildevol G1, blend simple K4, bcommon_complex C7, feat featprism L6 have been modified as they are improvements.
- Test case boolean bsection A3 has been modified according to the new syntax of the bsection command.
- Test cases boolean bfuse_complex J1 P9 have been fixed (the function IsInternalFace has been modified to use the function GetFaceOff);
- Test case chl 902 H3 has been fixed (changes in the treatment of section edges);
- Test case boolean bsection D8 has been modified (removed TODO statement);
- Test case boolean bsection A3 has been modified (as the shapes have been changed).
- Added correction of the tolerance values of the shapes according to the bug 0023610.
- test cases:
    boolean bcommon_complex C3,
    boolean bcut_complex F2 O7,
    boolean bfuse_complex C4 C5 E4,
    boolean bsection B6 M8 M9 N4 N5 N7,
    boolean bfuse_simple ZP6,
    draft angle G8,
    feat featprism S2
have been marked as invalid according to the bug 0022033;
- New value of result has been set in the test cases :
    boolean bopsection D4
    boolean bsection R8
as it is correct.
- test case bugs modalg bug23472 has been rewritten according to the new format of bsection command.
- The classes IntTools_Context and IntTools_ShrunkRange have been replaced by BOPInt_Context and BOPInt_ShrunkRange accordingly.
- The new class BRepAlgoAPI_Check has been added according to the bug 0023648.
- Some regressions have been fixed.
- The following test cases have been marked as invalid or rewritten
    bugs modalg buc60462_2, 60531_2, 60776_1, bug472_1, bug472_2, bug472_3, bug497_3, bug62
    bugs moddata bug26_1, bug26_2,
- The test case bugs modalg buc60533 has been rewritten to use the general fuse algorithm for building the result.
- The new value of the result has been set in the test case bugs modalg 60776_2.
- The following test cases have been rewritten according to the new format of the bsection command
    bugs modlag fra62369, pro18892
    bugs moddata bug75_1, bug75_2
- Corrected BRepAlgoAPI_Check.
- Removed package BOPTColStd.
- Rewritten test cases caf named_shape F8 F9.
- Removed unnecessary comments.
- Corrected the following test scripts :
    boolean bcut_complex(012) O3 O4 O5 O6 O8
    boolean bfuse_complex(013) O5 O6 P8
    boolean bopcommon_complex(021) D8 D9
    boolean bopfuse_complex(022) H1 J6
    boolean boptuc_complex(024) D5
    bugs modalg(006) bug399 bug497_1
    feat featprism(003) C4
- Corrections in the treatment of section edges (putting paves on the curves);
- Corrections in BRepOffset_Tool;
- The following test cases have been rewritten according to the new format of the bsection command
   bugs modalg bug6502, bug6554, bug6766_1, bug6766_3
- The new value of the result has been set in the following test cases
   bugs modalg bug1255, bug1255_1
- The following test cases have been marked as invalid or rewritten
   bugs modalg bug472_2, bug472_3, bug825_2
   bugs moddata bug10603, bug152_1, bug152_2, bug3721_1, bug3721_2, bug3721_3
- The following test cases have been rewritten as improvements
   bugs modalg bug693, bug693_1, bug817_1
   bugs moddata bug3721_5, bug3721_6, bug6862_3, bug6862_4, bug6862_6
- Test cases bugs modlag buc60787_1, buc60787_2, buc60788_2, buc60788_3 have been corrected.
- Fixed some SALOME regressions (modifications in the treatment of the section edges);
- Fixed test case bugs modalg bug23100;
- Test cases bugs modalg bug21754, bug22990 have been corrected according to the new format of the bsection command.
- Test cases bugs modalg bug13116_*, bug23711 have been fixed;
- Test cases bugs modalg bug697_2, bug697_4, bug697_7, bug697_8 have been marked as invalid according to the issue 0022033;
- Test cases bugs modalg bug22109_2, bug22109_3 have been corrected;
- Test case bugs modalg bug18186 has been corrected as it is improvement;
- Test case bugs modalg bug22802 has been deleted as there is no package BOPTColStd.
2013-02-08 17:42:05 +04:00

257 lines
9.1 KiB
Plaintext
Executable File

-- Created on: 2001-06-29
-- Created by: Michael KLOKOV
-- Copyright (c) 2001-2012 OPEN CASCADE SAS
--
-- The content of this file is subject to the Open CASCADE Technology Public
-- License Version 6.5 (the "License"). You may not use the content of this file
-- except in compliance with the License. Please obtain a copy of the License
-- at http://www.opencascade.org and read it completely before using this file.
--
-- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
--
-- The Original Code and all software distributed under the License is
-- distributed on an "AS IS" basis, without warranty of any kind, and the
-- Initial Developer hereby disclaims all such warranties, including without
-- limitation, any warranties of merchantability, fitness for a particular
-- purpose or non-infringement. Please see the License for the specific terms
-- and conditions governing the rights and limitations under the License.
class BeanFaceIntersector from IntTools
---Purpose: The class BeanFaceIntersector computes ranges of parameters on
-- the curve of a bean(part of edge) that bound the parts of bean which
-- are on the surface of a face according to edge and face tolerances.
-- Warning: The real boundaries of the face are not taken into account,
-- Most of the result parts of the bean lays only inside the region of the surface,
-- which includes the inside of the face. And the parts which are out of this region can be
-- excluded from the result.
uses
SequenceOfRoots from IntTools,
MarkedRangeSet from IntTools,
SequenceOfRanges from IntTools,
Context from BOPInt,
ExtCS from Extrema,
ProjectPointOnSurf from GeomAPI,
Edge from TopoDS,
Face from TopoDS,
Curve from BRepAdaptor,
Surface from BRepAdaptor,
Box from Bnd,
CurveRangeSample from IntTools,
SurfaceRangeSample from IntTools,
ListOfCurveRangeSample from IntTools,
ListOfSurfaceRangeSample from IntTools,
CurveRangeLocalizeData from IntTools,
SurfaceRangeLocalizeData from IntTools,
Surface from Geom
is
Create returns BeanFaceIntersector from IntTools;
Create(theEdge: Edge from TopoDS;
theFace: Face from TopoDS)
returns BeanFaceIntersector from IntTools;
---Purpose:
--- Initializes the algorithm
---
-- Warning:
--- The parts of the edge which are on
--- the surface of the face and belong to
--- the whole in the face (if there is)
--- is considered as result
---
Create(theCurve : Curve from BRepAdaptor;
theSurface : Surface from BRepAdaptor;
theBeanTolerance: Real from Standard;
theFaceTolerance: Real from Standard)
returns BeanFaceIntersector from IntTools;
---Purpose:
--- Initializes the algorithm
---
Create(theCurve : Curve from BRepAdaptor;
theSurface : Surface from BRepAdaptor;
theFirstParOnCurve: Real from Standard;
theLastParOnCurve : Real from Standard;
theUMinParameter : Real from Standard;
theUMaxParameter : Real from Standard;
theVMinParameter : Real from Standard;
theVMaxParameter : Real from Standard;
theBeanTolerance : Real from Standard;
theFaceTolerance : Real from Standard)
returns BeanFaceIntersector from IntTools;
---Purpose:
--- Initializes the algorithm
--- theUMinParameter, ... are used for
--- optimization purposes
---
Init(me: in out;theEdge: Edge from TopoDS;
theFace: Face from TopoDS);
---Purpose:
--- Initializes the algorithm
---
-- Warning:
--- The parts of the edge which are on
--- the surface of the face and belong to
--- the whole in the face (if there is)
--- is considered as result
---
Init(me: in out;theCurve : Curve from BRepAdaptor;
theSurface : Surface from BRepAdaptor;
theBeanTolerance: Real from Standard;
theFaceTolerance: Real from Standard);
---Purpose:
--- Initializes the algorithm
---
Init(me: in out;theCurve : Curve from BRepAdaptor;
theSurface : Surface from BRepAdaptor;
theFirstParOnCurve: Real from Standard;
theLastParOnCurve : Real from Standard;
theUMinParameter : Real from Standard;
theUMaxParameter : Real from Standard;
theVMinParameter : Real from Standard;
theVMaxParameter : Real from Standard;
theBeanTolerance : Real from Standard;
theFaceTolerance : Real from Standard);
---Purpose:
--- Initializes the algorithm
--- theUMinParameter, ... are used for
--- optimization purposes
---
SetContext(me: in out;
theContext: Context from BOPInt);
---Purpose:
--- Sets the intersecton context
---
Context(me)
returns Context from BOPInt;
---C++: return const &
---Purpose:
--- Gets the intersecton context
---
SetBeanParameters(me: in out;theFirstParOnCurve : Real from Standard;
theLastParOnCurve : Real from Standard);
---Purpose:
--- Set restrictions for curve
---
SetSurfaceParameters(me: in out;theUMinParameter : Real from Standard;
theUMaxParameter : Real from Standard;
theVMinParameter : Real from Standard;
theVMaxParameter : Real from Standard);
---Purpose:
--- Set restrictions for surface
---
Perform(me: in out);
---Purpose:
--- Launches the algorithm
---
IsDone(me) returns Boolean from Standard;
---C++: inline
Result(me)
returns SequenceOfRanges from IntTools;
---C++: return const &
Result(me; theResults: out SequenceOfRanges from IntTools);
-- private
ComputeAroundExactIntersection(me: in out)
is private;
ComputeLinePlane(me: in out)
is private;
FastComputeExactIntersection(me: in out)
returns Integer from Standard is private;
ComputeUsingExtremum(me: in out)
is private;
ComputeNearRangeBoundaries(me: in out)
is private;
ComputeLocalized(me: in out)
returns Boolean from Standard is private;
ComputeRangeFromStartPoint(me: in out; ToIncreaseParameter : Boolean from Standard;
theParameter : Real from Standard;
theUParameter : Real from Standard;
theVParameter : Real from Standard)
is private;
ComputeRangeFromStartPoint(me: in out; ToIncreaseParameter : Boolean from Standard;
theParameter : Real from Standard;
theUParameter : Real from Standard;
theVParameter : Real from Standard;
theIndex : Integer from Standard)
is private;
Distance(me: in out; theArg : Real from Standard;
theUParameter: out Real from Standard;
theVParameter: out Real from Standard)
returns Real from Standard
is private;
Distance(me: in out; theArg: Real from Standard)
returns Real from Standard
is private;
LocalizeSolutions(me: in out; theCurveRange : CurveRangeSample from IntTools;
theBoxCurve : Box from Bnd;
theSurfaceRange: SurfaceRangeSample from IntTools;
theBoxSurface : Box from Bnd;
theCurveData : in out CurveRangeLocalizeData from IntTools;
theSurfaceData : in out SurfaceRangeLocalizeData from IntTools;
theListCurveRange: in out ListOfCurveRangeSample from IntTools;
theListSurfaceRange: in out ListOfSurfaceRangeSample from IntTools)
returns Boolean from Standard
is private;
TestComputeCoinside(me: in out)
returns Boolean from Standard
is private;
fields
-- sources
myCurve : Curve from BRepAdaptor;
mySurface : Surface from BRepAdaptor;
myTrsfSurface : Surface from Geom;
myFirstParameter : Real from Standard;
myLastParameter : Real from Standard;
myUMinParameter : Real from Standard;
myUMaxParameter : Real from Standard;
myVMinParameter : Real from Standard;
myVMaxParameter : Real from Standard;
myBeanTolerance : Real from Standard;
myFaceTolerance : Real from Standard;
myCurveResolution: Real from Standard;
myCriteria : Real from Standard;
-- tools
myExtrema : ExtCS from Extrema;
myProjector : ProjectPointOnSurf from GeomAPI;
myRangeManager : MarkedRangeSet from IntTools;
myDeflection : Real from Standard;
myContext : Context from BOPInt;
-- results
myResults : SequenceOfRanges from IntTools;
myIsDone : Boolean from Standard;
end BeanFaceIntersector from IntTools;