DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0026740

Modeling Algorithms - Incorrect result of blend operation in "blend simple X4" test case

Open CASCADEOCCT:Modeling Algorithmsassigned3 public notes

Search issues

Description

Theoretically, curve l must tangent line AB in point C (see Attachment 1 (PNG) attached picture). Therefore, it is necessary for resulting shape to have a vertex in point C in order to be valid. This vertex is absence.

More over, if we insert this vertex in the place C then the part of the current result from A to C must be absence (i.e. the filet must be made for red highlighted edge in Attachment 2 (PNG) file only).

Steps to reproduce

test blend simple X4

Public activity

3 archived notes

Participants are labeled by their role within this record.

01Commenter 1
A few words about validity the result in terms of BRepCheck algorithm.

Draw[]> explode result f
Draw[]> explode result_3 e
Draw[]> xdistef result_3_5 result_3
#Max distance = 0.0025028007416767954

Edge rr_3_5 is not valid in terms of same-parameter (it is valid in terms of BRepCheck algorithm because it has big tolerance). I.e. its 2D- and 3D-curve are not matched each other. As result, 2D-curve of result_3_5 does not tangent rr_3_2 edge (despite it must do it).

Consequently, the validity of the result is pure chance.

I tried to make more precise filet-edge with change some parameters of IntWalk_PWalking algorithm (function ChFi3d_ComputeCurves(...), line "IntWalk_PWalking IntKK(S1,S2,tol3d,tol3d,fleche,Step)"). As result, I obtained an edge with maximal distance between 2D- and 3D-curve approximately 1.0e-13. After that, BRepCheck algorithm returns "BRepCheck_SelfIntersectingWire". The main reason is the vertex is absence (see bug description).
02Commenter 2
Other remarks.

1. Firstly, the intersection edge (result_3_5 in previous message) is found as result of GeomInt_IntSS algorithm between two cylinders. It returns two intersection line, which are connected in point C. However, ChFi3d_Builder does not apply it to make fillet. Therefore, it rebuilds intersection line with IntWalk_PWalking algorithm and obtains single line as result.

2. If we insert this vertex in the place C then we will obtain filleted face between C and B only (see Attachment 1 (PNG) and bug description). For obtaining result shown in the picture Attachment 1 (PNG) we should add another edge to the arguments of "blend" DRAW-command. On the current MASTER this operation leads to exception.

03Commenter 3
I have checked described situation on OCCT 6.7.0 and have obtained as same as result.

Related records