0029679: Draw Harness - Command 2dapprox works wrong when giving points in command line Correct the behavior of the command 2dapprox for the case of points input in the command line. Restore the work of the command 2dinterpole (implemented in the same method as 2dapprox). Add test cases. Correct generation of snapshots for the tests lowalgos/2dinter/*.

0030655: Modeling Data - Provide interfaces for selection of the elements from BVH tree Provide the easy to use interfaces for selection of the elements from BVH tree. The selection rules should be implemented in the selector class derived from *BVH_Traverse* or in *BVH_PairTraverse* in Reject/Accept methods. The *BVH_Traverse* is used for selection of the elements from the tree. The *BVH_PairTraverse* is used for selection of the pairs of elements from two BVH trees. Auxiliary changes: - Two methods BVH_Box::IsOut(OtherBox) and BVH_Box::IsOut(Point) have been added; - Added methods for conversion of Bnd boxes to BVH boxes Added new class *BVH_Tools* containing useful static methods operating on BVH points and boxes. The classes BRepExtrema_OverlapTool and BVH_DistanceField have been rebased to use the new traverse methods.

0030354: BOP Cut doesn't modify the attached face The reason of this problem is in wrong work of classifier algorithm (see the message ~0080992 to the issue #30354). Therefore, the algorithm of IntTools_FClass2d class has been improved. Namely, now orientation of the polygon is computed from area-criterion instead of angle. As result, some simplification of the method IntTools_FClass2d::Init(...) has been made. <!break> 1. New constructor has been added to the class CSLib_Class2d. It allows applying TColgp_SequenceOfPnt2d. 2. DRAW-commands "addpolygonnode" and "polygonprops" have been created. They are covered by the test case "tests/geometry/2dpolygon/A1". 3. New method Poly::PolygonProperties(...) has been created. See help for detailed information. 4. New testgrid "lowalgos classifier" has been created.

0028493: [Regression vs 7.0.0] Intersection algorithm produces curve with loop 1. New testgrid "lowalgos/intss" has been created. It will contain all test cases on geometrical intersection of two surfaces ("intersect" DRAW-command) and two faces ("bopcurves" DRAW-command). 2. New test case for the issue #28493 has been created because the problem is not reproduced on MASTER. 3. Test case (lowalgos/intss/bug24472) for the issue #29501 has been modified in order to check loops of the resulting intersection curves.

0029694: Geom2dGcc_Circ2dTanCenGeo crash The reason of this issue is in incorrectly interpreted the generic class "TheExtPC" (eliminated after the fix 0024773) as Extrema_ExtPC2d. Correct interpretation must be "Extrema_EPCOfExtPC2d" class. Now this problem has been fixed in the class Geom2dGcc_Circ2dTanCenGeo. New testgrid "lowalgos 2dgcc" has been created.

0029465: Regression relation to 691 version: Extrema_ExtCC returns IsParallel equal to true for not parallel curves Strengthening of the criteria of the parallel status of the curves by additional checking if the ends of the curves do not diverge. Test cases for the issue.

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.

0029368: Incorrect intersection state of the intersection point of two 2d curves In the algorithm math_FunctionRoots, improve the case when it is needed to find the extremum of the function. Earlier, to solve this task the method of gold section was used. With the patch, firstly the algorithm tries to find zero value of the derivative function. In most cases it gives precise result. Secondly, the algorithm tries to find zero value of the function using the old approach. The algorithm chooses the best solution among two computed by different methods. In the method PutStickPavesOnCurve of BOPAlgo_PaveFiller, forbid putting a vertex to the end of the curve if this end already has a vertex assigned to it. This allows getting rid of unwanted colliding of vertices. In the method UpdatePaveBlocks of BOPAlgo_PaveFiller, make the check for micro edges more precise. New category of tests "lowalgos" has been added. Tests for low level algorithms are to be put there. "2dinter" is a new group of tests in this category. Introduction of the new key for "2dintersect" command, allowing printing the intersection state for each point. It has the following syntax now: "2dintersect curve1 [curve2] [-tol tol] [-state]" Options: -tol - allows changing the intersection tolerance (default value is 1.e-3); -state - allows printing the intersection state for each point. Correct the test case bugs/modalg_7/bug28274 to make proper checks of the result.