Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : OffsetSplitTool.hpp
3 : : //
4 : : // Purpose :
5 : : //
6 : : // Split Surface <id_list> Offset Curve <id_list>
7 : : // Distance <val> [Segment <val>] [Partition] [Blunt] [Preview [Create]]
8 : : //
9 : : // Special Notes :
10 : : //
11 : : // Creator : Sam Showman
12 : : //
13 : : // Creation Date : 05/10/2005
14 : : //-------------------------------------------------------------------------
15 : : #ifndef OFFSETSPLITTOOL_HPP
16 : : #define OFFSETSPLITTOOL_HPP
17 : :
18 : : #include "CubitDefines.h"
19 : : #include "RefEdge.hpp"
20 : : #include "RefVertex.hpp"
21 : : #include "CoEdge.hpp"
22 : :
23 : : class RefEdge;
24 : : class RefFace;
25 : : class GeometryModifyEngine;
26 : : class Curve;
27 : : class Surface;
28 : : template <class X> class DLIList;
29 : :
30 : : class OffsetSplitTool
31 : : {
32 : : public:
33 : :
34 : : OffsetSplitTool();
35 : 0 : ~OffsetSplitTool(){}
36 : :
37 : : CubitStatus split_surfaces_offset(DLIList<RefFace*> &ref_face_list,
38 : : DLIList<RefEdge*> &edge_list,
39 : : int num_segs,
40 : : double distance,
41 : : CubitBoolean divide_flg = CUBIT_FALSE,
42 : : CubitBoolean blunt_flg = CUBIT_FALSE,
43 : : CubitBoolean preview_flg = CUBIT_FALSE,
44 : : CubitBoolean create_ref_edges_flg = CUBIT_FALSE);
45 : : //- Splits surface by offsetting curves.
46 : : //- ref_face_list - list of surfaces to split.
47 : : //- num_segs - the number of segments to create (must be >= 1 );
48 : : //- distance - distance of the offset
49 : : //- divide_flg - divide the surface between each offset curve to create a better
50 : : //- region for map mesh.
51 : : //- blunt_flg - create a blunt type ending instead of the arc type ending
52 : : //- preview_flg - if CUBIT_TRUE, just draw the curves that will be used to split
53 : : //- instead of actually splitting.
54 : : //- create_ref_edges_flg - valid only if preview_flg=CUBIT_TRUE. If CUBIT_TRUE,
55 : : //- create RefEdges *instead* of splitting.
56 : :
57 : : private:
58 : : CubitStatus draw_preview(
59 : : DLIList<Curve*> &curve_list,
60 : : int color=CUBIT_BLUE_INDEX);
61 : : //- Draw the curves
62 : :
63 : : CubitStatus draw_preview(
64 : : Curve *curve_ptr,
65 : : CubitBoolean flush=CUBIT_TRUE,
66 : : int color=CUBIT_BLUE_INDEX);
67 : : //- Draw the curves
68 : :
69 : : Curve *create_sweep_curve(
70 : : Curve *curve_in,
71 : : double distance,
72 : : double chord_tol,
73 : : CubitBoolean iterate = CUBIT_FALSE);
74 : : //- Create a sweep curve offset a distance given the input curve.
75 : :
76 : : Surface *create_sweep_section(
77 : : Curve* path,
78 : : double distance,
79 : : CubitVector up_vector,
80 : : double fraction = 0.0);
81 : : //- Uses two arcs to create a surface section normal to the input curve
82 : :
83 : : BodySM* create_sweep_body(
84 : : Surface* section,
85 : : Curve* path);
86 : : //- Sweeps the input surface along the curve path
87 : :
88 : : CubitStatus create_ref_edges(
89 : : DLIList<Curve*> &curve_list );
90 : : //- Creates RefEdges from the list of Curve entities
91 : :
92 : : DLIList<Curve*> create_divide_curves(
93 : : DLIList<Curve*> &curve_list,
94 : : Surface* surface_in,
95 : : double distance);
96 : : //- Creates perpendicular curves of length 'distance' at the ends of the
97 : : //- input curves. The curves are projected to the input surface if the
98 : : //- Surface in not of type 'PLANE_SURFACE_TYPE'.
99 : :
100 : : DLIList<Curve*> sourceCurves;
101 : : //- List of the Curve entities to offset.
102 : :
103 : : static double tolerance;
104 : : //- Linear tolerace
105 : : };
106 : :
107 : : #endif
108 : :
|