diff --git a/Mesh/simple3D.cpp b/Mesh/simple3D.cpp
index 8183bfb98a83f1bac29c94009be101af9c0d9d81..87e81067654ce30a4c74aed3eb5bbfb12e118dce 100644
--- a/Mesh/simple3D.cpp
+++ b/Mesh/simple3D.cpp
@@ -495,6 +495,40 @@ Metric Filler::get_metric(double x,double y,double z){
   return m;
 }
 
+Metric Filler::get_metric(double x,double y,double z,GEntity* ge){
+  Metric m;
+  SMetric3 temp;
+  SVector3 v1,v2,v3;
+  Field* field;
+  FieldManager* manager;
+	
+  v1 = SVector3(1.0,0.0,0.0);
+  v2 = SVector3(0.0,1.0,0.0);
+  v3 = SVector3(0.0,0.0,1.0);
+	
+  manager = ge->model()->getFields();
+  if(manager->getBackgroundField()>0){
+    field = manager->get(manager->getBackgroundField());
+    if(field){
+      (*field)(x,y,z,temp,ge);
+    }
+  }
+	
+  m.set_m11(v1.x());
+  m.set_m21(v1.y());
+  m.set_m31(v1.z());
+	
+  m.set_m12(v2.x());
+  m.set_m22(v2.y());
+  m.set_m32(v2.z());
+	
+  m.set_m13(v3.x());
+  m.set_m23(v3.y());
+  m.set_m33(v3.z());
+	
+  return m;
+}
+
 double Filler::get_size(double x,double y,double z){
   return Size_field::search(x,y,z);
 }
diff --git a/Mesh/simple3D.h b/Mesh/simple3D.h
index 2736df31657a1b85e772798412ad48854df0ff7f..6fd3f060105caadd728d9cbabd609b47d25f1be5 100644
--- a/Mesh/simple3D.h
+++ b/Mesh/simple3D.h
@@ -18,6 +18,7 @@ class Filler{
  private:
   static std::vector<MVertex*> new_vertices;
   Metric get_metric(double,double,double);
+  Metric get_metric(double,double,double,GEntity*);
   double get_size(double,double,double);
   double get_size(double,double,double,GEntity*);
   bool inside_domain(MElementOctree*,double,double,double);