cgma
|
00001 #ifndef SPLITCOMPOSITESURFACETOOL_HPP 00002 #define SPLITCOMPOSITESURFACETOOL_HPP 00003 00004 #include "CubitDefines.h" 00005 #include "Surface.hpp" 00006 00007 class Surface; 00008 class RefFace; 00009 class CubitVector; 00010 template<class X> class DLIList; 00011 00012 00013 class SplitCompositeSurfaceTool 00014 { 00015 public: 00016 static SplitCompositeSurfaceTool *instance(); 00017 static void delete_instance() 00018 { 00019 if(instance_) 00020 delete instance_; 00021 instance_ = NULL; 00022 }; 00023 CubitStatus split_surface( RefFace *ref_face_ptr, 00024 DLIList<CubitVector*> &locations, 00025 DLIList<DLIList<CubitVector*>*> &vec_lists, 00026 CubitBoolean preview_flg = CUBIT_FALSE, 00027 CubitBoolean create_ref_edges_flg = CUBIT_FALSE, 00028 CubitBoolean clear_previous_previews = CUBIT_TRUE ); 00029 00030 CubitStatus split_surface( DLIList<RefFace*> &ref_face_list, 00031 DLIList<CubitVector*> &locations, 00032 DLIList<DLIList<DLIList<CubitVector*>*>*> &list_of_vec_lists, 00033 CubitBoolean preview_flg = CUBIT_FALSE, 00034 CubitBoolean create_ref_edges_flg =CUBIT_FALSE, 00035 CubitBoolean clear_previous_previews = CUBIT_TRUE ); 00036 00037 private: 00038 00039 void find_faces_for_pos(CubitVector &pos, DLIList<Surface*> surf_list, 00040 CubitPointContainment &containment, 00041 DLIList<Surface*> &out_list); 00042 void get_additional_split_points(Surface *surf, 00043 DLIList<DLIList<CubitVector*>*> &vec_lists); 00044 static SplitCompositeSurfaceTool *instance_; 00045 void find_face_with_non_zero_param_dir(DLIList<Surface*> &surf_list, 00046 CubitVector &dir, 00047 CubitVector &pos, 00048 Surface *&ret_surf, 00049 double &du, double &dv, 00050 double &step); 00051 00052 }; 00053 00054 #endif 00055