MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0029604Open CASCADE[OCCT] OCCT:DRAWpublic2018-03-21 12:242018-04-16 14:46
Reporteremv 
Assigned Tobugmaster 
PrioritynormalSeverityfeature 
StatusverifiedResolutionfixed 
PlatformOSOS Version
Product Version[OCCT] 7.2.0 
Target Version[OCCT] 7.3.0Fixed in Version 
Summary0029604: Uniform mechanism providing History of shape's modifications for OCCT algorithms in DRAW
DescriptionFor most of the algorithms in OCCT there are no DRAW commands for tracking the history of shapes modifications.
And the algorithms for which such commands are present have their own implementation of these commands.

It is proposed to implement the mechanism which will provide:
1. Easy DRAW history support for the algorithms;
2. Unification of all history commands implementation.

Usage of the BRepTools_History algorithm will allow to implement such mechanism with minimal effort.
It is proposed:
1. Keep the BRepTools_History object in session;
2. Overwrite the history kept in session after running the algorithm for which the history is required;
3. Create DRAW object for BRepTools_History;
4. Implement Draw command for creation of the Drawable history from the one kept in session.
5. Provide single implementation of the draw commands "modified", "generated" and "isdeleted" taking as an input the Drawable history object.

This steps will allow working with the history in the following way:

box b1 10 10 10
box b2 5 0 0 10 10 10

# this will overwrite the History in session
bfuse r b1 b2
# get fuse history
gethistory fuse_hist

isdeleted fuse_hist b1

# this will overwrite the History in session
unifysamedom ru r
# get usd history
gethistory usd_hist

modified usd_hist <modif_shapes> r
Steps To ReproduceNot needed.
TagsNo tags attached.
Test case numberboolean history A7 boolean history A8
Attached Files

- Relationships
related to 0029653newjgv Unable to get generated shapes for some of the arguments of Thrusections operation 

-  Notes
(0074825)
git (administrator)
2018-03-23 14:53

Branch CR29604 has been created by emv.

SHA-1: c6ae4d27a54017d4c9704e884ed1404b035ea957


Detailed log of new commits:

Author: emv
Date: Wed Mar 21 16:59:29 2018 +0300

    0029604: Uniform mechanism providing History of shape's modifications for OCCT algorithms in DRAW
    
    Implementation of the mechanism for unification of the history commands for all OCCT algorithms.
    The following Draw commands should be used to track the history of shapes modifications of any operation:
    - modified - to find the shapes modified from the given shape in the given history.
    - generated - to find the shapes generated from the given shape in the given history.
    - isdeleted - to check if the given shape has been deleted during operation.
    
    The mechanism allows fast & easy enabling of the DRAW history support for the algorithms supporting the history on the API level (i.e. the algorithm should have the methods Modified(), Generated() and IsDeleted()).
    To enable the draw history support it is necessary to store the history of the algorithm into the session. For instance:
    
    TopTools_ListOfShape Objects = ...; // Objects
    TopTools_ListOfShape Tools = ...; // Tools
    
    BRepAlgoAPI_Cut aCut(Objects, Tools); // Boolean cut operation
    
    BRepTest_Objects::SetHistory(Objects, aCut); // Store the history for the Objects (overwrites the history in the session)
    BRepTest_Objects::AddHistory(Tools, aCut); // Add the history for the Tools
    
    To get the stored history in draw the command "savehistory" should be used. It saves the history kept in session into a Drawable object with the given name:
    
    # perform cut
    bcut r s1 s2
    
    # save history of cut
    savehistory cut_history
    
    explode s1 f
    modified m cut_history s1_1
    
    The Draw History commands of the following algorithms have been removed:
    - Boolean Operations;
    - Defeaturing;
    - Unify same domain;
    - Sweep;
    - Thrusections;
    
    All these algorithms have been switched to support the new Draw history mechanism.
    
    The Fillet and Blend algorithms have been also enabled to support history commands.
(0074907)
git (administrator)
2018-03-26 07:48

Branch CR29604 has been updated forcibly by emv.

SHA-1: 6e391b7966ad634725a3dd3c40cbd03d6ad06179
(0074914)
git (administrator)
2018-03-26 13:03

Branch CR29604 has been updated by emv.

SHA-1: 4005d57980d79a30d519582d8451a732b9015e55


Detailed log of new commits:

Author: emv
Date: Mon Mar 26 13:03:31 2018 +0300

    # Corrections in Thrusections algorithm to avoid exceptions when filling history.

(0074959)
git (administrator)
2018-03-27 14:50

Branch CR29604 has been updated forcibly by emv.

