'BRepTools_History' history was implemented for algorithm
'ShapeUpgrade_UnifySameDomain'.
The history of the changing of the initial shape was corrected to consider all
shapes created by the algorithm as modified shapes instead of generated ones.
The old history interface was replaced by the new one:
- to get the modified shapes use: History()->Modified();
- to check if the shapes has been deleted use: History()->IsRemoved().
Type 'BRepTools_ReShape' was extended to:
- support the 'BRepTools_History' history;
- merge several shapes to a single shape that
the history of the merged shapes is presented by equal ways.
Type 'ShapeBuild_ReShape' was changed to support 'BRepTools_History' history.
Select3D_SensitiveGroup - added option to force overlap check for all entities in the group.
Added interface for accessing last detected entity in the group.
Select3D_SensitivePrimitiveArray - added option to keep index map of detected elements
and option to split array into groups for faster initialization of extra-large arrays.
BVH_Geometry, BVH_Object - added missing accessor ::IsDirty() for checking BVH tree state.
New method for building surface polyhedron (class IntCurveSurface_Polyhedron), which takes in account intervals of discontinuity of surface is added for constructor IntCurvesFace_Intersector.
Bug in methods NbU(V)Intervals and U(V)Intervals for Offset surfaces is fixed.
1. Method Approx_ComputeLine::Perform is modified: now it contains also recursive calls after new line computation made by new method ApproxInt_MultiLine::MakeMLOneMorePoint.
2. New method MakeMLOneMorePoint is added to ApproxInt_MultiLine: it builds new sub-line as a part of main line with new point added into the middle of the longest interval between existing points.
3. Method ShapeConstruct_ProjectCurveOnSurface::ApproxPCurve is modified to avoid regressions: now it takes care of the set of initial points to be enough close to each other so that an interval between two adjacent points is less than half-period of the surface.
4. Modification in ShapeConstruct_ProjectCurveOnSurface: correction of pcurves of edges which extremities are in the singularities of surface.
A shape history mechanism was created. It supports history for shapes with types
'vertex', 'edge', 'face' and 'solid'. It allows define relations 'generated',
'modified' and 'removed' between the accepted and the produced shapes. It
provides functionality for the other widely used history mechanism 'Generated',
'Modified', 'IsDeleted'. It provides algorithm to merge two histories of
sequentially applied algorithms. Recommendations were formalized to choose
between relations 'generated' and 'modified'.
The macros Status, Convex, Opposite, FillSolid (coming from X11 headers)
are now undefined in place of definition of methods with same name in OCCT headers.
The usage of variables with name Status is now avoided.
GL_GLEXT_LEGACY is now defined only if not already defined.
The macros AddPrinter (coming from WinAPI headers) is now undefined
within Message_Messenger class definition having method with the same name.
CurrentDirectory macro is now undefined in OSD_Process.hxx.
Improve the algorithm BRepPrimAPI_MakeHalfSpace. Earlier it made projection of the point only on faces. If the nearest point does not conform to normal projection criterion the result is wrong. The fix includes search of projection on edges and vertices. This makes the algorithm robust for half spaces with boundaries.
Type 'BRepTools_ReShape' was simplified:
- the functionality to process shapes different only in orientation by different ways was removed as it is not used anywhere;
- method 'Apply' with the build mode parameter was moved to type 'ShapeBuild_ReShape' as it is used only through the last type.
OpenGl_ShaderProgram::Initialize() - precision declarations have been moved
after the list of enabled extensions.
Declarations.glsl - the fragment shader outputs have been re-declared as array
for proper assignment of default locations (draw buffers).
OpenGl_FrameBuffer - GL_HALF_FLOAT is now used instead of GL_HALF_FLOAT_OES on OpenGL ES 3.2+.
OpenGl_Texture - fixed initialization of Image_Format_RGB32 image format on OpenGL ES 3.0+.
The methods PerformVerticesEE() and PerformVerticesEF() of the class BOPAlgo_PaveFiller have been replaced with the new PerformNewVertices() method.
While splitting the Pave Blocks with extra paves, check that the new Pave Blocks have the valid intersection range. If the new Pave Block does not have such range do not create it and unify its vertices making SD vertex.
Re-computation of the Shrunk Data for the modified Pave Blocks. The new method BOPDS_DS::IsValidShrunkData(const Handle(BOPDS_PaveBlock)& thePB) has been implemented to check that the Shrunk Data of the Pave Block is still valid. It may become invalid in case the tolerance values of the vertices of the Pave Block have been modified.
The test case bugs/modalg_6/bug27448_2 has been marked as BAD, because it uses the invalid shapes as inputs for BOP.
Test cases for the issue 0028690.
Several methods in Selection classes have been moved to header files for better inlining.
BVH_Constants - added new enumeration defining common constant values used with BVH trees.
BVH - replaced NCollection_Handle with Standard_Transient handle
in classes BVH_Properties, BVH_Builder, BVH_Tree, BVH_Object.
Defined global BVH-builders instead of allocating a new one for each object set.
SelectMgr_ViewerSelector - added new method ::SetEntitySetBuilder() defining
default BVH Tree builder for SelectMgr_SensitiveEntitySet.
Added new method SelectMgr_SensitiveEntitySet::SetBuilder()
for overriding default BVH tree builder.
The parameter defining image width has been added to all figures to improve their layout in PDF documents and tweaked depending on the nature of each image.
Additionally, some minor changes improving image and text layout have been introduced.
Remove temporary added possibility for setting image width automatically for generation of pdf documentation.
Now, the range of BRep_CurveRepresentation of the edge is updated if at least one of its boundary is not infinite (earlier, it was updated if all two boundaries are not infinite only).
Reproduced on TDF_Reference attribute that refers to label with zero-tags entry. Make checking of saved/retrieved tags in XML format pass zero-tags as correct.
Subdivision of curve parametric interval based on deflection criteria is added for curve type OtherCurve in
Extrema_GExtPC.gxx. Algorithm of subdivision is implemented in Extrema_Curve(2d)Tool.cxx
New Draw command projpcurve for projection of point on CurveOnSurface is added in SWDRAW_ShapeAnalysis.cxx
projpcurve is modified to reflect "start parameter" in usage message and Draw help.
Quantity_Factor, Quantity_Parameter, Quantity_Ratio, Quantity_Coefficient,
Quantity_PlaneAngle, Quantity_Length, V3d_Parameter and V3d_Coordinate
have been replaced by Standard_Real in visualization classes.
Get rid of iterations on maps with shape key by replacing simple maps with indexed maps. So iteration is done on integer key.
The map containers have been updated to insert into them type definitions of key and value.
The new methods RemoveKey() and RemoveFromIndex() have been added to indexed [data] map to be able to remove an arbitrary key from the map.
All the code in OCCT has been updated where RemoveLast() and Substitute() methods were used to remove a key from indexed [data] map.