Walking line method extraction into separate class IntTools_WLineTool.
New purging method of walking line had been added. Now point which are out of bounds are deleted.
Minor corrections.
Test case for issue CR26775
1) Macro definition WNT replaced by _WIN32 and _MSC_VER for platform and compiler detection accordingly.
2) Macro definition LIN replaced by __linux__ macro.
3) Macro definition DEB replaced by OCCT_DEBUG macro.
class IntTools_Context
- method:
Geom2dHatch_Hatcher& IntTools_Context::Hatcher
(const TopoDS_Face& aF)
- method:
IntTools_SurfaceRangeLocalizeData& IntTools_Context::SurfaceData
(const TopoDS_Face& aF)
The memory allocation is provided using inner allocator of the object.
Test-case for issue #26616
The main reason of the bug is incorrect extending line in SeveralWlinesProcessing(...) function.
Additionally, interface of IntPatch_WLine::Dump(...) method has been changed.
Change some test cases according to their new behavior.
Test-case for issue #26621
I ComputePurgedWLine() function:
Excess points in walking line are deleted when:
1) Distance between neighboring points too small.
2) Points lie in one pipe without big jump on chord length.
III
Fixed problem with extremaPC with too close knot distribution to [minParam, maxParam] borders.
IV ApproxInt_Approx.gxx
New division criteria in intersection approximator.
III Test case
Test cases update to the new behavior.
Test case for CR21564
Correction of test cases for issue CR21564
1. Inline methods have been moved to hxx-file.
2. Geometric part of BRepLib_CheckCurveOnSurface has been moved to GeomLib_CheckCurveOnSurface.
Move try/catch treatment to low level (from BRepLib_CheckCurveOnSurface to GeomLib_CheckCurveOnSurface).
Computing is unified. ComputeFastTol3d() method was deleted.
If intersection result contains 3D- and corresponded two 2D-curves then tolerance will be computed with using BRepLib_CheckCurveOnSurface algorithm (check same-parameter).
If intersection result contains only 3D-curve (getting 2D-curve can be switched off by users) then tolerance will be computed with using GeomAPI_ProjectPointOnSurf algorithm (projects some point of 3D-curve on the surface and finds maximal distance).
Some workarounds have been deleted.
Some test case have been changed.
1. JoinWLines algorithm has been improved.
2. Reference to the V-boundaries is deleted when computing step.
3. Decreasing the tolerance when computing parameters of WLine.
4. Adding boundary point is forbidden if it lies in prolongation of found ones.
5. Possible reason of exception has been eliminated.
6. Processing of critical point has been improved.
Test cases for this issue have been created.
Correction of some test case(s).
Test case bugs/modalg_6/bug26310_4 is added
Update of test-cases for issue #26310
Adaptations for compiling with GCC 4.7 and 4.8:
- Construction semantics is used for Handle objects being initialized by const Handle objects of derived type, to avoid overload resolution error in GCC 4.7.
- Missing includes added.
- Fixed bugs related to misuse of direct casts of handle.
- Eliminate CLang warnings on uninitialized and unused variables, functions, and expressions
Automatic upgrade of OCCT code by command "occt_upgrade . -nocdl":
- WOK-generated header files from inc and sources from drv are moved to src
- CDL files removed
- All packages are converted to nocdlpack
Code corrected to avoid ambiguous situations due to changed implementation of Handle (overloaded methods accepting handles of different types).
In Adaptor3d_CurveOnSurface added method Load() with two parameters, allowing to avoid ambiguity of cast of handles when calling separate methods Load() for curve and surface, replacing by single call.
In DrawTrSurf and IGESData_IGESWriter, template variants of methods Set() and Send(), respectively, are added to avoid ambiguity when these methods are called with handles to derived types (using SFINAE).
In NCollection_DefineHSequence, method Append() accepting handle to another HSequence is made template, to be available only if argument has compatible type.
Automatic update by command "occt_upgrade . -downcast"
C-style cast of Handle to that of derived type (now illegal) is replaced by call to DownCast()
Const reference local variables of Handle type initialized by result of DownCast are replaced by normal variables.
Package SortTools and its derived classes are removed; STL sort algorithms are used instead.
Comparator objects are mostly reimplemented as local classes.
Check the validity of the intersection point between Faces.
Test case for issue CR26316
Correction of the test case for the issue.
Small correction of test case for issue CR26316
Changes:
class IntTools_FClass2d
- method:
TopAbs_State IntTools_FClass2d::Perform
(const gp_Pnt2d& _Puv,
const Standard_Boolean RecadreOnPeriodic) const
has been changed.
The value of tolerance
For the value of tolerance for classification,
the minimum (among UResolution, VResolution) value is used.
Test case for issue CR26080
Class IntTools_FClass2d
method:void IntTools_FClass2d::Init(const TopoDS_Face& aFace,const Standard_Real TolUV)
has been changed.
The cases where derivattive angles that are near to PI are considered as a sign to avoid express treatment for that wire
Test case for CR25969
1. Restriction line is processed in IntTools_FaceFace with using methods of GeomInt_IntSS class.
2. Check, if Restriction- and Walking-lines (or Restriction-Restriction lines) are coincided, has been added in IntPatch_ImpPrmIntersection.cxx (at that RLine is considered to be isoline only).
3. Check, if RLine and GLine are coincided, has been added in IntPatch_ImpImpIntersection.cxx.
4. Create new class IntPatch_PointLine, which is inherited from IntPatch_Line.
5. The reason of exception (in DEBUG MODE) has been eliminated.
New test cases for issue #25416 were added.
tests/bugs/modalg_5/bug24650 was modified.
Changes:
class IntTools_FaceFace
- method:
void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
const TopoDS_Face& aF2)
The treatment of infinite planes was corrected.
Test case for issue CR25818
1. class BOPAlgo_PaveFiller
method void BOPAlgo_PaveFiller::PerformEF()
Do not create intersection vertices in case if it lies ON the boundary of the face.
2. class IntTools_Context
New method
Standard_Boolean IntTools_Context::IsPointInFace
(const gp_Pnt& aP,
const TopoDS_Face& aF,
const Standard_Real aTol)
has been implemented to check if the point IN the face.
3. class IntTools_EdgeFace
method
void IntTools_EdgeEdge::FindBestSolution(const Standard_Real aT11,
const Standard_Real aT12,
const Standard_Real aT21,
const Standard_Real aT22,
Standard_Real& aT1,
Standard_Real& aT2)
Treatment of the touching cases.
Test cases for issue CR24646
Correction of test cases for issue CR24646
1. Curve boundaries were more precised.
2. Some test cases were changed in accordance of their new behavior.
3. Code fragment for WLines joining was moved to higher level (for more universal using in the future).
Code was changed in accordance with the last remark.
Added test cases bugs/modalg_5/bug25715_1 bug25715_2 bug25715_3
1. The tool of computing the max distance between 3D curve and its 2d representation on the face
has been moved from static methods in BOPTools_AlgoTools class to BRepLib_CheckCurveOnSurface class.
2. The tools has been applied to 2d curves built during Boolean Operation
and to some intersection curves.
3. The functions
Standard_Boolean BOPTools_AlgoTools::ComputeTolerance
(const TopoDS_Face& theFace,
const TopoDS_Edge& theEdge,
Standard_Real& theMaxDist,
Standard_Real& theMaxPar)
and
Standard_Boolean IntTools_Tools::ComputeTolerance
(const Handle(Geom_Curve)& theCurve3D,
const Handle(Geom2d_Curve)& theCurve2D,
const Handle(Geom_Surface)& theSurf,
const Standard_Real theFirst,
const Standard_Real theLast,
Standard_Real& theMaxDist,
Standard_Real& theMaxPar)
have been developed for easy access to BRepLib_CheckCurveOnSurface functionality.
class IntTools_FaceFace
method void IntTools_FaceFace::ComputeTolReached3d()
Case for Plane/BSpline intersection added for treatment.
Test case for issue CR25597
Fix for regression boolean bsection N7.
class BOPAlgo_PaveFiller
method
void BOPAlgo_PaveFiller::UpdateFaceInfo
(BOPDS_DataMapOfPaveBlockListOfPaveBlock& theDME,
const BOPCol_DataMapOfIntegerInteger& theDMV)
Updating Face Info information with new vertices created in PostTreatFF.
Correction boolean/bsection/N2
Updated test cases.
Changes:
1. class IntTools_FaceFace
method:
void IntTools_FaceFace::MakeCurve(const Standard_Integer Index,
const Handle(Adaptor3d_TopolTool)& dom1,
const Handle(Adaptor3d_TopolTool)& dom2)
The value of testing parameter has been changed for the cases of infinite curves
Test case for issue CR25456
Changes:
1. class IntTools_EdgeFace
method:
Standard_Boolean IntTools_EdgeFace::CheckTouchVertex
(const IntTools_CommonPrt& aCP,
Standard_Real& aTx)
The parametric size of the contact zone between vertex and face has been changed
Test cases for issue CR25449
Macros ending on "DEB" are replaced by OCCT_DEBUG across OCCT code; new macros described in documentation.
Macros starting with DEB are changed to start with "OCCT_DEBUG_".
Some code cleaned.
class IntTools_EdgeEdge
method
void IntTools_EdgeEdge::FindSolutions(const IntTools_Range& theR1,
const IntTools_Range& theR2,
const Bnd_Box& theBox2,
IntTools_SequenceOfRanges& theRanges1,
IntTools_SequenceOfRanges& theRanges2)
Looking for the solutions of the intersection between edges with greater precision.
Test cases for the issue.
class IntTools_ShrunkRange
method void IntTools_ShrunkRange::Perform()
Fix to avoid creation of small section edges.
Correction of test case for issue CR23753
Modifications in Edge/Edge intersection algorithm:
1. Condition to create common part of type TopAbs_EDGE is changed.
2. Correct treatment of closed edges.
Small correction to eliminate warning.
Test case for issue #25237
class IntTools_FaceFace
method
static Standard_Boolean DecompositionOfWLine(const Handle(IntPatch_WLine)& theWLine,
const Handle(GeomAdaptor_HSurface)& theSurface1,
const Handle(GeomAdaptor_HSurface)& theSurface2,
const TopoDS_Face& theFace1,
const TopoDS_Face& theFace2,
const IntTools_LineConstructor& theLConstructor,
const Standard_Boolean theAvoidLConstructor,
IntPatch_SequenceOfLine& theNewLines,
Standard_Real& theReachedTol3d,
const Handle(IntTools_Context)& aContext)
Correct treatment of WLines with only one point before or after the boundary point.
Test case for issue CR25002
class IntTools_FaceFace
method
void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
const TopoDS_Face& aF2)
Change the approximation flags according to the order of faces.
Test case for issue CR25019
class IntTools_Tools
method
Standard_Boolean IntTools_Tools::AdjustPeriodic
(const Standard_Real thePar,
const Standard_Real theParMin,
const Standard_Real theParMax,
const Standard_Real thePeriod,
Standard_Real &theNewPar,
Standard_Real &theOffset,
const Standard_Real theEps)
The new function has been implemented for fast adjustment of pcurves to the range of surface.
Test case correction for issue CR24981
Modification:
class IntTools_EdgeEdge
For correct computation of resolution for curves of type Hyperbola and Parabola two new static functions have been implemented:
static
Standard_Real ResolutionCoeff(const BRepAdaptor_Curve& theBAC,
const IntTools_Range& theRange);
static
Standard_Real Resolution(const Handle(Geom_Curve)& theCurve,
const GeomAbs_CurveType theCurveType,
const Standard_Real theResCoeff,
const Standard_Real theR3D);
bugs moddata_2 bug26_2 - improvement.
Test case for issue CR24939
Test case correction for issue CR24939
Mostly duplicated comments were removed and missing ones were moved
into dedicated class CDL files.
Some more duplicated comments were removed from CDL files.
Correction of merge
Classes BOPInt_Context, BOPInt_ShrunkRange, BOPInt_Tools have been removed.
Package BOPInt has been removed
Classes IntTools_Context, IntTools_ShrunkRange have been added to replace corresponding BOPInt_ classes.
The classes provide same functionality as corresponding BOPInt_ classes.
Classes :
BOPAlgo_ArgumentAnalyzer
BOPAlgo_Builder
BOPAlgo_BuilderArea
BOPAlgo_BuilderFace
BOPAlgo_BuilderSolid
BOPAlgo_CheckerSI
BOPAlgo_PaveFiller
BOPAlgo_ShellSplitter
BOPTools_AlgoTools3D
BRepFill_TrimShellCorner
IntTools_BeanFaceIntersector
IntTools_EdgeFace
IntTools_FaceFace
IntTools_Tools
have been modified to use new classes IntTools_Context IntTools_ShrunkRange
Class IntTools_Tools has been modofied to provide the functionality that was in BOPInt_Tools.
Redundant keyword 'mutable' removed in CDL files.
In IGESConvGeom_GeomBuilder, unused methods MakeXY() and MakeXYZ() removed.
Method StepAP214_AutoDesignGroupAssignment::Init() replicating same method of the base class is removed as it causes CDL extraction error after above (seemingly irrelevant) changes.
Range of changing of some analytic curves is computed by other methods. It allows computing face's boundaries with more precise.
Tolerance was increased to provide successful work of some algorithms.
Functions BRepOffsetAPI_MiddlePath::Build() and ApproxWithPCurves(...) (file IntTools_FaceFace.cxx) were changed according to new result of algorithm's work.
It is possibly for "outboundaried faces" (see bug#23675) to compute incorrect UV-Bounds, when first parameter is more than last. To avoid it, extended control of computed bounds was added.
Function for fail sameparameter fixing was added to HLRAppli_ReflectLines to avoid creation bad shapes after algorithm's work.
In file ShapeFix_ComposeShell.cxx only text formatting was changed.
Some test cases are changed according to their new behavior.
Added test case bugs/moddata_3/bug23511
class IntAna_QuadQuadGeo
The changes have been done to provide the treatment the cases
when the value of the angle between the planes is small and
the origin of intersection line should be refined.
class IntTools_FaceFace
The changes have been done to provide the treatment of faces
in cases when both are based on planar surfaces.
The UV-bounds have been extended to provide correct solutions
as it has been done for all other cases with plane-based faces.
Added test case bugs/modalg_5/bug24914
Modified length of result shape in test case bugs/modalg_1/bug10232
Blend_Walking_1: value returned by TestArret() deleted.
IntTools_EdgeFace: deleted redundant parameter ff2 and anIsProj2 associated with ff2, since ff2 = !ff1. Refactoring.
ProjLib_ProjectedCurve: treatment of surface of revolution is symmetric for surface of revolution now. Refactoring.
Modifications:
class IntTools_EdgeEdge
1. method
Standard_Boolean IntTools_EdgeEdge::FindParameters(
const BRepAdaptor_Curve& theB
const Standard_Real aT1,
const Standard_Real aT2,
const Standard_Real theRes,
const Standard_Real thePTol,
const Bnd_Box& theCBox,
Standard_Real& aTB1,
Standard_Real& aTB2)
Added protection for large values of parameters of the edges.
2. methods
static Standard_Boolean BndCommon(const Bnd_Box& theB1,
const Bnd_Box& theB2,
Bnd_Box& theBOut)
and
IntTools_EdgeEdge::FindSolutions()
have been removed as redundant.
Test case for issue CR24823
class IntTools_FaceFace
- statc function:
void CorrectSurfaceBoundaries(const TopoDS_Face& theFace,
const Standard_Real theTolerance,
Standard_Real& theumin,
Standard_Real& theumax,
Standard_Real& thevmin,
Standard_Real& thevmax)
The faces based on cylidrical surface has been added to the list of candidates to extend the boundaries
Test case for issue CR24851