mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0031251: Add a new meshing parameter to enforce face linear deflection
Parameter has been renamed to ForceFaceDeflection. Added test case. New parameter -force_face_def has been added to incmesh command.
This commit is contained in:
@@ -145,18 +145,22 @@ void BRepMesh_Deflection::ComputeDeflection (
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
@@ -72,7 +72,7 @@ Standard_Real BRepMesh_ShapeTool::MaxFaceTolerance(const TopoDS_Face& theFace)
|
||||
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);
|
||||
|
@@ -34,7 +34,8 @@ struct IMeshTools_Parameters {
|
||||
InternalVerticesMode (Standard_True),
|
||||
ControlSurfaceDeflection (Standard_True),
|
||||
CleanModel (Standard_True),
|
||||
AdjustMinSize (Standard_False)
|
||||
AdjustMinSize (Standard_False),
|
||||
ForceFaceDeflection (Standard_False)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -83,6 +84,10 @@ struct IMeshTools_Parameters {
|
||||
//! 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
|
||||
|
@@ -88,7 +88,8 @@ options:\n\
|
||||
-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;
|
||||
}
|
||||
|
||||
@@ -123,6 +124,8 @@ options:\n\
|
||||
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++]);
|
||||
|
Reference in New Issue
Block a user