1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-13 14:27:08 +03:00
Commit Graph

1206 Commits

Author SHA1 Message Date
emv
7816900b8e 0030708: Modeling Data - Exception is raised while initializing TopoDS_Iterator with null shape
Added protection from null shapes to TopoDS_Iterator::Initialize method.
2019-05-15 14:04:11 +03:00
emv
fde63ce40b 0030522: Modeling Algorithms - BRepBuilderAPI_MakeWire produces different wires depending on the order of parameters
The following improvement has been implemented in BRepLib_MakeWire class to make it more reliable:
1. Quit adding edges of a wire into result if the current edges have not been added. Return NotDone status.

Test case for the issue.
2019-03-18 10:46:27 +03:00
jgv
bdb1db500e 0026717: Error in IntPatch_PrmPrmIntersection: change of local resolution leads to break of walking line
Test case for issue CR26717

Correction of test cases for issue CR26717

Test case for issue CR26717
2019-02-26 07:56:57 +03:00
emv
1e9eac7032 0030490: Modeling Algorithms - Incomplete result of Cut operation
Unify the vertices of the small section edges (part of the commit for #0027448).

Test case for the issue.
2019-02-25 15:36:39 +03:00
nbv
f14997ca27 0029887: Wrong result of CUT operation due to incorrect point-face classification
Using of input tolerance has been eliminated in Geom2dInt_GInter algorithm called from BRepClass_Intersector::Perform(...) method. Now, the input tolerance is used only for check ON-status of classification.

(cherry picked from commit 748c9dc6ae0d6018018fca585b6d8cf511c0dd0b)
2018-06-21 12:16:44 +03:00
emv
e491cf27df 0029387: Incorrect result of cut a face with several shapes
Eliminate normalization of the section curve while making approximation.
Remove section edges having no valid range.
Test case for the issue.
2017-12-25 16:24:52 +03:00
msv
a7d8971008 0029159: Sewing fail when using a maximum tolerance
Force setting truly computed tolerance of the edge if BRepLib::SameParameter has put too large tolerance.
2017-10-13 15:12:53 +03:00
msv
ddafad10ec 0029102: Missing points using GCPnts_QuasiUniformDeflection
Correct the method PerformCurve of GCPnts_QuasiUniformDeflection to get the proper derivative at the end of the current curve.

Improve the Draw commands "crvpoints" and "crvtpoints" so that to work with wires as composite curves.
2017-09-15 10:12:47 +03:00
emv
fedf4bc000 0027441: The method IntTools_Context::IsVertexOnLine incorrectly computes parameter of the point on the curve
Choosing the closest bound to the checking point.

Test cases for the issue.

Updating test cases for the current behavior.
2017-07-03 12:50:43 +03:00
nbv
08bbed78a8 Fix for the issue #28849. 2017-06-16 13:00:42 +03:00
msv
e69d993598 0028830: HalfSpace command chooses the wrong side of the given shell
Improve the algorithm BRepPrimAPI_MakeHalfSpace. Earlier it made projection of the point only on faces. If the nearest point does not conform to normal projection criterion the result is wrong. The fix includes search of projection on edges and vertices. This makes the algorithm robust for half spaces with boundaries.
2017-06-13 15:11:28 +03:00
emv
fe0a0085cc 0027761: Intersection loops infinitely
The static method CorrectSurfaceBoundaries() in the class IntTools_FaceFace,
which is used for correction of the boundaries of the faces before their intersection,
contains two inconsistent adjustments of the boundaries of the faces based on periodic surfaces.
One of these adjustments has been removed. The remaining adjustment, the one that is based on the
2D bounding boxes of the closed curves, should be sufficient.

Test case for the issue.

(cherry picked from commit 7cb2f40993)
2017-05-23 13:20:30 +03:00
nbv
9c2e67b6da 0028222: Intersection of two cylinders fails
1. The reason of exception has been eliminated.

2. Algorithm in IntPatch_WLineTool::JoinWLines(...) method has been modified in order to forbid join curves in the point where more than two intersection lines meet. More over, joining is forbidden if local curvature in the connection point is too big (see function CheckArgumentsToJoin(...) in the file IntPatch_WLineTool.cxx).

3. Interface of IntPatch_WLineTool::JoinWLines(...) method has been modified in order to reduce number of arguments.

4. Small corrections in IsSeamOrBound(...) static function has been made. Namely, check has been added if two boundaries are in the same period region but are too far each to other (see IntPatch_WLineTool.cxx, IsSeamOrBound(...) function, line # 532).

5. "Reversed" flag has been made local. Now, it is pure local characteristic: the algorithm decides itself, shall we reverse the argument order. This correction makes the algorithm more commutative (see issue #25404). However, IntPatch_WLineTool::JoinWLines(...) method can return non-commutative result.

6. Algorithm of searching small intersection curves has been improved.

7. New methods have been added in Bnd_Range class.

-----------------------------------------

Some test cases have been adjusted according to their new behavior.

1. tests\bugs\modalg_6\bug26310_3
   tests\bugs\modalg_6\bug26310_4
   tests\bugs\moddata_2\bug235
   tests\perf\modalg\bug26310_1
   tests\bugs\modalg_5\bug24915

Logic of these cases has been changed. Mover over, additional check has been added in "bug26310_1" test case. Therefore, its performance will be slower than on the current MASTER.

2. tests\bugs\modalg_5\bug25292*

Scripts have been rewritten in order to make it more readable. Logic of these cases has not been changed.
2017-05-22 17:04:37 +03:00
nbv
1b23c4e0cf 0028009: [Regression vs OCCT7.0.0] Cut produces not valid shape
The algorithm in WorkWithBoundaries::BoundaryEstimation(...) did not take into account opposite directions of cylindrical axes (when the angle between them is obtuse). After the fix it does it.

Small correction of test cases for issue CR28009

(cherry picked from commit c9c7286e56)
2017-05-22 10:14:36 +03:00
nbv
045e1c408a 0027856: Regression vs 6.7.1: General Fuse operation fails to fuse the solids
Method WorkWithBoundaries::BoundaryEstimation(...) has been brought in balance with IsParallel(...) method, which checks if cylinder axes are parallel.

(cherry picked from commit 95f8c6082d)
2017-05-22 10:14:34 +03:00
nbv
493c359ffd Patch including (particular) fixes for the issues #23178, #26586, #27766, #26852 and #24023. 2017-05-22 10:14:33 +03:00
nbv
c31217f83c 0027310: Huge tolerance obtained in the result of intersection of two cylindrical faces
Sometimes start point of the intersection line is in the surface boundary strictly. I.e. the parameter of this point in the surface can be equal to both 0 or 2*PI equivalently. It is important to chose correct parameter value.

The algorithm of prediction is based on monotonicity property (see CylCylMonotonicity(...) function in IntPatch_ImpImpIntersection_4.gxx). Now, this function is used wrongly. The fix improves this situation.

Small optimization in the code.
Creation of test cases .

The logic of returning value by the method BoundariesComputing() has been corrected.

(cherry picked from commit 79997052f1)
2017-05-22 10:14:31 +03:00
nbv
507dd6d579 0026884: Cylinder/Cylinder intersection algorithm throws an exception
Check, if cylinder axes are parallel is made more carefully.
This check is brought to conformity with check if axes are parallel (see constructor AxeOperator::AxeOperator(...) in IntAna_QuadQuadGeo.cxx file)

Test case for issue CR26884

(cherry picked from commit ce48b00930)
2017-05-22 10:14:30 +03:00
nbv
074eb06e7a 0028718: Section result has a break
Fix of the problem.
2017-05-19 15:00:15 +03:00
emv
be81259513 0028683: Wrong result of CUT operation
1. Partial porting of the patches for the issues #0026738 and #0028017:
   Careful treatment of the SD vertices created on the Face/Face intersection stage.

2. Avoid creation of the small section edges.

3. Test case for the issue.

4. Adjusting test cases for current behavior.
2017-04-28 12:08:18 +03:00
ifv
4ea9823777 0028585: Wrong value of area computation
Another processing of NaturalRestriction flag for face in algorithm of BRepGProp* classes.
2017-04-03 11:42:13 +03:00
nbv
4bce57b6e2 Fix for the issue #28491 2017-03-02 12:09:13 +03:00
emv
042532570d 0028189: Result of Boolean operation is non-manifold wire
1. The result of Boolean operation on the arguments of collection type, containers WIRE/SHELL/COMPSOLID, is now also a collection.
The result of Boolean operation on arguments of non-collection types is now a compound containing the splits of arguments directly, without its enclosure into containers.
Thus, if there were no containers, such as WIRE/SHELL/COMPSOLID, in the input arguments there will be no such containers in the result of BOP.

2. The containers of type WIRE included into result should now also (as the SHELLs) have coherent orientation of its sub-shapes.
For that the new method has been implemented (BOPTools_AlgoTools::OrientEdgesOnWire(TopoDS_Shape&)) which reorients edges of the given shape for correct ordering.

3. The duplicating containers, i.e. containers with the contents completely included in other containers, are now avoided in the result of BOP.

4. Documentation has been updated.

5. New test cases for the issue.

6. Adjusting test cases to current behavior.
2016-12-28 15:39:00 +03:00
emv
9112bc3c6a 0027746: Incomplete result of SECTION operation
1. Partial porting of the fix for the issue #0026560:
Function to compute subshape max tolerance has been added.
Fixed bounding box expanding at Face/Face step of boolean operation.

2. New test cases are created.
2016-08-03 10:58:06 +03:00
nbv
f0afe22ee5 Fix for issue #27664 2016-07-14 11:10:36 +03:00
aml
f50f030f2d 0027371: Regression: BRepExtrema works too much slower in 691 (from 670)
Lipschitz constant tuning.
Shubert estimation for minimal value is added.

Test case is added.
2016-04-25 11:44:28 +03:00
gka
256ac0b9ea 0026619: Tolerances of operands are modified using bop
The fix forces creation of new sub-shapes (vertex, edge) when the tolerance of some sub-shape of an argument is to be increased.

    This new behavior is turned off by default. It can be turned on using two ways:
    1) Setting 'locking' flag of the arguments.
    2) Calling the method SetNonDestructive(Standard_True) of the API classes.
2016-03-11 11:01:47 +03:00
aml
62f137e4ab 0027162: Draw command "(2d)extrema" incorrectly represent underlying algorithm results
Correct handling of infinity solutions added for Curve / Curve case.
Unused code deleted.
Test cases updated to the new behavior.
2016-02-18 11:58:43 +03:00
aml
6d65d76281 Possibility to freeze Lipchitz constant is added to improve performance. 2016-02-16 07:48:33 +03:00
aml
38c459922e 0027131: [Regression to 6.7] DistShapeShape performance loss
Lipchitz constant approximation and fixes in global optimization algorithm added to improve performance.
Test case added.

Fix backporting:

0026593: Coding rules - revert compatibility of NCollection_CellFilter constructor with old code

Restored old constructor and old behavior where possible.

Minor correction.

0026395: Merge clasees NCollection_CellFilter_NDim and NCollection_CellFilter

Deleted exceed class CellFilterNDim.
Now dimension count used as input parameter in NCollection_CellFilter.

minor corrections.
2016-02-12 07:51:37 +03:00
oan
a6af85dde9 0027119: Regression: Draw command "incmesh" hangs on the attacheced face.
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.
2016-02-05 15:23:08 +03:00
aml
ff85f6086c 0027114: [Regression to 6.7] DistShapeShape does not find a solution edge-face
Extrema Curve / Surface algorithm changed to perform more accurate search.

test case bug25232_8 - improvement, one additional intersection point is detected now.
test case bug23830 - normal behavior, position of extrema is changed.
Small correction of pro19653 test
test case for original issue added.
2016-02-05 13:35:06 +03:00
apv
8474ba84f8 Small correction of test case bugs/heal/bug26642 due to shape renaming 2016-02-02 12:50:55 +03:00
nbv
8ebd2632e2 Patch for issue #26841 2015-12-21 13:42:43 +03:00
anv
b9f21bee94 0026522: Exception while copying offset on C0 surface 2015-09-22 22:07:21 +03:00
abv
258faef5fc 0026671: Infinite loop in ShapeFix_Wire::FixSelfIntersection()
Avoid possible infinite loops in ShapeFix_Wire::FixSelfIntersection() -- when needed, fix is repeated once instead of going back in the loop
2015-09-22 22:07:20 +03:00
oan
ee9749a81f 0026532: Meshing of edge with minSize parameter leads to incorrect result
Fix missed parameter.

Test case for issue CR26532
2015-09-18 14:35:57 +03:00
nbv
200a6865ad 0026687: SIGSEGV in BRepBuilderAPI_MakeFace
1. Check face location has been added.
2. Message, if mkplane command fails, has been added.
3. Test case for this issue has been created.

Changes in accordance with the remark.

Small correction of test case for issue CR26687
2015-09-18 14:35:35 +03:00
aml
74e9b952a4 0026196: Wrong result obtained by projection algorithm.
Improved periodicity handling when trimmed parameters became unclosed or nonperiodic, but underlying geometry closed or periodic.
Added possibility to not perform trim in GeomAdaptor::MakeSurface.

Minor corrections.

Test-case for issue #26196
2015-09-17 16:30:25 +03:00
nbv
2fc40ae3de 0026642: ShapeUpgrade_UnifySameDomain introduces extremely high vertex tolerances
Algorithm of computation of safe shift value along 2D-line (in order to distance between two points was less than tolerance) has been improved.

Correction of some test cases in accordance with their new behavior.
2015-09-16 18:14:29 +03:00
ika
00ffff5c8c 0026419: [Regression?] Export of a reversed face leads to crash in 6.9.0 although proceeded in 6.8.0
Take basis surface from trimmed surfaces during IGES writing, because pcurves will be transformed, so trim will be shifted, accorded to new face bounds,
fix updating of seam edge,
change condition of using Segment during exporting periodic BSpline surfaces to IGES (if bounds are not in one period).

Test cases for issue CR26419
2015-09-16 10:48:32 +03:00
ika
086964d58a 0026573: IGES file with one entity 128 is not read
Add some workaround to read IGES files with lines, which lengths are less than standard 80.

Test case for issue CR26573

Correction of test cases for issue CR26573

Correction of test case for issue CR26573
2015-09-16 10:48:31 +03:00
ifv
fd87d80b23 0026651: IntTools_FClass2d gives incorrect result of classification 2015-09-16 10:48:30 +03:00
ifv
9189dced18 0026588: SIGSEGV in BRepFeat_MakeDPrism::Perform()
Incorrect piece of code is removed (not used)
2015-09-16 10:48:29 +03:00
abv
c16859d7b6 0024097: BRepAlgoAPI_Section returns wrong result
Test case added: bugs modalg_6 bug24097
2015-09-16 10:48:28 +03:00
nbv
2e6bcdaf8e 0026099: Wrong result done by 2d intersection algorithm
Detection of intersection for almost parallel lines has been improved.
2015-09-16 10:48:27 +03:00
pkv
5d3ec53550 0026567: Exception in Boolean intersection command
Correcting the usage of NCollection_IncAllocator
2015-09-16 10:48:26 +03:00
apv
55b22036f8 Adjusting test cases for current state of OCCT 2015-09-16 10:48:25 +03:00
gka
0b2fbc70d3 0025553: ShapeFix_Face::FixMissingSeam() fails to correct a face
Modification to support case when edges on face  have incorrect orientation was added.
Modification to support case when wires have intersecting segment was added

Test cases for issue 25553 added; other affected tests corrected (improvements)

Corrected test case
2015-09-16 10:47:51 +03:00
mkv
104c1cf105 0026575: Normal projection of an edge to a face is wrong 2015-09-11 19:06:20 +03:00