cgma
|
00001 /* Class: GeometryDefines 00002 * Description: GeometryDefines - all global geometric definitions for CUBIT. 00003 * Owner: David White 00004 * Checked by: 00005 * Version: 00006 */ 00007 00008 #ifndef GEOMETRY_DEFINES_HPP 00009 #define GEOMETRY_DEFINES_HPP 00010 00011 #include <stdio.h> 00012 #include <stdlib.h> 00013 #include <sys/types.h> 00014 #include "CubitString.hpp" 00015 00016 /* CUBIT_RESABS - Values less than CUBIT_RESABS are considered to be zero. */ 00017 #ifdef __cplusplus 00018 const double CUBIT_RESABS = 1.0E-12; 00019 #else 00020 #define CUBIT_RESABS 1.0E-12 00021 #endif 00022 00023 /* GEOMETRY_RESABS - If the distance between two points is less */ 00024 /* than GEOMETRY_RESABS the points are considered to be identical. */ 00025 #ifdef __cplusplus 00026 const double GEOMETRY_RESABS = 1.0E-6; 00027 const double DEFAULT_GEOM_FACTOR = 500.0; 00028 #else 00029 #define GEOMETRY_RESABS 1.0E-6 00030 #define DEFAULT_GEOM_FACTOR 500.0 00031 #endif 00032 00033 /* Types of solid modeler engines. */ 00034 enum SolidModelerType 00035 { 00036 NOT_A_SOLID_MODELER, 00037 OCC, 00038 ACIS, 00039 PROE_GEOM, /* Normal Pro/E model */ 00040 PROE_PART, 00041 PROE_ASSEMBLY, 00042 PROE_FEM_MESH_SOLID, /* Pro/Mesh models... */ 00043 PROE_FEM_MESH_SHELL, 00044 PROE_FEM_MESH_MIXED, 00045 PROE_FEM_MESH_BOUNDARY, 00046 PROE_FEM_MESH_QUILT 00047 } ; 00048 00049 /* Types of underlying geometric representations. */ 00050 enum GeometricRepresentationType 00051 { 00052 GEOMTYPE_NONE, 00053 SOLID_MODEL, 00054 FACETTED, 00055 MESH_BASED, 00056 COMPOSITE 00057 }; 00058 00059 /* Types of geometry for the various GeometryEntities. */ 00060 enum GeometryType 00061 { 00062 /* Point types */ 00063 UNDEFINED_POINT_TYPE, 00064 00065 /* Curve types */ 00066 ARC_CURVE_TYPE, 00067 ELLIPSE_CURVE_TYPE, 00068 PARABOLA_CURVE_TYPE, 00069 SEGMENTED_CURVE_TYPE, /*curve defined by a chain of linear segments. */ 00070 SPLINE_CURVE_TYPE, 00071 STRAIGHT_CURVE_TYPE, 00072 POINT_CURVE_TYPE, 00073 HELIX_CURVE_TYPE, 00074 HYPERBOLA_CURVE_TYPE, 00075 UNDEFINED_CURVE_TYPE, 00076 00077 /* Surface types */ 00078 CONE_SURFACE_TYPE, 00079 PLANE_SURFACE_TYPE, 00080 SPHERE_SURFACE_TYPE, 00081 SPLINE_SURFACE_TYPE, 00082 TORUS_SURFACE_TYPE, 00083 BEST_FIT_SURFACE_TYPE, 00084 FACET_SURFACE_TYPE, 00085 CYLINDER_SURFACE_TYPE, // only currently defined in non open Engine 00086 REVOLUTION_SURFACE_TYPE, //OCC surface type 00087 EXTRUSION_SURFACE_TYPE, //OCC surface type 00088 OFFSET_SURFACE_TYPE, //OCC surface type 00089 UNDEFINED_SURFACE_TYPE, 00090 00091 /* Lump types */ 00092 UNDEFINED_LUMP_TYPE 00093 }; 00094 00095 enum ImprintType 00096 { 00097 NO_IMPRINT=0, 00098 ONLY_INVOLVED_BODIES, 00099 INCLUDE_NEIGHBORS, 00100 TOL_IMPRINT, 00101 TOL_IMPRINT_INCLUDE_NEIGHBORS 00102 }; 00103 00104 /* loops may be the following types */ 00105 enum LoopType 00106 { 00107 /* Unknown loop type */ 00108 LOOP_TYPE_UNKNOWN, 00109 00110 /* The external loop of a surface */ 00111 LOOP_TYPE_EXTERNAL, 00112 00113 /* The loop is a hole */ 00114 LOOP_TYPE_HOLE, 00115 00116 /* The loop is a u or v periodic loop (only applies to periodic surfaces) 00117 * An example of this is a cylindrical surface with only 2 loops with each 00118 * loop defining a cap of the cylinder. 00119 * If its a u periodic loop, the face is periodic in u */ 00120 LOOP_TYPE_U_PERIODIC, 00121 LOOP_TYPE_V_PERIODIC 00122 }; 00123 00124 struct ModelExportOptions 00125 { 00126 //this option only relevant to IGES export 00127 unsigned short export_as_solid : 1; 00128 00129 //Granite, Acis option 00130 CubitString logfile_name; 00131 }; 00132 00133 00134 00135 #endif 00136