mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-05-13 03:30:56 +08:00
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.
336 lines
11 KiB
Plaintext
336 lines
11 KiB
Plaintext
-- Created by: Peter KURNEV
|
|
-- Copyright (c) 1999-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 Context from BOPInt
|
|
inherits TShared from MMgt
|
|
|
|
|
|
---Purpose:
|
|
-- The intersection Context contains geometrical
|
|
-- and topological toolkit (classifiers, projectors, etc).
|
|
-- The intersection Context is for caching the tools
|
|
-- to increase the performance.
|
|
|
|
|
|
uses
|
|
|
|
Pnt2d from gp,
|
|
Pnt from gp,
|
|
State from TopAbs,
|
|
Curve from Geom,
|
|
ProjectPointOnCurve from GeomAPI,
|
|
ProjectPointOnSurf from GeomAPI,
|
|
Vertex from TopoDS,
|
|
Face from TopoDS,
|
|
Edge from TopoDS,
|
|
Solid from TopoDS,
|
|
SolidClassifier from BRepClass3d,
|
|
FClass2d from IntTools,
|
|
Curve from IntTools,
|
|
BaseAllocator from BOPCol,
|
|
DataMapOfShapeAddress from BOPCol,
|
|
DataMapOfTransientAddress from BOPCol,
|
|
Hatcher from Geom2dHatch,
|
|
SurfaceRangeLocalizeData from IntTools
|
|
|
|
--raises
|
|
|
|
is
|
|
Create
|
|
returns mutable Context from BOPInt;
|
|
---C++: alias "Standard_EXPORT virtual ~BOPInt_Context();"
|
|
|
|
Create (theAllocator: BaseAllocator from BOPCol)
|
|
returns Context from BOPInt;
|
|
|
|
FClass2d(me:mutable;
|
|
aF: Face from TopoDS)
|
|
returns FClass2d from IntTools;
|
|
---C++: return &
|
|
---Purpose:
|
|
--- Returns a reference to point classifier
|
|
--- for given face
|
|
---
|
|
|
|
ProjPS (me:mutable;
|
|
aF: Face from TopoDS)
|
|
returns ProjectPointOnSurf from GeomAPI;
|
|
---C++: return &
|
|
---Purpose:
|
|
--- Returns a reference to point projector
|
|
--- for given face
|
|
---
|
|
|
|
ProjPC (me:mutable;
|
|
aE: Edge from TopoDS)
|
|
returns ProjectPointOnCurve from GeomAPI;
|
|
---C++: return &
|
|
---Purpose:
|
|
--- Returns a reference to point projector
|
|
--- for given edge
|
|
---
|
|
|
|
ProjPT (me:mutable;
|
|
aC: Curve from Geom)
|
|
returns ProjectPointOnCurve from GeomAPI;
|
|
---C++: return &
|
|
---Purpose:
|
|
--- Returns a reference to point projector
|
|
--- for given curve
|
|
---
|
|
|
|
SurfaceData(me: mutable;
|
|
aF: Face from TopoDS)
|
|
returns SurfaceRangeLocalizeData from IntTools;
|
|
---C++: return &
|
|
---Purpose:
|
|
--- Returns a reference to surface localization data
|
|
--- for given face
|
|
|
|
SolidClassifier(me:mutable;
|
|
aSolid: Solid from TopoDS)
|
|
returns SolidClassifier from BRepClass3d;
|
|
---C++: return &
|
|
---Purpose:
|
|
--- Returns a reference to solid classifier
|
|
--- for given solid
|
|
---
|
|
|
|
Hatcher(me: mutable;
|
|
aF: Face from TopoDS)
|
|
returns Hatcher from Geom2dHatch;
|
|
---C++: return &
|
|
---Purpose:
|
|
--- Returns a reference to 2D hatcher
|
|
--- for given face
|
|
---
|
|
|
|
ComputePE (me:mutable;
|
|
theP : Pnt from gp;
|
|
theTolP: Real from Standard;
|
|
theE : Edge from TopoDS;
|
|
theT :out Real from Standard)
|
|
returns Integer from Standard;
|
|
---Purpose:
|
|
--- Computes parameter of the Point theP on
|
|
--- the edge aE.
|
|
--- Returns zero if the distance between point
|
|
--- and edge is less than sum of tolerance value of edge and theTopP,
|
|
--- otherwise and for following conditions returns
|
|
--- negative value
|
|
--- 1. the edge is degenerated (-1)
|
|
--- 2. the edge does not contain 3d curve and pcurves (-2)
|
|
--- 3. projection algorithm failed (-3)
|
|
---
|
|
|
|
ComputeVE (me:mutable;
|
|
aV : Vertex from TopoDS;
|
|
aE : Edge from TopoDS;
|
|
aT :out Real from Standard)
|
|
returns Integer from Standard;
|
|
---Purpose:
|
|
--- Computes parameter of the vertex aV on
|
|
--- the edge aE.
|
|
--- Returns zero if the distance between vertex
|
|
--- and edge is less than sum of tolerances,
|
|
--- otherwise and for following conditions returns
|
|
--- negative value
|
|
--- 1. the edge is degenerated (-1)
|
|
--- 2. the edge does not contain 3d curve and pcurves (-2)
|
|
--- 3. projection algorithm failed (-3)
|
|
---
|
|
|
|
--ComputeVE (me:mutable;
|
|
--aV : Vertex from TopoDS;
|
|
--aE : Edge from TopoDS;
|
|
--aT :out Real from Standard;
|
|
--bToUpdateVertex:out Boolean from Standard;
|
|
--aDist :out Real from Standard)
|
|
--returns Integer from Standard;
|
|
---Purpose:
|
|
--- Computes parameter aT of the vertex aV on
|
|
--- the edge aE.
|
|
--- Returns zero if the distance between vertex
|
|
--- and edge is less than sum of tolerances,
|
|
--- otherwise and for following conditions returns
|
|
--- negative value
|
|
--- 1. the edge is degenerated (-1)
|
|
--- 2. the edge does not contain 3d curve and pcurves (-2)
|
|
--- 3. projection algorithm failed (-3)
|
|
---
|
|
--- Output parameters
|
|
--- bToUpdateVertex - the flag that indicates whether the
|
|
--- vertex tolerance should be modified or not
|
|
--- aDist - the value of the distance between the vertex
|
|
--- and the edge
|
|
|
|
|
|
|
|
ComputeVF (me:mutable;
|
|
aV : Vertex from TopoDS;
|
|
aF : Face from TopoDS;
|
|
U : out Real from Standard;
|
|
V : out Real from Standard)
|
|
returns Integer from Standard;
|
|
---Purpose:
|
|
--- Computes UV parameters of the vertex aV on face aF
|
|
--- Returns zero if the distance between vertex and face is
|
|
--- less than or equal the sum of tolerances and the projection
|
|
--- point lays inside boundaries of the face.
|
|
--- For following conditions returns negative value
|
|
--- 1. projection algorithm failed (-1)
|
|
--- 2. distance is more than sum of tolerances (-2)
|
|
--- 3. projection point out or on the boundaries of face (-3)
|
|
---
|
|
|
|
StatePointFace(me:mutable;
|
|
aF : Face from TopoDS;
|
|
aP2D : Pnt2d from gp)
|
|
returns State from TopAbs;
|
|
---Purpose:
|
|
--- Returns the state of the point aP2D
|
|
--- relative to face aF
|
|
---
|
|
|
|
IsPointInFace(me:mutable;
|
|
aF : Face from TopoDS;
|
|
aP2D : Pnt2d from gp)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Returns true if the point aP2D is
|
|
--- inside the boundaries of the face aF,
|
|
--- otherwise returns false
|
|
---
|
|
|
|
|
|
IsPointInOnFace(me:mutable;
|
|
aF : Face from TopoDS;
|
|
aP2D : Pnt2d from gp)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Returns true if the point aP2D is
|
|
--- inside or on the boundaries of aF
|
|
---
|
|
|
|
IsValidPointForFace(me:mutable;
|
|
aP3D : Pnt from gp;
|
|
aF : Face from TopoDS;
|
|
aTol : Real from Standard)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Returns true if the distance between point aP3D
|
|
--- and face aF is less or equal to tolerance aTol
|
|
--- and projection point is inside or on the boundaries
|
|
--- of the face aF
|
|
---
|
|
|
|
IsValidPointForFaces(me:mutable;
|
|
aP3D : Pnt from gp;
|
|
aF1 : Face from TopoDS;
|
|
aF2 : Face from TopoDS;
|
|
aTol : Real from Standard)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Returns true if IsValidPointForFace returns true
|
|
--- for both face aF1 and aF2
|
|
---
|
|
|
|
IsValidBlockForFace (me:mutable;
|
|
aT1 : Real from Standard;
|
|
aT2 : Real from Standard;
|
|
aIC : Curve from IntTools;
|
|
aF : Face from TopoDS;
|
|
aTol : Real from Standard)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Returns true if IsValidPointForFace returns true
|
|
--- for some 3d point that lay on the curve aIC bounded by
|
|
--- parameters aT1 and aT2
|
|
---
|
|
|
|
IsValidBlockForFaces (me:mutable;
|
|
aT1 : Real from Standard;
|
|
aT2 : Real from Standard;
|
|
aIC : Curve from IntTools;
|
|
aF1 : Face from TopoDS;
|
|
aF2 : Face from TopoDS;
|
|
aTol : Real from Standard)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Returns true if IsValidBlockForFace returns true
|
|
--- for both faces aF1 and aF2
|
|
---
|
|
|
|
IsVertexOnLine(me:mutable;
|
|
aV : Vertex from TopoDS;
|
|
aIC : Curve from IntTools;
|
|
aTolC: Real from Standard;
|
|
aT :out Real from Standard)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Computes parameter of the vertex aV on
|
|
--- the curve aIC.
|
|
--- Returns true if the distance between vertex and
|
|
--- curve is less than sum of tolerance of aV and aTolC,
|
|
--- otherwise or if projection algorithm failed
|
|
--- returns false (in this case aT isn't significant)
|
|
---
|
|
|
|
IsVertexOnLine(me:mutable;
|
|
aV : Vertex from TopoDS;
|
|
aTolV: Real from Standard;
|
|
aIC : Curve from IntTools;
|
|
aTolC: Real from Standard;
|
|
aT :out Real from Standard)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Computes parameter of the vertex aV on
|
|
--- the curve aIC.
|
|
--- Returns true if the distance between vertex and
|
|
--- curve is less than sum of tolerance of aV and aTolC,
|
|
--- otherwise or if projection algorithm failed
|
|
--- returns false (in this case aT isn't significant)
|
|
---
|
|
|
|
ProjectPointOnEdge (me:mutable;
|
|
aP : Pnt from gp;
|
|
aE : Edge from TopoDS;
|
|
aT :out Real from Standard)
|
|
returns Boolean from Standard;
|
|
---Purpose:
|
|
--- Computes parameter of the point aP on
|
|
--- the edge aE.
|
|
--- Returns false if projection algorithm failed
|
|
--- other wiese returns true.
|
|
---
|
|
|
|
fields
|
|
myAllocator : BaseAllocator from BOPCol is protected;
|
|
myFClass2dMap:DataMapOfShapeAddress from BOPCol is protected;
|
|
myProjPSMap :DataMapOfShapeAddress from BOPCol is protected;
|
|
myProjPCMap :DataMapOfShapeAddress from BOPCol is protected;
|
|
mySClassMap :DataMapOfShapeAddress from BOPCol is protected;
|
|
myProjPTMap :DataMapOfTransientAddress from BOPCol is protected;
|
|
myHatcherMap :DataMapOfShapeAddress from BOPCol is protected;
|
|
myProjSDataMap:DataMapOfShapeAddress from BOPCol is protected;
|
|
myCreateFlag :Integer from Standard is protected;
|
|
|
|
end Context;
|
|
|