View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0023119||Community||OCCT:Application Framework||public||2012-04-22 18:10||2012-11-16 13:17|
|Reporter||Roman Lygin||Assigned To||szy|
|Target Version||6.5.4||Fixed in Version||6.5.4|
|Summary||0023119: TNaming_Selector::Solve() fails (changes from single face to compound of multiple faces)|
|Description||The bug has been originally reported on the forum by Valeriu Catina - http://www.opencascade.org/org/forum/thread_23075/?forum=3.|
The below reproducer simplifies the defect appearance.
TNaming_Selector::Select() correctly computes the type as FACE. However consequent call to Solve() changes the type to COMPOUND (consisting of multiple faces, and hence invalid), and significantly changes the data stored on sub-labels. See attached screenshots.
Two versions of the reproducer are provided - one using DNaming_SelectionCommands.cxx and one using DNaming_SelectionDriver.
Reproduced on OCC 6.5.x.
Extra note: TNaming_Selector::Select() and ::Solve() creates various structures for faces fuse2_1 ... fuse2_24. Due to lack of documentation of conventions applied by Topology Naming algorithm it is impossible to conclude whether these structures are correct or not, and makes debugging and suggesting a patch virtually impossible.
|Steps To Reproduce||source naming_test.tcl.|
|Tags||No tags attached.|
|Test case number||caf named_shape (002) F8 F9|
naming_test.tcl (1,188 bytes)
naming_after_TNaming_Selector-Select()-ok.png (105,586 bytes)
naming_after_TNaming_Selector-Solve()-fail.png (104,702 bytes)
The bug reported by Valeriu Catina is not linked with the reported one.
It concerns incorrect Naming when created shape has not Identity Location.
We have accepted this bug. It is pity that Valeriu still didn't register it in Mantis.
Concerning the current issue. For the moment it is not possible to say is it a bug or not because the attached script is not valid. It uses mixture of not compatible commands. Unfortunately Naming testing framework is still not completed. It has some intermediate state. As result it is not documented. Sorry for this. I do hope we will try to fix it till the end of the year.
I suggest you to use commands defined in DNaming_ModelingCommands.cxx file.
Used by you commands SelectGeometry and SolveSelection are obsolete and should be redesigned. I do hope we will do it in the next release.
Also I will try to find example of correct script to be used for testing temporary.
I attached a C++ coded reproducer of the present bug. The bug reported by me (Valeriu Catina) on the forum is actually identical to the present one. It shows no matter if the created shape has a identity location or not. I rechecked and therefore, the report on the forum appears to be erroneous regarding the location. All other statements seem to be correct.
I hope this clarification and the attached C++ reproducer will help out with the debugging.
OCC_NamingTest.rar (13,009 bytes)
The issue presented in the script in 'naming_test.tcl' should be separated to several sub-problems:
1) Bugs in Draw commands (DNaming package)
2) Incorrect using of existing Draw commands
3) Naming bugs
1. Impacted commands (SelectShape & SolveSelection) from DNaming_Selection.cxx were fixed (Branch CR23119 is created). Now as SelectShape as SelectGeometry commands can be used.
2. The script is redesigned and attached for information. It provides working example of consistent using of different groups of DNaming commands.
3. The naming bug (selected Face after re-computation becomes Compound).
This testing case (presented in the script-reproducer) can be considered as the Algorithm limitation. The solver can't distinguish the expected face from other in Compound because to much participating in re-computation shapes have modification 1 : N. Attempt to filter it by neighbors also gives compound of three faces which all satisfy filter criteria. New script 'naming_test2.tcl' should be used for correct case reproducing.
naming_test2.tcl (1,352 bytes)
||Review it, please.|
After the provided sample analysis I can make conclusion that your testing case can be considered as the Algorithm limitation too. The solver can't distinguish the expected face from other in Compound because many shapes in the testing case have modification 1 : 2. Attempt to filter it by neighbors also gives compound of 2 faces which all satisfy the filter criteria. See also several pictures (23119.7z) illustrating the conclusion for the case when the face 'F1_selection.png' (modified from F1.png - bottom face of the box B2) was selected, where:
'F1_selection.png' - the face which was selected;
'F1.png' - the initial face from which the selected face was modified;
'F1_mod.png' - result of initial face F1 modification => 2 faces (F1 modified to two presented faces. As result solver can't distinguish them and try to apply filter by neighbors);
'F1_sel_by_nbs.PNG' - result of 'filter' work. It is also two faces. As result solver creates Compound.
23119.7z (40,292 bytes)
||For testing purpose the new scripts F8 & F9 from branch CR23119 should be used.|
Branch CR23119 (and products from GIT master) was compiled on Linux and Windows platforms and tested.
caf named_shape (002) F8 - OK
caf named_shape (002) F9 - OK
occt: master efd4b232
2012-09-14 13:18:59Details Diff
|0023119: TNaming_Selector::Solve() fails (changes from single face to compound of multiple faces)
Patch for Naming improvement.
1). Added persistence.
2). Removed not supported evolution - Replace.
Fix of QADraw commands.
Modified test case: caf named_shape F6
1). Redesigned DNaming commands: SelectShape & SolveSelection
2). Added 2 new scripts: F8 & F9
Adding test cases caf/named_shape/F8 F9
|mod - src/DNaming/DNaming_SelectionCommands.cxx||Diff File|
|mod - src/TNaming/TNaming_Name.cxx||Diff File|
|mod - src/TNaming/TNaming_Naming.cxx||Diff File|
|mod - tests/caf/named_shape/E1||Diff File|
|mod - tests/caf/named_shape/E2||Diff File|
|mod - tests/caf/named_shape/E3||Diff File|
|mod - tests/caf/named_shape/E4||Diff File|
|mod - tests/caf/named_shape/E5||Diff File|
|mod - tests/caf/named_shape/E6||Diff File|
|mod - tests/caf/named_shape/E7||Diff File|
|mod - tests/caf/named_shape/E8||Diff File|
|mod - tests/caf/named_shape/E9||Diff File|
|mod - tests/caf/named_shape/F1||Diff File|
|mod - tests/caf/named_shape/F2||Diff File|
|mod - tests/caf/named_shape/F3||Diff File|
|mod - tests/caf/named_shape/F4||Diff File|
|mod - tests/caf/named_shape/F5||Diff File|
|mod - tests/caf/named_shape/F6||Diff File|
|mod - tests/caf/named_shape/F7||Diff File|
|add - tests/caf/named_shape/F8||Diff File|
|add - tests/caf/named_shape/F9||Diff File|
|2012-04-22 18:10||Roman Lygin||New Issue|
|2012-04-22 18:10||Roman Lygin||Assigned To||=> szy|
|2012-04-22 18:10||Roman Lygin||File Added: naming_test.tcl|
|2012-04-22 18:17||Roman Lygin||File Added: naming_after_TNaming_Selector-Select()-ok.png|
|2012-04-22 18:17||Roman Lygin||File Added: naming_after_TNaming_Selector-Solve()-fail.png|
|2012-04-24 08:34||abv||Status||new => assigned|
|2012-08-10 18:01||szy||Note Added: 0021231|
|2012-08-24 17:02||vcat||Note Added: 0021333|
|2012-08-24 17:02||vcat||File Added: OCC_NamingTest.rar|
|2012-08-31 18:14||szy||Note Added: 0021377|
|2012-08-31 18:14||szy||Status||assigned => resolved|
|2012-08-31 18:16||szy||Note Edited: 0021377|
|2012-08-31 18:17||szy||File Added: naming_test2.tcl|
|2012-09-05 17:48||szy||Note Added: 0021415|
|2012-09-05 17:48||szy||Assigned To||szy => vro|
|2012-09-05 17:48||szy||Status||resolved => assigned|
|2012-09-05 17:50||szy||Status||assigned => resolved|
|2012-09-06 08:20||vro||Note Added: 0021417|
|2012-09-06 08:20||vro||Assigned To||vro => mkv|
|2012-09-06 08:20||vro||Status||resolved => reviewed|
|2012-09-07 10:07||bugmaster||Target Version||=> 6.5.4|
|2012-09-12 14:37||szy||Note Added: 0021464|
|2012-09-12 14:38||szy||File Added: 23119.7z|
|2012-09-13 14:24||szy||Note Added: 0021476|
||Note Added: 0021478|
||Test case number||=> caf named_shape (002) F8 F9|
||Assigned To||mkv => bugmaster|
||Status||reviewed => tested|
|2012-09-17 17:29||szy||Changeset attached||=> occt master efd4b232|
|2012-09-17 17:33||szy||Assigned To||bugmaster => szy|
|2012-09-17 17:33||szy||Status||tested => verified|
|2012-09-17 17:33||szy||Resolution||open => fixed|
|2012-11-16 13:14||bugmaster||Fixed in Version||=> 6.5.4|
|2012-11-16 13:17||bugmaster||Status||verified => closed|