DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0029351

Boolean Operations create invalid pcurves

Open CASCADEOCCT:Modeling Algorithmsclosed11 public notes

Search issues

Description

This problem is reproduced only for branch CR26570_1, which has new checking for edge: checking the correspondence between the edge range and actual curve first/last parameters.
Tests bugs modalg_4 bug697_1 and bug697_5 failed because of new diagnostic:

checkshape result
On Shape faulty_1 :
BRepCheck_UnorientableShape
Shape faulty_2 on shape faulty_1 :
BRepCheck_InvalidRange

Faulty shapes in variables faulty_1 to faulty_2

Steps to reproduce

Run tests
bugs modalg_4 bug697_1
bugs modalg_4 bug697_5

Result:
CASE bugs modalg_4 bug697_1: FAILED (bad shape)
CASE bugs modalg_4 bug697_5: FAILED (bad shape)

Public activity

11 archived notes

Participants are labeled by their role within this record.

01Commenter 1
In both reported cases the same shapes are used, so the failing pair of edge/face is also the same. After short analysis I have found that the invalid pcurve has been produced by the projection algorithm:
test bugs modalg_4 bug697_1
don faulty_1 faulty_2
fit

mksurface surf faulty_1
mkcurve c3d faulty_2
project c2d c3d surf

dump c3d 
# Parameters : 0 83.6892332611767

dump c2d
# Knots :
#   1 : 3.79967069842725e-007 14
#   2 : 11.2766829186747 12
#   3 : 32.7138459456005 12
#   4 : 46.0729431055823 12
#   5 : 83.6892332611767 14


The possible reason of this is that the part of the curve in the range 0, 3.79967069842725e-007 is out of the surface and cannot be projected.
So, the possible solution should be in applying the GeomLib::SameRange function to the produced 2d curve.

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

[revision removed]


Detailed log of new commits:

Author: emv
Date: Tue Dec 5 14:22:22 2017 +0300

    0029351: Boolean Operations create invalid pcurves
    
    When making pcurve for edge on face make sure that the produced 2D curve will have the same range with 3D curve of the edge.

Author: Author
Date: Mon Nov 27 16:56:52 2017 +0300

    0026570: Crash on attempt to rotate a shape
    
    New check of edge range is added in BRepCheck/BRepCheck_Edge.cxx
    The same checking is added in ShapeAnalysis_Edge.cxx
    Fixing this problem is added in ShapeFix_Wire.cxx
    GeomLib::SameRange(...) and BRepTools_TrsfModification::NewCurve2d(...) are modified to avoid exception in TrimmedCurve
    Test case added

Author: vro
Date: Wed Aug 19 10:25:11 2015 +0300

    0026570: Crash on attempt to rotate a shape.
    An extended draw-command trotate (ttranslate, tmirror, ...) by an additional parameter "-copy".
03Commenter 3
The branch should be tested on the base of #0026570.
04Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

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

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

[revision removed]
07Commenter 7
Dear Mikhail, could you please review the git branch CR29351?

Please note, that it is based on the CR26570_1, thus Jenkins results at http://jenkins-test-10.nnov.opencascade.com:8080/view/CR29351-master-emv/view/COMPARE/ can be used for both #0029351 and #26570 patches.

08Commenter 2
Branch [archived branch] has been updated by Participant.

[revision removed]


Detailed log of new commits:

Author: emv
Date: Thu Dec 7 15:50:17 2017 +0300

    # Small correction of comment.

09Commenter 9
Reviewed.
10Commenter 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 on optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian70-64:
OCCT
Total CPU difference: 18509.279999999697 / 18469.379999999688 [+0.22%]
Products
Total CPU difference: 7454.58000000001 / 7457.620000000003 [-0.04%]
Windows-64-VC10:
OCCT
Total CPU difference: 17847.2476046987 / 17828.96428749855 [+0.10%]
Products
Total CPU difference: 8020.183011099955 / 8009.6685436999705 [+0.13%]


Image differences :
No differences that require special attention

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

[revision removed]