MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0027117Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2016-01-26 12:052016-12-09 16:37
Reporterisn 
Assigned Tobugmaster 
PriorityhighSeverityfeature 
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target Version[OCCT] 7.1.0Fixed in Version[OCCT] 7.1.0 
Summary0027117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances
DescriptionThe current implementation of BRepClass3d_SolidClassifier ignores vertex/edge/face tolerances, so the result of classification of a point relative to a solid may be wrong.
It's proposed to add an additional checks to properly verify ON and IN/OUT states of the point and also modify an existing code according to this checks.
Steps To ReproduceN/A
TagsNo tags attached.
Test case numberbugs modalg_6 bug27117
Attached Filespng file icon FaultyFace.png (42,319 bytes) 2016-04-01 14:46
? file icon bug27117.brep (28,089 bytes) 2016-04-06 09:30

- Relationships

-  Notes
(0051503)
git (administrator)
2016-03-10 12:29

Branch CR27117 has been created by isn.

SHA-1: c8f1bd843ffee91f555ee690b7a43d98cb80f5fb


Detailed log of new commits:

Author: isn
Date: Sat Feb 20 16:43:58 2016 +0300

    27117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances
(0051527)
git (administrator)
2016-03-10 16:42

Branch CR27117 has been updated forcibly by isn.

SHA-1: 75cc874be59509b2f4074a387b4c74395abb0290
(0051534)
msv (developer)
2016-03-10 19:50

src\BRepClass3d\BRepClass3d_SolidExplorer.cxx

- in line 1013, insert a new line before '{'

src\IntCurvesFace\IntCurvesFace_Intersector.cxx

This change of behavior is very dangerous for a number of using it projects. It is better to activate new behavior with a special optional flag set by a separate method (UseBoundaryTolerance).

src\BRepClass3d\BRepClass3d_SClassifier.cxx

- Remove garbage in the line 81.
- Move copy constructor and operator = (line 84) into the private section.
- The method ReInit (line 215) is dangerous and indeed not used, so remove it.
- Correct misprint "uutput" in 256-257.
- The treatment of mode of work overloads the method Accept with additional if/else. The method Accept must be as simple as possible for effective work of the tree selection. I propose to implement 2 separate selector classes, one for selecting by point and another for selecting by line.
- In the method Accept, the operation myMapOfShape(theObj) is performed 3 times. Create a reference to the shape instead.
- The edge 'E' is better to declare a reference to avoid copying (109).
- In lines 121, 142, 186, avoid call to sqrt, instead compare with a square of EdgeT computed in advance.
- In the logic of method Accept, remove statements "return Standard_False;" in each if/else, because the same statement exists in the most end.
- The adaptor 'LC' is created in each call to Accept. It is better to store it as a class field to avoid creation of the same object dozen of times.
- In line 170, it is better to use SquareDistance (to avoid calling sqrt inside) and compare with the square of tolerance.
- Ignoring of internal edge/vertex should be done in point mode too. The best way is to ignore them while filling in the tree in the line 459. Degenerated edges are to be ignored too.
- Line 183: the object L is extra, the line bounds can be defined directly using the constant Precision::Infinite().
- Line 600: if we cannot get transition due to a failure getting face normal, shouldn't we set NearFaultPar to this place?
- Line 858: comparing of angles between two vectors with PI/2 is more effectively done using comparing of scalar product with 0. The same can be applied to lines 849, 872-873.
- Line 859: avoid comparing for equality, instead compare the difference with angular precision.
- The formula in line 870 can be changed in this way, so as to avoid normalization of N:
projL = N.XYZ() ^ LDir.XYZ() ^ N.XYZ()
- Line 880: this returning false is to be treated in different way to the other lines returning false, as in this way the intersection with the edge can be ignored, while the others should lead to line faulty.
(0051568)
git (administrator)
2016-03-11 21:30

Branch CR27117 has been updated by isn.

SHA-1: 528ce7d87487193a7a72ee4632ec7c25874e6747


Detailed log of new commits:

Author: isn
Date: Fri Mar 11 17:29:24 2016 +0300

    corrections

(0051584)
msv (developer)
2016-03-14 11:44

New remarks:

src\IntCurvesFace\IntCurvesFace_Intersector.hxx

- Please document new methods with doxygen comments.

src\IntCurvesFace\IntCurvesFace_Intersector.cxx

- myUseBoundTol is not initialized in constructor.
- The usage of myUseBoundTol is incorrect (inverse meaning) (lines 149-150).

src\BRepClass3d\BRepClass3d_SClassifier.cxx

