Parameter has been renamed to ForceFaceDeflection. Added test case.
New parameter -force_face_def has been added to incmesh command.
}
Standard_Real aFaceDeflection = 0.0;
- if (theDFace->WiresNb () > 0)
+ if (!theParameters.ForceFaceDeflection)
{
- for (Standard_Integer aWireIt = 0; aWireIt < theDFace->WiresNb(); ++aWireIt)
+ if (theDFace->WiresNb () > 0)
{
- aFaceDeflection += theDFace->GetWire(aWireIt)->GetDeflection();
+ for (Standard_Integer aWireIt = 0; aWireIt < theDFace->WiresNb (); ++aWireIt)
+ {
+ aFaceDeflection += theDFace->GetWire (aWireIt)->GetDeflection ();
+ }
+
+ aFaceDeflection /= theDFace->WiresNb ();
}
- aFaceDeflection /= theDFace->WiresNb ();
+ aFaceDeflection = Max (2. * BRepMesh_ShapeTool::MaxFaceTolerance (
+ theDFace->GetFace ()), aFaceDeflection);
}
+ aFaceDeflection = Max (aDeflection, aFaceDeflection);
- aFaceDeflection = Max(aDeflection, aFaceDeflection);
-
- theDFace->SetDeflection (Max(2.* BRepMesh_ShapeTool::MaxFaceTolerance(
- theDFace->GetFace()), aFaceDeflection));
+ theDFace->SetDeflection (aFaceDeflection);
}
Standard_Real aMaxTolerance = BRep_Tool::Tolerance(theFace);
Standard_Real aTolerance = Max(
- MaxTolerance<TopAbs_EDGE, EdgeTolerance >(theFace),
+ MaxTolerance<TopAbs_EDGE, EdgeTolerance >(theFace),
MaxTolerance<TopAbs_VERTEX, VertexTolerance>(theFace));
return Max(aMaxTolerance, aTolerance);
InternalVerticesMode (Standard_True),
ControlSurfaceDeflection (Standard_True),
CleanModel (Standard_True),
- AdjustMinSize (Standard_False)
+ AdjustMinSize (Standard_False),
+ ForceFaceDeflection (Standard_False)
{
}
//! Enables/disables local adjustment of min size depending on edge size.
//! Disabled by default.
Standard_Boolean AdjustMinSize;
+
+ //! Enables/disables usage of shape tolerances for computing face deflection.
+ //! Disabled by default.
+ Standard_Boolean ForceFaceDeflection;
};
#endif
-surf_def_off disables control of deflection of mesh from real\n\
surface (enabled by default)\n\
-parallel enables parallel execution (switched off by default)\n\
- -adjust_min enables local adjustment of min size depending on edge size (switched off by default)\n";
+ -adjust_min enables local adjustment of min size depending on edge size (switched off by default)\n\
+ -force_face_def disables usage of shape tolerances for computing face deflection (switched off by default). \n";
return 0;
}
aMeshParams.ControlSurfaceDeflection = Standard_False;
else if (aOpt == "-adjust_min")
aMeshParams.AdjustMinSize = Standard_True;
+ else if (aOpt == "-force_face_def")
+ aMeshParams.ForceFaceDeflection = Standard_True;
else if (i < nbarg)
{
Standard_Real aVal = Draw::Atof(argv[i++]);
--- /dev/null
+puts "======="
+puts "0031251: Mesh - Add a parameter for IncrementalMesh to ignore face tolerance for face deflection"
+puts "======="
+puts ""
+
+pload XDE
+
+stepread [locate_data_file bug31251_Albatros_d2_elisa_a.STEP] a *
+renamevar a_1 result
+
+vinit
+vtop
+vsetdispmode 1
+vdefaults -autoTriang 0
+
+tclean result
+incmesh result 0.004 -a 14
+checktrinfo result -tri 70560 -nod 39946 -defl 0.22962869401103247
+
+vdisplay result -redisplay
+vfit
+checkview -screenshot -3d -path ${imagedir}/${test_image}_default.png
+
+tclean result
+incmesh result 0.004 -a 14 -force_face_def
+checktrinfo result -tri 292560 -nod 150946 -defl 0.04579460790575135
+
+vdisplay result -redisplay
+vfit
+checkview -screenshot -3d -path ${imagedir}/${test_image}_tightfit.png