Back to index

salome-geom  6.5.0
GEOMAlgo_ClsfSurf.cxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 // File:        GEOMAlgo_ClsfSurf.cxx
00024 // Created:     Wed Nov 22 10:41:47 2006
00025 // Author:      Peter KURNEV
00026 //              <pkv@irinox>
00027 //
00028 #include <GEOMAlgo_ClsfSurf.hxx>
00029 #include <GeomAbs_SurfaceType.hxx>
00030 #include <GEOMAlgo_SurfaceTools.hxx>
00031 #include <GeomAdaptor_Curve.hxx>
00032 
00033 IMPLEMENT_STANDARD_HANDLE(GEOMAlgo_ClsfSurf, GEOMAlgo_Clsf);
00034 IMPLEMENT_STANDARD_RTTIEXT(GEOMAlgo_ClsfSurf, GEOMAlgo_Clsf);
00035 
00036 //=======================================================================
00037 //function :
00038 //purpose  :
00039 //=======================================================================
00040   GEOMAlgo_ClsfSurf::GEOMAlgo_ClsfSurf()
00041 :
00042   GEOMAlgo_Clsf()
00043 {
00044 }
00045 //=======================================================================
00046 //function : ~
00047 //purpose  :
00048 //=======================================================================
00049   GEOMAlgo_ClsfSurf::~GEOMAlgo_ClsfSurf()
00050 {
00051 }
00052 //=======================================================================
00053 //function : SetSurface
00054 //purpose  :
00055 //=======================================================================
00056   void GEOMAlgo_ClsfSurf::SetSurface(const Handle(Geom_Surface)& aS)
00057 {
00058   myS=aS;
00059 }
00060 //=======================================================================
00061 //function : Surface
00062 //purpose  :
00063 //=======================================================================
00064   const Handle(Geom_Surface)& GEOMAlgo_ClsfSurf::Surface() const
00065 {
00066   return myS;
00067 }
00068 //=======================================================================
00069 //function : CheckData
00070 //purpose  :
00071 //=======================================================================
00072   void GEOMAlgo_ClsfSurf::CheckData()
00073 {
00074   GeomAbs_SurfaceType aType;
00075   //
00076   myErrorStatus=0;
00077   //
00078   if(myS.IsNull()) {
00079     myErrorStatus=10; // mySurface=NULL
00080     return;
00081   }
00082   //
00083   myGAS.Load(myS);
00084   aType=myGAS.GetType();
00085   if (!(aType==GeomAbs_Plane ||
00086         aType==GeomAbs_Cylinder ||
00087         aType==GeomAbs_Sphere)) {
00088     myErrorStatus=11; // unallowed surface type
00089   }
00090 }
00091 //=======================================================================
00092 //function : Perform
00093 //purpose  :
00094 //=======================================================================
00095   void GEOMAlgo_ClsfSurf::Perform()
00096 {
00097   myErrorStatus=0;
00098   /*
00099   CheckData();
00100   if(myErrorStatus) {
00101     return;
00102   }
00103   */
00104   GEOMAlgo_SurfaceTools::GetState(myPnt, myGAS, myTolerance, myState);
00105 }
00106 //=======================================================================
00107 //function : CanBeON
00108 //purpose  :
00109 //=======================================================================
00110   Standard_Boolean GEOMAlgo_ClsfSurf::CanBeON(const Handle(Geom_Curve)& aC) const
00111 {
00112   GeomAbs_SurfaceType aST;
00113   GeomAbs_CurveType aCT;
00114   GeomAdaptor_Curve aGAC;
00115   //
00116   aGAC.Load(aC);
00117   aCT=aGAC.GetType();
00118   //
00119   aST=myGAS.GetType();
00120   if (aCT==GeomAbs_Line && aST==GeomAbs_Sphere) {
00121     return Standard_False;
00122   }
00123   return Standard_True;
00124 }
00125 //=======================================================================
00126 //function : CanBeON
00127 //purpose  :
00128 //=======================================================================
00129   Standard_Boolean GEOMAlgo_ClsfSurf::CanBeON(const Handle(Geom_Surface)& aS1) const
00130 {
00131   Standard_Boolean bRet;
00132   GeomAbs_SurfaceType aST, aST1;
00133   GeomAdaptor_Surface aGAS1;
00134   //
00135   aST=myGAS.GetType();
00136   aGAS1.Load(aS1);
00137   aST1=aGAS1.GetType();
00138   bRet=(aST1==aST);
00139   //
00140   return bRet;
00141 }