- The comment in line 70 is irrelevant to the code.
- In line 598, Tst is assign Boolean result, but later it is treated as integer.
- In 605, add 'else' before 'if'.
- Line 845: why LDir is declared as gp_Vec but not gp_Dir? It will cause implicit construction of gp_Dir in all places where LDir is used in the context of gp_Dir.
- 847: LDir.Dot(nf1) is written twice, and nf2 is not checked.
- 859: we checked already that abs(angD) is not less than angular tolerance, so here it is not needed to compare with angular tolerance, it is better to compare with 0.
- 867: ProjL will be needed as normalized direction, so it is better to declare it gp_Dir instead of gp_Vec. Also, it is better to perform operation '^' over gp_XYZ entities instead of gp_Dir, otherwise after each intermediate crossing the result will be normalized. So, use XYZ() method as I wrote in the sample line in my previous remarks.
(0051625)
git (administrator)
2016-03-15 12:32

Branch CR27117 has been updated by isn.

SHA-1: bcbad6a9014026bde631db24d4f9b9bf8fde4590


Detailed log of new commits:

Author: isn
Date: Tue Mar 15 12:30:33 2016 +0300

    corrections

(0051641)
git (administrator)
2016-03-15 15:05

Branch CR27117 has been updated by isn.

SHA-1: 7505f8b9602648a95dbdea318f75ef9eb50db499


Detailed log of new commits:

Author: isn
Date: Tue Mar 15 15:00:47 2016 +0300

    corrections

(0051649)
git (administrator)
2016-03-15 15:58

Branch CR27117 has been updated forcibly by isn.

SHA-1: 1f0f0bb67108a43aebe16d4957cf280cc5000813
(0051652)
git (administrator)
2016-03-15 16:20

Branch CR27117 has been updated forcibly by isn.

SHA-1: 3769f10e5a4d115055b881739c9433920748c0f5
(0051656)
git (administrator)
2016-03-15 16:38

Branch CR27117_1 has been created by isn.

SHA-1: aa0e1e8f664ad663a2edacecf97f91a4c4da323b


Detailed log of new commits:

Author: isn
Date: Tue Mar 15 16:38:11 2016 +0300

    27117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances
    
    3D-claasifier now takes into the account the vertex/edges tolerances. If the given point lays inside the tolerance area of vertex or edge of the solid it's classified as TopAbs_ON.
    The behavior of IntCurvesFace_Intersector::Perform was changed. Now it may use optional null-tolerance to classify 2d-point relatively to the given face.
    UBTreeFiller is used to speedup intersection process between edges/vertices and the point.
    The test case 'boolean gdml_private ZH2' extensively uses the SolidClassifier. After this fix it returns the correct classification statuses, which leads to incorrect result shape (reported by checkshape). Yet the result shape without this fix also seems to be incorrect (one of the isolines goes out of boundary of the face). Thats why it's marked with 'TODO'.
(0051657)
msv (developer)
2016-03-15 16:42

Reviewed.
(0051709)
apv (tester)
2016-03-16 15:42

Dear BugMaster,

Branch CR27117_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: aa0e1e8f664ad663a2edacecf97f91a4c4da323b

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MacOS: 0 (0 on master)
products component:
   Linux: 68
   Windows: 0
   MacOS: 1143

Regressions/Differences:
http://occt-tests/CR27117_1-master-OCCT/Debian70-64/summary.html [^]
http://occt-tests/CR27117_1-master-OCCT/Windows-64-VC10/summary.html [^]
boolean gdml_private ZI7 (Linux only), ZJ7 (Linux only)
bugs modalg_6 bug26567
http://occt-tests/CR27117_1-master-Products/Debian70-64/summary.html [^]
http://occt-tests/CR27117_1-master-Products/Windows-64-VC10/summary.html [^]
sat read E2

Testing on Linux:
Total MEMORY difference: 89897319 / 89154516 [+0.83%]
Total CPU difference: 21068.420000000042 / 18613.140000000003 [+13.19%]

Testing on Windows:
Total MEMORY difference: 56722680 / 57307615 [-1.02%]
Total CPU difference: 19897.86514959878 / 17380.352211798836 [+14.48%]

There are differences in images found by testdiff:
http://occt-tests/CR27117_1-master-OCCT/Debian70-64/diff-Debian70-64.html [^]
http://occt-tests/CR27117_1-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10.html [^]
boolean volumemaker C4
bugs modalg_2 bug472_3
(0051710)
apv (tester)
2016-03-16 15:43

Dear isn,

Branch CR27117_1 has been rejected due to:
- regressions/differences/improvements
- differences in images
(0051731)
msv (developer)
2016-03-17 13:07

Dear apv, I have noticed that in addition to regressions and differences in images, there are a lot of performance degradation. I expected that you had reported this too.

Dear aml, please take care about further processing of this bug: analyze regressions and find bottlenecks, removing of which will allow leaving the algorithm on the same performance level.
(0051785)
git (administrator)
2016-03-18 14:44

Branch CR27117_1 has been updated by aml.

SHA-1: 754c514e51579312a716c3a62878530e49128fcd


Detailed log of new commits:

Author: aml
Date: Fri Mar 18 14:27:57 2016 +0300

    Refactoring and initial improvements.

(0051786)
git (administrator)
2016-03-18 14:54

Branch CR27117_1 has been updated forcibly by aml.

SHA-1: 8c627b33dfe8d37aacf98b58fc54716a745c9540
(0051798)
git (administrator)
2016-03-20 11:21

Branch CR27117_1 has been updated by aml.

SHA-1: a278026f0dc8520de02b460f58866f844832cc6d


Detailed log of new commits:

Author: aml
Date: Sun Mar 20 11:20:19 2016 +0300

    Data caching and optimal distribution.

(0051799)
git (administrator)
2016-03-21 08:15

Branch CR27117_1 has been updated by aml.

SHA-1: 64d49cb067d65d16e1a2130cc15a8f5e985006dc


Detailed log of new commits:

Author: aml
Date: Mon Mar 21 08:14:30 2016 +0300

    Correction of a parameters order.

(0051800)
git (administrator)
2016-03-21 09:04

Branch CR27117_1 has been updated by aml.

SHA-1: cd269d142ae28be8a2428cbb196125d7178823cf


Detailed log of new commits:

Author: aml
Date: Mon Mar 21 09:04:33 2016 +0300

    Bad line criteria is changed.
    Misprint in auto-replace is corrected.

(0051807)
git (administrator)
2016-03-21 12:47

Branch CR27117_1 has been updated by aml.

SHA-1: d9e2672d473ef02e908ef13cba06170b3b932763


Detailed log of new commits:

Author: aml
Date: Mon Mar 21 11:45:58 2016 +0300

    Commentaries were added to improve readability.

(0051836)
git (administrator)
2016-03-21 21:22

Branch CR27117_1 has been updated by aml.

SHA-1: ba8cb2fd100ee60cba8f06ff5e900405c75d5b42


Detailed log of new commits:

Author: aml
Date: Mon Mar 21 21:09:21 2016 +0300

    UB-tree calculation is cashed to improve point-solid classification.

(0051862)
git (administrator)
2016-03-23 07:07

Branch CR27117_1 has been updated by aml.

SHA-1: 570a8c6a240b643a09497b0bf97dff7751d06568


Detailed log of new commits:

Author: aml
Date: Wed Mar 23 07:07:18 2016 +0300

    Fix for infinite fault parameter and for missed logic in fault parameter detection.

(0051863)
git (administrator)
2016-03-23 07:55

Branch CR27117_1 has been updated by aml.

SHA-1: eb9fd8eb3b775b5c0ec9a54844cb8fd62a75f159


Detailed log of new commits:

Author: aml
Date: Wed Mar 23 07:38:36 2016 +0300

    Test case is corrected.

(0051864)
git (administrator)
2016-03-23 08:01

Branch CR27117_1 has been updated forcibly by aml.

SHA-1: eecc2c3f5f1b87eea09d00bbbbd17a6deeb54e7f
(0051865)
git (administrator)
2016-03-23 08:11

Branch CR27117_2 has been created by aml.

SHA-1: a4db69f6543230e9a00140c2c06d3127875d5754


Detailed log of new commits:

Author: aml
Date: Wed Mar 23 08:10:57 2016 +0300

    Various improvements in point-solid classifier:
    
    1) Refactoring.
    2) UB-tree calculation is cashed to improve point-solid classification speed.
    3) Ray / curve intersection improved by trimmed parameters and correct order.
    4) Fixes in logic.
    5) Calculation caching at the classifier level.

Author: isn
Date: Tue Mar 15 16:38:11 2016 +0300

    27117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances
    
    3D-claasifier now takes into the account the vertex/edges tolerances. If the given point lays inside the tolerance area of vertex or edge of the solid it's classified as TopAbs_ON.
    The behavior of IntCurvesFace_Intersector::Perform was changed. Now it may use optional null-tolerance to classify 2d-point relatively to the given face.
    UBTreeFiller is used to speedup intersection process between edges/vertices and the point.
    The test case 'boolean gdml_private ZH2' extensively uses the SolidClassifier. After this fix it returns the correct classification statuses, which leads to incorrect result shape (reported by checkshape). Yet the result shape without this fix also seems to be incorrect (one of the isolines goes out of boundary of the face). Thats why it's marked with 'TODO'.
(0051869)
git (administrator)
2016-03-23 11:35

Branch CR27117_2 has been updated forcibly by aml.

SHA-1: cc96dff57ec45c3c58eb07478fa8cbc2ab638a3a
(0051922)
git (administrator)
2016-03-24 07:30

