MantisBT - Open CASCADE
View Issue Details
0028599Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2017-03-28 08:442018-06-29 21:19
emv 
apn 
normalminor 
closedfixed 
[OCCT] 7.1.0 
[OCCT] 7.3.0[OCCT] 7.3.0 
prj, lowalgos extcs
0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection algorithm
In view of the removal of the old Boolean operations algorithm the BRepProj_Projection algorithm has to be changed to use the new section algorithm - BRepAlgoAPI_Section instead of BRepAlgo_Section.
testgrid prj
No tags attached.
related to 0028575assigned emv Open CASCADE Removal of the old Boolean Operations algorithm - BRepAlgo_BooleanOperation 
parent of 0029746closed abv Open CASCADE Modeling Algorithms - declare Boolean operation classes in BRepAlgo package as deprecated 
related to 0028639closed bugmaster Open CASCADE Improve performance of the IntPolyh_MaillageAffinage algorithm 
related to 0028833assigned msv Open CASCADE Modeling Algorithms - Unstable result of intersection of the faces 
related to 0029426closed bugmaster Open CASCADE Extrema algorithm fails to find minimal distance between Circle and Sphere 
related to 0026677closed bugmaster Open CASCADE Wrong result of projection line on the surface 
Issue History
2017-03-28 08:44emvNew Issue
2017-03-28 08:44emvAssigned To => msv
2017-03-28 08:44emvRelationship addedrelated to 0028575
2017-03-28 08:44emvAssigned Tomsv => emv
2017-03-28 08:44emvStatusnew => assigned
2017-04-07 09:28emvRelationship addedrelated to 0028639
2017-05-04 09:45gitNote Added: 0065733
2017-06-09 12:45emvRelationship addedrelated to 0028833
2017-06-09 12:49gitNote Added: 0067248
2017-07-21 11:04msvTarget Version7.2.0 => 7.3.0
2017-12-05 17:09msvTarget Version7.3.0 => 7.4.0
2017-12-26 15:26gitNote Added: 0073147
2017-12-26 15:32gitNote Added: 0073148
2017-12-29 10:27gitNote Added: 0073186
2018-01-09 10:50gitNote Added: 0073264
2018-01-15 13:15emvRelationship addedrelated to 0029426
2018-01-15 14:26gitNote Added: 0073411
2018-01-16 08:00gitNote Added: 0073424
2018-01-25 14:04gitNote Added: 0073592
2018-01-25 15:52gitNote Added: 0073596
2018-01-26 16:10gitNote Added: 0073615
2018-01-29 08:13gitNote Added: 0073632
2018-01-29 13:07emvAssigned Toemv => msv
2018-01-29 13:07emvStatusassigned => resolved
2018-01-29 13:07emvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=18531#r18531
2018-01-29 13:07emvNote Added: 0073651
2018-01-29 13:07emvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=18532#r18532
2018-01-29 14:01abvNote Added: 0073653
2018-01-30 18:48msvNote Added: 0073678
2018-01-30 18:48msvAssigned Tomsv => emv
2018-01-30 18:48msvStatusresolved => assigned
2018-01-31 10:25gitNote Added: 0073684
2018-01-31 10:31gitNote Added: 0073685
2018-01-31 10:41gitNote Added: 0073687
2018-01-31 10:45emvNote Added: 0073689
2018-01-31 10:45emvRelationship addedrelated to 0026677
2018-01-31 14:02emvNote Added: 0073698
2018-01-31 14:02emvAssigned Toemv => msv
2018-01-31 14:02emvStatusassigned => resolved
2018-01-31 16:21gitNote Added: 0073700
2018-01-31 16:39gitNote Added: 0073701
2018-01-31 16:45msvNote Added: 0073702
2018-01-31 16:45msvAssigned Tomsv => bugmaster
2018-01-31 16:45msvStatusresolved => reviewed
2018-01-31 17:00apnTest case number => prj, lowalgos extcs
2018-01-31 17:00apnNote Added: 0073704
2018-01-31 17:00apnStatusreviewed => tested
2018-02-01 16:07gitNote Added: 0073713
2018-02-03 18:59apnChangeset attached => occt master 03cca6f7
2018-02-03 18:59apnAssigned Tobugmaster => apn
2018-02-03 18:59apnStatustested => verified
2018-02-03 18:59apnResolutionopen => fixed
2018-02-05 11:39gitNote Added: 0073756
2018-02-05 11:39gitNote Added: 0073757
2018-02-05 11:39gitNote Added: 0073758
2018-02-05 11:39gitNote Added: 0073759
2018-02-20 12:58aivTarget Version7.4.0 => 7.3.0
2018-04-25 09:34emvRelationship addedrelated to 0026493
2018-05-08 18:52abvRelationship addedparent of 0029746
2018-06-29 21:13aivFixed in Version => 7.3.0
2018-06-29 21:19aivStatusverified => closed

