View Issue Details

IDProjectCategoryView StatusLast Update
0028795Open CASCADEOCCT:Modeling Algorithmspublic2017-09-29 16:25
ReporternbvAssigned Toapv 
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Target Version7.2.0Fixed in Version7.2.0 
Summary0028795: Boolean operations corrupt the p-curve of the source planar face if "non-destructive" option is switched off
DescriptionUsual (on the current state of OCCT), edges do not have any p-curve on planar faces. However, Boolean operations story it. But the new p-curve loses the UV-bounds of the source face.
Steps To Reproduce# test boolean bcut_simple G8

box mb -0.5 -0.5 -0.5 1 1 1
explode mb F
prism pryz mb_1 1 0 0 SemiInf
box ab 0 -1 -1 2 2 2

explode ab f
explode pryz f

don ab_2 pryz_1

xbounds pryz_1
# 0, 1, -2e+100, 0

v2d
pcu pryz_1
# see CorruptPCurveBeforeBoolean.PNG attached picture


# Make a simple Boolean operation, e.g. "bsection"
bsection rs ab_2 pryz_1

xbounds pryz_1
# 0, 1, -2e+100, 2e+100

2dclear
pcu pryz_1
# see CorruptPCurveAfterBoolean.PNG attached picture
TagsNo tags attached.
Test case numberbugs modalg_6 bug28795

Attached Files

  • CorruptPCurveBeforeBoolean.PNG (15,312 bytes)
  • CorruptPCurveAfterBoolean.PNG (20,868 bytes)

Activities

nbv

2017-05-29 10:21

developer  

CorruptPCurveBeforeBoolean.PNG (15,312 bytes)

nbv

2017-05-29 10:21

developer  

CorruptPCurveAfterBoolean.PNG (20,868 bytes)

nbv

2017-05-29 10:31

developer   ~0066700

Steps To Reproduce has been updated.

git

2017-05-29 11:06

administrator   ~0066703

Branch CR28795 has been created by nbv.

SHA-1: f71d5c99932e0a9cefa3610b4c371e7d7f4dfadc


Detailed log of new commits:

Author: nbv
Date: Mon May 29 10:42:30 2017 +0300

    0028795: Boolean operations corrupt the p-curve of the source planar face if "non-destructive" option is switched off
    
    In the fix, obtained CurveOnSurface of the edge is trimmed in the range of its curve representation if true boundaries of the curve are not equal to correspond boundaries of the range.

Author: nbv
Date: Fri May 26 15:03:48 2017 +0300

    Merge branch 'master' of git.dev.opencascade.org:occt

Author: kgv
Date: Thu May 11 18:10:53 2017 +0300

    0028726: Quantity_NameOfColor should be replaced by Quantity_Color in function input argument
    
    AIS_InteractiveObject, virtual methods ::SetColor(), ::Color()
    returning/accepting Quantity_NameOfColor have been removed.
    Virtual method ::SetMaterial() accepting Graphic3d_NameOfMaterial has been also removed.
    
    V3d_View, V3d_Viewer, V3d_AmbientLight, V3d_DirectionalLight,
    V3d_Light, V3d_PositionalLight, V3d_SpotLight, Aspect_Window,
    methods accepting Quantity_NameOfColor have been removed (duplicates)
    or color argument(s) replaced with Quantity_Color.

Author: vro
Date: Mon May 22 15:41:14 2017 +0300

    0027667: OCAF binary persistence hangs on reading truncated CBF file
    
    A check on "end of file" is added to the reader.

Author: nbv
Date: Thu Dec 15 17:22:00 2016 +0300

    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 0025404). 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.

Author: kgv
Date: Tue May 23 19:05:41 2017 +0300

    0028778: Coding Rules - clean up confusing code from Select3D

Author: szy
Date: Tue May 23 15:14:51 2017 +0300

    0028446: Could not retrieve just kept document with Integer attribute

Author: szy
Date: Thu May 11 17:37:44 2017 +0300

    27970: Improvement of standard attributes usability - containers.

git

2017-05-29 11:10

administrator   ~0066704

Branch CR28795_1 has been created by nbv.

