DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0029586

Revolution creates solid with degenerated edges shared among faces

Open CASCADEOCCT:Modeling Algorithmsclosed25 public notes

Search issues

Description

BRepPrimAPI_MakeRevol creates the solid with degenerated edges shared among faces. But, each face should have its own degenerated edges.

The problem has been discovered while working on the issue #29580 in the test case boolean gdml_public A9.

Steps to reproduce

Test case "bugs modalg_7 bug29586"

Public activity

25 archived notes

Participants are labeled by their role within this record.

01Commenter 2
Branch [archived branch] has been created by Participant.

[revision removed]


Detailed log of new commits:

Author: ifv
Date: Fri Mar 23 11:33:27 2018 +0300

    0029586: Revolution creates solid with degenerated edges shared among faces
    
    Substitution of degenerated edges by their copies is implemented to make edges not shared
    Test case is added
02Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
03Commenter 3
Branch CR29586 is ready for review
test results is CR29586-master-IFV
04Commenter 4
Igor, may you please add comments in the code to explain what is its purpose? In this patch I see quite a lot of new code (seemingly duplicated) but no comments. Adding just a short comment on the purpose of the code block (perhaps with reference to issue) could make a life of any developer dealing with it in the future much easier.

05Commenter 5
Please consider making the fix at the level of BRepSweep_Revol.
06Commenter 2
Branch [archived branch] has been created by Participant.

[revision removed]


Detailed log of new commits:

Author: ifv
Date: Fri Mar 30 17:25:41 2018 +0300

    0029586: Revolution creates solid with degenerated edges shared among faces
    
    Different copies of initial degenerated edge are used for different faces in BRepSweep/BRepSweep_NumLinearRegularSweep.cxx
    Method BRepPrimAPI_MakeRevol::Generated(...) is modified.
07Commenter 7
Branch CR29586_1 is ready for review.
Test results are CR29586-master-ifv
08Commenter 8
Test results in CR29586-master-ifv are not actual, as they were got on the branch CR29586 instead of CR29586_1.
I have restarted tests with proper parameters.
09Commenter 9
Remarks:

src/BRepSweep/BRepSweep_NumLinearRegularSweep.cxx
- 420: aCopyE is forward edge, but anIt.Value() is a vertex got from oriented shape myShapes(iGenS, iDirS). It seems we should iterate on forwarded myShapes(iGenS, iDirS).
10Commenter 10
The new tests show regressions.
11Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
12Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
13Commenter 13
Branch CR29586 is ready for review.
Test results are on CR29586-master-IFV
14Commenter 14
Remarks:

src/BRepPrimAPI/BRepPrimAPI_MakeRevol.cxx
- 138: use const&
- 145: use method Seek() to avoid repeated search.
- 195: Instead of binding aF->aNF in a map remember substitutions directly in the new reshaper.
- 218-219: Apply() return value can be used instead of calling Value().
- 222-227: why ReplaceModified() is needed? myHist->Merge(aSubs->History()) already does the job.
- 269: why compound is added instead of filling in the result list of shape from elements of compound?

src/BRepTest/BRepTest_SweepCommands.cxx
- Please avoid creating a new command genrevol. Instead, rebase the branch on top of CR29604, and make similar to implementation in the file BRepTest_SweepCommands.cxx. Then the commands from BRepTest_HistoryCommands.cxx can be used in draw.

Please test the function Generated() in the script bug29586.
15Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
16Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
17Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
18Commenter 18
CR29586 is ready for review
Test results CR29586-master-IFV
19Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
20Commenter 20
CR29586 is updated according to remarks
21Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
22Commenter 22
Reviewed.
23Commenter 1
Combination -
OCCT branch : [archived branch] SHA - [revision removed]
Products branch : [archived branch] SHA - [revision removed]
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: 18275.18999999992 / 18243.73999999987 [+0.17%]
Products
Total CPU difference: 7491.770000000048 / 7495.350000000049 [-0.05%]
Windows-64-VC10:
OCCT
Total CPU difference: 18023.637935398405 / 18049.78370299853 [-0.14%]
Products
Total CPU difference: 8246.244060199879 / 8209.739826199884 [+0.44%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention
24Commenter 2
Branch [archived branch] has been deleted by Participant.

[revision removed]
25Commenter 2
Branch [archived branch] has been deleted by Participant.

[revision removed]