mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0027822: Exception access violation is raised in BRepOffsetAPI_MakePipeShell during of build
New public method IsDone() is added to abstract class BRepFill_SectionLaw. Test case bugs/modlag_6/bug27822 has been added
This commit is contained in:
@@ -360,6 +360,7 @@ BRepFill_NSections::BRepFill_NSections(const TopTools_SequenceOfShape& S,
|
||||
}
|
||||
myParams = par;
|
||||
Init(par,Build);
|
||||
myDone = Standard_True;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -399,7 +400,10 @@ BRepFill_NSections::BRepFill_NSections(const TopTools_SequenceOfShape& S,
|
||||
VFirst = VF;
|
||||
VLast = VL;
|
||||
Init(P,Build);
|
||||
myDone = Standard_True;
|
||||
}
|
||||
else
|
||||
myDone = Standard_False;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
@@ -1143,6 +1143,8 @@ void BRepFill_PipeShell::Generated(const TopoDS_Shape& theShape,
|
||||
}
|
||||
|
||||
myStatus = myLocation->GetStatus();
|
||||
if (!mySection->IsDone())
|
||||
myStatus = GeomFill_PipeNotOk;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
@@ -78,6 +78,15 @@ Standard_Integer BRepFill_SectionLaw::NbLaw() const
|
||||
return vclosed;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : IsDone
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean BRepFill_SectionLaw::IsDone() const
|
||||
{
|
||||
return myDone;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Init
|
||||
//purpose : Prepare the parsing of a wire
|
||||
|
@@ -54,6 +54,8 @@ public:
|
||||
|
||||
Standard_EXPORT Standard_Boolean IsVClosed() const;
|
||||
|
||||
Standard_EXPORT Standard_Boolean IsDone() const;
|
||||
|
||||
//! Say if the input sahpe is a vertex.
|
||||
Standard_EXPORT virtual Standard_Boolean IsVertex() const = 0;
|
||||
|
||||
@@ -82,6 +84,7 @@ protected:
|
||||
Handle(GeomFill_HArray1OfSectionLaw) myLaws;
|
||||
Standard_Boolean uclosed;
|
||||
Standard_Boolean vclosed;
|
||||
Standard_Boolean myDone;
|
||||
|
||||
|
||||
private:
|
||||
|
@@ -72,6 +72,7 @@ BRepFill_ShapeLaw::BRepFill_ShapeLaw(const TopoDS_Vertex& V,
|
||||
myLaws->ChangeValue(1) =
|
||||
new (GeomFill_UniformSection)(TC);
|
||||
}
|
||||
myDone = Standard_True;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -88,6 +89,7 @@ BRepFill_ShapeLaw::BRepFill_ShapeLaw(const TopoDS_Wire& W,
|
||||
{
|
||||
TheLaw.Nullify();
|
||||
Init(Build);
|
||||
myDone = Standard_True;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -104,6 +106,7 @@ BRepFill_ShapeLaw::BRepFill_ShapeLaw(const TopoDS_Wire& W,
|
||||
{
|
||||
TheLaw = L;
|
||||
Init(Build);
|
||||
myDone = Standard_True;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
Reference in New Issue
Block a user