SHA-1: 66030af7156fee2b1aa409f35dab0a75ff9398b5


Detailed log of new commits:

Author: nbv
Date: Mon May 29 10:42:30 2017 +0300

    0028795: Boolean operations corrupt the p-curve of the source planar face if "non-destructive" option is switched off
    
    In the fix, obtained CurveOnSurface of the edge is trimmed in the range of its curve representation if true boundaries of the curve are not equal to correspond boundaries of the range.

nbv

2017-05-29 11:11

developer   ~0066705

Dear Mikhail,

Please review CR28795_1 branch.

git

2017-05-29 16:39

administrator   ~0066813

Branch CR28795_1 has been updated forcibly by nbv.

SHA-1: b08684473b54770343b0820cebb816ddce7aa20e

nbv

2017-05-29 16:40

developer   ~0066814

Insignificant correction in the test case has been made.

emv

2017-05-30 07:59

developer   ~0066843

Reviewed.

apv

2017-05-31 11:25

tester   ~0066909

Dear BugMaster,

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

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 64
   Windows: 0
   MacOS: 1197

Regressions/Differences:
Not detected

Testing cases:
bugs modalg_6 bug28795 - OK
http://occt-tests/CR28795_1-master-OCCT/Debian70-64/bugs/modalg_6/bug28795.html
http://occt-tests/CR28795_1-master-OCCT/Windows-64-VC10/bugs/modalg_6/bug28795.html

Testing on Linux:
Total MEMORY difference: 92638998 / 91843251 [+0.87%]
Total CPU difference: 18566.23000000023 / 19347.320000000098 [-4.04%]

Testing on Windows:
Total MEMORY difference: 58521963 / 58497831 [+0.04%]
Total CPU difference: 17247.7981620987 / 17520.28510879866 [-1.56%]

There are differences in images found by testdiff:
http://occt-tests/CR28795_1-master-OCCT/Debian70-64/diff-Debian70-64-image.html
http://occt-tests/CR28795_1-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html
boolean bfuse_complex N2
boolean bfuse_complex G4
boolean bcut_complex A1
boolean bcut_complex M5
boolean bcut_complex H3
boolean bcut_complex M6
boolean bcut_complex N9
feat featlf B8
feat featprism K1
feat featprism O6
feat featprism S2
bugs modalg_4 bug748

apv

2017-05-31 11:27

tester   ~0066910

Dear Nikolay,

Branch CR28795_1 has been rejected due to:
- differences in images

nbv

2017-05-31 12:31

developer   ~0066920

New behavior (pictures) of the test cases can be applied because quality of the shapes was non changed. Simply, we have obtained another set of isolines.

However, I would like to offer additional investigation of behavior of the DBRep_IsoBuilder algorithm with new result (especially "bugs modalg_4 bug748") in frame of the issue 0028385.

nbv

2017-05-31 12:32

developer   ~0066921

Last edited: 2017-05-31 12:32

Dear Mikhail,

Please confirm the conclusion 0028795:0066920.

msv

2017-05-31 14:38

developer   ~0066925

I do not agree. It is a regression. Please fix.

git

2017-05-31 17:31

administrator   ~0066940

Branch CR28795_2 has been created by nbv.

SHA-1: d32c3a5a04387eda540825c1201e55edb18d9ed0


Detailed log of new commits:

Author: nbv
Date: Mon May 29 10:42:30 2017 +0300

    0028795: Boolean operations corrupt the p-curve of the source planar face if "non-destructive" option is switched off
    
    Now, the range of BRep_CurveRepresentation of the edge is updated if at least one of its boundary is not infinite (earlier, it was updated if all two boundaries are not infinite only).

nbv

2017-05-31 17:33

developer   ~0066941

Dear Mikhail,

Please review CR28795_2 branch.

msv

2017-05-31 18:01

developer   ~0066942

- please make the fix more effective:
 1) remove lines 127-133
 2) after 153, always get range of COS
 3) check if 'f' is not infinite then use it for first
 4) the same for 'l'
 5) set new range of COS.

