Changes:
class BOPAlgo_WireSplitter
static function:
Standard_Boolean RefineAngle2D(const TopoDS_Vertex& aV,
const TopoDS_Edge& aE,
const TopoDS_Face& myFace,
const Standard_Real aA1,
const Standard_Real aA2,
Standard_Real& aA)
The contents of Domain 2D for the straight line has been changed.
class BOPTools_AlgoTools2D
method:
void BOPTools_AlgoTools2D::AdjustPCurveOnFace
(const TopoDS_Face& aF,
const Standard_Real aFirst,
const Standard_Real aLast,
const Handle(Geom2d_Curve)& aC2D,
Handle(Geom2d_Curve)& aC2DA)
The treatment of cylindrical surfaces has been changed taking into account
existing values of tolerances of the edges.
Test cases for issue CR25163
class: BOPAlgo_Algo
method:
void BOPAlgo_Algo::SetProgressIndicator
(const Handle(Message_ProgressIndicator)& theObj)
Purpose: Set the Progress Indicator object <theObj>.
method:
void BOPAlgo_Algo::UserBreak() const
Purpose: Breaks the execution if the break signal is indicated.
NCollection_BaseCollection class, relevant header files, and macro DEFINE_BASECOLLECTION removed.
Hence methods Assign() from other compatible (via inheritance of BaseCollection) collections are not available any more, as well as base Iterator class.
All methods of Iterator classes are made non-virtual, allowing their inline expansion for better performance.
OCCT-specific operators new and delete added to collection classes and removed from iterator classes.
Classes BOPInt_Context, BOPInt_ShrunkRange, BOPInt_Tools have been removed.
Package BOPInt has been removed
Classes IntTools_Context, IntTools_ShrunkRange have been added to replace corresponding BOPInt_ classes.
The classes provide same functionality as corresponding BOPInt_ classes.
Classes :
BOPAlgo_ArgumentAnalyzer
BOPAlgo_Builder
BOPAlgo_BuilderArea
BOPAlgo_BuilderFace
BOPAlgo_BuilderSolid
BOPAlgo_CheckerSI
BOPAlgo_PaveFiller
BOPAlgo_ShellSplitter
BOPTools_AlgoTools3D
BRepFill_TrimShellCorner
IntTools_BeanFaceIntersector
IntTools_EdgeFace
IntTools_FaceFace
IntTools_Tools
have been modified to use new classes IntTools_Context IntTools_ShrunkRange
Class IntTools_Tools has been modofied to provide the functionality that was in BOPInt_Tools.
Modification:
class BOPAlgo_PaveFiller
method BOPAlgo_PaveFiller::PutBoundPaveOnCurve().
Create bounding paves for each section curve separately.
Added test case bugs/modalg_5/bug24950
Modifications:
1. class BOPAlgo_WireSplitter
1.1. Removed static method RecomputeAngles(...).
1.2. Minor corrections.
2. class BOPTools_AlgoTools
2.1 method GetFaceOff
For definition of an angles between faces the same step in 3D space has been used for all faces in the list.
To define that step new static function MinStep3D has been implemented.
Added test case bugs/modalg_5/bug24879
Deleted unnecessary TODOs in test case bugs/modalg_2/bug497_3
class BOPAlgo_CheckerSI
- methods:
void BOPAlgo_CheckerSI::Perform()
class BOPAlgo_ArgumentAnalyzer
- methods:
void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences()
The changes have been done to provide the consistence
between results in SALOME Application and DRAW Application
The sytax of the command "bopcheck" has been changed:
bopcheck Shape [level of check: 0 - 9] [-t -s]
The options:
-t - display elapsed CPU time
-s - run in serial (non-parallel) mode. The default mode is parallel.
Modified test cases bugs/modalg_5/bug24029 and bugs/modalg_5/bug24764 according to changed output format of the "bopcheck" command.
I. New features:
No new features.
II. Changes:
II.1. class BOPAlgo_ShellSplitter
- statc function:
void RefineShell(TopoDS_Shell& theShell);
has been addded.
The function provides splitting connexity block of faces when the block begins with
the face that is intended to be internal.
II.2. class BOPAlgo_ShellSplitter
- statc function:
Standard_Boolean IsClosedShell(const TopoDS_Shell& theShell);
has been modified to process empty shells.
II.3. class BOPAlgo_ShellSplitter
- method:
void BOPAlgo_ShellSplitter::SplitBlock(BOPTools_ConnexityBlock& aCB);
has been modified to process connexity blocks of faces when the block
begins with the face that is intended to be internal [ II.1 ].
III. Modified entities:
packages:
BOPAlgo
Test case for issue CR24861
class BOPTest
class BOPAlgo_BOP
class BOPAlgo_Builder
class BOPTest
class BRepFeat_Builder
class BRepFeat_MakeCylindricalHole
The format of the command has been changed:
bbop r op [-s -t]
The following options has been added:
-s - run in serial mode
-t - print the CPU time
Test cases for issue CR24825
class BOPAlgo_ArgumentAnalyzer
- method:
void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences()
The new shapes has been excluded from the treatment
void BOPAlgo_CheckerSI::PostTreat()
The new shapes has been excluded from the treatment
Standard_Integer bopcheck
(Draw_Interpretor& di, Standard_Integer n, const char** a )
The new shapes has been excluded from the treatment.
The interferences of the type */Solid has been included in the treatment.
Test case for issue CR24764
Changes:
1. class BOPTools_Set
- method:
void BOPTools_Set::AddEdges(const TopoDS_Shape& aS)
has been removed as redundant
2. class BOPTools_Set
- method:
Standard_Boolean BOPTools_Set::IsEqual (const BOPTools_Set& theOther)const
has been modified to take into account Locations of the shapes
3. class BOPAlgo_Builder
- method:
void BOPAlgo_Builder::FillSameDomainFaces()
has been modified in accordance with the modifications done in II.1.
Includes of Handle*.hxx headers replaced by include of corresponding class (where possible without redesign of the classes).
Minor correction against compiler warning (vc10 64-bit) in BOPAlgo
Remove double header inclusions
Correction of minor mistake
Edge/Edge Interferences
Changes:
1. class BOPAlgo_PaveFiller
- method:
void BOPAlgo_PaveFiller::PerformEE()
the chages provides the parallel computations of
Edge/Edge interferences.
- auxiliary classes:
BOPAlgo_EdgeEdge
BOPAlgo_EdgeEdgeFunctor
BOPAlgo_EdgeEdgeCnt
have been added.
The classes are auxiliary classes to provide the parallel computations
of Edge/Edge interferences.
2. class BOPTest
-method:
void BOPTest::PartitionCommands(Draw_Interpretor& theCommands)
- static function:
Standard_Integer bfillds(Draw_Interpretor& di,
Standard_Integer n,
const char** a)
The syntax of the command "bfillds" has been changed.
> bfillds [-s -t]
options:
-s - launch the algorithm in sequential mode
-t - display CPU time
Test case for issue CR24639
The map for collecting pave blocks of two faces has been replaced with indexed map
to ensure the constant order of pave blocks when checking section curves for existents.
Test case for issue CR24628
void BOPAlgo_CheckerSI::PrepareCopy()
has been added.
Purpose:
- provides the copy of the argument
- provides links between the copy and the original
- protected method:
void BOPAlgo_CheckerSI::PostTreatCopy()
has been added.
Purpose: provides post treat actions wit the copy.
void BOPAlgo_PaveFiller::Perform()
The try/catch mechanism is used inside the method
Standard_Integer bopcheck
(Draw_Interpretor& di, Standard_Integer n, const char** a )
The redundant copying is removed.
Standard_Integer bopargcheck
(Draw_Interpretor& di, Standard_Integer n, const char** a )
The redundant copying is removed.
packages:
BOPAlgo
BOPTest
Test cases for issue CR24620
Small correction of text case for issue CR24620
License statement text corrected; compiler warnings caused by Bison 2.41 disabled for MSVC; a few other compiler warnings on 54-bit Windows eliminated by appropriate type cast
Wrong license statements corrected in several files.
Copyright and license statements added in XSD and GLSL files.
Copyright year updated in some files.
Obsolete documentation files removed from DrawResources.
I. New features:
I.1 class BOPAlgo_ShellSplitter
The new class BOPAlgo_ShellSplitter has been added.
Purpose: The class provides the splitting of the set of connected faces
on separate loops
II. Changes:
II.1. class BOPAlgo_BuilderSolid
- method:
void BOPAlgo_BuilderSolid::PerformLoops()
the changes that provide parallel run the ShellSplitter algorithm have been done.
- method:
void BOPAlgo_BuilderSolid::PerformAreas()
the classification the grows and holes has been done using
the algorithm of unbalanced binary tree of overlapped bounding boxes
Patch 06
I.1. class Bnd_Box2d
- method:
inline Standard_Real Bnd_Box2d::SquareExtent() const
has been added.
Purpose : The method returns the squared diagonal of the bounding box.
I.3. class BOPCol_BoxBndTree
has been added.
Purpose : The class is the instantiation of the algorithm of unbalanced binary tree
of overlapped bounding boxes 3D.
I.4. class BOPCol_Box2DBndTree
has been added.
Purpose : The class is the instantiation of the algorithm of unbalanced binary tree
of overlapped bounding boxes 2D.
I.5. class BOPAlgo_Algo
- method:
void BOPAlgo_Algo::SetRunParallel(const Standard_Boolean theFlag)
has been added.
Purpose: Set the flag of parallel processing
if <theFlag> is true the parallel processing is switched on
if <theFlag> is false the parallel processing is switched off
- method:
Standard_Boolean BOPAlgo_Algo::RunParallel()const
has been added
Purpose: Returns the flag of parallel processing
II.1. class BOPAlgo_Builder
- method:
void BOPAlgo_Builder::SetRunParallel(const Standard_Boolean theFlag)
has been removed due to I.5.
- method:
Standard_Boolean BOPAlgo_Builder::RunParallel()const
has been removed due to I.5
II.2. class BOPDS_BoxBndTree
has been removed due to I.3
II.3. classes
BOPDS_Iterator,
BOPDS_IteratorSI,
BOPDS_SubIterator
BOPAlgo_PaveFiller,
BOPAlgo_Builder
the calls to BOPDS_BoxBndTree have been changed to
the calls to BOPCol_BoxBndTree
due to I.3
II.4. class BOPAlgo_BuilderFace
- method:
void BOPAlgo_BuilderFace::PerformLoops()
the changes that provide parallel run the WireSplitter algorithm have been done.
- method:
void BOPAlgo_BuilderFace::PerformAreas()
the classification the grows and holes has been done using
the algorithm of unbalanced binary tree of overlapped bounding boxes
II.5. class BOPAlgo_WireSplitter
- method:
void BOPAlgo_WireSplitter::SplitBlock(const TopoDS_Face& myFace,
BOPTools_ConnexityBlock& aCB)
the method is transferred to the static, the signature of the method have been changed
- method:
void BOPAlgo_WireSplitter::MakeWires()
the changes to provide parallel run the SplitBlock algorithm have been done
When warnings are enabled, compilers report lots of occurrences
of unused local variables, which makes it harder to find other
meaningful warnings.
This commit does not fix all unused local variables.
Fix new type conversion warning
Code cleaned to avoid MSVC compiler warnings on unused function arguments.
Several useless pieces of code are removed.
Changes in IntTools_EdgeFace.cxx, Blend_Walking_1.gxx, Bnd_BoundSortBox.cxx, ProjLib_ProjectedCurve.cxx are reverted (separated to specific issue for more in-depth analysis).
Modifications:
1. The validity of the intersection point between edge and face is checked with sum of the tolerance values of the edge and face.
2. The intersection between toroidal surface and one of the following surfaces: Plane, Cylinder, Sphere, Cone or Torus
is treated as analytical in the following cases:
1) Torus and Plane: a. Axes of the surfaces are parallel;
b. Axes of the surfaces are perpendicular and location of the torus is lying on the plane;
2) Torus and Sphere: The location of the sphere is lying on the line made from toruses axis;
3) Torus and Cone, Cylinder or Torus: The axis of the surfaces are collinear.
In all cases the intersection line(s) is(are) circle(s).
Added test cases bugs/modalg_5/bug24470
The intersection between torus with minor radius more than (or equal to) the major radius and any other surface is considered as parametric.
Modifications in history:
1. All splits of the shape are returned as Modified from that shape.
2. For SECTION operation section edges are returned as Generated from the face.
New features:
- class BOPDS_InterfVZ has been added.
Purpose: The class BOPDS_InterfVZ is is to store the information about
the interference of the type vertex/solid.
- class BOPDS_InterfEZ has been added.
Purpose: The class BOPDS_InterfEZ is is to store the information about
the interference of the type edge/solid.
- class BOPDS_InterfFZ has been added.
Purpose: The class BOPDS_InterfFZ is is to store the information about
the interference of the type face/solid.
- class BOPDS_InterfFZ has been added.
Purpose: The class BOPDS_InterfZZ is is to store the information about
the interference of the type solid/solid.
- class BOPDS_DS
-methods
inline BOPDS_VectorOfInterfVZ& BOPDS_DS::InterfVZ()
Purpose: Returns the collection of interferences Vertex/Solid
inline BOPDS_VectorOfInterfEZ& BOPDS_DS::InterfEZ()
Purpose: Returns the collection of interferences Edge/Solid
inline BOPDS_VectorOfInterfFZ& BOPDS_DS::InterfFZ()
Purpose: Returns the collection of interferences Face/Solid
inline BOPDS_VectorOfInterfZZ& BOPDS_DS::InterfZZ()
Purpose: Returns the collection of interferences Solid/Solid
inline Standard_Integer BOPDS_DS::NbInterfTypes()
Purpose: Returns the number of types of the interferences
have been added.
- class BOPDS_Tools
-method
inline Standard_Boolean BOPDS_Tools::IsInterfering
(const TopAbs_ShapeEnum theT)
has been added.
Purpose: Returns true if the type <theT> can be participant of an interference
- class BOPDS_ShapeInfo
-method
inline Standard_Boolean BOPDS_ShapeInfo::IsInterfering()const
has been added.
Purpose: Returns true if the object can be participant of an interference
- class BOPDS_ShapeInfo
-methods
void BOPAlgo_CheckerSI::PerformVZ()
Purpose: Computes Vertex/Solid interferences
void BOPAlgo_CheckerSI::PerformEZ()
Purpose: Computes Edge/Solid interferences
void BOPAlgo_CheckerSI::PerformFZ()
Purpose: Computes Face/Solid interferences
void BOPAlgo_CheckerSI::PerformZZ()
Purpose: Computes Solid/Solid interferences
have been added
Changes:
- class BOPDS_DS
- method:
Standard_Boolean BOPDS_DS::HasInterfShapeSubShapes
(const Standard_Integer theI1,
const Standard_Integer theI2,
const Standard_Boolean theFlag)const
has been modified.
Purpose:
Returns true if the shape with index theI1 is interfered with
- at least one sub-shape of the shape with index theI2 (theFlag=true)
--all sub-shapes of the shape with index theI2 (theFlag=false)
- class BOPDS_Tools
- method:
inline Standard_Integer BOPDS_Tools::TypeToInteger
(const TopAbs_ShapeEnum aType1,
const TopAbs_ShapeEnum aType2)
The method has been extended to treat */Solid interfertences.
- class BOPDS_Iterator
- constructors:
BOPDS_Iterator::BOPDS_Iterator();
BOPDS_Iterator::BOPDS_Iterator
(const Handle(NCollection_BaseAllocator)& theAllocator);
- method:
void BOPDS_Iterator::Prepare();
The constant number of types of the interferences has been changed by
the call: BOPDS_DS::NbInterfTypes();
- class BOPDS_IteratorSI
- method:
void BOPDS_IteratorSI::UpdateByLevelOfCheck(const Standard_Integer theLevel)
The constant number of types of the interferences has been changed by
the call: BOPDS_DS::NbInterfTypes();
- method:
void BOPDS_IteratorSI::Intersect()
The method has been extended to treat */Solid interfertences.
- class BOPAlgo_CheckerSI
- constructor:
BOPAlgo_CheckerSI::BOPAlgo_CheckerSI()
The constant number of types of the interferences has been changed by
the call: BOPDS_DS::NbInterfTypes();
- method:
void BOPAlgo_CheckerSI::SetLevelOfCheck(const Standard_Integer theLevel)
The constant number of types of the interferences has been changed by
the call: BOPDS_DS::NbInterfTypes();
- methods:
void BOPAlgo_CheckerSI::Perform()
void BOPAlgo_CheckerSI::PostTreat()
The methods have been extended to treat */Solid interfertences.
- class BOPAlgo_ArgumentAnalyzer
- method:
void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences()
The method has been extended to treat */Solid interfertences.
Added test case bugs/modalg_5/bug24492
New features
class BOPAlgo_BuilderSolid
-method:
void BOPAlgo_BuilderSolid::SetSolid(const TopoDS_Solid& theSolid) has been added.
Purpose: Sets the source solid <theSolid>
class BOPAlgo_BuilderSolid
-method:
const TopoDS_Solid& BOPAlgo_BuilderSolid::Solid()const
has been added.
Purpose: Returns the source solid
Auxiliary classes
BOPAlgo_BuilderSolidFunctor
BOPAlgo_BuilderSolidCnt
have been added.
Purpose: The classes provide the interface and implementation of the parallel computations.
class BOPTools_AlgoTools
-method:
Standard_Boolean BOPTools_AlgoTools::IsOpenShell(const TopoDS_Shell& theShell) has been added.
Purpose: Returns true if the shell <theShell> is open
class BOPTools_AlgoTools
-method:
Standard_Boolean BOPTools_AlgoTools::IsInvertedSolid(const TopoDS_Solid& theSolid) has been added.
Purpose: Returns true if the solid <theSolid> is inverted
class BOPDS_DS
-protected method:
void BOPDS_DS::BuildBndBoxSolid(const Standard_Integer theIndex, Bnd_Box& theBoxS) has been added.
The method computes bouding box <theBoxS> for the solid with DS-index <theIndex>
Changes
class BOPDS_DS
- method:
void BOPDS_DS::Init()
The block to compute bouding box for the solids has been added.
class BOPAlgo_Builder
- method:
void BOPAlgo_Builder::FillIn3DParts
(BOPCol_DataMapOfShapeListOfShape& theInParts,
BOPCol_DataMapOfShapeShape& theDraftSolids,
const BOPCol_BaseAllocator& theAllocator)
The order of treatment of the unbalanced binary tree of overlapped bounding boxes has been changed
class BOPAlgo_Builder
- method:
void BOPAlgo_Builder::BuildSplitSolids
(BOPCol_DataMapOfShapeListOfShape& theInParts,
BOPCol_DataMapOfShapeShape& theDraftSolids,
const BOPCol_BaseAllocator& theAllocator)
The algorithm has been adapted to provide the parallel computations
Changes:
1. class BOPTools
- method:
void BOPTools_AlgoTools::MakeVertex(BOPCol_ListOfShape& aLV,
TopoDS_Vertex& aVnew)
The function fsqrt that calculates the square root of a real number
has been replaced by the standard sqrt.
2. class BOPAlgo_WireSplitter
- static function:
Standard_Real Angle2D (const TopoDS_Vertex& aV,
const TopoDS_Edge& anEdge,
const TopoDS_Face& myFace,
const GeomAdaptor_Surface& aGAS,
const Standard_Boolean aFlag)
The value parametric deltas for computations of 2D-angles
have been changed for Bezier, B-Spline 2D-curves.
1. Instead of the tolerance value of the face the resolution of the surface of the face is used in
the Face Classifier algorithm to define the state of the 2d point relative to that face.
2. Replace the vertices involved in PostTreatFF (treatment of section edges) with their images
(new vertices created in PostTreatFF) in all pave blocks.
3. New value of the result in the test case boolean bsection L8.
Test cases for issue CR24286
New metod was implemented to class BOPAlgo_Builder
- method:
void BOPAlgo_Builder::SetRunParallel(const Standard_Boolean theFlag)
The method sets the flag of parallel processing
if <theFlag> is true the parallel processing is switched on
if <theFlag> is false the parallel processing is switched off
- method:
Standard_Boolean BOPAlgo_Builder::RunParallel()const
The method returns the flag of parallel processing
Class BOPTest was changed
- static function:
Standard_Integer bbuild(Draw_Interpretor& di, Standard_Integer n, const char** a)
The optional parameters [ -s -t ] have been added to the command line of
the command 'bbuild':
bbuild r [-s -t]
-s : builds the result using serial procesing
-t : show the wall time
Several corrections coming from building and testing on MSVC++ 11:
- compiler warnings corrected in structiges.c (32-bit mode) and BOPAlgo (64-bit mode)
- DRAW command for testing exceptions (OCC6143) refactored for getting some output even if process fails (problem with stack overflow handling)
- DRAW command readstep removed as it leads to hang-up in Debug mode due to waiting for user input; the only test that used it changed to use testreadstep command
v0.0
I. New features:
no new features
II. Changes:
II.1. class BRepClass3d
- method:
Standard_Integer BRepClass3d_SolidExplorer::OtherSegment(const gp_Pnt& P,
gp_Lin& L, Standard_Real& _Par)
The condition to prevent infinite loop has been added.
III. Modified entities:
packages:
BRepClass3d
Added test case bugs/modalg_5/bug24242
The phase 1 : Parallelization Building Faces.
Part 1.2. Building Same Domain Faces
Combined by pkv
Small correction of test case for issue CR24157_3
v0.0
I. New features:
no new features
II. Changes:
II.1. class BOPAlgo_PaveFiller
- method:
void BOPAlgo_PaveFiller::PerformFF()
Prepare data to the filter BOPAlgo_PaveFiller::::CheckPlanes(...).
- method:
Standard_Boolean
BOPAlgo_PaveFiller::CheckPlanes(const Standard_Integer nF1,
const Standard_Integer nF2)const
1)The contents of the filter has been updated by all vertices of the faces images.
2)The method declared as const
III. Modified entities:
packages:
BOPAlgo
Test cases for issue CR24247
The Build (Assembly) Part of BO consists of several sub-parts:
1. Building Vertices
2. Building Edges
3. Building Faces
4. Building Solids
5. Building Container Shapes (Wires, Shells, Compsolids, Compounds)
Among the parts above
3.Building Faces
and
4.Building Solids
are the most time-consuming and thus should be parallelized first.
The parallelization process can be divided on three phases:
1. Parallelization Building Faces
2. Parallelization Building Solids
3. Parallelization the rest parts
The phase 1 : Parallelization Building Faces consists of three parts:
1.1. Building Split Faces
1.2. Building Same Domain Faces
1.3. Building Faces with Internal Shapes
The branch deals with the phase 1. chapter 1.1. Building Split Faces