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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user