0026106: BRepMesh - revision of data model Removed tight connections between data structures, auxiliary tools and algorithms in order to create extensible solution, easy for maintenance and improvements; Code is separated on several functional units responsible for specific operation for the sake of simplification of debugging and readability; Introduced new data structures enabling possibility to manipulate discrete model of particular entity (edge, wire, face) in order to perform computations locally instead of processing an entire model. The workflow of updated component can be divided on six parts: * Creation of model data structure: source TopoDS_Shape passed to algorithm is analyzed and exploded on faces and edges. For each topological entity corresponding reflection is created in data model. Note that underlying algorithms use data model as input and access it via common interface which allows user to create custom data model with necessary dependencies between particular entities; * Discretize edges 3D & 2D curves: 3D curve as well as associated set of 2D curves of each model edge is discretized in order to create coherent skeleton used as a base in faces meshing process. In case if some edge of source shape already contains polygonal data which suites specified parameters, it is extracted from shape and stored to the model as is. Each edge is processed separately, adjacency is not taken into account; * Heal discrete model: source TopoDS_Shape can contain problems, such as open-wire or self-intersections, introduced during design, exchange or modification of model. In addition, some problems like self-intersections can be introduced by roughly discretized edges. This stage is responsible for analysis of discrete model in order to detect and repair faced problems or refuse model’s part for further processing in case if problem cannot be solved; * Preprocess discrete model: defines actions specific for implemented approach to be performed before meshing of faces. By default, iterates over model faces and checks consistency of existing triangulations. Cleans topological faces and its adjacent edges from polygonal data in case of inconsistency or marks face of discrete model as not required for computation; * Discretize faces: represents core part performing mesh generation for particular face based on 2D discrete data related to processing face. Caches polygonal data associated with face’s edges in data model for further processing and stores generated mesh to TopoDS_Face; * Postprocess discrete model: defines actions specific for implemented approach to be performed after meshing of faces. By default, stores polygonal data obtained on previous stage to TopoDS_Edge objects of source model. Component is now spread over IMeshData, IMeshTools, BRepMeshData and BRepMesh units. <!break> 1. Extend "tricheck" DRAW-command in order to find degenerated triangles. 2. Class BRepMesh_FastDiscret::Parameters has been declared as deprecated. 3. NURBS range splitter: do not split intervals without necessity. Intervals are split only in case if it is impossible to compute normals directly on intervals. 4. Default value of IMeshTools_Parameters::MinSize has been changed. New value is equal to 0.1*Deflection. 5. Correction of test scripts: 1) perf mesh bug27119: requested deflection is increased from 1e-6 to 1e-5 to keep reasonable performance (but still reproducing original issue) 2) bugs mesh bug26692_1, 2: make snapshot of triangulation instead of wireframe (irrelevant) Correction in upgrade guide.

Update of tests database Test for 0023838: Standard_OutOfRange in Geom_OffsetSurface::LocalDN (called by BRepFill_PipeShell) Test for 0023866: GccAna_Circ2d3Tan does not find a circle Test for 0023925: BRepFeat_SplitShape produces invalid shape Test for 0023942: Pipe algorithms unrobust to number rounding Test for 0025385: steep increase in tolerance by intersection Test for 0025395: SIGSEGV in BRepOffsetAPI_MakeThickSolid Test for 0025458: can a sweep be used to create 1-fold tori (using a closed wire as path) Test for 0025478: Fillets can not touch Test for 0025481: Edge must not contain obsolete curve representations Test for 0025515: Boolean operation become worse for unknown reason. Test for 0025521: Fillet creates shell with bad orientation of SubShape Test for 0025551: BRepMesh can produce internal nodes outside the face interior based on distorted BSpline surface Test for 0025586: Poor mesh quality, or failure of meshing for closed extruded surfaces with holes Test for 0025626: Loft of ellipses shows wrinkle near seam edge Test for 0025628: BRepMesh fails to mesh face with open wire, considered as correct by checkshape Test for 0025693: Wire of BSplines fails bopcheck Test for 0025730: result of MakeThickSolid aborts the BOPCheck in Geom_OffsetSurface::SetD0 Test for 0025738: BRepMesh fails to produce correct mesh for the face Test for 0025776: HLR returns intersecting edges in OutLineV of helical sweep Test for 0025798: BRepFeat_SplitShape returns invalid result Test for 0025817: crescent face is not meshed Test for 0025827: BRepMesh does not synchronize parameters of glued vertices on small edges Test for 0025837: Bad triangulation when IGES loaded in meters Test for 0025852: Text to BRep algorithm produces bad faces for circled symbols Test for 0025856: BRepOffsetAPI_ThruSections returns an invalid shape if one wire contains degenerated edges Test for 0025879: result of blend fails the bopcheck Test for 0025967: Shape Healing fails to correct a face with missing poles and pcurves Test for 0026052: Missing pcurves are computed incorrectly on two connected faces laying on the same surface Test for 0025061: BRepMesh should skip internal wires with self intersections to produce mesh for the shape anyway Test for 0024490: Computed surface properties differ substantially depending on NaturalRestriction flag Test for 0024568: Split shape produces an invalid result Test for 0024692: fuseedge corruption of spherical edge Test for 0024772: Intersection of cylinder and cone produces incorrect results Test for 0024954: BRepBuilderAPI_MakeFace adds wire with aribitary orientation Test for 0025104: Prism from BSpline curve can not be chamfered Test for 0025206: Fillet creates edge with C0 continuity Test for 0025979: fillet creates faces with non-closed wires Test for 0025983: Fusion of sweep and its mirror invalid Test for 0025994: Boolean fuse result in invalid result. Test for 0026034: Result of revolution aborts the bopcheck if translated Test for 0026077: nurbsconvert of psphere fails the bopargcheck Test for 0025989: toridial surface gets damaged in STEP export