MeshKit
1.0
|
00001 00002 00003 #include <stdlib.h> 00004 #include <stdio.h> 00005 #include <assert.h> 00006 #include <string> 00007 #include <iostream> 00008 #include <fstream> 00009 #include <string.h> 00010 #include <limits.h> 00011 00012 #include <iGeom.h> 00013 #include <iMesh.h> 00014 #include <set> 00015 #include <iRel.h> 00016 #include <vector> 00017 #include "meshkit/MKCore.hpp" 00018 #include "meshkit/MeshScheme.hpp" 00019 00020 namespace MeshKit 00021 { 00022 00023 using namespace std; 00024 00037 class CurveFacetMeshReader : public MeshScheme 00038 { 00039 public: 00040 CurveFacetMeshReader(MKCore *mk, const MEntVector &ments); 00041 00042 ~CurveFacetMeshReader(); 00043 private: 00044 double facet_tol; 00045 double geom_res; 00046 MKCore *mk; 00047 00052 virtual double vtx2vtx_dist(iGeom::EntityHandle vtx1, iMesh::EntityHandle vtx2); 00053 00058 virtual double mvtx2mvtx_dist(iMesh::EntityHandle vtx1, iMesh::EntityHandle vtx2); 00059 00060 00061 virtual void facet(ModelEnt *curve); 00062 00066 virtual void set_senses( ModelEnt *curve); 00067 00068 public: 00069 virtual void setup_this(); 00070 virtual void execute_this(); 00071 00078 void set_mesh_params(double faceting_tolerance = 0, double geom_resabs = 0); 00079 00084 static bool can_mesh(iBase_EntityType dim) 00085 { return iBase_EDGE == dim; } 00086 00093 static bool can_mesh(ModelEnt *me) 00094 { return canmesh_edge(me); } 00095 00097 static const char* name() 00098 {return "CurveFacetMeshReader";} 00099 00103 static const moab::EntityType* output_types(); 00104 00105 virtual const moab::EntityType* mesh_types_arr() const 00106 { return output_types(); } 00107 00108 }; 00109 00110 00111 }