Branch CR27117_2 has been updated forcibly by aml.

SHA-1: 8312ba9f2d76a0266c553d6af6c1b07dea3be40a
(0051923)
aml (developer)
2016-03-24 07:51

Dear msv,
Please check current state of the branch CR27117_2.
(0052049)
msv (developer)
2016-03-28 11:00

Remarks:

src\BRepClass3d\BRepClass3d_BndBoxTree.hxx

- English grammar:
// Class which is represents tree selector for point object. =>
// Class representing tree selector for point object.

// Class which is represents tree selector for line object. =>
// Class representing tree selector for line object.

- change 'double' to 'Standard_Real', and wrap long lines.
- myMapOfShape is used only in const context, so change its declaration from non-const to const reference.

src\BRepClass3d\BRepClass3d_BndBoxTree.cxx

- Declare 'V' as "const &" in Lines 58, 117:
    TopoDS_Vertex V = TopoDS::Vertex(shp);
- Line 111 is indented so as it seems to belong to the scope of 'for' loop, but it is not so. It is better to use braces to make the scope of 'for' distinct.

src\BRepClass3d\BRepClass3d_SolidExplorer.hxx

- Make short description of the new methods GetTree and GetMapEV.
- The methods GetTree and GetMapEV do not need to return non-const regerences, as the returned values are used only in const context.
- Include the header of TopTools_IndexedMapOfShape.

src\BRepClass3d\BRepClass3d_SolidExplorer.cxx

- Clear the fields myMapEV and myTree in the method InitShape.

src\BRepClass3d\BRepClass3d_SClassifier.cxx

- Line 207: use variable aMapEV.
(0052053)
git (administrator)
2016-03-28 11:20

Branch CR27117_2 has been updated by aml.

SHA-1: 76db04f40bc630f3ea65504bf112b1990c2f1537


Detailed log of new commits:

Author: aml
Date: Mon Mar 28 11:19:56 2016 +0300

    Minor corrections.

(0052054)
aml (developer)
2016-03-28 11:20

Dear msv,
Please check updated branch CR27117_2.
(0052055)
git (administrator)
2016-03-28 11:22

Branch CR27117_2 has been updated forcibly by aml.

SHA-1: 38f9e7b2a3ba341d70e4364b57587c0d69786709
(0052058)
git (administrator)
2016-03-28 11:37

Branch CR27117_2 has been updated forcibly by aml.

SHA-1: 6c09983acea0e2ddde40f81629fa2b9e9f7ee864
(0052060)
git (administrator)
2016-03-28 11:54

Branch CR27117_2 has been updated forcibly by aml.

SHA-1: 0d46632bac79658bbd304413e1b5b3878c9666c0
(0052061)
git (administrator)
2016-03-28 11:58

Branch CR27117_2 has been updated forcibly by aml.

SHA-1: c0833bfdd96de1d3b01c5154623424a3bb68c4ed
(0052062)
git (administrator)
2016-03-28 12:12

Branch CR27117_2 has been updated forcibly by aml.

SHA-1: 4599f9c95e9e0aa9113b80031af3d8ac453e6712
(0052063)
msv (developer)
2016-03-28 12:13

Reviewed.
(0052073)
git (administrator)
2016-03-28 15:28

Branch CR27117_2 has been updated forcibly by apv.

SHA-1: bbf5469e70b841d7dc44a2120cfab663b64c3751
(0052074)
apv (tester)
2016-03-28 15:29

Branch CR27117_2 has been rebased on the IR-2016-03-26
(0052101)
apv (tester)
2016-03-29 12:03
edited on: 2016-03-29 12:23

Dear BugMaster,

