cgma
FacetLoop.hpp
Go to the documentation of this file.
00001 //-------------------------------------------------------------------------
00002 // Filename      : FacetLoop.hpp
00003 //
00004 // Purpose       : 
00005 //
00006 // Special Notes :
00007 //
00008 // Creator       : Steven J. Owen
00009 //
00010 // Creation Date : 12/06/00
00011 //
00012 // Owner         : Steven J. Owen
00013 //-------------------------------------------------------------------------
00014 
00015 #ifndef LOOP_Facet_HPP
00016 #define LOOP_Facet_HPP
00017 
00018 #include "CubitDefines.h"
00019 #include "CubitEntity.hpp"
00020 #include "LoopSM.hpp"
00021 #include "DLIList.hpp"
00022 
00023 class GeometryEntity;
00024 
00025 class FacetBody;
00026 class FacetLump;
00027 class FacetShell;
00028 class FacetSurface;
00029 class FacetCoEdge;
00030 class FacetCurve;
00031 class FacetPoint;
00032 
00033 class FacetLoop : public LoopSM
00034 {
00035 public :
00036   
00037   FacetLoop( Surface *surf_ptr,
00038              DLIList<CoEdgeSM*> &coedge_list );
00039     //I- surf_ptr
00040     //I- A pointer to the set of CoEdges that bound this loop
00041   
00042   FacetLoop( DLIList<CoEdgeSM*> &coedge_list );
00043     //I- A pointer to the set of CoEdges that bound this loop
00044 
00045   virtual ~FacetLoop() ;
00046     //- The destructor
00047   
00048   virtual CubitBoolean is_external() ;
00049     //R CubitBoolean
00050     //R- CUBIT_TRUE/CUBIT_FALSE
00051     //- Returns CUBIT_TRUE if the Loop is an external Loop and CUBIT_FALSE
00052     //- otherwise.
00053   
00054   virtual LoopType loop_type() ;
00055 
00056   virtual void append_simple_attribute_virt(const CubitSimpleAttrib&);
00057     //R void
00058     //I 
00059     //I- 
00060     //I- that is to be appended to this OSME object.
00061     //- The purpose of this function is to append a 
00062     //- attribute to the OSME. The  is attached to each of the 
00063     //- underlying solid model entities this one points to.
00064   
00065   virtual void remove_simple_attribute_virt(const CubitSimpleAttrib&);
00066     //R void
00067     //I CubitSimpleAttrib*
00068     //I- A reference to a CubitSimpleAttrib object which is the object
00069     //I- that is to be removed to this OSME object.
00070     //- The purpose of this function is to remove a simple
00071     //- attribute from the OSME. The attribute is attached to each of the
00072     //- underlying solid model entities this one points to.
00073   
00074   virtual void remove_all_simple_attribute_virt();
00075     //R void
00076     //I-
00077     //- The purpose of this function is to remove all simple
00078     //- attributes from the OSME. 
00079   
00080   virtual CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>&);
00081   virtual CubitStatus get_simple_attribute(const CubitString& name,
00082                                            DLIList<CubitSimpleAttrib>&);
00083     //R CubitSimpleAttrib*
00084     //R- the returned cubit simple attribute.
00085     //- The purpose of this function is to get the attributes
00086     //- of the geometry entity. The name is attached to the underlying solid
00087     //- model entity(ies) this one points to.
00088     //- MJP Note:
00089     //- This is the code that implements the requirement that names
00090     //- of VGI Entities propagate across solid model boolean
00091     //- operations.  The success of this relies, of course, on the underlying
00092     //- solid modeler being able to propagate attributes across
00093     //- such operations on its entities. If it cannot, then "names"
00094     //- of VGI entities will not propagate.
00095   
00096   virtual CubitBox bounding_box() const ;
00097     // see comments in GeometryEntity.hpp
00098   
00099   virtual GeometryQueryEngine* 
00100   get_geometry_query_engine() const;
00101     //R GeometryQueryEngine*
00102     //R- A pointer to the geometric modeling engine associated with
00103     //R- the object.
00104     //- This function returns a pointer to the geometric modeling engine
00105     //- associated with the object.
00106   
00107   void get_lumps   ( DLIList<FacetLump   *>& lumps    );
00108   void get_shells  ( DLIList<FacetShell  *>& shells   );
00109   void get_coedges ( DLIList<FacetCoEdge *>& coedges  );
00110   void get_curves  ( DLIList<FacetCurve  *>& curves   );
00111 
00112   void get_parents_virt( DLIList<TopologyBridge*>& parents );
00113   void get_children_virt( DLIList<TopologyBridge*>& children );
00114 
00115   void add_surface( Surface *new_surface_ptr )
00116     { mySurface = new_surface_ptr; }
00117 
00118   void reverse()
00119     { myCoEdges.reverse(); }
00120     
00121   inline Surface* get_surface() const { return mySurface; }
00122   
00123   inline void remove_surface() { mySurface = 0; }
00124   
00125   void disconnect_all_coedges();
00126 
00127 protected: 
00128 
00129 private:
00130   Surface *mySurface;
00131   DLIList<CoEdgeSM*> myCoEdges;
00132 
00133 };
00134 
00135 
00136 // ********** BEGIN INLINE FUNCTIONS       **********
00137 // ********** END INLINE FUNCTIONS         **********
00138 
00139 // ********** BEGIN FRIEND FUNCTIONS       **********
00140 // ********** END FRIEND FUNCTIONS         **********
00141 
00142 // ********** BEGIN EXTERN FUNCTIONS       **********
00143 // ********** END EXTERN FUNCTIONS         **********
00144 
00145 #endif
00146 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines