View Issue Details

IDProjectCategoryView StatusLast Update
0028055Open CASCADEOCCT:Data Exchangepublic2019-09-14 08:02
ReporterssvAssigned Toapn  
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Target Version7.2.0Fixed in Version7.2.0 
Summary0028055: Add UpdateAssemblies() method for top-down update of assembly compounds
DescriptionThe proposed method is a part of XCAFDoc_ShapeTool. The idea is to traverse all assemblies recursively and to rebuild compounds for those (sub-)assemblies which happen to have the modified instances. This method is global. It is designed for synchronization of the nested TopoDS_Compounds with the actual geometry stored in an assembly.
TagsNo tags attached.
Test case numberbugs xde bug28055_1, bug28055_2

Attached Files

  • hugeassembly.tcl (914 bytes)

Relationships

parent of 0030738 closedbugmaster Open CASCADE Data Exchange - XCAFDoc_ShapeTool::updateComponent() is too long 
related to 0028082 closedabv Open CASCADE UpdateAssembly() method in shape tool is not recursive 
related to 0028402 newmsv Open CASCADE Modeling - calculation of properties of complex compounds is slow 
related to 0026314 closedgka Open CASCADE Method XCAFDoc_ShapeTool::SetShape() works not correctly. 

Activities

git

2016-11-07 13:10

administrator   ~0059920

Branch CR28055 has been created by ssv.

SHA-1: 26a909c1f8887b54606baa9aca5bc357dcd53b45


Detailed log of new commits:

Author: ssv
Date: Mon Nov 7 13:09:37 2016 +0300

    28055: Add UpdateAssemblies() method for top-down update of assembly compounds
    
    Add new methods to XCAFDoc_ShapeTool for global assembly update.

ssv

2016-11-07 13:10

developer   ~0059921

Dear abv, please, review.

ssv

2016-11-09 12:20

developer   ~0060099

The following remarks are to be taken into account:

- The method does not work on removal of instances.
- It is necessary to implement the corresponding Draw command.
- It is necessary to prepare a test case (take the Draw-embedded XDE demo as a basis).

git

2016-11-09 19:14

administrator   ~0060145

Branch CR28055 has been updated by ssv.

SHA-1: 74352b38fce05e488a90a57c3787cc7bacb2e240


Detailed log of new commits:

Author: ssv
Date: Wed Nov 9 19:14:07 2016 +0300

    Fix UpdateAssemblies() to work for component removal; add Draw command XUpdateAssemblies

Author: ssv
Date: Wed Nov 9 18:07:44 2016 +0300

    Merge branch 'CR28055' of git.dev.opencascade.org:occt into CR28055

git

2016-11-11 16:00

administrator   ~0060244

Branch CR28055_1 has been created by ssv.

SHA-1: 133131f7f09823102dcde64e7332a1bf34ad4ce9


Detailed log of new commits:

Author: ssv
Date: Fri Nov 11 15:59:05 2016 +0300

    0028055: Add UpdateAssemblies() method for top-down update of assembly compounds
    
    - Implement top-down update for assemblies in XCAFDoc_ShapeTool
    - Get rid of UpdateAssembly() method used for partial (parent-only) update
    - Adjust STEP and IGES translators to use the top-down update after filling OCAF
    - Implement XUpdateAssemblies Draw command
    - Add test cases bug28055_1 and bug28055_2 for component removal and part update
    - Update XDE documentation to mention the new UpdateAssemblies() method

ssv

2016-11-11 16:01

developer   ~0060245

Dear abv, please, review CR28055_1.

ssv

2016-12-19 15:17

developer   ~0061860

I tried to figure out whether it is possible to get rid of UpdateAssemblies() invocation at the end of STEP/IGES translation. However, I see that STEPCAFControl_Reader::AddShape() method works as follows:

1. It first creates an empty compound by XCAFDoc_ShapeTool::NewShape() method.

2. It then populates the assembly by XCAFDoc_ShapeTool::AddComponent() method which rebuilds the owner compound.

Therefore, I failed to figure out how to avoid UpdateAssemblies() invocation without changing the translation logic. Any ideas?

abv

2016-12-19 15:19

manager   ~0061861

