0032849: Modeling Algorithms - Intersection algorithm returns incomplete result. GeomInt/GeomInt_IntSS.cxx, IntTools/IntTools_FaceFace.cxx - setting deflection 0.01 for case of two bspline surfaces IntPolyh/IntPolyh_Intersection.cxx, IntPolyh/IntPolyh_Intersection.hxx - status IsParallel is added BndLib/BndLib_Add3dCurve.cxx, IntTools/IntTools_TopolTool.cxx - fix small bugs Correction of test scripts according to current behavior of algorithms lowalgos/intss/bug32849 - test case added
0024418: Modeling Algorithms - Wrong section curves when intersecting analytical surfaces IntPatch_ALineToWLine.cxx - setting minimal number of points in a WLine depending on step size IntPatch_WLineTool.cxx - fix WLines connecting check condition test cases has been changed according to new behavior
0030151: Modeling Algorithms - Removal of the API level of old Boolean operations algorithm (BRepAlgo_BooleanOperation) The following classes have been removed as obsolete: - BRepAlgo_BooleanOperation - BRepAlgo_Fuse - BRepAlgo_Cut - BRepAlgo_Common - BRepAlgo_Section The corresponding classes from BRepAlgoAPI package have to be used instead. Draw commands: - fuse - cut - common - section/psection have also been removed as obsolete. The corresponding commands for modern Boolean operations algorithm (bfuse/bcut/bcommon/bsection) have to be used instead. Adjustment of the test cases to use the commands for modern algorithm.
0032404: Draw - problems with definition of cpulimit in tests - The maximum value of cpulimit in test cases was limited to 1000 seconds (~ 17 minutes) - cpulimit 1000 has been added to hlr/begin
0032208: Tests - refactor visualization tests to cover several graphic drivers Removed testgrids 'bugs/vis' and '3rdparty'; tests have been redistributed across other grids. Moved testgrid 'v3d/ivtk' into dedicated 'vtk/ivtk'. Added testgrid 'vselect' dedicated to 3D viewer picking/selection functionality and filled with tests from 'v3d/vertex', 'v3d/face' and similar groups. Added testgrid 'opengl' dedicated to OpenGL driver low-level functionality (GLSL programs and similar) and filled with tests from 'v3d/glsl', 'v3d/raytrace', '3rdparty/fonts', 'bugs/vis' (portion) and similar. Added testgrid 'opengles3' dedicated to OpenGL ES 3.0 driver low-level functionality and reusing tests from 'opengl' testgrid. Subgroup 'opengles3/raytrace' is disabled on Windows, as Ray-Tracing currently requires OpenGL ES 3.2. while ANGLE library implements only OpenGL ES 3.0. Added testgrid 'opengles2' dedicated to OpenGL ES 2.0 driver low-level functionality and reusing a limited subset of passing tests from 'opengl' testgrid. Currently testgrid is activated only on Windows platform when using ANGLE library (properietary OpenGL ES drivers do not allow creation of restricted 2.0 context). Test cases have been cleaned out to put bug description into log, to properly load necessary plugins and to explicitly dump viewer.
0027531: Modeling Algorithms - Make the algorithm Approx_SameParameter more clear and robust Approx/Approx_SameParameter.cxx,hxx: Class Approx_SameParameter refactoring. Logic is changed in many places to unify usage, simplify maintenance. Method Curve2d() is changed to return Geom2d_Curve instead of Geom2d_BSplineCurve. Corresponding message is added to the upgrade guide. .lxx file is merged into .hxx. Tangent computation is extracted into special method. Comparing number of sample points after CheckSameParameter(...) is added to define cases with projection fails. Undesirable behavior when curves are not same parameterized is fixed. Geom2dAdaptor/Geom2dAdaptor.cxx: treatment of offset curve is added Adaptor3d/Adaptor3d_TopolTool.cxx: minor improvement of performance for BSpline surfaces with huge number of knots Tests were modified according to new behavior of sameparameter algorithm
0029967: Draw Harness - command bounding has annoying syntax Bnd_OBB constructor from Bnd_Box is fixed for VOID input. DRAW command bounding command is adjusted: - Support of old syntax 'bounding shape'is restored. - Exception on VOID bounding box is avoided. - Arguments are handled in case-insensitive way. - Options -s, -perfmeter, and ability to set result as first argument are removed as redundant. - Help is moved to command definition. Separate command OCC29311 is added (in QADraw) to do the same as option -perfmeter did; tests are updated.
0029711: General Fuse operation produces invalid result The following improvements have been introduced in Boolean Operations algorithm s: 1. UBTree is replaced with EBTree in Boolean operations to be able to add/remove elements into the tree of bounding boxes. 2. Repeated (nested) intersection of sub-shapes is performed with argument vertices whose tolerances increased during the operation. 3. The algorithms of Edge/Edge and Edge/Face intersection have been improved for the cases when the intersection point is located close to the edge boundaries . 4. New procedure has been implemented to ensure forced creation of Edge/Face common blocks in cases when the edge is really close to the face. 5. Post-processing of Face/Face intersection results has been improved. 6. Extension of the planar faces for Plane/Plane intersection is avoided. 7. Builder Face now better classifies potentially internal edges relatively to new faces with filtering by bounding boxes. Side effect changes: 1. IntTools_ShrunkRange now keeps the length of the valid range of the edge. 2. The method BOPDS_DS::UpdateEdgeTolerance() has been removed as unused (replaced by the BOPAlgo_PaveFiller::UpdateEdgeTolerance()). Test case for the issue 0029900. Test case for the issue 0029711. Adjustments of the existing test cases. Avoid using uninitialized variables.
0029586: Revolution creates solid with degenerated edges shared among faces Substitution of degenerated edges by their copies is implemented to make edges not shared in BRepPrimAPI_MakeRevol::Build(). Method BRepPrimAPI_MakeRevol::Generated(...) is changed in order to use history of substitutions. Test case is added.
0029663: Exception in BRepFill_PipeShell algorithm BRepFill_Sweep algorithm is improved to handle cases when generated revolution surface has degenerated point in the middle. Added test bugs modalg_7 bug29663 TODO added in test bugs modalg_1 bug1477_11: here two additional self-intersecting faces are now created, previously missing from the result.
0029646: Boolean Operations algorithm produces a face with self-intersecting wire Boolean operations - Allow repeated intersection of edges to find the coinciding pairs. Previously, only the edges rejected by bounding boxes classification has been additionally checked on coincidence. The current patch removes this filter allowing all edges with coinciding vertices to be checked on coincidence. Adjustment of the test cases for current behavior: 1. The following cases are improvements: boolean volumemaker A8 bugs modalg_1 buc60703_1 bugs modalg_1 buc60703_2 bugs modalg_1 buc60703_4 bugs modalg_6 bug26789_1 bugs modalg_6 bug26789_2 bugs modalg_7 bug26883_4 bugs modalg_7 bug27948 2. bugs modalg_7 bug29580_1 is modified to extend the validity checks.
0028097: Test system does not recognize 'fail...' messages as errors Test parse rules are improved to recognize messages with word 'fail' or 'failure' as errors. Test cases are corrected accordingly (TODO or REQUIRED statements added where fail messages were not noticed previously).
0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection algorithm The usage of *BRepAlgo_Section* has been replaced with the usage of *BRepAlgoAPI_Section* in *BRepProj_Projection* algorithm. The TODO statements have been removed from the failing test case in the "prj" grid as they are working correctly now. The following changes have been made to improve the performance *BRepAlgoAPI_Section*: 1. Revision of the *IntPolyh_Intersection* class to avoid repeated calculation of the deflection of the same triangulation. 2. Small revision of the Edge/Face intersection algorithm to perform Extrema computation on the whole intersection range of the edge instead of discrete ranges. 3. Implementation of the extrema computation for the Circle and Sphere. 4. Correct computation of the parameter of the point on the Circle.
0029311: Implementation of the Oriented Bounding Boxes (OBB) functionality 1. The class Bnd_OBB has been created to describe the Oriented Bounding Box. 2. Several key methods have been implemented: Bnd_OBB::IsOut(...), Bnd_OBB::Add(...) and Bnd_OBB::Enlarge(...). 3. Interface of Bnd_Box class has changed. New methods have been created. See Bnd_Box.hxx for detailed information. 4. BRepBndLib and Draw_Box classes have been amended in order to provide correct work with Bnd_OBB class. 5. Interface of "bounding" DRAW-command has been changed. Please see help for detailed information. 6. New DRAW-command "isbbinterf" has been created. Please see help for detailed information. 7. "boundingstr" and "optbounding" DRAW-commands have been eliminated because their function can be made by "bounding" DRAW-command (e.g. see tests/bugs/vis/buc60857 or samples/tcl/snowflake.tcl test cases). 8. Documentation has been updated.
0028775: Code duplication removal across the BOPAlgo_PaveFiller algorithm 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.
0028456: BRepBuilderAPI_MakeFace modifies the input shape 1) BRepLib::UpdateTolerances(..) & BRepLib::SameParameter(..) functions now support non-mutable input feature. reshaper is used to store modified copies of subshapes of original (input) shape(s) as substitutions. 2) IsNewShape(..) method has been added to BRepTools_ReShape to check if the given shape has been recorded as a value