Notes
(0065733)
git   
2017-05-04 09:45   
Branch CR28599 has been created by emv.

SHA-1: 3233da218f8a94c073355ab5fb5ca3d2a50bf52c


Detailed log of new commits:

Author: emv
Date: Fri Apr 7 07:37:22 2017 +0300

    Avoid to high precision in computation of the intersection tolerance for the Curve
    in case the creation of PCurve has not been ordered.

Author: emv
Date: Wed Apr 5 16:44:22 2017 +0300

    Use 10 samples in the V range for the surface of extrusion.

Author: emv
Date: Wed Mar 29 10:34:52 2017 +0300

    0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection algorithm
    
    The usage of BRepAlgo_Section has been replaced with the usage of BRepAlgoAPI_Section in BRepProj_Projection algorithm.
(0067248)
git   
2017-06-09 12:49   
Branch CR28599 has been updated forcibly by emv.

SHA-1: 73fc00364abb59087633a7d11e1fad07d54a41b1
(0073147)
git   
2017-12-26 15:26   
Branch CR28599 has been updated forcibly by emv.

SHA-1: 971e65540c679c12535e5a6651e1e3726b7a5fcd
(0073148)
git   
2017-12-26 15:32   
Branch CR28599 has been updated by emv.

SHA-1: 872cab6037dfca283cf4748f42f80708c2dda013


Detailed log of new commits:

Author: emv
Date: Tue Dec 26 15:32:23 2017 +0300

    Remove TODO statements from test cases in "prj" grid as they are working correctly now.

(0073186)
git   
2017-12-29 10:27   
Branch CR28599 has been updated forcibly by emv.

SHA-1: 861df814782e16494e27add602bc9dd5c3a630fe
(0073264)
git   
2018-01-09 10:50   
Branch CR28599 has been updated forcibly by emv.

SHA-1: 9bf977f6c6fe37cd2a94b68398d2f1015a6c95b7
(0073411)
git   
2018-01-15 14:26   
Branch CR28599_1 has been created by emv.

SHA-1: 352d837759c72078e8b3b47d14b6801b6090b9f5


Detailed log of new commits:

Author: emv
Date: Mon Jan 15 08:14:53 2018 +0300

    # Cosmetic changes.

Author: emv
Date: Mon Jan 15 09:34:12 2018 +0300

    Small revision of the Edge/Face intersection algorithm to perform Extrema computation on the whole intersection range of the edge instead of discrete ranges.

Author: emv
Date: Mon Jan 15 08:10:16 2018 +0300

    Revision of the *IntPolyh_Intersection* class to avoid repeated calculation of the deflection of the same triangulation.

Author: emv
Date: Tue Dec 26 14:28:27 2017 +0300

    0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection algorithm
    
    The usage of *BRepAlgo_Section* has been replaced with the usage of *BRepAlgoAPI_Section* in *BRepProj_Projection* algorithm.
    
    Remove TODO statements from test cases in "prj" grid as they are working correctly now.
(0073424)
git   
2018-01-16 08:00   
Branch CR28599_1 has been updated forcibly by emv.

SHA-1: 3bde8f3576ef90615a6291503ee742305babf78c
(0073592)
git   
2018-01-25 14:04   
Branch CR28599_2 has been created by emv.

SHA-1: c75749d2d2fa0d0c92678381f4b19f39be7686af


