1) BRepMesh_FastDiscretFace.cxx:
- exclude planes from procedure of inserting internal points.
- localize declaration of the container aNewVertices in each method where it is needed.
- correct the logic of the method insertInternalVerticesOther, so that to separate the processes of removing extra points and addition of new points in different cycles, thus making the code more clear and in addition stable.
- insert useful output of intermediate mesh to a file in control() method for debug purposes (with definition DEBUG_MESH).
2) Add global functions MeshTest_DrawTriangles and MeshTest_DrawLinks to draw mesh data in debug session.
3) BRepMesh_FastDiscret:
- in the method Add calculations of deflections have been simplified for non-relative mode.
- replace the attribute MinDist with Deflection in EdgeAttributes structure. Correct its computation so that later to store this value as deflection of the polygon.
4) Make protection against exception in the method BRepMesh_Delaun::addTriangle() when an added triangle creates a third connection of a mesh edge.
5) BRepMesh_EdgeTessellator.cxx, BRepMesh_EdgeTessellationExtractor.cxx: use Geom2dAdaptor_Curve in order to use b-spline cache while computing value on a curve.
6) In BndLib_Box2dCurve::PerformBSpline, avoid creating new b-spline in case of requested parameter range differ from natural bounds insignificantly.
7) In GeomAdaptor classes, postpone building of cache till the time of its actual usage. So, creation of an adapter to compute intervals of continuity does not lead to creation of internal cache.
8) In the methods BRepAdaptor_Curve::Bezier and BSpline do not call Transformed() if transformation is identity.
9) In the classes Geom_BSplineCurve, Geom_BSplineSurface, Geom_BezierCurve, Geom_BezierSurface, Geom2d_BSplineCurve, Geom2d_BezierCurve change the method Pole() to return the point by const reference.
10) In CPnts_AbscissaPoint.cxx, compute derivative by D1 instead of DN to make use of b-spline cache.
11) Change test cases to actual state:
- Number of triangles/nodes can grow due to more accurate work with deflection of edges. Now the edge is tessellated using its own tolerance instead of maximal tolerance of all shapes in the face.
- Accept new numbers of mesh errors (free links, free nodes) for really bad shapes.
- Correct the test "bugs/mesh/bug25612" to produce stable result.
- Disable redundant checks in test cases bug25378* (lower limit for computation time).
- Speed up iso-lines computation for offset of bspline surfaces. For that use adaptor instead of original surface in evaluator of approximation.
- Add output of polylines for debug of insertInternalVerticesOther().
Reference data in test case bugs\moddata_2\bug453_3 have been changed to be close to expected theoretical values. This makes the test give stable result on different platforms.
Modification of algorithm in order to prevent violation of angular and curvature deflection condition for smooth intervals of curve.
Modification of algorithm for calculation of maximal deflection in command crvtpoints, crvpoints (CR25649)
Elementary bug fixing in algorithm GCPnts_UniformDeflection.gxx
Modification of test cases in order to set new reference parameters of shape triangulations
Some tests:
bugs modalg_2 bug397
mesh standard_incmesh C7, V3
mesh standard_incmesh_parallel C7, V3
mesh standard_mesh C7, V3
mesh standard_shading V3
were modified by TODO with reference bug 27226, because some problems in meshing algorithm (package BRepMesh) were discovered when tessellation of edges was changed. These problems cannot be solved by modification of GCPnts_TangentialDeflection algorithm. New issue #27226 was created, see bugtracker for details.
Correction of test data
Test case for issue #27108
Modification of algorithm for improving performance
Correction of test cases
1) Reduce the number of calls to malloc by grouping requests to larger blocks. To achieve this goal, the following ways are used:
- Containers of types sequence, list and map are initialized with an instance of NCollection_IncAllocator, at this taking care of the time of life of allocated objects, so that not to occupy huge amount of memory.
- Allocation of several arrays having the same and short life time is changed so that to allocate a buffer array of necessary size and to place arrays in this buffer.
2) In BRepMesh_FastDiscretFace, optimize the function filterParameters so that to avoid excess memory allocations.
3) In NCollection_CellFilter, change declaration of the method Reset to accept array by reference rather than by value.
4) Add Allocator() method in map, sequence and vector collection classes by analogy with list collection.
5) Correct the size of block for IncAllocator for x64 platform. In order free-ed block to be returned to the system its size should be at least 1024K on x64 and 512K on x86. This allows to retain free virtual space almost to the state before algorithm run.
6) Decrease amount of memory zeroed by calloc. For that, reduce theIncrement parameter of the embedded vectors of the classes NCollection_UBTreeFiller and BRepMesh_VertexInspector to default value 256.
7) Avoid computing bounding box when not necessary (if no relative deflection is used)
8) Cycles by wires of face using TopExp_Explorer are converted to use TopoDS_Iterator instead.
9) BRepMesh_FastDiscret::Add optimized to avoid storing sequences of faces and edges
10) The tests "mesh standard_* W7" are corrected to accept the new behavior. Earlier the following error took place:
Not connected mesh inside face 9
{12 13}
Now this error was replaced with another one:
free nodes (in pairs: face / node):
{9 12}
Actually it is not a regression, rather improvement, if we look at the snapshot.
11) Change other test cases to their actual state.
Check deviation of normals at vertices of triangles for complex surface types different from Bezier and BSpline.
Modified test cased according to changes in BRepMesh.
Do not remove more intermediate parameters than N - 3 in order to have at least one parameter related to surface internals.
Check angle for angular deflection before removement of intermediate parameters.
Unify computation of internal vertices for complex surfaces.
Discretization points of edges are taken into account during computation of step of mesh grid.
Remove parameters only if they fit the constrains along the whole surface.
Do not add random internal parameters in case if their number is just 2.
Force freezing parameters both for U and V in case of significant control point.
Modified test cases
Warnings elimination in vc14.
Command checkplatform was created.
All test cases were updated.
Global variable os_type was eliminated.
New option -osx (MacOS) for procedure checkplatform was added.
BRepMesh_CircleTool: extend radius of circle by quite small value in order to classify points forming inscribed triangle as lying on it. Do not use PConfusion due to false positive result leading algorithm to hanging.
Small correction in test cases bugs/mesh/bug27119
Update of test cases according to the new behavior:
bugs/moddata_1/bug22759
mesh/data/standard/M4
Correction of new vertices insertion: remove all triangles shot by point even if they contain frontier edges in order to prevent cases of free edge glued with frontier;
findNextPolygonLink: choose link with opposite direction to previous one as the last resort in case if the is no another option;
Enlarge bounding boxes by Precision::PConfusion() in order to not to miss possible intersections;
Test-case for issue #26407
Return NoIntersection in case of end point touch and isConsiderEndPointTouch flag is not set
Update of test-cases according to the new behavior
Calculate radius of circumcircle as maximum difference between its center and vertices or reference triangle.
Draw test command OCC25547 has been implemented.
Small optimizations for speed.
Update of test-cases according to the new behaviour
Update of test-cases in group mesh
Move OpenGl_Structure::myZLayer to base class Graphic3d_CStructure.
Graphic3d_ZLayerId - introduce new pre-defined ZLayers.
Do not clear Depth buffer twice for default ZLayer.
AIS_InteractiveContext::Display() - add new argument AIS_DisplayStatus to specify displaying status.
Drop unused Graphic3d_CPick and related methods.
Drop OpenGl_Structure::myNamedStatus - use flags from parent class Graphic3d_CStructure directly.
OpenGl_LayerList ::ChangeLayer(), ::ChangePriority - fix structure remove from unexpected layer.
Merge class OpenGl_PriorityList into OpenGl_Layer.
PrsMgr_PresentationManager::mySelectionColor - store selection color as field of Presentation Manager.
PrsMgr_Presentation class - do not declare private methods as virtual.
PrsMgr_Presentation::Highlight() - extend method syntax and drop methods ::Color() and ::BoundBox().
PrsMgr_PresentableObject - store ZLayer in presentable object
to display object presentations in required layer directly
(without displaying it in wrong layer first).
test/mesh/end - force re-displaying the shape to compute mesh anew
Test-case for issue
New parameter MinSize has been introduced to BRepMesh and GCPnts_TangentialDeflection;
Check length of remaining part of curve for min size parameter instead of distance between two points to avoid large gaps in case highly distorted BSpline surfaces;
Produce fine mesh for sphere and fix other surface;
Test cases for issue CR25378
Correction of test cases for issue CR25378
Compute parameters to produce regular grid and add new internal points according to calculated values.
Use intervals as an additional parameters to determine regular grid for BSpline surfaces.
Test case for issue CR25519
Correction of test case for issue CR25519
Correction of test cases for issue CR25519
Don't create data structures for whole set of faces. Necessary structures are created directly in BRepMesh_FastDiscret.
Don't copy nodes data during scaling, single structure is used.
Remove lines used for debug
Fix sphere: resolve problem came from merging.
Keep code clean - remove unnecessary logic, expected to be used for complicated restoration process.
Test cases for issue CR25364
Use NCollection_Map instead of instantiation of TCollection_Map
Test-cases for issue #25344
Correct error in test script: the shape variable assigned by the command 'restore' must not be referred by '$'.
1. DRAW-commands for curve/surface continuity returning were changed.
2. Output of "distmini" DRAW-command is amended.
3. Function MinMax() was moved from Standard_Real to IntPatch_ImpImpIntersection_4.gxx.
4. Incorrect computing of nbcurveC1 in Geom2dConvert::C0BSplineToC1BSplineCurve(...) function was liquidated.
Test cases were changed.
Test case for 0025142: Visualization breaks triangulation on shared solids in composite solid model
Do not clean the triangulation in StdPrs_ShadedShape::Tessellate() and
let the triangulation tool process the sub-shapes properly.
Treat triangulation consistently in all AIS classes (AIS_Shape, AIS_TexturedShape).
Test cases for issue CR25142
1. Method "SetValues()" for gp_Trsf2d class is added.
2. Method Orthogonalize for gp_Trsf2d and gp_Trsf classes was added.
3. Unused arguments from "SetValues()" method for gp_Trsf was deleted.
4. Output of AppParCurves_MultiPoint Dump was corrected.
5. Method of right projected point choosing was corrected in ProjLib package.
6. Some test cases were changed according to their new behavior.
Advanced mechanism implemented:
- BRep_Tool::IsClosed() method is used to detect non-manifold solids and open shells
- Non-manifold solids are split into closed and open shells
Adding message in test case
Warning was fixed.
Remarks were applied.
- class VMap in Draw was removed
- NCollection_DataMap is used to store objects
- name of object is used to associate Tcl variable with the object
- creation and changing of objects are correclty handled
Redundant casts were removed.
Initial value is restored if variable is protected.
Tests for bug #24863 were added.
Some test cases and tcl command "save" were improved.
Useless using of upvar was removed.
Removed CDL declarations; Data collections are replaced by NCollections; Small code refactoring.
Remove definition of BRepMesh class. Code refactoring of BRepMesh_IncrementalMesh.
Function BRepMesh_Write storing BRepMesh_DataStructureOfDelaun to BRep file is added for debug needs.
Static method BRepMesh_GeomTool::IntLinLin has been added to eliminate code duplications in BRepMesh_Dealun and BRepMesh_CircleTool.
BRepMesh_CircleTool simplified method to find circumcircle.
Fix merging conflicts
Remove redundant function
Fix compilation warning on MacOS
Revert changes occurred during rebase
Resolved merging conflicts
Use parallel flag with BRepMesh_FastDiscret
Test cases for issue CR25039_2
BRepMesh_Classifier: Two-pass approach for intersection check with possibility to run it in parallel mode.
First pass - bounding boxes of segments are checked for overlapping;
Second pass - intersection point is calculated in case if overlapping is detected.
Make NCollection_UBTree::ChangeLastNode() exported due to compilation error on Linux platform.
Reason: method does not depend on template parameters, so it should be available.
Revert previous change and try to use another trick for Linux
Fix compilation warning on MacOS: remove redundant constant
Fix regressions: do not consider insignificant loops in case of self intersections on the same wire.
More sugar solution for compilation errors on NCollection_EBTree on Linux
Test cases for issue CR24968
Increased checking accuracy of endpoints touching of segments.
Code formatting improvement.
Test case for issue CR24775
Correction test case for issue CR24775
Fix compilation error on Linux
Adding test command for this fix
meshPolygon: simplify source polygon by splitting it onto parts without glued edges and loops
Check surrounded triangles during final cleaning of mesh
Correct polygon on frontier edges
Modified test cases in group mesh according to new behavior
Default name for results directory is generated as "results_<branch>_<timestamp>".
In the HTML log of test execution references to script files are made HTML links to relevant files
Aded possibility to put data file for use by test script into subdirectory data of the script folder (function locate_data_file is extended to find such files).
Test demo/testsystem/A1 renamed to locate_data_file and corrected to account for the recent changes.
Default value of CSF_TestDataPath is defined pointing to $CASROOT/data
File psrse.rules corrected in accordance with changed message on missing data file
Interface of command testgrid changed:
- output directory (formerly required argument) is now defined by optional parameter -outdir
- by default tests are run in parallel mode with number of processes equal to number of system CPUs
- check for input arguments is made more strict
Treatment of parameter -outdir of command testgrid corrected.
Function locate_data_file and code to run tests in parallel revised to be usable with Tcl 8.4.
Adjusting testing case demo draw getsource for current state of master
Modifications:
1.Test cases
2. locate_data_file from DrawResources/TestCommands.tcl
Fix for mesh end
Adjusting testing cases for current state of master using new organization of data files
Fix for #23273 issue.
Fix for #23273 issue (boolean/013/R9).
Modifications of tests according to #23260 issue.
Attempt to protect against hang-ups due to waiting for standard input
change of behaviour of offset/shape_type_i/D7 case.
Attempt to protect against hang-ups during initialization of menu in batch mode.
increase cpulimit for parallel incmesh.
#23260 is fixed. count_parallel is not needed anymore.
Deleted unused code.
change of behaviour of offset/shape_type_i/D7 case.
The fix was incorrect.
Second attempt to protect against hang-ups during initialization of menu in batch mode
correction of tests in order to awoid instability.
Elapsed time changed to CPU user time is performance tests.
Processing of errors on Windows.
Stop cpulimit killer if armed by test, after the test is completed