1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

0027386: BRepOffsetAPI_MakePipeShell does not provide history of generations

The method BRepOffsetAPI_MakePipeShell::Generated now returns generated shapes for sub-edges and sub-vertices of sections.

The method BRepFill_PipeShell::BuildHistory is redesigned: now it builds generated shapes for sub-edges and sub-vertices of sections.

New Draw command "gensweep" is added to sweep commands for testing of history building.
This commit is contained in:
jgv
2016-10-17 13:59:58 +03:00
committed by abv
parent 681f3919f0
commit 953d87f32c
22 changed files with 845 additions and 334 deletions

View File

@@ -2733,6 +2733,14 @@ void BRepFill_Sweep::Build(TopTools_MapOfShape& ReversedEdges,
myUEdges = new (TopTools_HArray2OfShape) (1, NbLaw+1, 1, NbPath);
myVEdges = new (TopTools_HArray2OfShape) (1, NbLaw, 1, NbPath+1);
myFaces = new (TopTools_HArray2OfShape) (1, NbLaw, 1, NbPath);
myTapes = new (TopTools_HArray1OfShape) (1, NbLaw);
BRep_Builder BB;
for (Standard_Integer i = 1; i <= NbLaw; i++)
{
TopoDS_Shell aShell;
BB.MakeShell(aShell);
myTapes->ChangeValue(i) = aShell;
}
Handle (TopTools_HArray2OfShape) Bounds =
new (TopTools_HArray2OfShape) (1, NbLaw, 1, 2);
@@ -2869,6 +2877,14 @@ void BRepFill_Sweep::Build(TopTools_MapOfShape& ReversedEdges,
}
}
for (ii = 1; ii <= NbLaw; ii++)
for (jj = 1; jj <= NbPath; jj++)
{
const TopoDS_Shape& aFace = myFaces->Value(ii,jj);
if (!aFace.IsNull() && aFace.ShapeType() == TopAbs_FACE)
BB.Add(myTapes->ChangeValue(ii), aFace);
}
// Is it Closed ?
if (myLoc->IsClosed() && mySec->IsUClosed()) {
//Check
@@ -2944,6 +2960,15 @@ void BRepFill_Sweep::Build(TopTools_MapOfShape& ReversedEdges,
return myVEdges;
}
//=======================================================================
//function : Tape
//purpose : returns the Tape corresponding to Index-th edge of section
//=======================================================================
TopoDS_Shape BRepFill_Sweep::Tape(const Standard_Integer Index) const
{
return myTapes->Value(Index);
}
//=======================================================================
//function : PerformCorner
//purpose : Trim and/or loop a corner
@@ -3152,6 +3177,8 @@ void BRepFill_Sweep::Build(TopTools_MapOfShape& ReversedEdges,
if (B) {
myAuxShape.Append(FF);
myVEdges->ChangeValue(ii, I2) = FF;
BRep_Builder BB;
BB.Add(myTapes->ChangeValue(ii), FF);
HasFilling = Standard_True;
}
if (ii==1) BordFirst = Bord1;