Detailed log of new commits:

Author: emv
Date: Mon Jan 15 08:14:53 2018 +0300

    # Cosmetic changes.

Author: emv
Date: Thu Jan 25 13:51:11 2018 +0300

    Implementation of the extrema computation for the Circle and Sphere.

Author: emv
Date: Mon Jan 15 09:34:12 2018 +0300

    Small revision of the Edge/Face intersection algorithm to perform Extrema computation on the whole intersection range of the edge instead of discrete ranges.

Author: emv
Date: Mon Jan 15 08:10:16 2018 +0300

    Revision of the *IntPolyh_Intersection* class to avoid repeated calculation of the deflection of the same triangulation.

Author: emv
Date: Tue Dec 26 14:28:27 2017 +0300

    0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection algorithm
    
    The usage of *BRepAlgo_Section* has been replaced with the usage of *BRepAlgoAPI_Section* in *BRepProj_Projection* algorithm.
    
    Remove TODO statements from test cases in "prj" grid as they are working correctly now.
(0073596)
git   
2018-01-25 15:52   
Branch CR28599_2 has been updated forcibly by emv.

SHA-1: b979a199c204f163881d9553d4eb60a8161af2ad
(0073615)
git   
2018-01-26 16:10   
Branch CR28599_2 has been updated forcibly by emv.

SHA-1: 6238a58d08dc3287b303dc315fb481cdf0c23f54
(0073632)
git   
2018-01-29 08:13   
Branch CR28599_2 has been updated forcibly by emv.

SHA-1: eaee82b4abe4b59f90500f9b6ea5542f0844ca70
(0073651)
emv   
2018-01-29 13:07   
Dear Mikhail, could you please review the occt git branch CR28599_2 and products git branch CR28599.
Jenkins test job - http://jenkins-test-10.nnov.opencascade.com/view/CR28599-master-emv/view/COMPARE/. [^]

Please note, the the differences in images in prj grid are caused by the switching to new BOP algorithm.

The patch brings significant performance improvements in the following test cases:
CPU boolean bcut_complex G2: 1.3416086 / 2.4804159 [-45.91%]
CPU boolean bcut_complex G7: 0.6708043 / 1.4508093 [-53.76%]
CPU boolean bfuse_complex F2: 2.8236181 / 3.6504234 [-22.65%]
CPU boolean bopcommon_complex D8: 2.5116161 / 7.7844499 [-67.74%]
CPU boolean bopcommon_complex D9: 2.4804159 / 7.7688498 [-68.07%]
CPU boolean bopcut_complex E1: 2.5428163 / 7.8936506 [-67.79%]
CPU boolean bopcut_complex E2: 2.1372137 / 7.3632472 [-70.97%]
CPU boolean bopfuse_complex C9: 2.5272162 / 7.80005 [-67.60%]
CPU boolean bopfuse_complex D1: 2.5272162 / 7.7844499 [-67.54%]
CPU boolean bopfuse_complex E5: 3.9312252 / 5.3820345 [-26.96%]
CPU boolean bsection R9: 0.7644049 / 1.8096116 [-57.76%]
CPU boolean gdml_private ZB4: 1.2792082 / 2.1372137 [-40.15%]
CPU boolean gdml_public A9: 1.4508093 / 3.0420195 [-52.31%]
CPU boolean volumemaker A8: 1.5288098 / 2.6364169 [-42.01%]
CPU boolean volumemaker B1: 1.5132097 / 3.0732197 [-50.76%]
CPU boolean volumemaker C6: 3.8220245 / 4.8516311 [-21.22%]
CPU boolean volumemaker F7: 1.9812127 / 2.8236181 [-29.83%]
CPU boolean volumemaker G7: 2.1060135 / 4.3056276 [-51.09%]
CPU boolean volumemaker G8: 1.7316111 / 3.7128238 [-53.36%]
CPU boolean volumemaker G9: 1.0140065 / 2.2308143 [-54.55%]
CPU boolean volumemaker H1: 1.8096116 / 3.9312252 [-53.97%]

