00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _hyp_out_facade_h_
00031 #define _hyp_out_facade_h_
00032
00033
00034 class CMeshData
00035 {
00036 public:
00037 CMeshData(hyp_ker::IUnknown*);
00038 struct SVertex {
00039 t_label label;
00040 t_real coord[3];
00041 bool dof[3];
00042 bool b_visible;
00043 };
00044 struct SVerticesEnum :
00045 public std::vector<SVertex>
00046 {
00047
00048 };
00049 SVerticesEnum GetVerticesEnum(void);
00050
00051 struct SBase {
00052 t_label label;
00053 t_label_enum vertices_global;
00054 t_label_enum vertices_local;
00055 };
00056
00057 template<class T>
00058 struct SBasesEnum :
00059 public std::vector<T> {
00060 int GetTotalRefNodes(void) {
00061 int TotalRef=0;
00062 for(int i=0;i<size();i++) {
00063 TotalRef+=at(i).vertices_global.size();
00064 }
00065 return TotalRef;
00066 }
00067 };
00068
00069 struct SSide : public SBase { };
00070 struct SSidesEnum :
00071 public SBasesEnum<SSide> { };
00072 SSidesEnum GetSidesEnum(void);
00073
00074 struct SElement : public SBase {
00075 t_real young;
00076 t_real poisson;
00077 };
00078 struct SElementsEnum :
00079 public SBasesEnum<SElement> { };
00080 SElementsEnum GetElementsEnum(void);
00081
00082 t_label GetLabelVertex(hyp_ker::IUnknown*);
00083 t_label GetLabelSide(hyp_ker::IUnknown*);
00084 t_label GetLabelElement(hyp_ker::IUnknown*);
00085
00086 protected:
00087 t_label_enum GetLabelsForContainer(hyp_ker::IUnknown*,hyp_ker::IUnknown* =0);
00088
00089 private:
00090 hyp_fem::t_spGeometricBase m_spBaseMesh;
00091 hyp_fem::t_spGeometricObject m_spObjectMesh;
00092 hyp_fem::t_spFEOMesh m_spMeshMesh;
00093
00094 };
00095
00096 #endif