MantisBT
Mantis Bug Tracker Workflow

View Revisions: Issue #22642 All Revisions ] Back to Issue ]
Summary 0022642: Refactoring of ShapeFix_Wire::FixIntersectingEdges
Revision 2012-01-12 18:26 by ssv
Description This issue has been detected during processing of ACIS22625.

Currently ShapeFix_Shape tool performs shape healing for TopoDS Shells with
ModifyTopologyMode flag set to 0 in the underlying ShapeFix_Wire tool. In case
of self-intersecting input wire this leads to increasing of tolerance for the
problematic vertices. As DTE utilizes Shape Healing functionality with some
maximum acceptable tolerance, this often leads to the fact that Shape Healing
actually does nothing (as the calculated resolution tolerance exceeds the
maximum one).

This Bug is a proposition to turn ON the ModifyTopologyMode flag for Shell
entities (as we have for TopoDS Faces). Such modification, however, leads to
necessity of refactoring of ShapeFix_Wire::FixIntersectingEdges method (at
least). The following points need to be revised:

- Usage of ShapeBuild_ReShape tool must be introduced in FixIntersectingEdges
routine. Thus we can replace the truncated edges with equivalent wires in the
adjacent faces and keep them consistent so;

- Currently existing algorithm demonstrates quite strange behaviour on the
problematic face: while first intersection point is processed correctly (vertex
is shifted, curve is reparameterized), the second intersection point (actually,
with a symmetrical nature) is fixed via tolerance increasing, rather than via
vertex shifting. It looks like FixIntersectingEdges algorithm is not well formed
to proceed with some specific cases. We can suggest preliminary invocation of
ShapeFix_Edge::FixSameParameter on each processed edge before the algorithm starts;

- One of the algorithm's execution branches consists in tolerance increasing,
notably when the problematic edge cannot be truncated. As well as for
ModifyTopologyMode == 0 mode, the resulting tolerance value might become greater
than the maximum allowed one. However, algorithm finishes successfully in
contrast with similar situation for ModifyTopologyMode == 0;

Use the attached brep to reproduce the issue. DRAW commands:

DRAWEXE
pload ALL
restore ss_47.brep f
fixshape ff f -l -o -h -m -d -s +i -n
checksh ff
Revision 2011-07-12 18:59 by ssv
Description This issue has been detected during processing of ACIS22625.

Currently ShapeFix_Shape tool performs shape healing for TopoDS Shells with
ModifyTopologyMode flag set to 0 in the underlying ShapeFix_Wire tool. In case
of self-intersecting input wire this leads to increasing of tolerance for the
problematic vertices. As DTE utilizes Shape Healing functionality with some
maximum acceptable tolerance, this often leads to the fact that Shape Healing
actually does nothing (as the calculated resolution tolerance exceeds the
maximum one).

This Bug is a proposition to turn ON the ModifyTopologyMode flag for Shell
entities (as we have for TopoDS Faces). Such modification, however, leads to
necessity of refactoring of ShapeFix_Wire::FixIntersectingEdges method (at
least). The following points need to be revised:

- Usage of ShapeBuild_ReShape tool must be introduced in FixIntersectingEdges
routine. Thus we can replace the truncated edges with equivalent wires in the
adjacent faces and keep them consistent so;

- Currently existing algorithm demonstrates quite strange behaviour on the
problematic face: while first intersection point is processed correctly (vertex
is shifted, curve is reparameterized), the second intersection point (actually,
with a symmetrical nature) is fixed via tolerance increasing, rather than via
vertex shifting. It looks like FixIntersectingEdges algorithm is not well formed
to proceed with some specific cases. We can suggest preliminary invocation of
ShapeFix_Edge::FixSameParameter on each processed edge before the algorithm starts;

- One of the algorithm's execution branches consists in tolerance increasing,
notably when the problematic edge cannot be truncated. As well as for
ModifyTopologyMode == 0 mode, the resulting tolerance value might become greater
than the maximum allowed one. However, algorithm finishes successfully in
contrast with similar situation for ModifyTopologyMode == 0;

Use the attached brep to reproduce the issue. DRAW commands:

DRAWEXE
pload ALL
restore ss_47.brep sh
fixshape fsh sh -l -o -h -m -d -s +i -n
checksh sh


Copyright © 2000 - 2021 MantisBT Team
Powered by Mantis Bugtracker