CPU bugs modalg_1 buc60462_1: 0.8112052 / 1.9032122 [-57.38%]
CPU bugs modalg_1 buc60462_2: 1.872012 / 3.4944224 [-46.43%]
CPU bugs modalg_1 buc60463: 6.2244399 / 7.9092507 [-21.30%]
CPU bugs modalg_1 bug18186: 0.5304034 / 1.5444099 [-65.66%]
CPU bugs modalg_2 bug5805_3: 0.6864044 / 1.5132097 [-54.64%]
CPU bugs modalg_2 bug5805_37: 0.8736056 / 1.7472112 [-50.00%]
CPU bugs modalg_2 bug5805_38: 0.9204059 / 1.6848108 [-45.37%]
CPU bugs modalg_2 bug5805_39: 0.8892057 / 1.6848108 [-47.22%]
CPU bugs modalg_2 bug5805_4: 0.7332047 / 1.5444099 [-52.53%]
CPU bugs modalg_2 bug5805_40: 1.0296066 / 1.6692107 [-38.32%]
CPU bugs modalg_3 bug600: 3.2136206 / 4.5552292 [-29.45%]
CPU bugs modalg_4 bug62: 4.6020295 / 6.0684389 [-24.16%]
CPU bugs modalg_4 bug919: 7.6128488 / 12.8856826 [-40.92%]
CPU bugs modalg_5 bug24190: 21.4501375 / 61.0275912 [-64.85%]
CPU bugs modalg_5 bug24359: 1.9188123 / 6.552042 [-70.71%]
CPU bugs modalg_5 bug24758_2: 4.5708293 / 7.3632472 [-37.92%]
CPU bugs modalg_5 bug24809: 32.8694107 / 44.1170828 [-25.50%]
CPU bugs modalg_5 bug25245_1: 4.2588273 / 7.8468503 [-45.73%]
CPU bugs modalg_5 bug25456: 1.872012 / 2.8392182 [-34.07%]
CPU bugs modalg_6 bug22609: 0.468003 / 1.1544074 [-59.46%]
CPU bugs modalg_6 bug26621: 14.7264944 / 29.6557901 [-50.34%]
CPU bugs modalg_6 bug26789_1: 2.0124129 / 4.4928288 [-55.21%]
CPU bugs modalg_6 bug26789_2: 1.9968128 / 5.0076321 [-60.12%]
CPU bugs modalg_6 bug26848: 3.2448208 / 4.7736306 [-32.03%]
CPU bugs modalg_6 bug26952_2: 4.6332297 / 5.8968378 [-21.43%]
CPU bugs modalg_6 bug27746_1: 4.1184264 / 5.6940365 [-27.67%]
CPU bugs modalg_6 bug28165_2: 4.7892307 / 6.1932397 [-22.67%]
CPU bugs modalg_6 bug28283: 2.1528138 / 3.2136206 [-33.01%]
CPU bugs modalg_6 bug28474_1: 0.1716011 / 0.780005 [-78.00%]
CPU bugs modalg_6 bug28486_3: 1.1076071 / 2.1372137 [-48.18%]
CPU bugs modalg_7 bug25730: 12.636081 / 17.8309143 [-29.13%]
CPU bugs modalg_7 bug27687: 4.0092257 / 5.5380355 [-27.61%]
CPU bugs modalg_7 bug27908: 1.9812127 / 2.8392182 [-30.22%]
CPU bugs modalg_7 bug27909: 3.5100225 / 4.8828313 [-28.12%]
CPU bugs modalg_7 bug28108: 1.7316111 / 3.4632222 [-50.00%]
CPU bugs modalg_7 bug28485: 7.7532497 / 15.8029013 [-50.94%]
CPU bugs modalg_7 bug28967: 1.9656126 / 3.5100225 [-44.00%]
CPU bugs modalg_7 bug29182_1: 11.544074 / 15.9589023 [-27.66%]
CPU bugs modalg_7 bug29204: 3.4944224 / 4.6020295 [-24.07%]
CPU bugs moddata_2 bug228: 2.4804159 / 7.8312502 [-68.33%]
CPU bugs moddata_2 bug26_1: 1.4352092 / 2.2152142 [-35.21%]
CPU bugs moddata_2 bug26_2: 1.7316111 / 2.5428163 [-31.90%]
CPU bugs moddata_3 bug25940: 2.1372137 / 2.9328188 [-27.13%]
CPU bugs moddata_3 bug599: 3.2136206 / 4.6176296 [-30.41%]

