Branch data Line data Source code
1 : : //- Class: TDOctreeRefFace
2 : : //- Description: Tool data for storing additional information related to surface faceting
3 : : //- Owner: W. R. Quadors
4 : : //- Checked by:
5 : : //- Version:
6 : :
7 : : #ifndef TD_SKELETON_ref_FACE
8 : :
9 : : #define TD_SKELETON_ref_FACE
10 : :
11 : : #include "CubitDefines.h"
12 : : #include "ToolData.hpp"
13 : : #include "MemoryManager.hpp"
14 : : #include "DLIList.hpp"
15 : : #include "CubitVector.hpp"
16 : : #include "CastTo.hpp"
17 : :
18 : : class RefFace;
19 : : class CubitPoint;
20 : : class CubitFacet;
21 : : class CubitFacetEdge;
22 : : class CubitTransformMatrix;
23 : :
24 : :
25 : : class TDOctreeRefFace : public ToolData
26 : : {
27 : : private:
28 : :
29 : : //static MemoryManager memoryManager;
30 : : //- memory management object
31 : :
32 : : DLIList<CubitPoint *> *ptrCubitPointList;
33 : :
34 : : DLIList<CubitFacetEdge *> *ptrCubitFacetEdgeList;
35 : :
36 : : DLIList<CubitFacet *> *ptrCubitFacetList;
37 : :
38 : : RefFace *refFace;
39 : :
40 : : DLIList<int> loopIndex;
41 : :
42 : : int lastCurveID;
43 : :
44 : : CubitBoolean visit;
45 : : // This stores the starting curve id of every loop in a ref_face
46 : : // Using this adjacency relation between the curves can be found
47 : : // loopIndexLastCurveID stores the last curve id of all loops
48 : :
49 : : // If bad surface facetting is detected, don't create 2dmat
50 : : CubitBoolean create_2dmat;
51 : :
52 : : public:
53 : :
54 : : TDOctreeRefFace();
55 : : //- constructor
56 : :
57 : : ~TDOctreeRefFace();
58 : : //- destructor
59 : :
60 : 0 : inline CubitBoolean get_visit( void )const{ return visit; }
61 : 0 : inline void set_visit( CubitBoolean type ){ visit = type; }
62 : :
63 : 0 : void set_create_2dmat(const CubitBoolean new_val) {create_2dmat = new_val;}
64 : 0 : CubitBoolean get_create_2dmat() {return create_2dmat;}
65 : :
66 : 0 : void set_ref_face( RefFace *ptr_ref_face ){ refFace = ptr_ref_face; }
67 : :
68 : : void append_list_item( int loop_id ){ loopIndex.append(loop_id); }
69 : :
70 : 0 : static int is_td_octree_ref_face(const ToolData* td)
71 [ # # ][ # # ]: 0 : {return (CAST_TO(const_cast<ToolData*>(td), TDOctreeRefFace) != NULL);}
72 : :
73 : : void set_last_curve_id( int id ){ lastCurveID = id; }
74 : : //- this is used along with loopIndex to determine non-adj curves
75 : :
76 : 0 : DLIList<CubitPoint *> *get_ptr_cubit_point_list(){ return ptrCubitPointList; }
77 : 0 : void set_ptr_cubit_point_list( DLIList<CubitPoint *> *ptr_cubit_point_list ){ ptrCubitPointList = ptr_cubit_point_list; }
78 : :
79 : 0 : DLIList<CubitFacetEdge *> *get_ptr_cubit_facet_edge_list(){ return ptrCubitFacetEdgeList; }
80 : 0 : void set_ptr_cubit_facet_edge_list( DLIList<CubitFacetEdge *> *ptr_cubit_facet_edge_list ){ ptrCubitFacetEdgeList = ptr_cubit_facet_edge_list; }
81 : :
82 : 0 : DLIList<CubitFacet *> *get_ptr_cubit_facet_list(){ return ptrCubitFacetList; }
83 : 0 : void set_ptr_cubit_facet_list( DLIList<CubitFacet *> *ptr_cubit_facet_list ){ ptrCubitFacetList = ptr_cubit_facet_list; }
84 : :
85 : : //- get and set pointers to DLIList of CubitPoint, CubitFacetEdge, CubitFacet
86 : :
87 : :
88 : : CubitBoolean is_adj_curves( int id1, int id2 );
89 : : //- returns true if the two curves are adjacent
90 : :
91 : : //SetDynamicMemoryAllocation(memoryManager)
92 : : //- class specific new and delete operators
93 : :
94 : : // static void set_memory_allocation_increment(int increment = 0){memoryManager.set_memory_allocation_increment(increment);}
95 : : //- set block memory size increment
96 : :
97 : : // static void destroy_memory(){memoryManager.destroy_memory();}
98 : : //- destroy all memory allocted to this object
99 : :
100 : : CubitFacet* split_facet_into_two_facets( CubitFacet *target_facet, CubitPoint* edge1_pt,
101 : : CubitPoint* edge2_pt,
102 : : CubitFacetEdge *boundary_edge,
103 : : CubitPoint* new_pt,
104 : : DLIList<CubitFacet*> &facet_list,
105 : : DLIList<CubitFacetEdge*> &facet_edge_list,
106 : : DLIList<CubitPoint*> &point_list);
107 : :
108 : : CubitBoolean split_facet_locally_along_edge( CubitFacet *target_facet, CubitPoint* edge1_pt,
109 : : CubitPoint* edge2_pt,
110 : : CubitFacetEdge *boundary_edge,
111 : : int num_of_segments,
112 : : DLIList<CubitFacet*> &facet_list,
113 : : DLIList<CubitFacetEdge*> &facet_edge_list,
114 : : DLIList<CubitPoint*> &point_list);
115 : :
116 : : CubitBoolean split_facet_type_00( CubitFacet *target_facet, DLIList<CubitFacet*> &facet_list, DLIList<CubitFacetEdge*> &facet_edge_list, DLIList<CubitPoint*> &point_list );
117 : : CubitBoolean split_facet_type_01( CubitFacet *target_facet, DLIList<CubitFacet*> &facet_list, DLIList<CubitFacetEdge*> &facet_edge_list, DLIList<CubitPoint*> &point_list );
118 : : CubitBoolean split_facet_type_02( CubitFacet *target_facet, DLIList<CubitFacet*> &facet_list, DLIList<CubitFacetEdge*> &facet_edge_list, DLIList<CubitPoint*> &point_list );
119 : : CubitBoolean split_facet_type_03( CubitFacet *target_facet, DLIList<CubitFacet*> &facet_list, DLIList<CubitFacetEdge*> &facet_edge_list, DLIList<CubitPoint*> &point_list );
120 : : CubitBoolean split_facet_type_12( CubitFacet *target_facet, DLIList<CubitFacet*> &facet_list, DLIList<CubitFacetEdge*> &facet_edge_list, DLIList<CubitPoint*> &point_list );
121 : : CubitBoolean split_facet_type_13( CubitFacet *target_facet, DLIList<CubitFacet*> &facet_list, DLIList<CubitFacetEdge*> &facet_edge_list, DLIList<CubitPoint*> &point_list );
122 : : CubitBoolean split_facet_type_23( CubitFacet *target_facet, DLIList<CubitFacet*> &facet_list, DLIList<CubitFacetEdge*> &facet_edge_list, DLIList<CubitPoint*> &point_list );
123 : : CubitBoolean split_facet_type_33( CubitFacet *target_facet, DLIList<CubitFacet*> &facet_list, DLIList<CubitFacetEdge*> &facet_edge_list, DLIList<CubitPoint*> &point_list );
124 : :
125 : :
126 : : static CubitStatus add_td( RefFace *ref_face );
127 : : static TDOctreeRefFace* get_td( RefFace *ref_face );
128 : :
129 : : CubitBoolean check_valid_facets(CubitBoolean disable_if_bad);
130 : :
131 : : };
132 : :
133 : :
134 : : #endif // TD_SKELETON_ref_FACE
135 : :
136 : :
137 : : //EOF
138 : :
|