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/*.

0030595: Oriented Bounding Box seems not optimal for some shapes Add possibility of construction of the Optimal Oriented Bounding Box from set of points (the case of shape with triangulation). The interface of the BRepBndLib::AddOBB method is not changed, but the option <theIsOptimal> now controls also the construction of the OBB from Set of points. The slightly modified DiTo algorithm will be used, checking all possible axes created by the extreme points. The performance of the construction of the Optimal OBB is lower but the quality is usually much higher (can't be worse by definition). Test cases for the issue.

0030687: Visualization - remove redundant interfaces SelectBasics_EntityOwner and SelectBasics_SensitiveEntity SelectBasics_EntityOwner has been merged into SelectMgr_EntityOwner. Unused property SelectMgr_EntityOwner::ResetLocation() has been removed. SelectBasics package has been moved from TKService to TKV3d. SelectBasics_SensitiveEntity has been merged into Select3D_SensitiveEntity.

0030621: Implementation of building U-periodical surfaces. draw_test_harness.md - description of new options in Draw commands AppDef_BSplineCompute.hxx, BRepApprox_TheComputeLineOfApprox.hxx, GeomInt_TheComputeLineOfWLApprox.hxx, Approx_BSplComputeLine.gxx - implementation of method SetPeriodic(...) and implementation periodic boundary conditions for multiline in order to get periodic multicurve. GeomAPI_PointsToBSplineSurface.hxx, GeomAPI_PointsToBSplineSurface.cxx - adding new parameter for methods Init(...) and Interpolate(...), implementation of building periodic tangents for first and last AppDef_MultiPointConstraint of multiline for U direction of surface. GeometryTest_APICommands.cxx - implementation of new functionality in Draw command surfapp and surfint GeomFill_NSections.cxx Fixing problem with bugs modalg_3 bug606_2

0029076: Visualization - implement element shrinking Shader Aspect_IS_HOLLOW now an alias to Aspect_IS_EMPTY and Aspect_IS_HIDDENLINE does not implicitly enables mesh edges, so that Graphic3d_AspectFillArea3d::SetDrawEdges() should be set independently. OpenGl_ShaderManager now provides built-in GLSL programs for drawing mesh edges in single pass (and on OpenGL ES which does not provide glPolygonMode()). Graphic3d_RenderingParams::ToEnableAlphaToCoverage is now enabled by default and properly handled at TKOpenGl level - enables coverage for Graphic3d_AlphaMode_Mask primitives. OpenGl_PrimitiveArray now uses GLSL programs instead of glPolygonMode() by default, which can be managed by OpenGl_Caps::usePolygonMode flag (desktop OpenGL only). glPolygonMode() is also used as fallback regardless OpenGl_Caps::usePolygonMode flag when GLSL programs are not supported (Geometry Shaders are required) or stipple line style is required (not implemented within Face GLSL). vaspects command has been extended by -setInterior -setDrawEdges -setEdgeColor -setEdgeType -setEdgeWidth arguments replacing vsetinteriorstyle/vsetedgetype/vunsetedgetype commands. vaspects now accepts arguments without "set" prefix. ViewerTest::ParseColor() now parses RGBA color. Redundant command BUC60738 has been removed. AIS_ColorScale - fixed usage of uninitialized FillArea aspects.

0030129: With newest doxygen 1.8.14 generation of overview gives warnings Doxygen configuration scripts are corrected to avoid '\n' symbols in the end of the @figure alias that caused multiple warning messages. Other Doxygen warnings in Markdown files are eliminated. In CMake builds the format of Doxygen warnings is set to use the style recognized by Visual Studio when compiler is MSVC.

0029692: Add functionality to make the group of touching same-dimensional shapes connected Implementation of the new class *BOPAlgo_MakeConnected* for making the group of touching same-dimensional shapes connected. Provide the material association for the first sub-elements of the input shapes. Provide possibility to make the connected shape periodic. Draw commands for new algorithm: * makeconnected - make the input shapes connected or glued, performs material associations; * cmaterialson - returns the materials located on the requested side of a shape; * cmakeperiodic - makes the connected shape periodic in requested directions; * crepeatshape - repeats the periodic connected shape in requested directions requested number of times; * cperiodictwins - returns all periodic twins for the shape; * cclearrepetitions - clears all previous repetitions of the periodic shape, keeping the shape periodic. Documentation & test cases for the new algorithm.

0029683: Add functionality to make the TopoDS_Shape periodic in 3D space Implementation of the new class *BOPAlgo_MakePeriodic* for making the shape periodic in 3D space. Periodicity of the shape means that the shape can be repeated in any periodic direction any number of times without creation of the new geometry or splits. The idea of this algorithm is to make the shape look similarly on the opposite sides or on the period bounds of periodic directions. It does not mean that the opposite sides of the shape will be mirrored. It just means the the opposite sides of the shape should be split by each other and obtain the same geometry on opposite sides. Such approach will allow repeating the shape, i.e. translating the copy of a shape on the period, without creation of new geometry because there will be no coinciding parts of different dimension. Draw commands for the new algorithm: * makeperiodic - makes the shape periodic in required directions; * repeatshape - repeats the periodic shape in requested periodic direction; * periodictwins - returns the periodic twins for the shape; * clearrepetitions - clears all previous repetitions of the periodic shape. Documentation & test cases for the algorithm.

- [DBH] dox/user_guides/draw_test_harness/draw_test_harness.md
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im001.png
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im002.png
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im003.png
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im004.png
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im005.png
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im006.png
- [DBH] dox/user_guides/modeling_algos/modeling_algos.md

0030008: BRepMesh does not respect angular deflection in internal area of bspline surface 1. Check whether the mesh satisfies the required angular deflection has been amended. Namely normals (to the surface) in the ends of any not "frontier" link are made collinear (with the given angular tolerance). 2. New parameters AngleInterior and DeflectionInterior have been added in IMeshTools_Parameters structure. 3. In case of thin long faces with internal edges, add points of internal edges to control parameters using grabParamsOfInternalEdges() in order to avoid aberrations on its ends. Disable addition of parameters from boundary edges in case of BSpline surface. Deviation can be controlled through the deflection parameter. 4. Grab parameters from edges in case if there is just a single interval on BSpline surface along U and V direction.

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.

- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mesh_001.svg
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mesh_002.svg
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mesh_003.svg
- [DBH] dox/user_guides/modeling_algos/images/modeling_algos_mesh_004.svg
- [DBH] dox/user_guides/modeling_algos/modeling_algos.md

0030145: Modeling Algorithms - Boolean Operations on open solids Provide possibility to perform Boolean operations on open solids. Implementation of the new method *BOPAlgo_Builder::BuildBOP* performing the construction of the result shape for the given type of Boolean operation. This approach does not rely on the splits of solid to be correct and looks for the faces with necessary state relatively opposite solids to build the result solid. The call to this method is performed from BOP algorithm in case there were open solids in the arguments. Implementation of the draw command *buildbop* performing a call to the method above.

0029817: Documentation - avoid excessive use of "please" "Please" is now used in the documentation only in sensitive cases.

- [DBH] dox/user_guides/boolean_operations/boolean_operations.md
- [DBH] dox/user_guides/draw_test_harness/draw_test_harness.md
- [DBH] dox/user_guides/foundation_classes/foundation_classes.md
- [DBH] dox/user_guides/iges/iges.md
- [DBH] dox/user_guides/inspector/inspector.md
- [DBH] dox/user_guides/modeling_algos/modeling_algos.md
- [DBH] dox/user_guides/modeling_data/modeling_data.md
- [DBH] dox/user_guides/shape_healing/shape_healing.md
- [DBH] dox/user_guides/step/step.md
- [DBH] dox/user_guides/visualization/visualization.md

0029734: Modeling Algorithms - Compute global properties of tessellated shape New algorithms calculating global properties on mesh data have been added: - BRepGProp_MeshCinert computes the global properties of polylines represented by a set of points; - BRepGProp_MeshProps computes the global properties of a surface mesh. Existing tool BRepGProp now automatically uses new algorithm for triangulation-only faces. By default, algorithm will use exact geometry objects (surfaces), when it is available (as before the patch); this behavior can be switched by a new flag UseTriangulation, forcing usage of triangulation instead of exact geometry when both defined.

0028747: Incorrect result of the section operation after edge refinement Implementation of the method for simplification of the result of Boolean Operation on the API level. The method BRepAlgoAPI_BuilderAlgo::SimplifyResult has been added, so the derived classes such as BooleanOpeation and Splitter can also use this method. The result shape simplification should be called after the operation is done. The simplification is performed by the means of ShapeUpgrade_UnifySameDomain algorithm. Draw command "bsimplify" has been added to control the simplification options. Documentation for new functionality and draw commands controlling the options of Boolean operations. Test cases for the new functionality. Side-effect change: The algorithms in Boolean component have been changed to use the BRepTools_History as a History tool. Now it became possible to disable the collection of shapes modifications during Boolean Operations, which may be useful for performance sake (in draw the option is controlled by *setfillhistory* command). Draw command "unifysamedom" has been changed to accept the angular tolerance in degrees instead of radians.

- [DBH] dox/user_guides/boolean_operations/boolean_operations.md
- [DBH] dox/user_guides/boolean_operations/images/bop_simple_001.png
- [DBH] dox/user_guides/boolean_operations/images/bop_simple_002.png
- [DBH] dox/user_guides/draw_test_harness/draw_test_harness.md
- [DBH] dox/user_guides/modeling_algos/modeling_algos.md

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.

0029621: Application Framework - Impossible to attach existing tessellation to XCAFDoc_Note - XCAFNoteObjects_NoteObject transfer object for note's auxiliary data was added. It contains the following fields: text and attachment positions, note plane and tesselated presentation - GetObject/SetObject methods were added to XCAFDoc_Note attribute. The following sub-labels were added to handle transfer object: 1 - text position 2 - note plane 3 - attachment point 4 - tesselated presentation - documentation updated Off-topic: procedure genproj now gives meaningful error message if new package is added but not listed in UDLIST

0029800: Upgrade Guide - TInspector correction documentation TInspector documentation is updated

- [DBH] dox/user_guides/inspector/images/3DView.png
- [DBH] dox/user_guides/inspector/images/3DView_set_orientation.png
- [DBH] dox/user_guides/inspector/images/TStandaloneEXE.png
- [DBH] dox/user_guides/inspector/images/TStandaloneEXE_open.png
- [DBH] dox/user_guides/inspector/images/VStudio_projects.png
- [DBH] dox/user_guides/inspector/images/dfbrowser.png
- [DBH] dox/user_guides/inspector/images/dfbrowser_selection_in_tree_view.svg
- [DBH] dox/user_guides/inspector/images/drawexe_tinspector.png
- [DBH] dox/user_guides/inspector/images/preferences.png
- [DBH] dox/user_guides/inspector/images/property_panel_item_selection.svg
- [DBH] dox/user_guides/inspector/images/search.png
- [DBH] dox/user_guides/inspector/images/shapeview.png
- [DBH] dox/user_guides/inspector/images/shapeview_tree_columns.png
- [DBH] dox/user_guides/inspector/images/treeview_preferences.svg
- [DBH] dox/user_guides/inspector/images/vinspector.png
- [DBH] dox/user_guides/inspector/images/vinspector_tree_columns.png
- [DBH] dox/user_guides/inspector/inspector.md
- [DBH] dox/user_guides/ocaf/ocaf.md

0029755: Proofread changes in the user guides from v7.2 to v7.3 Recent modifications and additions in the user and dev guides have been reviewed (except for upgrade.md and inspector.md).

- [DBH] dox/user_guides/boolean_operations/boolean_operations.md
- [DBH] dox/user_guides/draw_test_harness/draw_test_harness.md
- [DBH] dox/user_guides/modeling_algos/modeling_algos.md
- [DBH] dox/user_guides/modeling_data/modeling_data.md
- [DBH] dox/user_guides/visualization/visualization.md
- [DBH] dox/user_guides/xde/xde.md