- make the same treatment in all other overloads of UpdateCurves() where rangeFound flag is used.

git

2017-06-01 10:12

administrator   ~0066951

Branch CR28795_3 has been created by nbv.

SHA-1: 4326ec5a6c64587ff03a4563917350cb6822d287


Detailed log of new commits:

Author: nbv
Date: Mon May 29 10:42:30 2017 +0300

    0028795: Boolean operations corrupt the p-curve of the source planar face if "non-destructive" option is switched off
    
    Now, the range of BRep_CurveRepresentation of the edge is updated if at least one of its boundary is not infinite (earlier, it was updated if all two boundaries are not infinite only).

nbv

2017-06-01 10:14

developer   ~0066952

Dear Mikhail,

Please review CR28795_3 branch.

git

2017-06-01 10:23

administrator   ~0066953

Branch CR28795_4 has been created by nbv.

SHA-1: 8f5f59a9194d461771f27a89c6a38439ec4b4759


Detailed log of new commits:

Author: nbv
Date: Mon May 29 10:42:30 2017 +0300

    0028795: Boolean operations corrupt the p-curve of the source planar face if "non-destructive" option is switched off
    
    Now, the range of BRep_CurveRepresentation of the edge is updated if at least one of its boundary is not infinite (earlier, it was updated if all two boundaries are not infinite only).

msv

2017-06-01 10:25

developer   ~0066954

Reviewed.

nbv

2017-06-01 10:36

developer   ~0066956

Please test the branch CR28795_4.

git

2017-06-02 11:48

administrator   ~0067006

Branch CR28795_4 has been updated forcibly by apv.

SHA-1: b7a71e36aa7701e80cd03049cc0978590b91df00

apv

2017-06-02 11:49

tester   ~0067007

Branch CR28795_4 has been rebased on the current master.

apv

2017-06-05 10:31

tester   ~0067056

Dear BugMaster,

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

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 64
   Windows: 0
   MacOS: 1216

Regressions/Differences:
Not detected

Testing cases:
bugs modalg_6 bug28795 - OK
http://occt-tests/CR28795_4-master-OCCT/Debian70-64/bugs/modalg_6/bug28795.html
http://occt-tests/CR28795_4-master-OCCT/Windows-64-VC10/bugs/modalg_6/bug28795.html

Testing on Linux:
Total MEMORY difference: 92428482 / 91787027 [+0.70%]
Total CPU difference: 18736.660000000218 / 18756.150000000256 [-0.10%]

Testing on Windows:
Total MEMORY difference: 58849565 / 58849087 [+0.00%]
Total CPU difference: 17467.603571098753 / 17514.591072298645 [-0.27%]

apv

2017-06-05 10:32

tester   ~0067057

Dear BugMaster,

Please integrate branch CR28795_4 into the occt git-repository master.

git

2017-06-13 17:34

administrator   ~0067346

Branch CR28795 has been deleted by kgv.

SHA-1: f71d5c99932e0a9cefa3610b4c371e7d7f4dfadc

git

2017-06-13 17:34

administrator   ~0067347

Branch CR28795_1 has been deleted by kgv.

SHA-1: b08684473b54770343b0820cebb816ddce7aa20e

git

2017-06-13 17:34

administrator   ~0067348

Branch CR28795_2 has been deleted by kgv.

SHA-1: d32c3a5a04387eda540825c1201e55edb18d9ed0

git

2017-06-13 17:34

administrator   ~0067349

Branch CR28795_3 has been deleted by kgv.

SHA-1: 4326ec5a6c64587ff03a4563917350cb6822d287

git

2017-06-13 17:34

administrator   ~0067350

Branch CR28795_4 has been deleted by kgv.

SHA-1: b7a71e36aa7701e80cd03049cc0978590b91df00

Related Changesets

occt: master b7a71e36

2017-05-29 07:42:30

nbv


Committer: apv Details Diff
0028795: Boolean operations corrupt the p-curve of the source planar face if "non-destructive" option is switched off

Now, the range of BRep_CurveRepresentation of the edge is updated if at least one of its boundary is not infinite (earlier, it was updated if all two boundaries are not infinite only).
Affected Issues
0028795
mod - src/BRep/BRep_Builder.cxx Diff File
add - tests/bugs/modalg_6/bug28795 Diff File

Issue History

Date Modified Username Field Change
2017-05-29 10:21 nbv New Issue
2017-05-29 10:21 nbv Assigned To => msv
2017-05-29 10:21 nbv File Added: CorruptPCurveBeforeBoolean.PNG
2017-05-29 10:21 nbv File Added: CorruptPCurveAfterBoolean.PNG
2017-05-29 10:31 nbv Note Added: 0066700
2017-05-29 10:31 nbv Steps to Reproduce Updated
2017-05-29 11:06 git Note Added: 0066703
2017-05-29 11:10 git Note Added: 0066704
2017-05-29 11:10 nbv Assigned To msv => nbv
2017-05-29 11:10 nbv Status new => assigned
2017-05-29 11:11 nbv Note Added: 0066705
2017-05-29 11:11 nbv Assigned To nbv => msv
2017-05-29 11:11 nbv Status assigned => resolved
2017-05-29 16:26 msv Assigned To msv => emv
2017-05-29 16:39 git Note Added: 0066813
2017-05-29 16:40 nbv Note Added: 0066814
2017-05-30 07:59 emv Note Added: 0066843
2017-05-30 07:59 emv Assigned To emv => bugmaster
2017-05-30 07:59 emv Status resolved => reviewed
2017-05-30 12:25 apv Assigned To bugmaster => apv
2017-05-30 16:29 apv Test case number => bugs modalg_6 bug28795
2017-05-31 11:25 apv Note Added: 0066909
2017-05-31 11:25 apv Assigned To apv => nbv
2017-05-31 11:25 apv Status reviewed => assigned
2017-05-31 11:27 apv Note Added: 0066910
2017-05-31 12:31 nbv Note Added: 0066920
2017-05-31 12:32 nbv Note Added: 0066921
2017-05-31 12:32 nbv Assigned To nbv => msv
2017-05-31 12:32 nbv Status assigned => resolved
2017-05-31 12:32 nbv Note Edited: 0066921
2017-05-31 14:38 msv Note Added: 0066925
2017-05-31 17:31 git Note Added: 0066940
2017-05-31 17:33 nbv Note Added: 0066941
2017-05-31 18:01 msv Note Added: 0066942
2017-05-31 18:01 msv Assigned To msv => nbv
2017-05-31 18:01 msv Status resolved => assigned
2017-06-01 10:12 git Note Added: 0066951
2017-06-01 10:14 nbv Note Added: 0066952
2017-06-01 10:14 nbv Assigned To nbv => msv
2017-06-01 10:14 nbv Status assigned => resolved
2017-06-01 10:23 git Note Added: 0066953
2017-06-01 10:25 msv Note Added: 0066954
2017-06-01 10:25 msv Assigned To msv => bugmaster
2017-06-01 10:25 msv Status resolved => reviewed
2017-06-01 10:36 nbv Note Added: 0066956
2017-06-01 12:12 apv Assigned To bugmaster => apv
2017-06-02 11:48 git Note Added: 0067006
2017-06-02 11:49 apv Note Added: 0067007
2017-06-05 10:31 apv Note Added: 0067056
2017-06-05 10:31 apv Assigned To apv => bugmaster
2017-06-05 10:31 apv Status reviewed => tested
2017-06-05 10:32 apv Note Added: 0067057
2017-06-09 14:06 apv Changeset attached => occt master b7a71e36
2017-06-09 14:06 apv Assigned To bugmaster => apv
2017-06-09 14:06 apv Status tested => verified
2017-06-09 14:06 apv Resolution open => fixed
2017-06-13 17:34 git Note Added: 0067346
2017-06-13 17:34 git Note Added: 0067347
2017-06-13 17:34 git Note Added: 0067348
2017-06-13 17:34 git Note Added: 0067349
2017-06-13 17:34 git Note Added: 0067350
2017-09-29 16:18 aiv Fixed in Version => 7.2.0
2017-09-29 16:25 aiv Status verified => closed