SHA-1: ccdbf29b2ed15679df7c0744c076e4f3d588a3b8
(0074962)
git (administrator)
2018-03-27 15:42

Branch CR29604 has been updated forcibly by emv.

SHA-1: 633019bbf5afaee739e12b92decd8d3f11b0d0b9
(0075254)
git (administrator)
2018-04-10 09:44

Branch CR29604 has been updated forcibly by emv.

SHA-1: 5cb9b0e6d5d71c3540668eb0918e6c03f350b00e
(0075262)
emv (developer)
2018-04-10 12:00

Dear Mikhail, could you please review the git branch CR29604?
Tests results - http://jenkins-test-11.nnov.opencascade.com:8080/view/CR29604-master-emv/view/COMPARE/. [^]
(0075279)
msv (developer)
2018-04-10 17:54

Remarks:

dox/user_guides/modeling_algos/modeling_algos.md
- 1295: "are" => "do"

dox/user_guides/draw_test_harness/draw_test_harness.md
- 7328: use bold style for the command name, *removefeatures* => **removefeatures**
- 8037: "includes to commands" => "includes the command"
- 8054: "is save" => "is saved"
- 8105,8128: the result is one shape; tell about its structure (compound).
- 8163: "into the command implementation just after the operation is done"
- 8165: misprint BRetTest_Objects

dox/user_guides/boolean_operations/boolean_operations.md
- 2954: "the tool faces" => "the tool face"
- 3031: "Example of interfering faces" => "As for operation with intersecting faces. consider the following example"
(0075284)
msv (developer)
2018-04-10 19:03

src/BRepTest/BRepTest_Objects.hxx
- 40: "Sets" => "Adds"

src/BRepTest/BRepTest_HistoryCommands.cxx
- Avoid putting '\n' as the last character to theDI before return. Because this generates one extra empty line.
- 150: make compound outside of the loop.

src/BRepTest/BRepTest_FeatureCommands.cxx
- 2175: Please delete old instance of the algorithm to avoid memory leakage.

src/BRepTest/BRepTest_FilletCommands.cxx
- Check Rakk->IsDone() before saving history.

src/BOPTest/BOPTest_RemoveFeaturesCommands.cxx
- Do not save history if -nohist option is set, or if the algorithm is failed.

src/BOPTest/BOPTest_APICommands.cxx
src/BOPTest/BOPTest_BOPCommands.cxx
src/BOPTest/BOPTest_CellsCommands.cxx
src/BOPTest/BOPTest_PartitionCommands.cxx
src/BRepTest/BRepTest_SweepCommands.cxx
- Do not save history if the algorithm is failed.
(0075378)
git (administrator)
2018-04-11 15:24

Branch CR29604 has been updated forcibly by emv.

SHA-1: 982c1ec970be3dcd35708af1b4c95a83c75bcffc
(0075383)
emv (developer)
2018-04-11 17:04

All remarks have been considered, except for
> src/BOPTest/BOPTest_APICommands.cxx
> src/BOPTest/BOPTest_BOPCommands.cxx
> src/BOPTest/BOPTest_CellsCommands.cxx
> src/BOPTest/BOPTest_PartitionCommands.cxx
> - Do not save history if the algorithm is failed.

For booleans, I think it may be useful to have the history information for debug purposes even if the algorithm is failed.

Please review again. Tests are regenerated.
(0075385)
msv (developer)
2018-04-11 18:44

Reviewed.
(0075417)
bugmaster (administrator)
2018-04-12 13:29

Combination -
OCCT branch : CR29604 SHA - 982c1ec970be3dcd35708af1b4c95a83c75bcffc
Products branch : master SHA - 8471189e8649026d76950924f8ec2b4878cba528
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: 18114.73999999991 / 18092.32999999989 [+0.12%]
Products
Total CPU difference: 7437.979999999972 / 7480.610000000005 [-0.57%]
Windows-64-VC10:
OCCT
Total CPU difference: 17895.13991169853 / 17813.754189998494 [+0.46%]
Products
Total CPU difference: 8102.988341900006 / 8149.242638399972 [-0.57%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

- Related Changesets
occt: master 4f7d41ea
Timestamp: 2018-03-21 13:59:29
Author: emv
Committer: bugmaster
Details ] Diff ]
0029604: Uniform mechanism providing History of shape's modifications for OCCT algorithms in DRAW

Implementation of the mechanism for unification of the history commands for all OCCT algorithms.
The following Draw commands should be used to track the history of shapes modifications of any operation:
- modified - to find the shapes modified from the given shape in the given history.
- generated - to find the shapes generated from the given shape in the given history.
- isdeleted - to check if the given shape has been deleted during operation.