Branch CR27117_2 from occt git-repository (and IR-2016-03-26 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: bbf5469e70b841d7dc44a2120cfab663b64c3751

Number of compiler warnings:
occt component:
   Linux: 3 (0 on master)
   Windows: 0 (0 on master)
   MacOS: 0 (0 on master)
products component:
   Linux: 68
   Windows: 0
   MacOS: 1136
New additional warnings have been detected on Linux:
1. BRepClass3d_BndBoxTree.hxx:104, GNU C Compiler 4 (gcc), Priority: Normal
parameter 'outLParam' set but not used [-Wunused-but-set-parameter]
2. BRepClass3d_BndBoxTree.hxx:104, GNU C Compiler 4 (gcc), Priority: Normal
parameter 'theOutParam' set but not used [-Wunused-but-set-parameter]
3. BRepClass3d_BndBoxTree.hxx:113, GNU C Compiler 4 (gcc), Priority: Normal
parameter 'outLParam' set but not used [-Wunused-but-set-parameter]

Regressions/Differences:
http://occt-tests/CR27117_2-IR-2016-03-26-OCCT/Debian70-64/summary.html [^]
http://occt-tests/CR27117_2-IR-2016-03-26-OCCT/Windows-64-VC10/summary.html [^]
boolean gdml_private ZI7 (Linux only), ZJ7 (Linux only)
boolean volumemaker B7, C9, H4
bugs modalg_5 bug24244, bug24558
bugs modalg_6 bug26098, bug27002_1, bug27010
de step_1 ZZ9
de step_4 G9, I3
de step_5 B4
http://occt-tests/CR27117_2-IR-2016-03-26-Products/Debian70-64/summary.html [^]
http://occt-tests/CR27117_2-IR-2016-03-26-Products/Windows-64-VC10/summary.html [^]
sat read E2

Testing on Linux:
Total MEMORY difference: 90270890 / 88958395 [+1.48%]
Total CPU difference: 19455.49000000015 / 19371.69999999998 [+0.43%]

Testing on Windows:
Total MEMORY difference: 57682788 / 57518937 [+0.28%]
Total CPU difference: 18276.655957298797 / 18034.339603998826 [+1.34%]

There are differences in images found by testdiff:
http://occt-tests/CR27117_2-IR-2016-03-26-OCCT/Debian70-64/diff-Debian70-64.html [^]
http://occt-tests/CR27117_2-IR-2016-03-26-OCCT/Windows-64-VC10/diff-Windows-64-VC10.html [^]
boolean volumemaker C4
bugs modalg_2 bug472_3

(0052102)
apv (tester)
2016-03-29 12:04
edited on: 2016-03-29 12:23

Dear aml,

Branch CR27117_2 has been rejected due to:
- additional warnings
- regressions/differences/improvements
- differences in images

(0052151)
git (administrator)
2016-03-30 09:55

Branch CR27117_3 has been created by aml.

SHA-1: d33cdd3a8d1c03e16520f9f040f6cf1d161e6671


Detailed log of new commits:

Author: aml
Date: Wed Mar 23 08:10:57 2016 +0300

    Various improvements in point-solid classifier:
    
    1) Refactoring.
    2) BndBoxTree is extracted into separate class.
    3) UB-tree calculation is cashed to improve point-solid classification speed.
    4) Ray / curve intersection improved by trimmed parameters and correct order.
    5) Fixes in logic.
    6) Calculation caching at the classifier level.

Author: isn
Date: Tue Mar 15 16:38:11 2016 +0300

    27117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances
    
    3D-claasifier now takes into the account the vertex/edges tolerances. If the given point lays inside the tolerance area of vertex or edge of the solid it's classified as TopAbs_ON.
    The behavior of IntCurvesFace_Intersector::Perform was changed. Now it may use optional null-tolerance to classify 2d-point relatively to the given face.
    UBTreeFiller is used to speedup intersection process between edges/vertices and the point.
    The test case 'boolean gdml_private ZH2' extensively uses the SolidClassifier. After this fix it returns the correct classification statuses, which leads to incorrect result shape (reported by checkshape). Yet the result shape without this fix also seems to be incorrect (one of the isolines goes out of boundary of the face). Thats why it's marked with 'TODO'.
(0052159)
aml (developer)
2016-03-30 11:24

Dear apv,

Misprint was corrected. Could you please perform testing again?
(0052166)
msv (developer)
2016-03-30 12:04

I would like to precise that now CR27117_3 is an actual branch.
(0052169)
aml (developer)
2016-03-30 12:14
edited on: 2016-03-30 14:45

I've rebased CR27117_2 on the current master, corrected misprint and pushed result into CR7117_3 branch. Please test CR27117_3 branch.

(0052243)
apv (tester)
2016-03-31 16:02

Dear BugMaster,

Branch CR27117_3 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: d33cdd3a8d1c03e16520f9f040f6cf1d161e6671

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MacOS: 0 (0 on master)
products component:
   Linux: 68
   Windows: 0
   MacOS: 1115

Regressions/Differences:
http://occt-tests/CR27117_3-master-OCCT/Debian70-64/summary.html [^]
http://occt-tests/CR27117_3-master-OCCT/Windows-64-VC10/summary.html [^]
boolean gdml_private ZI7 (Linux only), ZJ7 (Linux only)
boolean volumemaker C9

Testing on Linux:
Total MEMORY difference: 89458413 / 90119411 [-0.73%]
Total CPU difference: 19455.710000000152 / 19402.500000000106 [+0.27%]

Testing on Windows:
Total MEMORY difference: 57706014 / 57537936 [+0.29%]
Total CPU difference: 18006.13462319886 / 18042.685657498812 [-0.20%]

There are differences in images found by testdiff:
http://occt-tests/CR27117_3-master-OCCT/Debian70-64/diff-Debian70-64.html [^]
http://occt-tests/CR27117_3-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10.html [^]
boolean volumemaker C4
bugs modalg_2 bug472_3
(0052244)
apv (tester)
2016-03-31 16:03

Dear aml,

Branch CR27117_3 has been rejected due to:
- regressions/differences/improvements
- differences in images
(0052287)
git (administrator)
2016-04-01 13:15

Branch CR27117_3 has been updated forcibly by aml.

SHA-1: 2a1579d5f9bdecf3dfcd41e29b835a482f455979
(0052290)
git (administrator)
2016-04-01 14:44

Branch CR27117_3 has been updated forcibly by aml.

SHA-1: 0beb29ae1f48f9725ecda2e43f768850e45651e2
(0052291)
aml (developer)
2016-04-01 14:54
edited on: 2016-04-01 14:55

Dear msv,

1) Please check current state of the branch CR27117_3.

2)
gdml_private ZI7 (Linux only), ZJ7 (Linux only) - TODO changed
boolean volumemaker C9 - improvement.
boolean volumemaker C4 - improvement.

3)The difference in the test case bugs modalg_2 bug472_3 is caused by different handling of the faulty face (in attachments section).

In master branch this face is classified "IN" relatively to the solid.
In CR27117_3 branch this face is classified "ON" relatively to the solid.

(BopTools_AlgoTools.cxx::709).

Input for the classification algorithm is invalid, so I propose to accept changes in image since special issue for this case is exist (0025917)

(0052307)
msv (developer)
2016-04-01 19:17

Reviewed.
I agree with aml's remarks.

Dear bugmaster, please test only the following tests:
boolean gdml_private ZI7
boolean gdml_private ZJ7
boolean volumemaker C9

No recompilation is needed.
(0052396)
apv (tester)
2016-04-05 14:25

Test cases
boolean gdml_private ZI7
boolean gdml_private ZJ7
boolean volumemaker C9
have been retested. Results are OK:
http://occt-tests/CR27117_3-master-OCCT/Debian70-64/summary.html [^]
http://occt-tests/CR27117_3-master-OCCT/Windows-64-VC10/summary.html [^]
(0052413)
msv (developer)
2016-04-06 09:26

Dear aml, please create test case for this issue.
(0052414)
git (administrator)
2016-04-06 09:34

Branch CR27117_3 has been updated by aml.

SHA-1: 64594917faf9e89c8c29a78eb4359d4d17ac8d9f


Detailed log of new commits:

Author: aml
Date: Wed Apr 6 09:32:47 2016 +0300

    Test case is added.

(0052415)
aml (developer)
2016-04-06 09:35

Test case is added.
(0052416)
git (administrator)
2016-04-06 09:46

Branch CR27117_3 has been updated forcibly by aml.

SHA-1: 56aced4a4b0f224e0de9d7e2608a8cca890e7bc3
(0052417)
msv (developer)
2016-04-06 09:50

Dear bugmaster, please check the new test case from the last commit to the branch CR27117_3, and consider its integration.
(0052426)
apv (tester)
2016-04-06 12:21

Result of testing case bugs modalg_6 bug27117 - OK:
http://occt-tests/CR27117_3-master-OCCT/Debian70-64/bugs/modalg_6/bug27117.html [^]
http://occt-tests/CR27117_3-master-OCCT/Windows-64-VC10/bugs/modalg_6/bug27117.html [^]
(0052898)
git (administrator)
2016-04-17 13:40

Branch CR27117_1 has been deleted by kgv.

SHA-1: eecc2c3f5f1b87eea09d00bbbbd17a6deeb54e7f
(0053327)
git (administrator)
2016-04-20 11:33

Branch CR27117_3 has been deleted by inv.

SHA-1: 56aced4a4b0f224e0de9d7e2608a8cca890e7bc3
(0053339)
git (administrator)
2016-04-20 11:34

Branch CR27117_2 has been deleted by inv.

SHA-1: bbf5469e70b841d7dc44a2120cfab663b64c3751
(0053346)
git (administrator)
2016-04-20 11:34

Branch CR27117 has been deleted by inv.

SHA-1: 3769f10e5a4d115055b881739c9433920748c0f5

- Related Changesets
occt: master 58e14d59
Timestamp: 2016-03-15 13:38:11
Author: isn
Committer: bugmaster
Details ] Diff ]
0027117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances

Various improvements in point-solid classifier:

1) Refactoring.
2) BndBoxTree is extracted into separate class.
3) UB-tree calculation is cashed to improve point-solid classification speed.
4) Ray / curve intersection improved by trimmed parameters and correct order.
5) Fixes in logic.
6) Calculation caching at the classifier level.