CPU draft angle I7: 0.4056026 / 1.2168078 [-66.67%]

CPU perf modalg bug26327: 3.432022 / 5.2416336 [-34.52%]
CPU perf modalg bug26980: 54.288348 / 100.0902416 [-45.76%]

CPU prj base D8: 0.4524029 / 1.2012077 [-62.34%]
CPU prj base H5: 0.312002 / 0.8736056 [-64.29%]
CPU prj base I3: 0.3744024 / 1.404009 [-73.33%]
(0073653)
abv   
2018-01-29 14:01   
Looks cool!
(0073678)
msv   
2018-01-30 18:48   
Remarks:

src/IntPolyh/IntPolyh_Tools.hxx
- 31: no need in DEFINE_STANDARD_ALLOC for a class with only static methods.

src/IntPolyh/IntPolyh_MaillageAffinage.cxx
- 285-289: It is better to make one comparison (SurfID == 1) and and call IntPolyh_Tools::MakeSampling with needed parameters.

src/IntPolyh/IntPolyh_Intersection.hxx
- replace in description the name IntPolyh_MaillageAffinage with the real used approach of intersection.
- 89: theDefl1 and theDefl2 are not used in the described method.
- move the private section "Performing the intersection" after the public one "Getting the results".
- 361: if enlarge is not possible (see the method EnlargeZone() in ) then skip this step.

src/IntTools/IntTools_BeanFaceIntersector.cxx
- 738: use const &
- 739: aCylAxis is really needed only in case (aCT == GeomAbs_Circle)
- 766: aCylAxis.Distance(aCircle.Location()) has already been computed above.
In this case formula must be improved to set hasIntersection to false if the circle and cylinder do not have intersection but one is located inside another.
- 770: comment is "sphere - circle", but sphere-line is computed below.
sphere - circle is missing, however it was processed in reference version.

src/Extrema/Extrema_ExtElCS.cxx
- 617,619: invert the comment meaning.

src/Extrema/Extrema_ExtCS.cxx
- 135: it seems the case line-plane must not be falled through the generic case of line-surface.
- 372: 'return' is needed to be added as the last statement of condition "if (myExtElCS.IsDone())" on line 264. And the lines 372-373 can be removed then.

src/GeometryTest/GeometryTest_APICommands.cxx
- 449: copy here the lines 429-431.

tests/lowalgos/extcs/circ_sph_inter
- 59: point on outer sphere, not inner.

tests/lowalgos/extcs/circ_sph_nointer
- 114: why do you compute extrema with unused result?

Please confirm the following changes in images:

All:
IMAGE de step_1 J6: J6.png differs
IMAGE mesh standard_mesh W5: W5.png differs

Unix:
IMAGE bugs modalg_1 buc60463: buc60463.png differs

Windows:
IMAGE mesh standard_incmesh_parallel W5: W5.png differs
(0073684)
git   
2018-01-31 10:25   
Branch CR28599_2 has been updated by emv.

SHA-1: 519cfef7f8fcb294f84e155944a9727c0a20ab84


Detailed log of new commits:

Author: emv
Date: Wed Jan 31 10:24:28 2018 +0300

    # Considering remarks.

(0073685)
git   
2018-01-31 10:31   
Branch CR28599_3 has been created by emv.

SHA-1: 87f726bde316e729a9f5d2c8ee0a1531a6ea38c9


Detailed log of new commits:

Author: emv
Date: Tue Dec 26 14:28:27 2017 +0300

    0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection algorithm
    
    The usage of *BRepAlgo_Section* has been replaced with the usage of *BRepAlgoAPI_Section* in *BRepProj_Projection* algorithm.
    
    The TODO statements have been removed from the failing test case in the "prj" grid as they are working correctly now.
    
    The following changes have been made to improve the performance *BRepAlgoAPI_Section*:
    1. Revision of the *IntPolyh_Intersection* class to avoid repeated calculation of the deflection of the same triangulation.
    2. Small revision of the Edge/Face intersection algorithm to perform Extrema computation on the whole intersection range of the edge instead of discrete ranges.
    3. Implementation of the extrema computation for the Circle and Sphere.
    4. Correct computation of the parameter of the point on the Circle.
