Files
OCCT/src/IntPatch/IntPatch_ImpImpIntersection.lxx
nbv e146ef9a93 0026894: Intersection algorithm between two infinite cylinders is hanging
1. VRange of intersection curve has been limited. As result, too oblong intersection curve(s) will be never returned.
2. Now, purger algorithm is not called for lines obtained by Geom-Geom intersection method.
3. New statuses are entered in IntPatch_ImpImpIntersection class. It makes intersection algorithm more informative and flexible for using.
4. Method IntPatch_ImpImpIntersection::GetStatus() has been created.

Tuning of test case bugs modalg_6/bug26894
2016-10-07 13:37:33 +03:00

74 lines
2.2 KiB
Plaintext

// Created on: 1992-05-07
// Created by: Jacques GOUSSARD
// Copyright (c) 1992-1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <StdFail_NotDone.hxx>
#include <Standard_DomainError.hxx>
#include <IntPatch_Line.hxx>
inline Standard_Boolean IntPatch_ImpImpIntersection::IsDone () const
{
return (GetStatus() != IntStatus_Fail);
}
inline IntPatch_ImpImpIntersection::IntStatus
IntPatch_ImpImpIntersection::GetStatus() const
{
return myDone;
}
inline Standard_Boolean IntPatch_ImpImpIntersection::IsEmpty () const
{
if (!IsDone ()) { StdFail_NotDone::Raise(); }
return empt;
}
inline Standard_Boolean IntPatch_ImpImpIntersection::TangentFaces () const
{
if (!IsDone ()) { StdFail_NotDone::Raise(); }
return tgte;
}
inline Standard_Boolean IntPatch_ImpImpIntersection::OppositeFaces () const
{
if (!IsDone ()) { StdFail_NotDone::Raise(); }
if (!tgte) {Standard_DomainError::Raise();}
return oppo;
}
inline Standard_Integer IntPatch_ImpImpIntersection::NbPnts () const
{
if (!IsDone ()) { StdFail_NotDone::Raise(); }
return spnt.Length();
}
inline const IntPatch_Point& IntPatch_ImpImpIntersection::Point (const Standard_Integer Index) const
{
if (!IsDone ()) { StdFail_NotDone::Raise(); }
return spnt(Index);
}
inline Standard_Integer IntPatch_ImpImpIntersection::NbLines () const
{
if (!IsDone ()) { StdFail_NotDone::Raise(); }
return slin.Length();
}
inline const Handle(IntPatch_Line)& IntPatch_ImpImpIntersection::Line (const Standard_Integer Index) const
{
if (!IsDone ()) { StdFail_NotDone::Raise(); }
return slin(Index);
}