Sergey, I shall review the changes in the coming days, sorry for delay!

abv

2017-01-05 13:31

manager   ~0062404

No remarks, please test.

I had a doubt whether some means should be added to avoid repetitive analysis of the same assembly label, in case of multiple use of it in higher-level assemblies. However, tests showed that even for assemblies with very high repetition it works very fast. I made 4-level assembly with repetition of the same sub-item 12-36 times at each level, total 93 K instances of simple part, and UpdateAssemblies takes just 0.2 sec in this test.

git

2017-01-09 13:27

administrator   ~0062412

Branch CR28055_1 has been updated forcibly by mkv.

SHA-1: a200606b1b9255761ca3cb96f7adf5a625edf3c3

mkv

2017-01-10 15:24

tester   ~0062450

Dear BugMaster,
Branch CR28055_1 was rebased on current master of occt git-repository.
SHA-1: a200606b1b9255761ca3cb96f7adf5a625edf3c3

mkv

2017-01-10 15:24

tester   ~0062451

Dear BugMaster,
Branch CR28055_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: a200606b1b9255761ca3cb96f7adf5a625edf3c3

There are following compilation errors:
Linux:
http://jenkins-test-07.nnov.opencascade.com:8080/view/CR28055_1-master/job/CR28055_1-master-Products-Debian70-64-qt-samples-linux/1/parsed_console/
src/OMFSampleDoc.cpp:1050:10: error: 'class XCAFDoc_ShapeTool' has no member named 'UpdateAssembly'

Windows:
http://jenkins-test-07.nnov.opencascade.com:8080/view/CR28055_1-master/job/CR28055_1-master-Products-Windows-64-VC10-mfc-samples/1/parsed_console/
1>src\XDESampleDoc.cpp(891): error C2039: 'UpdateAssembly' : is not a member of 'XCAFDoc_ShapeTool'

http://jenkins-test-07.nnov.opencascade.com:8080/view/CR28055_1-master/job/CR28055_1-master-Products-Windows-64-VC10-qt-samples-windows/1/parsed_console/
1>src\OMFSampleDoc.cpp(1050): error C2039: 'UpdateAssembly' : is not a member of 'XCAFDoc_ShapeTool'
1>src\CADAssistantDoc.cpp(891): error C2039: 'UpdateAssembly' : is not a member of 'XCAFDoc_ShapeTool'

Number of compiler warnings:

occt component :
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MacOS : 0 (0 on master)

products component :
Linux: 63 (63 on master)
Windows: 0 (0 on master)
MacOS : 1148

Regressions/Differences/Improvements:
http://occt-tests/CR28055_1-master-OCCT/Windows-64-VC10/bugs/fclasses/bug28217.html
bugs fclasses bug28217: IMPROVEMENT

Testing cases:
http://occt-tests/CR28055_1-master-OCCT/Debian70-64/bugs/xde/bug28055_1.html
http://occt-tests/CR28055_1-master-OCCT/Windows-64-VC10/bugs/xde/bug28055_1.html
bugs xde bug28055_1: OK
http://occt-tests/CR28055_1-master-OCCT/Debian70-64/bugs/xde/bug28055_2.html
http://occt-tests/CR28055_1-master-OCCT/Windows-64-VC10/bugs/xde/bug28055_2.html
bugs xde bug28055_2: OK

Testing on Linux:
occt component :
Total MEMORY difference: 93502589 / 92897412 [+0.65%]
Total CPU difference: 21411.930000000164 / 21506.1200000003 [-0.44%]
products component :
Total MEMORY difference: 30340236 / 30395462 [-0.18%]
Total CPU difference: 5354.829999999978 / 5312.789999999971 [+0.79%]

Testing on Windows:
occt component :
Total MEMORY difference: 58645700 / 58649007 [-0.01%]
Total CPU difference: 18851.129639798637 / 19749.742200098677 [-4.55%]
products component :
Total MEMORY difference: 21152254 / 21118126 [+0.16%]
Total CPU difference: 5185.192438199971 / 5256.094892699988 [-1.35%]

There are no differences in images found by testdiff.

git

2017-01-10 15:24

administrator   ~0062452

Branch CR28055_1 has been updated by mkv.

