cgma
FacetCoEdge.hpp
Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines