cgma
|
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