Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : FacetPoint.hpp
3 : : //
4 : : // Purpose :
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Steven J. Owen
9 : : //
10 : : // Creation Date : 08/02/96
11 : : //
12 : : // Owner : Steven J. Owen
13 : : //-------------------------------------------------------------------------
14 : :
15 : : #ifndef POINT_FACET_HPP
16 : : #define POINT_FACET_HPP
17 : :
18 : : // ********** BEGIN STANDARD INCLUDES **********
19 : : // ********** END STANDARD INCLUDES **********
20 : :
21 : : // ********** BEGIN CUBIT INCLUDES **********
22 : : #include "CubitDefines.h"
23 : : #include "Point.hpp"
24 : : #include "FacetAttribSet.hpp"
25 : : // ********** END CUBIT INCLUDES **********
26 : :
27 : : // ********** BEGIN FORWARD DECLARATIONS **********
28 : : class TopologyEntity;
29 : : class CubitSimpleAttrib;
30 : : class RefVertex;
31 : : class RefVolume;
32 : : class RefVolume;
33 : : class CubitPoint;
34 : : class FacetAttrib;
35 : :
36 : : class FacetBody;
37 : : class FacetLump;
38 : : class FacetShell;
39 : : class FacetSurface;
40 : : class FacetLoop;
41 : : class FacetCoEdge;
42 : : class FacetCurve;
43 : :
44 : : // ********** END FORWARD DECLARATIONS **********
45 : :
46 : : class FacetPoint : public TBPoint
47 : : {
48 : : private:
49 : :
50 : : DLIList<Curve*> myCurves;
51 : : CubitPoint *myPoint;
52 : : CubitBoolean iCreated;
53 : :
54 : : FacetAttribSet attribSet;
55 : : //List of FacetAttrib*'s instead of CubitSimpleAttribs
56 : :
57 : : public :
58 : :
59 : : FacetPoint(const CubitVector &location, DLIList<Curve*> &curves );
60 : : //I- CubitVector &location
61 : : //I- location of point (creates a CubiPoint).
62 : : //I- DLIList<Curve*> curves
63 : : //I- curves attaced to point
64 : :
65 : : FacetPoint(CubitPoint *thePoint, DLIList<Curve*> &curves );
66 : : //I- CubitPoint *thePoint
67 : : //I- pointer to the CubitPoint associated with FacetPoint
68 : : //I- DLIList<Curve*> curves
69 : : //I- curves attaced to point
70 : :
71 : : FacetPoint(CubitPoint *thePoint );
72 : : //I- CubitPoint *thePoint
73 : : //I- pointer to the CubitPoint associated with FacetPoint
74 : :
75 : : virtual ~FacetPoint();
76 : : //- The destructor
77 : :
78 : : virtual void append_simple_attribute_virt(const CubitSimpleAttrib&);
79 : : //R void
80 : : //I
81 : : //I-
82 : : //I- that is to be appended to this OSME object.
83 : : //- The purpose of this function is to append a
84 : : //- attribute to the OSME. The is attached to each of the
85 : : //- underlying solid model entities this one points to.
86 : :
87 : : virtual void remove_simple_attribute_virt(const CubitSimpleAttrib&);
88 : : //R void
89 : : //I CubitSimpleAttrib*
90 : : //I- A reference to a CubitSimpleAttrib object which is the object
91 : : //I- that is to be removed to this OSME object.
92 : : //- The purpose of this function is to remove a simple
93 : : //- attribute from the OSME. The attribute is attached to each of the
94 : : //- underlying solid model entities this one points to.
95 : :
96 : : virtual void remove_all_simple_attribute_virt();
97 : : //R void
98 : : //I-
99 : : //- The purpose of this function is to remove all simple
100 : : //- attributes from the OSME.
101 : :
102 : : virtual CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>&);
103 : : virtual CubitStatus get_simple_attribute(const CubitString& name,
104 : : DLIList<CubitSimpleAttrib>&);
105 : : //R CubitSimpleAttrib*
106 : : //R- the returned cubit simple attribute.
107 : : //- The purpose of this function is to get the attributes
108 : : //- of the geometry entity. The name is attached to the underlying solid
109 : : //- model entity(ies) this one points to.
110 : : //- MJP Note:
111 : : //- This is the code that implements the requirement that names
112 : : //- of VGI Entities propagate across solid model boolean
113 : : //- operations. The success of this relies, of course, on the underlying
114 : : //- solid modeler being able to propagate attributes across
115 : : //- such operations on its entities. If it cannot, then "names"
116 : : //- of VGI entities will not propagate.
117 : :
118 : : virtual CubitVector coordinates() const;
119 : : //R CubitVector
120 : : //R- Contains the coordinate values {x y z} of this Point
121 : : //- Returns the spatial coordinates of this Point.
122 : :
123 : : virtual CubitBox bounding_box() const ;
124 : : // see comments in GeometryEntity.hpp
125 : :
126 : : virtual GeometryQueryEngine*
127 : : get_geometry_query_engine() const;
128 : : //R GeometryQueryEngine*
129 : : //R- A pointer to the geometric modeling engine associated with
130 : : //R- the object.
131 : : //- This function returns a pointer to the geometric modeling engine
132 : : //- associated with the object.
133 : :
134 : 1716 : void add_curve( Curve* curv_ptr )
135 : 1716 : { myCurves.append_unique( curv_ptr ); }
136 : : // associate this point with a curve
137 : :
138 : 1078 : CubitPoint *get_cubit_point() const
139 : 1078 : { return myPoint; }
140 : : // return the CubitPoint associated with this facet point
141 : :
142 : : CubitStatus save_attribs( FILE* file_ptr );
143 : : // Write FactAttribs out to file
144 : :
145 : : CubitStatus restore_attribs( FILE* file_ptr, unsigned int endian );
146 : : // Read FactAttribs from file
147 : :
148 : : void get_parents_virt( DLIList<TopologyBridge*>& parents );
149 : : void get_children_virt( DLIList<TopologyBridge*>& children );
150 : :
151 : : void get_lumps ( DLIList<FacetLump *>& lumps );
152 : : void get_shells ( DLIList<FacetShell *>& shells );
153 : : void get_surfaces( DLIList<FacetSurface*>& surfaces );
154 : : void get_loops ( DLIList<FacetLoop *>& loops );
155 : : void get_coedges ( DLIList<FacetCoEdge *>& coedges );
156 : : void get_curves ( DLIList<FacetCurve *>& curves );
157 : :
158 : : CubitStatus disconnect_curve( FacetCurve* curve );
159 : :
160 : 0 : inline bool has_parent_curve() const { return myCurves.size() > 0; }
161 : : };
162 : :
163 : :
164 : : // ********** BEGIN INLINE FUNCTIONS **********
165 : : // ********** END INLINE FUNCTIONS **********
166 : :
167 : : // ********** BEGIN FRIEND FUNCTIONS **********
168 : : // ********** END FRIEND FUNCTIONS **********
169 : :
170 : : // ********** BEGIN EXTERN FUNCTIONS **********
171 : : // ********** END EXTERN FUNCTIONS **********
172 : :
173 : : #endif
|