cgma
|
00001 //------------------------------------------------------------------------- 00002 // Filename : FacetCoEdge.hpp 00003 // 00004 // Purpose : 00005 // 00006 // Special Notes : 00007 // 00008 // Creator : Steven J. Owen 00009 // 00010 // Creation Date : 07/23/00 00011 // 00012 // Owner : Steven J. Owen 00013 //------------------------------------------------------------------------- 00014 00015 #ifndef FACETCOEDGE_HPP 00016 #define FACETCOEDGE_HPP 00017 00018 // ********** BEGIN STANDARD INCLUDES ********** 00019 // ********** END STANDARD INCLUDES ********** 00020 00021 // ********** BEGIN CUBIT INCLUDES ********** 00022 #include "CubitDefines.h" 00023 #include "CubitEntity.hpp" 00024 #include "CoEdgeSM.hpp" 00025 // ********** END CUBIT INCLUDES ********** 00026 00027 // ********** BEGIN FORWARD DECLARATIONS ********** 00028 class TopologyEntity; 00029 class LoopSM; 00030 00031 class FacetBody; 00032 class FacetLump; 00033 class FacetShell; 00034 class FacetSurface; 00035 class FacetLoop; 00036 class FacetCurve; 00037 class FacetPoint; 00038 00039 // ********** END FORWARD DECLARATIONS ********** 00040 00041 class FacetCoEdge : public CoEdgeSM 00042 { 00043 public: 00044 00045 FacetCoEdge(Curve *curv_ptr, LoopSM *loop_ptr, CubitSense sense); 00046 //- A constructor 00047 // 00048 FacetCoEdge(Curve *curv_ptr, CubitSense sense); 00049 //- A constructor (for save/restore) 00050 00051 virtual ~FacetCoEdge() ; 00052 //- The destructor 00053 00054 virtual GeometryQueryEngine* 00055 get_geometry_query_engine() const; 00056 //R GeometryQueryEngine* 00057 //R- A pointer to the geometric modeling engine associated with 00058 //R- the object. 00059 //- This function returns a pointer to the geometric modeling engine 00060 //- associated with the object. 00061 00062 virtual void append_simple_attribute_virt(const CubitSimpleAttrib&); 00063 //R void 00064 //I 00065 //I- 00066 //I- that is to be appended to this OSME object. 00067 //- The purpose of this function is to append a 00068 //- attribute to the OSME. The is attached to each of the 00069 //- underlying solid model entities this one points to. 00070 00071 virtual void remove_simple_attribute_virt(const CubitSimpleAttrib&); 00072 //R void 00073 //I CubitSimpleAttrib* 00074 //I- A reference to a CubitSimpleAttrib object which is the object 00075 //I- that is to be removed to this OSME object. 00076 //- The purpose of this function is to remove a simple 00077 //- attribute from the OSME. The attribute is attached to each of the 00078 //- underlying solid model entities this one points to. 00079 00080 virtual void remove_all_simple_attribute_virt(); 00081 //R void 00082 //I- 00083 //- The purpose of this function is to remove all simple 00084 //- attributes from the OSME. 00085 00086 virtual CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>&); 00087 virtual CubitStatus get_simple_attribute(const CubitString& name, 00088 DLIList<CubitSimpleAttrib>&); 00089 //R CubitSimpleAttrib* 00090 //R- the returned cubit simple attribute. 00091 //- The purpose of this function is to get the attributes 00092 //- of the geometry entity. The name is attached to the underlying solid 00093 //- model entity(ies) this one points to. 00094 //- MJP Note: 00095 //- This is the code that implements the requirement that names 00096 //- of VGI Entities propagate across solid model boolean 00097 //- operations. The success of this relies, of course, on the underlying 00098 //- solid modeler being able to propagate attributes across 00099 //- such operations on its entities. If it cannot, then "names" 00100 //- of VGI entities will not propagate. 00101 00102 CubitSense sense(); 00103 //- returns the sense of the underlying coedge wrt the underlying edge 00104 00105 void get_lumps ( DLIList<FacetLump *>& lumps ); 00106 void get_shells ( DLIList<FacetShell *>& shells ); 00107 void get_curves ( DLIList<FacetCurve *>& curves ); 00108 00109 void get_parents_virt( DLIList<TopologyBridge*>& parents ); 00110 void get_children_virt( DLIList<TopologyBridge*>& children ); 00111 00112 void add_loop( LoopSM *loop_ptr ) 00113 { myLoop = loop_ptr; } 00114 //- set the loop pointer that this coedge is asociated 00115 00116 CubitSense get_sense() 00117 {return edgeSense;} 00118 //- get the sense of the coedge wrt the surface loop 00119 void reverse_sense(); 00120 00121 Curve *curve() 00122 {return myCurve;} 00123 //- get the curve associated with this coedge 00124 00125 inline LoopSM* get_loop() const { return myLoop; } 00126 00127 inline void remove_loop() { myLoop = 0; } 00128 inline void remove_curve() { myCurve = 0; } 00129 00130 protected: 00131 00132 private: 00133 LoopSM *myLoop; 00134 Curve *myCurve; 00135 CubitSense edgeSense; 00136 }; 00137 00138 00139 // ********** BEGIN INLINE FUNCTIONS ********** 00140 // ********** END INLINE FUNCTIONS ********** 00141 00142 // ********** BEGIN FRIEND FUNCTIONS ********** 00143 // ********** END FRIEND FUNCTIONS ********** 00144 00145 // ********** BEGIN EXTERN FUNCTIONS ********** 00146 // ********** END EXTERN FUNCTIONS ********** 00147 00148 #endif 00149