cgma
|
00001 //------------------------------------------------------------------------- 00002 // Filename : PartitionBody.hpp 00003 // 00004 // Purpose : BodySM implementation for partition geometry 00005 // 00006 // Special Notes : Catches transforms 00007 // 00008 // Creator : Jason Kraftcheck 00009 // 00010 // Creation Date : 02/13/03 00011 //------------------------------------------------------------------------- 00012 00013 #ifndef PARTITION_BODY_HPP 00014 #define PARTITION_BODY_HPP 00015 00016 #include "BodySM.hpp" 00017 #include "PartitionEntity.hpp" 00018 00019 class CubitFacetPoint; 00020 class SegmentedCurve; 00021 class PartitionPoint; 00022 00023 class PartitionBody : public BodySM, public PartitionEntity 00024 { 00025 public: 00026 00027 PartitionBody( BodySM* ); 00028 00029 ~PartitionBody(); 00030 00031 00032 /************** Functions from BodySM **************/ 00033 /* 00034 CubitStatus move( const CubitVector& offset ); 00035 00036 CubitStatus rotate( const CubitVector& axis, double angle ); 00037 00038 CubitStatus scale( double factor ); 00039 00040 CubitStatus scale( const CubitVector& factors ); 00041 00042 CubitStatus reflect( const CubitVector& axis ); 00043 00044 CubitStatus restore(); 00045 00046 CubitStatus reverse(); 00047 */ 00048 CubitStatus get_transforms( CubitTransformMatrix& ); 00049 00050 CubitStatus mass_properties( CubitVector& centroid, double& volume ); 00051 00052 CubitPointContainment point_containment( const CubitVector& pos, double tolerance = -1.0 ); 00053 00054 00055 /************** Functions from TopologyBridge **************/ 00056 00057 void append_simple_attribute_virt( const CubitSimpleAttrib& ); 00058 00059 void remove_simple_attribute_virt( const CubitSimpleAttrib& ); 00060 00061 void remove_all_simple_attribute_virt(); 00062 00063 CubitStatus get_simple_attribute( DLIList<CubitSimpleAttrib>& ); 00064 00065 CubitStatus get_simple_attribute( const CubitString& name, 00066 DLIList<CubitSimpleAttrib>& ); 00067 00068 virtual int layer() const; 00069 00070 void get_parents_virt( DLIList<TopologyBridge*>& ); 00071 00072 void get_children_virt( DLIList<TopologyBridge*>& ); 00073 00074 GeometryQueryEngine* get_geometry_query_engine() const; 00075 00076 00077 /************** Functions from PartitionEntity **************/ 00078 00079 void reverse_sense(); 00080 00081 void notify_split( FacetEntity*, FacetEntity* ); 00082 00083 CubitStatus save( CubitSimpleAttrib& ); 00084 00085 CubitBox bounding_box() const; 00086 00087 00088 /************** Local Functions **************/ 00089 00090 BodySM* real_body() const; 00091 00092 void add( SubEntitySet& ); 00093 00094 void remove( SubEntitySet& ); 00095 00096 bool has_children() const { return !!childList; } 00097 00098 void destroy_all_children(); 00099 00100 void transform(const CubitTransformMatrix&) {} 00101 00102 void get_all_children( DLIList<PartitionEntity*>& list ); 00103 00104 protected: 00105 00106 private: 00107 00108 SubEntitySet* childList; 00109 }; 00110 00111 #endif 00112 00113