Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : AutoMidsurfaceTool.cpp
3 : : //
4 : : // Purpose :
5 : : // Create a midsurface of a body/volume given a thickness range. If no thickness range is given
6 : : // then make a educated guess at the thickness (using something like Volume/Surface Area).
7 : : //
8 : : // Create Midsurface Volume <id_list> auto [<lower_tol> <upper_tol>]
9 : : //
10 : : // Creator : Sam Showman
11 : : //
12 : : // Creation Date : 05/10/2008
13 : : //-------------------------------------------------------------------------
14 : : #ifndef AutoMidsurfaceTool_HPP
15 : : #define AutoMidsurfaceTool_HPP
16 : :
17 : : #include "CubitDefines.h"
18 : : #include "CubitVector.hpp"
19 : : #include "CubitPlane.hpp"
20 : :
21 : : class GeometryModifyEngine;
22 : : class Body;
23 : : class RefFace;
24 : : class BodySM;
25 : : class Surface;
26 : : class Curve;
27 : : class RefEdge;
28 : : template <class X> class DLIList;
29 : :
30 : : class AutoMidsurfaceTool
31 : : {
32 : : public:
33 : :
34 : : AutoMidsurfaceTool();
35 : 0 : ~AutoMidsurfaceTool(){}
36 : :
37 : : CubitStatus midsurface(
38 : : DLIList<Body*> &body_list_in,
39 : : DLIList<BodySM*> &body_list_out,
40 : : DLIList<Body*> &old_bodies_midsurfaced,
41 : : DLIList<double> &thickness_out,
42 : : double lower_tol = CUBIT_DBL_MAX,
43 : : double upper_tol = CUBIT_DBL_MAX,
44 : : CubitBoolean delete_midsurfaced = CUBIT_FALSE,
45 : : CubitBoolean preview = CUBIT_FALSE);
46 : : //- automatically midsurfaces a volume based on surface pairs and surface area
47 : : //- body_list_in - list of bodies to midsurface
48 : : //- body_list_out - result bodies
49 : : //- lower_tol - lower tolerance
50 : : //- upper_tol - upper tolerance
51 : : //- delete_midsurfaced - delete the midsurfaced solid
52 : : //- transp_midsurfaced - make the midsurfaced solid transparent
53 : : //- preview - preview the results
54 : :
55 : : private:
56 : : CubitBoolean curve_in_surface(Curve *curve_in, Surface *surf_in);
57 : :
58 : : CubitStatus get_planar_mid_surface(
59 : : RefFace* ref_face1,
60 : : RefFace* ref_face2,
61 : : BodySM* body_sm_to_trim_to,
62 : : BodySM*& midsurface_body_sm,
63 : : GeometryModifyEngine *gme_ptr );
64 : :
65 : : CubitStatus find_offset_pair_patches(
66 : : DLIList<RefFace*> pairs_list_0,
67 : : DLIList<RefFace*> pairs_list_1,
68 : : DLIList<RefFace*>& red_faces,
69 : : DLIList<RefFace*>& yellow_faces,
70 : : DLIList<double>& offset_distances);
71 : :
72 : : CubitStatus random_loc_on_surface( Surface* face_ptr, CubitVector &loc );
73 : :
74 : : CubitBoolean check_surf_pairs(double min_thick, double max_thick,
75 : : DLIList<RefFace*> check_list, Body* body_in );
76 : : };
77 : :
78 : : #endif
79 : :
|