3D-claasifier now takes into the account the vertex/edges tolerances. If the given point lays inside the tolerance area of vertex or edge of the solid it's classified as TopAbs_ON.
The behavior of IntCurvesFace_Intersector::Perform was changed. Now it may use optional null-tolerance to classify 2d-point relatively to the given face.
UBTreeFiller is used to speedup intersection process between edges/vertices and the point.
The test case 'boolean gdml_private ZH2' extensively uses the SolidClassifier. After this fix it returns the correct classification statuses, which leads to incorrect result shape (reported by checkshape). Yet the result shape without this fix also seems to be incorrect (one of the isolines goes out of boundary of the face). Thats why it's marked with 'TODO'.

Corrections in test cases.

Test case is added.
add - src/BRepClass3d/BRepClass3d_BndBoxTree.cxx Diff ] File ]
add - src/BRepClass3d/BRepClass3d_BndBoxTree.hxx Diff ] File ]
mod - src/BRepClass3d/BRepClass3d_SClassifier.cxx Diff ] File ]
mod - src/BRepClass3d/BRepClass3d_SClassifier.hxx Diff ] File ]
mod - src/BRepClass3d/BRepClass3d_SolidExplorer.cxx Diff ] File ]
mod - src/BRepClass3d/BRepClass3d_SolidExplorer.hxx Diff ] File ]
mod - src/BRepClass3d/FILES Diff ] File ]
mod - src/IntCurvesFace/IntCurvesFace_Intersector.cxx Diff ] File ]
mod - src/IntCurvesFace/IntCurvesFace_Intersector.hxx Diff ] File ]
mod - tests/boolean/gdml_private/ZH2 Diff ] File ]
mod - tests/boolean/gdml_private/ZI7 Diff ] File ]
mod - tests/boolean/gdml_private/ZJ7 Diff ] File ]
mod - tests/boolean/volumemaker/C9 Diff ] File ]
add - tests/bugs/modalg_6/bug27117 Diff ] File ]

