Branch data Line data Source code
1 : : /* Class: GeometryDefines
2 : : * Description: GeometryDefines - all global geometric definitions for CUBIT.
3 : : * Owner: David White
4 : : * Checked by:
5 : : * Version:
6 : : */
7 : :
8 : : #ifndef GEOMETRY_DEFINES_HPP
9 : : #define GEOMETRY_DEFINES_HPP
10 : :
11 : : #include <stdio.h>
12 : : #include <stdlib.h>
13 : : #include <sys/types.h>
14 : : #include "CubitString.hpp"
15 : :
16 : : /* CUBIT_RESABS - Values less than CUBIT_RESABS are considered to be zero. */
17 : : #ifdef __cplusplus
18 : : const double CUBIT_RESABS = 1.0E-12;
19 : : #else
20 : : #define CUBIT_RESABS 1.0E-12
21 : : #endif
22 : :
23 : : /* GEOMETRY_RESABS - If the distance between two points is less */
24 : : /* than GEOMETRY_RESABS the points are considered to be identical. */
25 : : #ifdef __cplusplus
26 : : const double GEOMETRY_RESABS = 1.0E-6;
27 : : const double DEFAULT_GEOM_FACTOR = 500.0;
28 : : #else
29 : : #define GEOMETRY_RESABS 1.0E-6
30 : : #define DEFAULT_GEOM_FACTOR 500.0
31 : : #endif
32 : :
33 : : /* Types of solid modeler engines. */
34 : : enum SolidModelerType
35 : : {
36 : : NOT_A_SOLID_MODELER,
37 : : OCC,
38 : : ACIS,
39 : : PROE_GEOM, /* Normal Pro/E model */
40 : : PROE_PART,
41 : : PROE_ASSEMBLY,
42 : : PROE_FEM_MESH_SOLID, /* Pro/Mesh models... */
43 : : PROE_FEM_MESH_SHELL,
44 : : PROE_FEM_MESH_MIXED,
45 : : PROE_FEM_MESH_BOUNDARY,
46 : : PROE_FEM_MESH_QUILT
47 : : } ;
48 : :
49 : : /* Types of underlying geometric representations. */
50 : : enum GeometricRepresentationType
51 : : {
52 : : GEOMTYPE_NONE,
53 : : SOLID_MODEL,
54 : : FACETTED,
55 : : MESH_BASED,
56 : : COMPOSITE
57 : : };
58 : :
59 : : /* Types of geometry for the various GeometryEntities. */
60 : : enum GeometryType
61 : : {
62 : : /* Point types */
63 : : UNDEFINED_POINT_TYPE,
64 : :
65 : : /* Curve types */
66 : : ARC_CURVE_TYPE,
67 : : ELLIPSE_CURVE_TYPE,
68 : : PARABOLA_CURVE_TYPE,
69 : : SEGMENTED_CURVE_TYPE, /*curve defined by a chain of linear segments. */
70 : : SPLINE_CURVE_TYPE,
71 : : STRAIGHT_CURVE_TYPE,
72 : : POINT_CURVE_TYPE,
73 : : HELIX_CURVE_TYPE,
74 : : HYPERBOLA_CURVE_TYPE,
75 : : UNDEFINED_CURVE_TYPE,
76 : :
77 : : /* Surface types */
78 : : CONE_SURFACE_TYPE,
79 : : PLANE_SURFACE_TYPE,
80 : : SPHERE_SURFACE_TYPE,
81 : : SPLINE_SURFACE_TYPE,
82 : : TORUS_SURFACE_TYPE,
83 : : BEST_FIT_SURFACE_TYPE,
84 : : FACET_SURFACE_TYPE,
85 : : CYLINDER_SURFACE_TYPE, // only currently defined in non open Engine
86 : : REVOLUTION_SURFACE_TYPE, //OCC surface type
87 : : EXTRUSION_SURFACE_TYPE, //OCC surface type
88 : : OFFSET_SURFACE_TYPE, //OCC surface type
89 : : UNDEFINED_SURFACE_TYPE,
90 : :
91 : : /* Lump types */
92 : : UNDEFINED_LUMP_TYPE
93 : : };
94 : :
95 : : enum ImprintType
96 : : {
97 : : NO_IMPRINT=0,
98 : : ONLY_INVOLVED_BODIES,
99 : : INCLUDE_NEIGHBORS,
100 : : TOL_IMPRINT,
101 : : TOL_IMPRINT_INCLUDE_NEIGHBORS
102 : : };
103 : :
104 : : /* loops may be the following types */
105 : : enum LoopType
106 : : {
107 : : /* Unknown loop type */
108 : : LOOP_TYPE_UNKNOWN,
109 : :
110 : : /* The external loop of a surface */
111 : : LOOP_TYPE_EXTERNAL,
112 : :
113 : : /* The loop is a hole */
114 : : LOOP_TYPE_HOLE,
115 : :
116 : : /* The loop is a u or v periodic loop (only applies to periodic surfaces)
117 : : * An example of this is a cylindrical surface with only 2 loops with each
118 : : * loop defining a cap of the cylinder.
119 : : * If its a u periodic loop, the face is periodic in u */
120 : : LOOP_TYPE_U_PERIODIC,
121 : : LOOP_TYPE_V_PERIODIC
122 : : };
123 : :
124 : 768 : struct ModelExportOptions
125 : : {
126 : : //this option only relevant to IGES export
127 : : unsigned short export_as_solid : 1;
128 : :
129 : : //Granite, Acis option
130 : : CubitString logfile_name;
131 : : };
132 : :
133 : :
134 : :
135 : : #endif
136 : :
|