(0073687)
git   
2018-01-31 10:41   
Branch CR28599_3 has been updated forcibly by emv.

SHA-1: aedc02436d3b0c7ce30826bf74d872dbba3c4481
(0073689)
emv   
2018-01-31 10:45   
The remarks have been considered, testing job restarted.
Some comments on the remarks:
> src/IntTools/IntTools_BeanFaceIntersector.cxx
> sphere - circle is missing, however it was processed in reference version.
  
The sphere-circle case will be fully computed using Extrema algorithm (exactly by the same approach).

> src/Extrema/Extrema_ExtCS.cxx
> - 135: it seems the case line-plane must not be falled through the generic case of line-surface.

Strangely, but the case of intersection of line-plane is not considered in Extrema_ExtElCS.

IMAGE de step_1 J6: J6.png differs - difference is due to correct computation of the parameter of the point on the circle
IMAGE mesh standard_mesh W5: W5.png differs - the case seems to be unstable
IMAGE mesh standard_incmesh_parallel W5: W5.png differs - the case seems to be unstable
IMAGE bugs modalg_1 buc60463: buc60463.png differs - this is improvement
(0073698)
emv   
2018-01-31 14:02   
The tests are finished. Please review the git branch CR28599_3.
(0073700)
git   
2018-01-31 16:21   
Branch CR28599_3 has been updated by emv.

SHA-1: 49c8895c14a1ffcb9122e68f76031e404c9ab5f5


Detailed log of new commits:

Author: emv
Date: Wed Jan 31 16:20:13 2018 +0300

    # Small correction in the test case.

(0073701)
git   
2018-01-31 16:39   
Branch CR28599_3 has been updated forcibly by emv.

SHA-1: f751f85049eb1eafe86142bef17a95fb6448df3c
(0073702)
msv   
2018-01-31 16:45   
Reviewed.
(0073704)
apn   
2018-01-31 17:00   
Combination -
OCCT branch : CR28599_3 SHA - aedc02436d3b0c7ce30826bf74d872dbba3c4481
Products branch : CR28599 SHA - a8f3ddb817485da4a83285b039a03044dfa7f6c0
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian70-64:
OCCT
Total CPU difference: 18201.499999999676 / 18668.749999999738 [-2.50%]
Products
Total CPU difference: 7494.990000000016 / 7510.000000000008 [-0.20%]
Windows-64-VC10:
OCCT
Total CPU difference: 17659.422400698593 / 18085.75753359851 [-2.36%]
Products
Total CPU difference: 7966.237865299985 / 8002.554898099971 [-0.45%]

Image differences :
Differences in images were confirmed

Memory differences :
No differences that require special attention
(0073713)
git   
2018-02-01 16:07   
Branch CR28599_3 has been updated by emv.

SHA-1: 935ac56f277de3c303042d47a9d753c866010ebf


Detailed log of new commits:

Author: emv
Date: Thu Feb 1 16:07:04 2018 +0300

    # Elimination of the warning.

(0073756)
git   
2018-02-05 11:39   
Branch CR28599 has been deleted by kgv.

SHA-1: 9bf977f6c6fe37cd2a94b68398d2f1015a6c95b7
(0073757)
git   
2018-02-05 11:39   
Branch CR28599_1 has been deleted by kgv.

SHA-1: 3bde8f3576ef90615a6291503ee742305babf78c
(0073758)
git   
2018-02-05 11:39   
Branch CR28599_2 has been deleted by kgv.

SHA-1: 519cfef7f8fcb294f84e155944a9727c0a20ab84
(0073759)
git   
2018-02-05 11:39   
Branch CR28599_3 has been deleted by kgv.

SHA-1: 935ac56f277de3c303042d47a9d753c866010ebf