SHA-1: 539fc2a39c24c1858c79abff27e3300cd66660f3


Detailed log of new commits:

Author: mkv
Date: Tue Jan 10 15:23:50 2017 +0300

    Correction for issue CR28055

mkv

2017-01-10 15:25

tester   ~0062453

Dear ssv,
Branch CR28055_1 has been rejected due to:
- compilation errors

ssv

2017-01-16 17:25

developer   ~0062639

Dear Mikhail, please, retest. Branch for products is CR28055.

abv

2017-01-17 09:41

manager   ~0062676

Note that only products samples have changes, thus there is no need to re-test OCCT and Products, just check compilation of samples.

git

2017-01-17 15:35

administrator   ~0062703

Branch CR28055_1 has been updated by apv.

SHA-1: 38ad51415ffef624e534389e6470620cacfb060c


Detailed log of new commits:

Author: apv
Date: Tue Jan 17 15:34:58 2017 +0300

    Adjusting of test case bugs/fclasses/bug28217

apv

2017-01-17 16:05

tester   ~0062704

Dear BugMaster,

Branch CR28055_1 from occt git-repository (and CR28055 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: a200606b1b9255761ca3cb96f7adf5a625edf3c3
SHA-1: 6504c9a9260114ca4a44b519b325944e46490f25

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

Regressions/Differences:
Not detected

Testing cases:
bugs xde bug28055_1 - OK
http://occt-tests/CR28055_1-CR28055-OCCT/Debian70-64/bugs/xde/bug28055_1.html
http://occt-tests/CR28055_1-CR28055-OCCT/Windows-64-VC10/bugs/xde/bug28055_1.html
bugs xde bug28055_2 - OK
http://occt-tests/CR28055_1-CR28055-OCCT/Debian70-64/bugs/xde/bug28055_2.html
http://occt-tests/CR28055_1-CR28055-OCCT/Windows-64-VC10/bugs/xde/bug28055_2.html

Testing on Linux:
occt component:
Total MEMORY difference: 93163769 / 92845130 [+0.34%]
Total CPU difference: 21047.99000000019 / 21506.1200000003 [-2.13%]
products component:
Total MEMORY difference: 30290214 / 30395462 [-0.35%]
Total CPU difference: 5298.619999999974 / 5312.789999999971 [-0.27%]

Testing on Windows:
occt component:
Total MEMORY difference: 58636711 / 58649007 [-0.02%]
Total CPU difference: 19378.50662039858 / 19749.742200098677 [-1.88%]
products component:
Total MEMORY difference: 21150066 / 21118126 [+0.15%]
Total CPU difference: 5207.812583199963 / 5256.094892699988 [-0.92%]

abv

2017-01-29 18:45

manager  

hugeassembly.tcl (914 bytes)

abv

2017-01-29 18:51

manager   ~0063165

Last edited: 2017-01-29 18:53

Script used for testing of UpdateAssemblies command on large assembly mentioned in 0028055:0062404 is attached, see hugeassembly.tcl; note that it takes ~ 18 min to complete shape construction part.

git

2017-02-08 11:31

administrator   ~0063534

Branch CR28055 has been deleted by kgv.

SHA-1: 74352b38fce05e488a90a57c3787cc7bacb2e240

git

2017-02-08 11:35

administrator   ~0063591

Branch CR28055_1 has been deleted by kgv.

SHA-1: 38ad51415ffef624e534389e6470620cacfb060c

Related Changesets

occt: master acc909a8

2017-01-19 13:22:32

ssv


Committer: apn Details Diff
0028055: Add UpdateAssemblies() method for top-down update of assembly compounds

- Implement top-down update for assemblies in XCAFDoc_ShapeTool
- Get rid of UpdateAssembly() method used for partial (parent-only) update
- Adjust STEP and IGES translators to use the top-down update after filling OCAF
- Implement XUpdateAssemblies Draw command
- Add test cases bug28055_1 and bug28055_2 for component removal and part update
- Update XDE documentation to mention the new UpdateAssemblies() method

Correction for issue CR28055
Adjusting of test case bugs/fclasses/bug28217
Affected Issues
0028055
mod - dox/user_guides/draw_test_harness/draw_test_harness.md Diff File
mod - dox/user_guides/xde/xde.md Diff File
mod - src/IGESCAFControl/IGESCAFControl_Reader.cxx Diff File
mod - src/QABugs/QABugs_19.cxx Diff File
mod - src/STEPCAFControl/STEPCAFControl_Reader.cxx Diff File
mod - src/XCAFDoc/XCAFDoc_ShapeTool.cxx Diff File
mod - src/XCAFDoc/XCAFDoc_ShapeTool.hxx Diff File
mod - src/XDEDRAW/XDEDRAW_Shapes.cxx Diff File
mod - tests/bugs/fclasses/bug28217 Diff File
add - tests/bugs/xde/bug28055_1 Diff File
add - tests/bugs/xde/bug28055_2 Diff File

Issue History

Date Modified Username Field Change
2016-11-07 12:44 ssv New Issue
2016-11-07 12:44 ssv Assigned To => ssv
2016-11-07 13:10 git Note Added: 0059920
2016-11-07 13:10 ssv Note Added: 0059921
2016-11-07 13:10 ssv Assigned To ssv => abv
2016-11-07 13:10 ssv Status new => resolved
2016-11-09 12:20 ssv Note Added: 0060099
2016-11-09 12:20 ssv Assigned To abv => ssv
2016-11-09 12:20 ssv Status resolved => assigned
2016-11-09 19:14 git Note Added: 0060145
2016-11-09 20:25 ssv Relationship added related to 0028082
2016-11-11 16:00 git Note Added: 0060244
2016-11-11 16:01 ssv Note Added: 0060245
2016-11-11 16:01 ssv Assigned To ssv => abv
2016-11-11 16:01 ssv Status assigned => resolved
2016-12-19 15:17 ssv Note Added: 0061860
2016-12-19 15:19 abv Note Added: 0061861
2017-01-05 13:31 abv Note Added: 0062404
2017-01-05 13:31 abv Assigned To abv => bugmaster
2017-01-05 13:31 abv Status resolved => reviewed
2017-01-09 13:00 mkv Assigned To bugmaster => mkv
2017-01-09 13:27 git Note Added: 0062412
2017-01-10 15:24 mkv Note Added: 0062450
2017-01-10 15:24 mkv Note Added: 0062451
2017-01-10 15:24 git Note Added: 0062452
2017-01-10 15:25 mkv Note Added: 0062453
2017-01-10 15:25 mkv Assigned To mkv => ssv
2017-01-10 15:25 mkv Status reviewed => assigned
2017-01-10 15:25 mkv Test case number => bugs xde bug28055_1, bug28055_2
2017-01-16 17:25 ssv Note Added: 0062639
2017-01-16 17:25 ssv Assigned To ssv => mkv
2017-01-16 17:25 ssv Status assigned => resolved
2017-01-16 17:25 ssv Assigned To mkv => bugmaster
2017-01-16 17:25 ssv Status resolved => reviewed
2017-01-16 18:00 apv Assigned To bugmaster => apv
2017-01-17 09:41 abv Note Added: 0062676
2017-01-17 15:35 git Note Added: 0062703
2017-01-17 16:05 apv Note Added: 0062704
2017-01-17 16:05 apv Assigned To apv => bugmaster
2017-01-17 16:05 apv Status reviewed => tested
2017-01-20 16:12 apn Changeset attached => occt master acc909a8
2017-01-20 16:12 apn Assigned To bugmaster => apn
2017-01-20 16:12 apn Status tested => verified
2017-01-20 16:12 apn Resolution open => fixed
2017-01-29 18:45 abv File Added: hugeassembly.tcl
2017-01-29 18:51 abv Note Added: 0063165
2017-01-29 18:53 abv Note Edited: 0063165
2017-01-29 18:53 abv Note Edited: 0063165
2017-02-08 11:31 git Note Added: 0063534
2017-02-08 11:35 git Note Added: 0063591
2017-03-30 18:44 abv Relationship added related to 0028402
2017-09-29 16:20 aiv Fixed in Version => 7.2.0
2017-09-29 16:24 aiv Status verified => closed
2019-05-23 22:59 kgv Relationship added parent of 0030738
2019-09-14 08:02 abv Relationship added related to 0026314