- Issue History
Date Modified Username Field Change
2016-01-26 12:05 isn New Issue
2016-01-26 12:05 isn Assigned To => isn
2016-01-26 13:07 msv Relationship added child of 0026972
2016-03-10 12:29 git Note Added: 0051503
2016-03-10 14:37 isn Assigned To isn => msv
2016-03-10 14:37 isn Status new => feedback
2016-03-10 16:42 git Note Added: 0051527
2016-03-10 19:50 msv Note Added: 0051534
2016-03-10 19:50 msv Assigned To msv => isn
2016-03-10 19:50 msv Status feedback => assigned
2016-03-11 21:30 git Note Added: 0051568
2016-03-11 21:31 isn Assigned To isn => msv
2016-03-11 21:31 isn Status assigned => feedback
2016-03-14 11:44 msv Note Added: 0051584
2016-03-14 11:44 msv Assigned To msv => isn
2016-03-14 11:44 msv Status feedback => assigned
2016-03-15 12:32 git Note Added: 0051625
2016-03-15 13:36 isn Assigned To isn => msv
2016-03-15 13:36 isn Status assigned => feedback
2016-03-15 15:05 git Note Added: 0051641
2016-03-15 15:58 git Note Added: 0051649
2016-03-15 16:20 git Note Added: 0051652
2016-03-15 16:38 git Note Added: 0051656
2016-03-15 16:42 msv Note Added: 0051657
2016-03-15 16:42 msv Assigned To msv => bugmaster
2016-03-15 16:42 msv Status feedback => reviewed
2016-03-15 19:08 apv Assigned To bugmaster => apv
2016-03-16 15:42 apv Note Added: 0051709
2016-03-16 15:42 apv Assigned To apv => isn
2016-03-16 15:42 apv Status reviewed => assigned
2016-03-16 15:43 apv Note Added: 0051710
2016-03-17 13:07 msv Note Added: 0051731
2016-03-17 13:07 msv Assigned To isn => aml
2016-03-18 14:44 git Note Added: 0051785
2016-03-18 14:54 git Note Added: 0051786
2016-03-20 11:21 git Note Added: 0051798
2016-03-21 08:15 git Note Added: 0051799
2016-03-21 09:04 git Note Added: 0051800
2016-03-21 12:47 git Note Added: 0051807
2016-03-21 21:22 git Note Added: 0051836
2016-03-23 07:07 git Note Added: 0051862
2016-03-23 07:55 git Note Added: 0051863
2016-03-23 08:01 git Note Added: 0051864
2016-03-23 08:11 git Note Added: 0051865
2016-03-23 11:35 git Note Added: 0051869
2016-03-24 07:30 git Note Added: 0051922
2016-03-24 07:51 aml Note Added: 0051923
2016-03-24 07:51 aml Assigned To aml => msv
2016-03-24 07:51 aml Status assigned => resolved
2016-03-24 07:51 aml Steps to Reproduce Updated View Revisions
2016-03-28 11:00 msv Note Added: 0052049
2016-03-28 11:00 msv Assigned To msv => aml
2016-03-28 11:00 msv Status resolved => assigned
2016-03-28 11:20 git Note Added: 0052053
2016-03-28 11:20 aml Note Added: 0052054
2016-03-28 11:20 aml Assigned To aml => msv
2016-03-28 11:20 aml Status assigned => resolved
2016-03-28 11:22 git Note Added: 0052055
2016-03-28 11:37 git Note Added: 0052058
2016-03-28 11:54 git Note Added: 0052060
2016-03-28 11:58 git Note Added: 0052061
2016-03-28 12:12 git Note Added: 0052062
2016-03-28 12:13 msv Note Added: 0052063
2016-03-28 12:13 msv Assigned To msv => bugmaster
2016-03-28 12:13 msv Status resolved => reviewed
2016-03-28 15:04 apv Assigned To bugmaster => apv
2016-03-28 15:28 git Note Added: 0052073
2016-03-28 15:29 apv Note Added: 0052074
2016-03-29 12:03 apv Note Added: 0052101
2016-03-29 12:03 apv Assigned To apv => aml
2016-03-29 12:03 apv Status reviewed => assigned
2016-03-29 12:04 apv Note Added: 0052102
2016-03-29 12:23 apv Note Edited: 0052101 View Revisions
2016-03-29 12:23 apv Note Edited: 0052102 View Revisions
2016-03-30 09:55 git Note Added: 0052151
2016-03-30 11:24 aml Note Added: 0052159
2016-03-30 11:24 aml Assigned To aml => apv
2016-03-30 11:24 aml Status assigned => feedback
2016-03-30 12:04 msv Note Added: 0052166
2016-03-30 12:14 aml Note Added: 0052169
2016-03-30 14:45 aml Note Edited: 0052169 View Revisions
2016-03-30 15:54 msv Status feedback => reviewed
2016-03-31 16:02 apv Note Added: 0052243
2016-03-31 16:02 apv Assigned To apv => aml
2016-03-31 16:02 apv Status reviewed => assigned
2016-03-31 16:03 apv Note Added: 0052244
2016-04-01 13:15 git Note Added: 0052287
2016-04-01 14:44 git Note Added: 0052290
2016-04-01 14:46 aml File Added: FaultyFace.png
2016-04-01 14:54 aml Note Added: 0052291
2016-04-01 14:54 aml Assigned To aml => msv
2016-04-01 14:54 aml Status assigned => resolved
2016-04-01 14:55 aml Note Edited: 0052291 View Revisions
2016-04-01 19:17 msv Note Added: 0052307
2016-04-01 19:17 msv Assigned To msv => bugmaster
2016-04-01 19:17 msv Status resolved => reviewed
2016-04-04 11:27 apv Assigned To bugmaster => apv
2016-04-05 12:27 msv Priority normal => high
2016-04-05 13:28 apv Test case number => Not needed
2016-04-05 14:25 apv Note Added: 0052396
2016-04-05 14:25 apv Assigned To apv => bugmaster
2016-04-05 14:25 apv Status reviewed => tested
2016-04-06 09:26 msv Note Added: 0052413
2016-04-06 09:26 msv Assigned To bugmaster => aml
2016-04-06 09:26 msv Status tested => feedback
2016-04-06 09:30 aml File Added: bug27117.brep
2016-04-06 09:34 git Note Added: 0052414
2016-04-06 09:35 aml Assigned To aml => isn
2016-04-06 09:35 aml Assigned To isn => msv
2016-04-06 09:35 aml Note Added: 0052415
2016-04-06 09:46 git Note Added: 0052416
2016-04-06 09:50 msv Note Added: 0052417
2016-04-06 09:50 msv Assigned To msv => bugmaster
2016-04-06 11:18 bugmaster Assigned To bugmaster => apv
2016-04-06 11:21 apv Test case number Not needed => bugs modalg_6 bug27117
2016-04-06 12:21 apv Note Added: 0052426
2016-04-06 12:21 apv Assigned To apv => bugmaster
2016-04-06 12:21 apv Status feedback => tested
2016-04-08 11:55 bugmaster Changeset attached => occt master 58e14d59
2016-04-08 11:55 bugmaster Status tested => verified
2016-04-08 11:55 bugmaster Resolution open => fixed
2016-04-17 13:40 git Note Added: 0052898
2016-04-20 11:33 git Note Added: 0053327
2016-04-20 11:34 git Note Added: 0053339
2016-04-20 11:34 git Note Added: 0053346
2016-12-09 16:33 user533 Status verified => closed
2016-12-09 16:37 user533 Fixed in Version => 7.1.0


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker