cgma
|
00001 //------------------------------------------------------------------------- 00002 // Copyright Notice 00003 // 00004 // Copyright (c) 1996 00005 // by Malcolm J. Panthaki, DBA, and the University of New Mexico. 00006 //------------------------------------------------------------------------- 00007 // 00008 //------------------------------------------------------------------------- 00009 // Filename : BodySM.hpp 00010 // 00011 // Purpose : To declare the Body solid model class. 00012 // 00013 // Special Notes : 00014 // 00015 // Creator : Stephen J. Verzi 00016 // 00017 // Creation Date : 02/26/97 00018 // 00019 // Owner : Stephen J. Verzi 00020 //------------------------------------------------------------------------- 00021 00022 #ifndef BODYSM_HPP 00023 #define BODYSM_HPP 00024 00025 // ********** BEGIN STANDARD INCLUDES ********** 00026 // ********** END STANDARD INCLUDES ********** 00027 00028 // ********** BEGIN MOTIF INCLUDES ********** 00029 // ********** END MOTIF INCLUDES ********** 00030 00031 // ********** BEGIN OPEN INVENTOR INCLUDES ********** 00032 // ********** END OPEN INVENTOR INCLUDES ********** 00033 00034 // ********** BEGIN CUBIT INCLUDES ********** 00035 00036 #include "CubitDefines.h" 00037 00038 #include "TopologyBridge.hpp" 00039 class CubitTransformMatrix; 00040 class CubitVector; 00041 class CubitBox; 00042 00043 // ********** END CUBIT INCLUDES ********** 00044 00045 // ********** BEGIN FORWARD DECLARATIONS ********** 00046 // ********** END FORWARD DECLARATIONS ********** 00047 00048 class CUBIT_GEOM_EXPORT BodySM : public TopologyBridge 00049 { 00050 public : 00051 00052 BodySM() ; 00053 //- The default constructor 00054 00055 virtual ~BodySM() ; 00056 //- The destructor 00057 00058 virtual CubitStatus get_transforms( CubitTransformMatrix &tfm)= 0 ; 00059 //R CubitStatus 00060 //R- CUBIT_SUCCESS/FAILURE 00061 //- return the BODY transformation matrix 00062 00063 00064 virtual CubitStatus mass_properties( CubitVector& centroid, 00065 double& volume ) = 0; 00066 00067 //determines if a point is in/on the body to within the tolerance, 00068 //if specified. If not specified, the geometry kernel's tolerance 00069 //is used (i.e. catia: = 1e-6). 00070 virtual CubitPointContainment point_containment( const CubitVector& pos, 00071 double tolerance = -1.0 ) = 0; 00072 00073 CubitBox bounding_box(); 00074 00075 protected: 00076 00077 private: 00078 } ; 00079 00080 00081 // ********** BEGIN INLINE FUNCTIONS ********** 00082 // ********** END INLINE FUNCTIONS ********** 00083 00084 // ********** BEGIN FRIEND FUNCTIONS ********** 00085 // ********** END FRIEND FUNCTIONS ********** 00086 00087 // ********** BEGIN EXTERN FUNCTIONS ********** 00088 // ********** END EXTERN FUNCTIONS ********** 00089 00090 #endif 00091