The mechanism allows fast & easy enabling of the DRAW history support for the algorithms supporting the history on the API level (i.e. the algorithm should have the methods Modified(), Generated() and IsDeleted()).
To enable the draw history support it is necessary to store the history of the algorithm into the session. For instance:

TopTools_ListOfShape Objects = ...; // Objects
TopTools_ListOfShape Tools = ...; // Tools

BRepAlgoAPI_Cut aCut(Objects, Tools); // Boolean cut operation

BRepTest_Objects::SetHistory(Objects, aCut); // Store the history for the Objects (overwrites the history in the session)
BRepTest_Objects::AddHistory(Tools, aCut); // Add the history for the Tools

To get the stored history in draw the command "savehistory" should be used. It saves the history kept in session into a Drawable object with the given name:

# perform cut
bcut r s1 s2

# save history of cut
savehistory cut_history

explode s1 f
modified m cut_history s1_1

The Draw History commands of the following algorithms have been removed:
- Boolean Operations;
- Defeaturing;
- Unify same domain;
- Sweep;
- Thrusections;

All these algorithms have been switched to support the new Draw history mechanism.

The Fillet and Blend algorithms have been also enabled to support history commands.
mod - dox/user_guides/boolean_operations/boolean_operations.md Diff ] File ]
mod - dox/user_guides/draw_test_harness/draw_test_harness.md Diff ] File ]
mod - dox/user_guides/modeling_algos/modeling_algos.md Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_Builder_4.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_CellsBuilder.cxx Diff ] File ]
mod - src/BOPTest/BOPTest.cxx Diff ] File ]
mod - src/BOPTest/BOPTest.hxx Diff ] File ]
mod - src/BOPTest/BOPTest_APICommands.cxx Diff ] File ]
mod - src/BOPTest/BOPTest_BOPCommands.cxx Diff ] File ]
mod - src/BOPTest/BOPTest_CellsCommands.cxx Diff ] File ]
rm - src/BOPTest/BOPTest_HistoryCommands.cxx Diff ] File ]
mod - src/BOPTest/BOPTest_PartitionCommands.cxx Diff ] File ]
mod - src/BOPTest/BOPTest_RemoveFeaturesCommands.cxx Diff ] File ]
mod - src/BOPTest/FILES Diff ] File ]
mod - src/BRepAlgoAPI/BRepAlgoAPI_Defeaturing.hxx Diff ] File ]
mod - src/BRepFill/BRepFill_PipeShell.hxx Diff ] File ]
mod - src/BRepOffsetAPI/BRepOffsetAPI_MakePipeShell.hxx Diff ] File ]
mod - src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.cxx Diff ] File ]
mod - src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.hxx Diff ] File ]
mod - src/BRepTest/BRepTest.cxx Diff ] File ]
mod - src/BRepTest/BRepTest.hxx Diff ] File ]
add - src/BRepTest/BRepTest_DrawableHistory.cxx Diff ] File ]
add - src/BRepTest/BRepTest_DrawableHistory.hxx Diff ] File ]
mod - src/BRepTest/BRepTest_FeatureCommands.cxx Diff ] File ]
mod - src/BRepTest/BRepTest_FilletCommands.cxx Diff ] File ]
add - src/BRepTest/BRepTest_HistoryCommands.cxx Diff ] File ]
add - src/BRepTest/BRepTest_Objects.cxx Diff ] File ]
add - src/BRepTest/BRepTest_Objects.hxx Diff ] File ]
mod - src/BRepTest/BRepTest_SweepCommands.cxx Diff ] File ]
mod - src/BRepTest/FILES Diff ] File ]
mod - src/BRepTools/BRepTools_History.cxx Diff ] File ]
mod - src/BRepTools/BRepTools_History.hxx Diff ] File ]
mod - src/SWDRAW/SWDRAW_ShapeUpgrade.cxx Diff ] File ]
mod - tests/boolean/history/A1 Diff ] File ]
mod - tests/boolean/history/A2 Diff ] File ]
mod - tests/boolean/history/A3 Diff ] File ]
mod - tests/boolean/history/A4 Diff ] File ]
mod - tests/boolean/history/A5 Diff ] File ]
mod - tests/boolean/history/A6 Diff ] File ]
add - tests/boolean/history/A7 Diff ] File ]
add - tests/boolean/history/A8 Diff ] File ]
mod - tests/boolean/removefeatures/A6 Diff ] File ]
mod - tests/boolean/removefeatures/A7 Diff ] File ]
mod - tests/boolean/removefeatures/B1 Diff ] File ]
mod - tests/boolean/removefeatures/B2 Diff ] File ]
mod - tests/boolean/removefeatures/B3 Diff ] File ]
mod - tests/boolean/removefeatures/B4 Diff ] File ]
mod - tests/boolean/removefeatures/B5 Diff ] File ]
mod - tests/boolean/removefeatures/B7 Diff ] File ]
mod - tests/boolean/removefeatures/B8 Diff ] File ]
mod - tests/boolean/removefeatures/B9 Diff ] File ]
mod - tests/boolean/removefeatures/begin Diff ] File ]
mod - tests/boolean/removefeatures/C1 Diff ] File ]
mod - tests/boolean/removefeatures/C3 Diff ] File ]
mod - tests/boolean/removefeatures/C4 Diff ] File ]
mod - tests/boolean/removefeatures/C5 Diff ] File ]
mod - tests/boolean/removefeatures/E1 Diff ] File ]
mod - tests/boolean/removefeatures/G1 Diff ] File ]
mod - tests/bugs/heal/bug26489_4 Diff ] File ]
mod - tests/bugs/modalg_4/bug22646 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_1 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_10 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_11 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_12 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_13 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_14 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_15 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_16 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_17 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_18 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_2 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_3 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_4 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_5 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_6 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_7 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_8 Diff ] File ]
mod - tests/bugs/modalg_6/bug26150_9 Diff ] File ]
mod - tests/bugs/modalg_6/bug26393 Diff ] File ]
mod - tests/bugs/modalg_6/bug27283 Diff ] File ]
mod - tests/bugs/modalg_6/bug27386_1 Diff ] File ]
mod - tests/bugs/modalg_6/bug27386_2 Diff ] File ]
mod - tests/bugs/modalg_6/bug27386_3 Diff ] File ]
mod - tests/bugs/modalg_6/bug27386_4 Diff ] File ]
mod - tests/bugs/modalg_6/bug27386_5 Diff ] File ]
mod - tests/bugs/modalg_6/bug27386_6 Diff ] File ]
mod - tests/bugs/modalg_6/bug27386_7 Diff ] File ]
mod - tests/bugs/modalg_6/bug27386_8 Diff ] File ]
mod - tests/bugs/modalg_6/bug27822 Diff ] File ]
mod - tests/bugs/step/bug27316 Diff ] File ]
mod - tests/heal/unify_same_domain/A4 Diff ] File ]
mod - tests/heal/unify_same_domain/A6 Diff ] File ]
mod - tests/heal/unify_same_domain/end Diff ] File ]
mod - tests/pipe/bugs/bug24909_3 Diff ] File ]

- Issue History
Date Modified Username Field Change
2018-03-21 12:24 emv New Issue
2018-03-21 12:24 emv Assigned To => apn
2018-03-21 12:24 emv Assigned To apn => emv
2018-03-23 14:53 git Note Added: 0074825
2018-03-26 07:48 git Note Added: 0074907
2018-03-26 13:03 git Note Added: 0074914
2018-03-27 14:50 git Note Added: 0074959
2018-03-27 15:15 emv Relationship added related to 0029653
2018-03-27 15:42 git Note Added: 0074962
2018-04-10 09:44 git Note Added: 0075254
2018-04-10 12:00 emv Note Added: 0075262
2018-04-10 12:00 emv Assigned To emv => msv
2018-04-10 12:00 emv Status new => resolved
2018-04-10 12:00 emv Steps to Reproduce Updated View Revisions
2018-04-10 17:54 msv Note Added: 0075279
2018-04-10 19:03 msv Note Added: 0075284
2018-04-10 19:18 msv Assigned To msv => emv
2018-04-10 19:18 msv Status resolved => assigned
2018-04-11 15:24 git Note Added: 0075378
2018-04-11 17:04 emv Note Added: 0075383
2018-04-11 17:04 emv Assigned To emv => apn
2018-04-11 17:04 emv Status assigned => resolved
2018-04-11 18:32 msv Assigned To apn => msv
2018-04-11 18:44 msv Note Added: 0075385
2018-04-11 18:44 msv Assigned To msv => bugmaster
2018-04-11 18:44 msv Status resolved => reviewed
2018-04-12 11:58 bugmaster Target Version 7.4.0* => 7.3.0
2018-04-12 13:29 bugmaster Test case number => boolean history A7 boolean history A8
2018-04-12 13:29 bugmaster Note Added: 0075417
2018-04-12 13:29 bugmaster Status reviewed => tested
2018-04-16 14:46 bugmaster Changeset attached => occt master 4f7d41ea
2018-04-16 14:46 bugmaster Status tested => verified
2018-04-16 14:46 bugmaster Resolution open => fixed


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker