View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0028259 | Open CASCADE | OCCT:Modeling Algorithms | public | 2016-12-22 10:35 | 2017-09-29 16:25 |
Reporter | Assigned To | bugmaster | |||
Priority | normal | Severity | trivial | ||
Status | closed | Resolution | fixed | ||
Product Version | 7.1.0 | ||||
Target Version | 7.2.0 | Fixed in Version | 7.2.0 | ||
Summary | 0028259: Method MakeBlocksCnx is duplicated in two different places in BOPAlgo | ||||
Description | There are two methods with the name MakeBlocksCnx in the package BOPAlgo: - public static method of the class BOPAlgo_Tools; - local static method in the file BOPAlgo_Builder_2.cxx Implementation of these methods looks like copy-paste of each other, with small modification regarding the type of items in the input containers. In one method they are shapes, in the other they are indices of shapes. The same is for the methods FillMap with the following parameters: void FillMap(const TopoDS_Shape& aS1, const TopoDS_Shape& aS2, BOPCol_IndexedDataMapOfShapeListOfShape& aDMSLS, Handle(NCollection_BaseAllocator)& aAllocator); void FillMap(const Standard_Integer tneN1, const Standard_Integer tneN2, BOPCol_IndexedDataMapOfIntegerListOfInteger& theMILI, const BOPCol_BaseAllocator& theAllocator); They are implemented also in these two files. It is needed to remove local static methods and to use methods of the class BOPAlgo_Tools. Some modification of calling code will be necessary to switch to new structures. | ||||
Steps To Reproduce | Not needed. | ||||
Tags | No tags attached. | ||||
Test case number | Not needed | ||||
|
The similar methods: void BOPAlgo_Tools::FillMap(const Handle(BOPDS_PaveBlock)& aPB1, const Handle(BOPDS_PaveBlock)& aPB2, BOPDS_IndexedDataMapOfPaveBlockListOfPaveBlock& aMPBLPB, const Handle(NCollection_BaseAllocator)& aAllocator) void BOPAlgo_Tools::MakeBlocks(const BOPDS_IndexedDataMapOfPaveBlockListOfPaveBlock& aMILI, BOPDS_DataMapOfIntegerListOfPaveBlock& aMBlocks, const Handle(NCollection_BaseAllocator)& aAllocator) It is necessary to unify implementation of all these methods using two template functions - one for FillMap and the other for MakeBlocks. |
|
Branch CR28259 has been created by emv. SHA-1: 5202aa3f373858c2c38eab8d0b7a8ba9a2c7b74a Detailed log of new commits: Author: emv Date: Sun Apr 30 01:09:36 2017 +0300 0028259: Method MakeBlocksCnx is duplicated in two different places in BOPAlgo The implementation of the methods BOPAlgo_Tools::MakeBlocksCnx(), BOPAlgo_Tools::MakeBlocks() and static method MakeBlocksCnx in BOPAlgo_Builder_2.cxx have been replaced with the usage of the new template method MakeBlocksT(). The implementation of all methods BOPAlgo_Tools::FillMap() have been replaced with the usage of the new template method FillMapT(). Making the Pave Block with the smallest index of original edge to be the first in the Common Block (i.e. the representing Pave Block). The following improvements have been made in Boolean Operations algorithm to avoid regressions: - When updating the existing common block update its pave blocks in a way that the parameters of the paves should be valid for the original edge (bugs/modalg_5/bug24809); - When trying to reduce the tolerance of the section edge check the tolerance of all Face/Face interferences created this edge (boolean/volumemaker/C4,D2); - Avoid producing the different Pave Blocks for the same section edge (boolean/volumemaker/D6); Adjustment of the test cases. |
|
Dear Mikhail, could you please review the branch CR28259? |
|
Branch CR28259 has been updated by emv. SHA-1: a19f720a0bb48efb88873d69465ed09b39b1fec8 Detailed log of new commits: Author: emv Date: Thu May 25 18:07:37 2017 +0300 Keep only template functions BOPAlgo_Tools::MakeBlocks() and BOPAlgo_Tools::FillMap(). |
|
Branch CR28259_1 has been created by emv. SHA-1: b183b2c053823cd04c70e1a7295ccd5c0cb16f50 Detailed log of new commits: Author: emv Date: Sun Apr 30 01:09:36 2017 +0300 0028259: Method MakeBlocksCnx is duplicated in two different places in BOPAlgo The methods BOPAlgo_Tools::MakeBlocksCnx(), BOPAlgo_Tools::MakeBlocks() and static method MakeBlocksCnx in BOPAlgo_Builder_2.cxx have been replaced with the new template method BOPAlgo_Tools::MakeBlocks(). All methods BOPAlgo_Tools::FillMap() have been replaced with the new template method BOPAlgo_Tools::FillMap(). Making the Pave Block with the smallest index of original edge to be the first in the Common Block (i.e. the representing Pave Block). The following improvements have been made in Boolean Operations algorithm to avoid regressions: - When updating the existing common block update its pave blocks in a way that the parameters of the paves should be valid for the original edge (bugs/modalg_5/bug24809); - When trying to reduce the tolerance of the section edge check the tolerance of all Face/Face interferences created this edge (boolean/volumemaker/C4,D2); - Avoid producing the different Pave Blocks for the same section edge (boolean/volumemaker/D6); Adjustment of the test cases. |
|
The corrections have been made according to verbal remarks. These corrections are localized in last commit to CR28259 branch. The branch CR28259_1 contains all changes and the correct commit message. Please review again. |
|
In commit massage: "check the tolerance of all Face/Face interferences created this edge" => "check the tolerance of all Face/Face interferences that created this edge" src\BOPAlgo\BOPAlgo_Tools.hxx - useless include of BOPDS_DataMapOfIntegerListOfPaveBlock - it seems the argument theMBlocks of the method MakeBlocks has too complex type. According to the context where it is used it is enough to have list of list. |
|
Branch CR28259 has been updated by emv. SHA-1: dff7c8e329c5fffba25d6a28fa2450b58bbac75f Detailed log of new commits: Author: emv Date: Fri May 26 10:33:49 2017 +0300 In the method BOPAlgo_Tools::MakeBlocks() store the connected elements into the list of list instead of data map. |
|
Branch CR28259_1 has been updated forcibly by emv. SHA-1: dddfd809101aa16c18062e872854491d156d106c |
|
Done, please review. |
|
Branch CR28259_1 has been updated forcibly by emv. SHA-1: 14035d1d673e84f52d4afa471f4f8dad8dac9a97 |
|
Branch CR28259_1 has been updated forcibly by emv. SHA-1: 648fab3b6b396e55a2f4b402d024685cb39f6142 |
|
Reviewed. |
|
Branch CR28259_1 has been updated forcibly by mkv. SHA-1: 899020d3ba52d1973f5103dbee2b12ace9eb425b |
|
Dear BugMaster, Branch CR28259_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms on Release mode. SHA-1: 899020d3ba52d1973f5103dbee2b12ace9eb425b There are compilation errors: http://jenkins-test-07.nnov.opencascade.com:8080/view/CR28259_1-master/job/CR28259_1-master-OCCT-Debian70-64-opt-compile/1/parsed_console/ /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:54:7: error: need 'typename' before 'NCollection_List<theType>::Iterator' because 'NCollection_List<theType>' is a dependent scope /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:54:43: error: expected ';' before 'aItLChain' /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:55:14: error: 'aItLChain' was not declared in this scope /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:59:14: error: need 'typename' before 'NCollection_List<theType>::Iterator' because 'NCollection_List<theType>' is a dependent scope /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:59:50: error: expected ';' before 'aItLI' /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:59:62: error: 'aItLI' was not declared in this scope /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:43:65: error: no matching function for call to 'NCollection_Map<TopoDS_Shape, TopTools_ShapeMapHasher>::NCollection_Map(const BOPCol_BaseAllocator&)' /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:54:7: error: dependent-name 'NCollection_List<theType>::Iterator' is parsed as a non-type, but instantiation yields a type /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:54:7: note: say 'typename NCollection_List<theType>::Iterator' if a type is meant /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:59:60: error: dependent-name 'NCollection_List<theType>::Iterator' is parsed as a non-type, but instantiation yields a type /dn54/builds/CR28259_1-master/Debian70-64-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:59:60: note: say 'typename NCollection_List<theType>::Iterator' if a type is meant http://jenkins-test-07.nnov.opencascade.com:8080/view/CR28259_1-master/job/CR28259_1-master-OCCT-MacOS-opt-compile/1/parsed_console/ /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:54:23: error: expected ';' after expression NCollection_List<theType>::Iterator aItLChain(aChain); ^ ; /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:55:14: error: use of undeclared identifier 'aItLChain'; did you mean 'aChain'? for (; aItLChain.More(); aItLChain.Next()) { ^~~~~~~~~ aChain /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:51:34: note: 'aChain' declared here NCollection_List<theType>& aChain = theMBlocks.Append(NCollection_List<theType>(theAllocator)); ^ [ 39%] /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:55:32: error: use of undeclared identifier 'aItLChain'; did you mean 'aChain'? for (; aItLChain.More(); aItLChain.Next()) { ^~~~~~~~~ aChain /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:51:34: note: 'aChain' declared here NCollection_List<theType>& aChain = theMBlocks.Append(NCollection_List<theType>(theAllocator)); ^ /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:56:29: error: use of undeclared identifier 'aItLChain'; did you mean 'aChain'? const theType& n1 = aItLChain.Value(); ^~~~~~~~~ aChain /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:51:34: note: 'aChain' declared here NCollection_List<theType>& aChain = theMBlocks.Append(NCollection_List<theType>(theAllocator)); ^ /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:59:14: error: missing 'typename' prior to dependent type name 'NCollection_List<theType>::Iterator' for (NCollection_List<theType>::Iterator aItLI(aLI); aItLI.More(); aItLI.Next()) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ typename Building CXX object src/TKDraw/CMakeFiles/TKDraw.dir/__/DBRep/DBRep_HideData.cxx.o /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:43:45: error: no matching constructor for initialization of 'NCollection_Map<TopoDS_Shape, TopTools_ShapeMapHasher>' NCollection_Map<theType, theTypeHasher> aMFence(theAllocator); ^ ~~~~~~~~~~~~ /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:54:7: error: missing 'typename' prior to dependent type name 'NCollection_List<TopoDS_Shape>::Iterator' NCollection_List<theType>::Iterator aItLChain(aChain); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:54:43: error: use of undeclared identifier 'aItLChain' NCollection_List<theType>::Iterator aItLChain(aChain); ^ /Users/mnt/builds/CR28259_1-master/MacOS-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx:55:24: error: no member named 'More' in 'NCollection_List<TopoDS_Shape>' for (; aItLChain.More(); aItLChain.Next()) { ~~~~~~~~~ ^ 9 errors generated. http://jenkins-test-07.nnov.opencascade.com:8080/view/CR28259_1-master/job/CR28259_1-master-OCCT-Windows-64-VC10-opt-compile/1/parsed_console/ 23>D:/builds/CR28259_1-master/Windows-64-VC10-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx(67): error C4519: default template arguments are only allowed on a class template 23>D:/builds/CR28259_1-master/Windows-64-VC10-opt/OCCT/src/BOPAlgo/BOPAlgo_Tools.hxx(87): error C4519: default template arguments are only allowed on a class template |
|
Branch CR28259_1 has been updated by emv. SHA-1: 38e226d91f54d4140574e1e693e089c4b456e9e5 Detailed log of new commits: Author: emv Date: Fri May 26 16:58:16 2017 +0300 // Corrections of the compilation errors. |
|
The compilation errors should be eliminated now. Please review. |
|
Reviewed. |
|
Dear BugMaster, Branch CR28259_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested on Release mode. SHA-1: 38e226d91f54d4140574e1e693e089c4b456e9e5 Number of compiler warnings: occt component : Linux: 0 (0 on master) Windows: 0 (0 on master) MacOS : 0 (0 on master) products component : Linux: 64 (64 on master) Windows: 0 (0 on master) MacOS : 1208 Regressions/Differences/Improvements: No regressions/differences Testing cases: Not needed Testing on Linux: occt component : Total MEMORY difference: 91929501 / 91797911 [+0.14%] Total CPU difference: 18906.610000000233 / 19346.9700000001 [-2.28%] products component : Total MEMORY difference: 31270768 / 31352485 [-0.26%] Total CPU difference: 5425.829999999985 / 5393.529999999966 [+0.60%] Testing on Windows: occt component : Total MEMORY difference: 58567549 / 58497831 [+0.12%] Total CPU difference: 17342.178767098525 / 17520.28510879866 [-1.02%] products component : Total MEMORY difference: 22726695 / 22688363 [+0.17%] Total CPU difference: 5360.927564699972 / 5357.885545199975 [+0.06%] There are following differences in images found by testdiff. http://occt-tests/CR28259_1-master-OCCT/Debian70-64/diff-Debian70-64.html http://occt-tests/CR28259_1-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html |
|
Dear emv, Branch CR28259_1 has been rejected due to: - differences in images |
|
The differences in images are cased by changing the way of choosing the representing edge in the block of coinciding edges in Boolean Operations algorithm. As I see, all differences are minor, I did not find any difference which looks like a regression. Dear Mikhail, can you point out the particular cases which look suspicious to you? |
|
Dear BugMaster, Branch CR28259_1 is TESTED. |
|
Branch CR28259_1 has been deleted by inv. SHA-1: 38e226d91f54d4140574e1e693e089c4b456e9e5 |
|
Branch CR28259 has been deleted by inv. SHA-1: dff7c8e329c5fffba25d6a28fa2450b58bbac75f |
occt: master edfa30de 2017-04-29 22:09:36
Committer: bugmaster Details Diff |
0028259: Method MakeBlocksCnx is duplicated in two different places in BOPAlgo The methods BOPAlgo_Tools::MakeBlocksCnx(), BOPAlgo_Tools::MakeBlocks() and static method MakeBlocksCnx in BOPAlgo_Builder_2.cxx have been replaced with the new template method BOPAlgo_Tools::MakeBlocks(). The blocks of connected elements are now stored into the list of list instead of data map. All methods BOPAlgo_Tools::FillMap() have been replaced with the new template method BOPAlgo_Tools::FillMap(). Making the Pave Block with the smallest index of original edge to be the first in the Common Block (i.e. the representing Pave Block). The following improvements have been made in Boolean Operations algorithm to avoid regressions: - When updating the existing common block update its pave blocks in a way that the parameters of the paves should be valid for the original edge (bugs/modalg_5/bug24809); - When trying to reduce the tolerance of the section edge check the tolerance of all Face/Face interferences that created this edge (boolean/volumemaker/C4,D2); - Avoid producing the different Pave Blocks for the same section edge (boolean/volumemaker/D6); Adjustment of the test cases. |
Affected Issues 0028259 |
|
mod - dox/dev_guides/upgrade/upgrade.md | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Builder_2.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_PaveFiller_1.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_PaveFiller_10.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Tools.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Tools.hxx | Diff File | ||
mod - src/BOPDS/BOPDS_CommonBlock.cxx | Diff File | ||
mod - src/BOPDS/BOPDS_CommonBlock.hxx | Diff File | ||
mod - src/BOPDS/BOPDS_DS.cxx | Diff File | ||
mod - src/BOPDS/BOPDS_DS.hxx | Diff File | ||
mod - src/BOPDS/BOPDS_IndexedDataMapOfPaveBlockListOfInteger.hxx | Diff File | ||
mod - src/BOPTools/BOPTools_AlgoTools.cxx | Diff File | ||
mod - src/BRepOffset/BRepOffset_Inter3d.cxx | Diff File | ||
mod - src/BRepOffset/BRepOffset_MakeOffset.cxx | Diff File | ||
mod - src/BRepOffset/BRepOffset_MakeOffset_1.cxx | Diff File | ||
mod - tests/bugs/modalg_5/bug25721 | Diff File | ||
mod - tests/bugs/modalg_6/bug26954_3 | Diff File | ||
mod - tests/bugs/modalg_6/bug27383_1 | Diff File | ||
mod - tests/offset/shape_type_i_c/XC1 | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2016-12-22 10:35 |
|
New Issue | |
2016-12-22 10:35 |
|
Assigned To | => msv |
2016-12-22 10:36 |
|
Steps to Reproduce Updated | |
2017-05-03 08:49 |
|
Note Added: 0065696 | |
2017-05-23 15:15 |
|
Assigned To | msv => emv |
2017-05-23 15:15 |
|
Status | new => assigned |
2017-05-25 13:35 | git | Note Added: 0066580 | |
2017-05-25 13:37 |
|
Note Added: 0066581 | |
2017-05-25 13:37 |
|
Assigned To | emv => msv |
2017-05-25 13:37 |
|
Status | assigned => resolved |
2017-05-25 18:08 | git | Note Added: 0066608 | |
2017-05-25 18:12 | git | Note Added: 0066610 | |
2017-05-25 18:16 |
|
Note Added: 0066612 | |
2017-05-26 09:18 |
|
Note Added: 0066620 | |
2017-05-26 09:18 |
|
Assigned To | msv => emv |
2017-05-26 09:18 |
|
Status | resolved => assigned |
2017-05-26 10:36 | git | Note Added: 0066621 | |
2017-05-26 10:42 | git | Note Added: 0066622 | |
2017-05-26 10:43 |
|
Note Added: 0066623 | |
2017-05-26 10:43 |
|
Assigned To | emv => msv |
2017-05-26 10:43 |
|
Status | assigned => resolved |
2017-05-26 11:11 | git | Note Added: 0066627 | |
2017-05-26 11:18 | git | Note Added: 0066630 | |
2017-05-26 11:20 |
|
Note Added: 0066631 | |
2017-05-26 11:20 |
|
Assigned To | msv => bugmaster |
2017-05-26 11:20 |
|
Status | resolved => reviewed |
2017-05-26 12:40 |
|
Assigned To | bugmaster => mkv |
2017-05-26 15:26 | git | Note Added: 0066647 | |
2017-05-26 16:35 |
|
Note Added: 0066659 | |
2017-05-26 16:35 |
|
Assigned To | mkv => emv |
2017-05-26 16:35 |
|
Status | reviewed => assigned |
2017-05-26 17:02 | git | Note Added: 0066662 | |
2017-05-26 17:03 |
|
Note Added: 0066663 | |
2017-05-26 17:03 |
|
Assigned To | emv => msv |
2017-05-26 17:03 |
|
Status | assigned => resolved |
2017-05-26 17:38 |
|
Note Added: 0066671 | |
2017-05-26 17:38 |
|
Assigned To | msv => bugmaster |
2017-05-26 17:38 |
|
Status | resolved => reviewed |
2017-05-26 17:45 |
|
Assigned To | bugmaster => mkv |
2017-05-29 17:59 |
|
Note Added: 0066824 | |
2017-05-29 18:00 |
|
Note Added: 0066825 | |
2017-05-29 18:00 |
|
Assigned To | mkv => emv |
2017-05-29 18:00 |
|
Status | reviewed => feedback |
2017-05-29 18:00 |
|
Test case number | => Not needed |
2017-05-30 07:34 |
|
Note Added: 0066842 | |
2017-05-30 07:34 |
|
Assigned To | emv => mkv |
2017-05-30 07:35 |
|
Note Edited: 0066842 | |
2017-05-30 16:34 |
|
Note Added: 0066890 | |
2017-05-30 16:34 |
|
Assigned To | mkv => bugmaster |
2017-05-30 16:34 |
|
Status | feedback => tested |
2017-06-02 10:28 | bugmaster | Changeset attached | => occt master edfa30de |
2017-06-02 10:28 | bugmaster | Status | tested => verified |
2017-06-02 10:28 | bugmaster | Resolution | open => fixed |
2017-06-02 10:45 | git | Note Added: 0066998 | |
2017-06-02 10:46 | git | Note Added: 0066999 | |
2017-09-29 16:18 |
|
Fixed in Version | => 7.2.0 |
2017-09-29 16:25 |
|
Status | verified => closed |