Synchronization of the ShapeAnalysis_Edge behavior with the BRepCheck_Edge by adding check for 2d curves on planes.
Implementation of the BRep_Tool::CurveOnPlane method to avoid code duplication for making PCurve of the edge on planar face.
'BRepTools_History' history was implemented for algorithm
'ShapeUpgrade_UnifySameDomain'.
The history of the changing of the initial shape was corrected to consider all
shapes created by the algorithm as modified shapes instead of generated ones.
The old history interface was replaced by the new one:
- to get the modified shapes use: History()->Modified();
- to check if the shapes has been deleted use: History()->IsRemoved().
- The option SafeInputMode has been added in the class ShapeUpgrade_UnifySameDomain. If it is set then the input shape is protected against modifications of any aspects of its sub-shapes. Default value is true.
- The option "-nosafe" has been added in draw command "unifysamedom". If it is not set the algorithm is run with SafeInputMode switched off.
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
- The methods "Modified" and "IsDeleted" have been added for history support in "ShapeUpgrade_UnifySameDomain" class.
- The new Draw commands "unifysamedommod" and "unifysamedomisdel" have been added.
- Adoption of other algorithms using this one to its new behavior.
Removing code duplication
Correcting regressions
Correcting remarks
Interpolation state check is fixed to mark as valid only ordered sequences of poles.
Refactoring of Approx_SameParameter.cxx.
Test case is added.
Test cases are updated to the new behavior.
Update of testing cases
Add check on empty topological containers.
Add empty shapes to the replacement map.
Add Draw command for Re-Shape.
Add a test grid for reshape with a single use case for starters.
Upgrade check of closeness of 2dcurve to line during projection:
For C1 and more surfaces check distance to normal, not to surface, for C0 surfaces update tolerance formula.
Add check for possible period jump in some inner point.
Update some test cases.
Add cache saving for lines,
update fixPeriodicTroubles() function, using parameters from cashe.
Small correction of test cases for issue #26930
fix processing of points from cache.
Update of test cases according to the new behavior
Fix behavior of fixPeriodicityTroubles() on different isolines,
fix copy/paste mistake.
Update test cases:
iges_2 C4 - return to master values
step_3 E6 - improvement.
In method Approx_SameParameter::Build() for case when 2D and 3D curves is not same parameter calculation of maximal deviation is modified by following way :
Projection is considered as done only if parameter projected point falls within the current interval of parameters.
In the Approx_SameParameter considering tolerance after static method ProjectPointOnCurve was added.
In BRepAlgoAPI_Sewing catch of exception was added and computation of tolerance of edge if same parameter was changed in according to check in BRepCheck_Analyzer
In method Approx_SameParameter::Build() for case when 2D and 3D curves is not same parameter calculation of maximal deviation is modified by following way :
Modification in order to avoid warning
Test case for issue CR24357
A tool to remove tails from the wires of a shape was created.
The tool is based on mechanism 'ShapeFix',
is located in types 'ShapeFix_Wire' and 'ShapeAnalysis_Wire',
is enabled through method 'ShapeFix_Wire::FixTailMode' and
is initialized by methods 'ShapeFix_Wire::SetMaxTailAngle' and 'ShapeFix_Wire::SetMaxTailWidth' and
is called through method 'ShapeFix_Wire::FixTails'.
The status of any performing of the last method is accessible through method 'ShapeFix_Wire::StatusFixTails'.
The tail angle is checked only at the tail start.
Mechanism 'ShapeFix' was modified:
- the tool is disabled by default;
- algorithm 'Fix notched edges' is disabled then the tool is enabled;
- the tool and the last algorithm work in turns then the tool works on the request.
'Draw' command 'fixshape' was extended by options '-maxtaila' and '-maxtailw' to test the tool.
'Draw' tests to test the tool were created.
Algorithm 'fixshape' was changed in type 'ShapeProcess_OperLibrary' to
- use new parameters named 'FixTailMode', 'MaxTailAngle' (in degrees) and 'MaxTailWidth' from the algorithm context;
- apply the tool after the shape will be fully fixed if the tool was enabled.
Place holders for the new parameters were created in the resource file of mechsnism 'STEPControl_Reader'.
Test cases for issue CR26261
1. B-spline cache was moved into separated classes: BSplCLib_Cache for 2D and 3D curves and BSplSLib_Cache for surfaces.
2. The cache is used now in corresponding adaptor classes (Geom2dAdaptor_Curve, GeomAdaptor_Curve and GeomAdaptor_Surface) when the curve or surface is a B-spline.
3. Algorithms were changed to use adaptors for B-spline calculations instead of curves or surfaces.
4. Precised calculation of derivatives of surface of revolution is implemented for the points of surface placed on the axis of revolution (Geom_SurfaceOfRevolution.cxx)
5. Small modifications are made to adjust algorithms to new behavior of B-spline calculation.
6. Test cases were modified according to the modern behavior.
7. Changes in BOPAlgo_WireSplitter, BOPTools_AlgoTools, BRepLib_CheckCurveOnSurface and ShapeAnalysis_Wire to use adaptors instead of geometric entities
8. Allow Geom2dAdaptor and GeomAdaptor in case of offset curve to use corresponding adaptor for basis curve
Modification of test-cases according to the new behavior.
1. Unification of the polygons creation (it is regardless of arguments order).
2. Output of 2dintersect DRAW-command was changed.
3. Geom2dGcc_Circ2d2TanRadGeo.cxx:
Precise intersection point found by Extrema Curve-Curve method (dot product between every tangent vector and vector between points on two curves must be equal to zero).
4. Some comments have been translated from French to English.
Some test case have been updated.
Changes in accordance with the last remark
Test case for issue CR25593
Unstable test cases were reviewed
Modified test cases using checktrend command
Modified test cases for Linux platform
Modified test cases for Debug mode
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.
1. New status "BRepCheck_InvalidPolygonOnTriangulation" is added.
2. Small correction of output of "checkshape" command result.
Test cases were changed.
Test case for issue CR25109
Some test cases were changed according to their new behavior.
Package SWDRAW has been moved to TKTopTest toolkit. Class SWDRAW_ToVRML has been moved to XSDRAWSTLVRML_ToVRML
Removed unused classes:
SWDRAW_ShapeBuild
SWDRAW_ShapeConstruct
XSDRAW_Shape
Removed NSPApply command
Test script update
Removed xtrace command
Main problem:
Algorithm of locale extrema, which is called by "sameparameter" command, cannot find extrema because extremal point is far from initial point. Therefore, reparametrization of edge's curve (for same-parameter) cannot be made properly.
Solve:
Using of global extrema (see Approx_SameParameter.cxx).
As the given edge contains two 2d-curves and the second from them is problem, for select needed curve, an interface of "mk2dcurve" DRAW-command is changed. Now there can be used an index of curve (by default, index = 1, as earlier), see help for more detail information.
Test "heal advanced Z3":
Now checkshape finds only two invalid subshapes. Earlier, it found four subshapes. I think it is not regression. Therefore, test case was changed.
Tolerance reducing.
test
asymmetrical check in Standard_Boolean IntCurve_IntPolyPolyGen::findIntersect was changed to symmetrical.
fix wrong calculation of approx parameter on curve for last polygon segment
Added test case bugs/modalg_5/bug24035
Modified TODO in "de" test cases because there are small differences with old behaviour
Modified test case heal/split_closed_faces/G5 because of corrections in intersector's behavior, which lead to changes in checkshape
Now Extrema_LocateExtPC object is used instead of ShapeAnalysis_Curve::CurveNewton().
Removed CurveNewton() function.
Removed code protecting against null-length b-splines (should be obsolete now).
One TODO removed in test heal *advanced W6
Conflicts:
tests/heal/data/advanced/W6
Fixed regressions:
did 011 A6 C9
xsat 101 G6
Small syntax fix.
1. Fixed tests bugs caf bug350 and bug352 failing in Debug mode due to errors in QA code (removing items from the map during iteration).
2. Debug output messages are ignored in parse.rules in heal and bugs group to avoid false failures in Debug mode after changes made for #23609 and last integration of new tests.
3. Test bugs moddata buc60654 removed as duplicate of bug143.
4. Test bugs moddata bug143 fixed to compare real values properly. New command checkreal added for comparing reals with tolerance.
6. Test bugs caf bug114 is fixed to avoid use of OS-specific commands (command meminfo is used instead). Command checktrend is used to check for possible memory leak.
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