Refactor TopClass and BRepClass3d files by renaming and removing obsolete Classifier3d implementations
--- /dev/null
+// Copyright (c) 1994-1999 Matra Datavision
+// Copyright (c) 1999-2024 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 <BRepClass3d_SolidPassiveClassifier.hxx>
+
+#include <BRepClass3d_Intersector3d.hxx>
+#include <IntCurveSurface_IntersectionPoint.hxx>
+#include <IntCurveSurface_TransitionOnCurve.hxx>
+#include <Standard_DomainError.hxx>
+#include <TopoDS_Face.hxx>
+#include <gp_Lin.hxx>
+
+BRepClass3d_SolidPassiveClassifier::BRepClass3d_SolidPassiveClassifier()
+: isSet(Standard_False),
+ myParam(0.0),
+ myTolerance(0.0),
+ myState(TopAbs_UNKNOWN),
+ hasIntersect(Standard_False)
+{}
+
+void BRepClass3d_SolidPassiveClassifier::Reset(const gp_Lin& L, const Standard_Real, const Standard_Real Tol)
+{
+ myLin = L;
+ myParam = RealLast();
+ myTolerance = Tol;
+ myState = TopAbs_UNKNOWN;
+ isSet = Standard_True;
+}
+
+void BRepClass3d_SolidPassiveClassifier::Compare(const TopoDS_Face& Face, const TopAbs_Orientation)
+{
+ if (!isSet)
+ {
+#ifdef OCCT_DEBUG
+ std::cout << " Call to BRepClass3d_SolidPassiveClassifier::Compare without a Reset ! ";
+#endif
+ return;
+ }
+
+ hasIntersect = Standard_False;
+ myIntersector.Perform(myLin, myParam, myTolerance, Face);
+ if (myIntersector.IsDone())
+ {
+ if (myIntersector.HasAPoint())
+ {
+ hasIntersect = Standard_True;
+ if (myIntersector.WParameter() < myParam)
+ {
+ myParam = myIntersector.WParameter();
+ myFace = myIntersector.Face();
+ if (Abs(myParam) <= myTolerance)
+ {
+ //-- #########################################
+#ifdef OCCT_DEBUG
+ std::cout << " myParam = " << myParam << " ds BRepClass3d_SolidPassiveClassifier.gxx " << std::endl;
+#endif
+ //-- #########################################
+ myState = TopAbs_ON;
+ }
+ else
+ {
+ //-- The intersection point between the line and a face F of the solid
+ //-- is in the face F or On a boundary of the face
+ if (myIntersector.Transition() == IntCurveSurface_Out)
+ {
+ //-- The line is going from inside the solid to outside the solid.
+ myState = TopAbs_IN;
+ }
+ else if (myIntersector.Transition() == IntCurveSurface_In)
+ {
+ myState = TopAbs_OUT;
+ }
+#ifdef OCCT_DEBUG
+ else
+ {
+ std::cout << " -------- Probleme ds BRepClass3d_SolidPassiveClassifier.gxx " << std::endl;
+ }
+#endif
+ }
+ }
+ else
+ {
+ //-- No point has been found by the myIntersector.
+ //-- Or a Point has been found with a greater parameter.
+ }
+ } //-- myIntersector Has a point
+ else
+ {
+ //-- The myIntersector failed.
+ }
+ } //-- Face has not been rejected
+}
-// Created on: 1994-04-18
-// Created by: Laurent BUCHARD
// Copyright (c) 1994-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
+// Copyright (c) 1999-2024 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
#ifndef _BRepClass3d_SolidPassiveClassifier_HeaderFile
#define _BRepClass3d_SolidPassiveClassifier_HeaderFile
+#include <BRepClass3d_Intersector3d.hxx>
#include <Standard.hxx>
+#include <Standard_Boolean.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
-
-#include <Standard_Boolean.hxx>
+#include <TopAbs_Orientation.hxx>
+#include <TopAbs_State.hxx>
#include <TopoDS_Face.hxx>
#include <gp_Lin.hxx>
-#include <TopAbs_State.hxx>
-#include <BRepClass3d_Intersector3d.hxx>
-#include <TopAbs_Orientation.hxx>
+
class Standard_DomainError;
class BRepClass3d_Intersector3d;
class gp_Lin;
class TopoDS_Face;
-
-
-class BRepClass3d_SolidPassiveClassifier
+class BRepClass3d_SolidPassiveClassifier
{
public:
-
DEFINE_STANDARD_ALLOC
-
//! Creates an undefined classifier.
Standard_EXPORT BRepClass3d_SolidPassiveClassifier();
-
+
//! Starts a classification process. The point to
//! classify is the origin of the line <L>. <P> is
//! the original length of the segment on <L> used to
//! compute intersections. <Tol> is the tolerance
//! attached to the intersections.
- Standard_EXPORT void Reset (const gp_Lin& L, const Standard_Real P, const Standard_Real Tol);
-
+ Standard_EXPORT void Reset(const gp_Lin& L, const Standard_Real P, const Standard_Real Tol);
+
//! Updates the classification process with the face
//! <F> from the boundary.
- Standard_EXPORT void Compare (const TopoDS_Face& F, const TopAbs_Orientation Or);
-
- //! Returns the current value of the parameter.
- Standard_Real Parameter() const;
-
- //! Returns True if an intersection is computed.
- Standard_Boolean HasIntersection() const;
-
- //! Returns the intersecting algorithm.
- BRepClass3d_Intersector3d& Intersector();
-
- //! Returns the current state of the point.
- TopAbs_State State() const;
-
-
-
-
-protected:
+ Standard_EXPORT void Compare(const TopoDS_Face& F, const TopAbs_Orientation Or);
+ //! Returns the current value of the parameter.
+ Standard_Real Parameter() const { return myParam; }
+ //! Returns True if an intersection is computed.
+ Standard_Boolean HasIntersection() const { return hasIntersect; }
+ //! Returns the intersecting algorithm.
+ BRepClass3d_Intersector3d& Intersector() { return myIntersector; }
+ //! Returns the current state of the point.
+ TopAbs_State State() const { return myState; }
private:
-
-
-
- Standard_Boolean isSet;
- TopoDS_Face myFace;
- gp_Lin myLin;
- Standard_Real myParam;
- Standard_Real myTolerance;
- TopAbs_State myState;
- Standard_Boolean hasIntersect;
+ Standard_Boolean isSet;
+ TopoDS_Face myFace;
+ gp_Lin myLin;
+ Standard_Real myParam;
+ Standard_Real myTolerance;
+ TopAbs_State myState;
+ Standard_Boolean hasIntersect;
BRepClass3d_Intersector3d myIntersector;
-
-
};
-#define TheIntersector BRepClass3d_Intersector3d
-#define TheIntersector_hxx <BRepClass3d_Intersector3d.hxx>
-#define TopClass_Classifier3d BRepClass3d_SolidPassiveClassifier
-#define TopClass_Classifier3d_hxx <BRepClass3d_SolidPassiveClassifier.hxx>
-
-#include <TopClass_Classifier3d.lxx>
-
-#undef TheIntersector
-#undef TheIntersector_hxx
-#undef TopClass_Classifier3d
-#undef TopClass_Classifier3d_hxx
-
-
-
-
#endif // _BRepClass3d_SolidPassiveClassifier_HeaderFile
+++ /dev/null
-// Created on: 1994-04-18
-// Created by: Laurent BUCHARD
-// Copyright (c) 1994-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 <BRepClass3d_SolidPassiveClassifier.hxx>
-
-#include <Standard_DomainError.hxx>
-#include <BRepClass3d_Intersector3d.hxx>
-#include <gp_Lin.hxx>
-#include <TopoDS_Face.hxx>
-
-
-#define TheIntersector BRepClass3d_Intersector3d
-#define TheIntersector_hxx <BRepClass3d_Intersector3d.hxx>
-#define TopClass_Classifier3d BRepClass3d_SolidPassiveClassifier
-#define TopClass_Classifier3d_hxx <BRepClass3d_SolidPassiveClassifier.hxx>
-#include "../TopClass/TopClass_Classifier3d.gxx"
-
BRepClass3d_SolidExplorer.cxx
BRepClass3d_SolidExplorer.hxx
BRepClass3d_SolidPassiveClassifier.hxx
-BRepClass3d_SolidPassiveClassifier_0.cxx
+BRepClass3d_SolidPassiveClassifier.cxx
TopClass_Classifier3d.lxx
TopClass_FaceClassifier.gxx
TopClass_FaceClassifier.lxx
-TopClass_SolidClassifier.gxx
TopClass_SolidExplorer.cxx
TopClass_SolidExplorer.hxx
+++ /dev/null
-// Created on: 1995-09-14
-// Created by: Jean Yves LEBEY
-// Copyright (c) 1995-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 <Standard_Type.hxx>
-
-// trace functions called in TopClass_FaceClassifier.gxx
-
-static Standard_Boolean TopClass_traceFC = Standard_False;
-Standard_EXPORT void TopClass_SettraceFC(const Standard_Boolean b) { TopClass_traceFC = b; }
-Standard_EXPORT Standard_Boolean TopClass_GettraceFC() { return TopClass_traceFC; }
-
+++ /dev/null
-// Created on: 1994-03-30
-// Created by: Laurent BUCHARD
-// Copyright (c) 1994-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.
-
-//======================================================================
-TopClass_Classifier3d::TopClass_Classifier3d()
-: isSet(Standard_False),
- myParam(0.0),
- myTolerance(0.0),
- myState(TopAbs_UNKNOWN),
- hasIntersect(Standard_False)
-{
-}
-
-//======================================================================
-void TopClass_Classifier3d::Reset(const gp_Lin& L,
- const Standard_Real,
- const Standard_Real Tol) {
- myLin = L;
- myParam = RealLast();
- myTolerance = Tol;
- myState = TopAbs_UNKNOWN;
- isSet = Standard_True;
-}
-//======================================================================
-#include <IntCurveSurface_IntersectionPoint.hxx>
-#include <IntCurveSurface_TransitionOnCurve.hxx>
-
-void TopClass_Classifier3d::Compare(const TopoDS_Face& Face,
- const TopAbs_Orientation) {
- if(!isSet) {
-#ifdef OCCT_DEBUG
- std::cout<<" Call to TopClass_Classifier3d::Compare without a Reset ! ";
-#endif
- return;
- }
-
- hasIntersect = Standard_False;
- myIntersector.Perform(myLin,myParam,myTolerance,Face);
- if(myIntersector.IsDone()) {
- if(myIntersector.HasAPoint()) {
- hasIntersect = Standard_True;
- if(myIntersector.WParameter() < myParam) {
- myParam = myIntersector.WParameter();
- myFace = myIntersector.Face();
- if(Abs(myParam)<=myTolerance) {
- //-- #########################################
-#ifdef OCCT_DEBUG
- std::cout<<" myParam = "<<myParam<<" ds TopClass_Classifier3d.gxx "<<std::endl;
-#endif
- //-- #########################################
- myState = TopAbs_ON;
- }
- else {
- //-- The intersection point between the line and a face F of the solid
- //-- is in the face F or On a boundary of the face
- if(myIntersector.Transition() == IntCurveSurface_Out) {
- //-- The line is going from inside the solid to outside the solid.
- myState = TopAbs_IN;
- }
- else if(myIntersector.Transition() == IntCurveSurface_In) {
- myState = TopAbs_OUT;
- }
-#ifdef OCCT_DEBUG
- else {
- std::cout<<" -------- Probleme ds TopClass_Classifier3d.gxx "<<std::endl;
- }
-#endif
- }
- }
- else {
- //-- No point has been found by the myIntersector.
- //-- Or a Point has been found with a greater parameter.
- }
- } //-- myIntersector Has a point
- else {
- //-- The myIntersector failed.
- }
- } //-- Face has not been rejected
-}
+++ /dev/null
-// Created on: 1994-03-30
-// Created by: Laurent BUCHARD
-// Copyright (c) 1994-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.
-
-inline Standard_Real TopClass_Classifier3d::Parameter() const
-{
- return myParam;
-}
-
-//=======================================================================
-inline TheIntersector& TopClass_Classifier3d::Intersector()
-{
- return(myIntersector);
-}
-
-//=======================================================================
-inline Standard_Boolean TopClass_Classifier3d::HasIntersection() const
-{
- return(hasIntersect);
-}
-//=======================================================================
-inline TopAbs_State TopClass_Classifier3d::State() const
-{
- return(myState);
-}
+++ /dev/null
-// Copyright (c) 1995-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.
-
-//-- TopClass_SolidClassifier.gxx
-
-#ifdef OCCT_DEBUG
-Standard_EXPORT Standard_Boolean TopClass_GettraceFC();
-#endif
-
-#include <gp_Lin.hxx>
-
-//extern void DrawSegment(const gp_Pnt& P1,const gp_Lin& L,const Standard_Real par);
-//extern Standard_Boolean DebugDrawSegment;
-
-TopClass_SolidClassifier::TopClass_SolidClassifier()
-{
-}
-
-
-TopClass_SolidClassifier::TopClass_SolidClassifier(TheSolidExplorer& S,
- const gp_Pnt& P,
- const Standard_Real Tol) {
- Perform(S,P,Tol);
-}
-
-
-void TopClass_SolidClassifier::Perform(TheSolidExplorer& SolidExplorer,
- const gp_Pnt& P,
- const Standard_Real Tol) {
-#ifdef OCCT_DEBUG
- Standard_Boolean trace = TopClass_GettraceFC();
-#endif
-
- myState = 0;
- if(SolidExplorer.Reject(P) == Standard_False) {
-
- //-- There is no rejection between the Shape loaded in the SolidExplorer
- //-- and the point P.
-
- gp_Lin L;
- Standard_Real Par;
- //-- We compute the intersection between the line builded in the Solid Explorer
- //-- and the shape.
-
- SolidExplorer.Segment(P,L,Par);
-
- TheIntersection3d Intersector;
-
- Standard_Real parmin = RealLast();
-
- for(SolidExplorer.InitShell();
- SolidExplorer.MoreShell();
- SolidExplorer.NextShell()) {
-
- if(SolidExplorer.RejectShell(L) == Standard_False) {
-
- for(SolidExplorer.InitFace();
- SolidExplorer.MoreFace();
- SolidExplorer.NextFace()) {
-
- if(SolidExplorer.RejectFace(L) == Standard_False) {
-
- Intersector.Perform(L,Par,Tol,SolidExplorer.CurrentFace());
-
- if(Intersector.IsDone()) {
- if(Intersector.HasAPoint()) {
- if(Intersector.WParameter() < parmin) {
-
- parmin = Intersector.WParameter();
- if(Abs(parmin)<=Tol) {
-#ifdef OCCT_DEBUG
- if (trace) {
- //-- #########################################
- std::cout<<" parmin = "<<parmin<< " avec Par = "<<Par;
- std::cout<<" ds TopClass_SolidClassifier.gxx "<<std::endl;
- //-- #########################################
- }
-#endif
- myState = 2;
- myFace = Intersector.Face();
- }
- else if(Intersector.State()==TopAbs_IN) {
-
- //-- The intersection point between the line and a face F
- // -- of the solid is in the face F
-
- if(Intersector.Transition() == IntCurveSurface_Out) {
- //-- The line is going from inside the solid to outside
- //-- the solid.
- myState = 3; //-- IN --
- }
- else if(Intersector.Transition() == IntCurveSurface_In) {
- myState = 4; //-- OUT --
- }
- else {
-#ifdef OCCT_DEBUG
- std::cout<<"*Probleme ds TopClass_SolidClassifier.gxx"<<std::endl;
-#endif
- }
- myFace = Intersector.Face();
- }
- else if(Intersector.State()==TopAbs_ON) {
- //-- The intersection point between the line and a face F
- //-- of the solid is in the face F
-
- if(Intersector.Transition() == IntCurveSurface_Out) {
- //-- The line is going from inside the solid to outside
- //-- the solid.
- myState = 3; //-- IN --
- }
- else if(Intersector.Transition() == IntCurveSurface_In) {
- myState = 4; //-- OUT --
- }
- else {
-#ifdef OCCT_DEBUG
- std::cout<<"*Probleme ds TopClass_SolidClassifier.gxx "<<std::endl;
-#endif
- }
-#ifdef OCCT_DEBUG
- //-- #########################################
-// cout<<" Intersector.State() == TopAbs_ON";
-// cout<<" ds TopClass_SolidClassifier.gxx "<<endl;
-// cout<<" Transition : ";
-// if(myState==3) { cout<<" IN "; }
-// else if(myState==4) { cout<<" OUT "; }
-// else { cout<<" PB "; }
-// cout<<endl;
- //-- #########################################
-#endif
- //-- myState = 2;
- myFace = Intersector.Face();
- }
- }
- else {
- //-- No point has been found by the intersector.
- //-- Or a Point has been found with a greater parameter.
- }
- } //-- Intersector Has a point
- else {
- //-- The intersector failed.
- }
- } //-- Face has not been rejected
- else {
- myState = 1;
- }
- }
- } //-- Exploration of the faces
- } //-- Shell has not been rejected
- else {
- myState=1;
- }
- } //-- Exploration of the shells
-
-#ifdef OCCT_DEBUG
- //#################################################
- SolidExplorer.DumpSegment(P,L,parmin,State());
- //#################################################
-#endif
-
- } //-- Solid has not been rejected
- else {
- myState = 1;
- }
-}
-
-
-TopAbs_State TopClass_SolidClassifier::State() const {
- if(myState==2) return(TopAbs_ON);
- if(myState==4) return(TopAbs_OUT); //--
- else if(myState==3) return(TopAbs_IN); //--
- return(TopAbs_OUT);
-}
-
-TopoDS_Face TopClass_SolidClassifier::Face() const {
- return(myFace);
-}
-
-Standard_Boolean TopClass_SolidClassifier::Rejected() const {
- return(myState==1);
-}
-
-
-Standard_Boolean TopClass_SolidClassifier::IsOnAFace() const {
- return(myState==2);
-}
+++ /dev/null
-// Created on: 1996-10-23
-// Created by: Laurent BUCHARD
-// Copyright (c) 1995-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.
+++ /dev/null
-// Created on: 1994-03-10
-// Created by: Laurent BUCHARD
-// Copyright (c) 1994-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.
-
-#ifndef _TopClass_SolidExplorer_HeaderFile
-#define _TopClass_SolidExplorer_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_DefineAlloc.hxx>
-#include <Standard_Handle.hxx>
-
-#include <Standard_Boolean.hxx>
-#include <Standard_Real.hxx>
-class gp_Pnt;
-class gp_Lin;
-class TopoDS_Face;
-
-
-//! Provide an exploration of a BRep Shape for the
-//! classification. Defines the description of a solid for the
-//! SolidClassifier.
-class TopClass_SolidExplorer
-{
-public:
-
- DEFINE_STANDARD_ALLOC
-
-
- //! Should return True if the point is outside a
- //! bounding volume of the shape.
- Standard_EXPORT virtual Standard_Boolean Reject (const gp_Pnt& P) const = 0;
-
- //! Returns in <L>, <Par> a segment having at least
- //! one intersection with the shape boundary to
- //! compute intersections.
- Standard_EXPORT virtual void Segment (const gp_Pnt& P, gp_Lin& L, Standard_Real& Par) = 0;
-
- //! Returns in <L>, <Par> a segment having at least
- //! one intersection with the shape boundary to
- //! compute intersections.
- //!
- //! The First Call to this method returns a line which
- //! point to a point of the first face of the shape.
- //! The Second Call provide a line to the second face
- //! and so on.
- //!
- //! if the method is called N times on a shape with F
- //! faces (N>F) the line point to other points on the
- //! face 1,2,3 ... N
- Standard_EXPORT virtual void OtherSegment (const gp_Pnt& P, gp_Lin& L, Standard_Real& Par) = 0;
-
- //! Starts an exploration of the shells.
- Standard_EXPORT virtual void InitShell() = 0;
-
- //! Returns True if there is a current shell.
- Standard_EXPORT virtual Standard_Boolean MoreShells() const = 0;
-
- //! Sets the explorer to the next shell and returns
- //! False if there are no more wires.
- Standard_EXPORT virtual void NextShell() = 0;
-
- //! Returns True if the shell bounding volume does not
- //! intersect the segment.
- Standard_EXPORT virtual Standard_Boolean RejectShell (const gp_Lin& L, const Standard_Real Par) const = 0;
-
- //! Starts an exploration of the faces.
- Standard_EXPORT virtual void InitFace() = 0;
-
- //! Returns True if there is a current face.
- Standard_EXPORT virtual Standard_Boolean MoreFaces() const = 0;
-
- //! Sets the explorer to the next face and returns
- //! False if there are no more wires.
- Standard_EXPORT virtual void NextFace() = 0;
-
- //! Returns the current face.
- Standard_EXPORT virtual TopoDS_Face CurrentFace() const = 0;
-
- //! Returns True if the face bounding volume does not
- //! intersect the segment.
- Standard_EXPORT virtual Standard_Boolean RejectFace (const gp_Lin& L, const Standard_Real Par) const = 0;
-
-
-
-
-protected:
-
-
-
-
-
-private:
-
-
-
-
-
-};
-
-
-
-
-
-
-
-#endif // _TopClass_SolidExplorer_HeaderFile