1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-18 14:27:39 +03:00

0028468: Sweep with different sections raises Standard_NoSuchObject: BRep_Tool:: no parameter on edge

Method BRepFill_SectionPlacement::Perform is modified to operate vertices and edges of path correct.

Add two test cases.

Minor correction.
This commit is contained in:
jgv
2017-03-06 14:16:09 +03:00
committed by bugmaster
parent 4954e4970c
commit 6c4c45b0f9
3 changed files with 71 additions and 4 deletions

View File

@@ -283,9 +283,8 @@ BRepFill_SectionPlacement(const Handle(BRepFill_LocationLaw)& Law,
// In the general case : Localisation via concatenation of the spine
TColStd_Array1OfReal SuperKnot(1, myLaw->NbLaw()+1);
TColStd_Array1OfInteger Index(1, myLaw->NbLaw());
for (ii=1; ii<=myLaw->NbLaw(); ii++) {
SuperKnot(ii+1) = Index(ii) = ii;
SuperKnot(ii+1) = ii;
}
SuperKnot(1) = 0;
@@ -318,8 +317,17 @@ BRepFill_SectionPlacement(const Handle(BRepFill_LocationLaw)& Law,
}
if (Bof) throw Standard_ConstructionError("Interval non trouve !!");
Ind1 = Index(Ind1);
if (Ind2) Ind2 = Index(Ind2);
//Search of the <Ind1> by vertex <TheV>
if (!TheV.IsNull())
for (Ind1 = 1; Ind1 <= myLaw->NbLaw(); Ind1++)
{
TopoDS_Edge anEdge = myLaw->Edge(Ind1);
TopoDS_Vertex V1, V2;
TopExp::Vertices(anEdge, V1, V2);
if (V1.IsSame(TheV) || V2.IsSame(TheV))
break;
}
////////////////////
// Positioning on the localized edge (or 2 Edges)
Standard_Real Angle;