cgma
|
00001 //------------------------------------------------------------------------- 00002 // Filename : SimplifyTool.hpp 00003 // 00004 // Purpose : 00005 // 00006 // Simplify {Volume|Surface} <Range> [Angle <Value>] 00007 // [Respect {Surface <Range> | Curve <Range> | Fillet |Chamfer | imprint}] 00008 // [Preview] 00009 // 00010 // Special Notes : 00011 // 00012 // Creator : Sam Showman 00013 // 00014 // Creation Date : 11/07/2005 00015 //------------------------------------------------------------------------- 00016 #ifndef SIMPLIFYTOOL_HPP 00017 #define SIMPLIFYTOOL_HPP 00018 00019 #include "CubitDefines.h" 00020 #include "CubitVector.hpp" 00021 00022 class RefVolume; 00023 class RefFace; 00024 class RefEdge; 00025 class RefVertex; 00026 template <class X> class DLIList; 00027 00029 00031 class SimplifyTool 00032 { 00033 public: 00034 00035 SimplifyTool(); 00036 ~SimplifyTool(); 00037 00039 /***/ 00040 CubitStatus simplify_volumes( 00041 DLIList<RefVolume*> ref_volume_list, 00042 double surf_angle_in, 00043 DLIList<RefFace*> respect_face_list, 00044 DLIList<RefEdge*> respect_edge_list, 00045 CubitBoolean respect_rounds, 00046 CubitBoolean respect_imprints, 00047 CubitBoolean local_normals, 00048 CubitBoolean preview); 00049 00050 CubitStatus simplify_surfaces( 00051 DLIList<RefFace*> ref_face_list, 00052 double angle_in, 00053 DLIList<RefFace*> respect_face_list, 00054 DLIList<RefEdge*> respect_edge_list, 00055 CubitBoolean respect_rounds, 00056 CubitBoolean respect_imprints, 00057 CubitBoolean local_normals, 00058 CubitBoolean preview); 00059 00060 CubitStatus simplify_curves( 00061 DLIList<RefEdge*> ref_edge_list, 00062 double angle_in, 00063 DLIList<RefEdge*> respect_edge_list, 00064 DLIList<RefVertex*> respect_vertex_list, 00065 CubitBoolean respect_imprints, 00066 CubitBoolean local_normals, 00067 CubitBoolean preview); 00068 00069 CubitStatus simplify_curves_in_volume( 00070 DLIList<RefEdge*> ref_edge_list, 00071 double angle_in, 00072 DLIList<RefEdge*> respect_edge_list, 00073 DLIList<RefVertex*> respect_vertex_list, 00074 CubitBoolean respect_imprints, 00075 CubitBoolean local_normals, 00076 CubitBoolean preview); 00077 00078 CubitBoolean composite_curves( 00079 RefEdge* seed_ref_edge, 00080 RefEdge* ref_edge_ptr, 00081 double angle_in); 00082 00083 private: 00084 00085 CubitStatus simplify_volume( 00086 RefVolume* ref_volume_list, 00087 double surf_angle_in, 00088 DLIList<RefFace*> respect_face_list, 00089 DLIList<RefEdge*> respect_edge_list, 00090 CubitBoolean respect_rounds, 00091 CubitBoolean respect_imprints, 00092 CubitBoolean local_normals, 00093 CubitBoolean preview); 00094 00095 CubitStatus simplify_surfaces_in_volume( 00096 DLIList<RefFace*> ref_face_list, 00097 double angle_in, 00098 DLIList<RefFace*> respect_face_list, 00099 DLIList<RefEdge*> respect_edge_list, 00100 CubitBoolean respect_rounds, 00101 CubitBoolean respect_imprints, 00102 CubitBoolean local_normals, 00103 CubitBoolean preview); 00104 00105 CubitBoolean composite_surfaces( 00106 RefFace* seed_ref_face, 00107 RefFace* ref_face_ptr, 00108 double angle_in); 00109 00110 void process_rounds( 00111 RefVolume* ref_volume, 00112 double min_radius = 0.0, 00113 double max_radius = 1.0); 00114 00115 CubitStatus 00116 weighted_average_normal(RefFace* ref_face, 00117 CubitVector &normal, 00118 double &weight ); 00119 00120 00121 CubitBoolean composite_surfaces_test_at_curves(RefFace* seed_ref_face, 00122 RefFace* ref_face_ptr, 00123 double angle_in); 00124 00125 00126 00127 CubitBoolean maximum_angle_deviation(RefFace* seed_ref_face, 00128 RefFace* ref_face_ptr, 00129 double angle_in, 00130 double &angle_out); 00131 00132 00133 }; 00134 00135 #endif 00136