]> OCCT Git - occt.git/commitdiff
0032471: Mesh - Deflection of the triangulation is not recomputed for planar face
authoroan <oan@opencascade.com>
Tue, 12 Oct 2021 18:52:42 +0000 (21:52 +0300)
committeroan <oan@opencascade.com>
Wed, 13 Oct 2021 09:33:35 +0000 (12:33 +0300)
Remove Poly_TriangulationParameters and API related to Poly_Triangulation in order to keep binary compatibility of dynamic libraries.

src/BRepMesh/BRepMesh_ModelPostProcessor.cxx
src/BRepMesh/BRepMesh_ModelPreProcessor.cxx
src/Poly/FILES
src/Poly/Poly_Triangulation.hxx
src/Poly/Poly_TriangulationParameters.cxx [deleted file]
src/Poly/Poly_TriangulationParameters.hxx [deleted file]
tests/bugs/iges/buc60823
tests/bugs/mesh/bug25503_1
tests/bugs/mesh/bug25503_2
tests/bugs/moddata_2/bug428

index f8db005dba7aa0df994157ac73e521cc0e5026a2..417b41332508c71eed915a24a9dc181e6ff73d28 100644 (file)
@@ -20,7 +20,6 @@
 #include <IMeshData_PCurve.hxx>
 #include <OSD_Parallel.hxx>
 #include <BRepLib.hxx>
-#include <Poly_TriangulationParameters.hxx>
 
 IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelPostProcessor, IMeshTools_ModelAlgo)
 
@@ -165,11 +164,8 @@ namespace
   {
   public:
     //! Constructor
-    DeflectionEstimator (const Handle(IMeshData_Model)& theModel,
-                         const IMeshTools_Parameters&   theParams)
-      : myModel  (theModel)
-      , myParams (new Poly_TriangulationParameters (
-          theParams.Deflection, theParams.Angle, theParams.MinSize))
+    DeflectionEstimator (const Handle(IMeshData_Model)& theModel)
+      : myModel(theModel)
     {
     }
 
@@ -184,21 +180,11 @@ namespace
       }
 
       BRepLib::UpdateDeflection (aDFace->GetFace());
-
-      TopLoc_Location aLoc;
-      const Handle(Poly_Triangulation)& aTriangulation =
-        BRep_Tool::Triangulation (aDFace->GetFace(), aLoc);
-      
-      if (!aTriangulation.IsNull())
-      {
-        aTriangulation->Deflection(myParams->Deflection());
-      }
     }
 
   private:
 
-    Handle(IMeshData_Model)              myModel;
-    Handle(Poly_TriangulationParameters) myParams;
+    Handle(IMeshData_Model) myModel;
   };
 }
 
@@ -238,6 +224,6 @@ Standard_Boolean BRepMesh_ModelPostProcessor::performInternal(
 
   // Estimate deflection here due to BRepLib::EstimateDeflection requires
   // existence of both Poly_Triangulation and Poly_PolygonOnTriangulation.
-  OSD_Parallel::For (0, theModel->FacesNb(), DeflectionEstimator (theModel, theParameters), !theParameters.InParallel);
+  OSD_Parallel::For (0, theModel->FacesNb(), DeflectionEstimator (theModel), !theParameters.InParallel);
   return Standard_True;
 }
index 60768143dd55db47e5ae3e5c6a980cd7abaa4b9f..baa9c15b5003abcccc28d205c2eb88a5addef7cf 100644 (file)
@@ -23,7 +23,6 @@
 #include <IMeshData_PCurve.hxx>
 #include <OSD_Parallel.hxx>
 #include <BRepMesh_ConeRangeSplitter.hxx>
-#include <Poly_TriangulationParameters.hxx>
 
 IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelPreProcessor, IMeshTools_ModelAlgo)
 
@@ -56,15 +55,8 @@ namespace
 
       if (!aTriangulation.IsNull())
       {
-        // If there is an info about initial parameters, use it due to deflection kept
-        // by Poly_Triangulation is generally an estimation upon generated mesh and can
-        // be either less or even greater than specified value.
-        const Handle(Poly_TriangulationParameters)& aSourceParams = aTriangulation->Parameters();
-        const Standard_Real aDeflection = (!aSourceParams.IsNull() && aSourceParams->HasDeflection()) ?
-          aSourceParams->Deflection() : aTriangulation->Deflection();
-
         Standard_Boolean isTriangulationConsistent = 
-          BRepMesh_Deflection::IsConsistent (aDeflection,
+          BRepMesh_Deflection::IsConsistent (aTriangulation->Deflection(),
                                              aDFace->GetDeflection(),
                                              myAllowQualityDecrease);
 
index 0bb9271ee74ea29460fe041e4284b99943a88cca..53661cd543570e588f9501b6a0bf390b0178a88e 100755 (executable)
@@ -24,7 +24,5 @@ Poly_Polygon3D.hxx
 Poly_PolygonOnTriangulation.cxx
 Poly_PolygonOnTriangulation.hxx
 Poly_Triangle.hxx
-Poly_TriangulationParameters.hxx
-Poly_TriangulationParameters.cxx
 Poly_Triangulation.cxx
 Poly_Triangulation.hxx
index 0c38327e3b93f9e7d5699dc6fb512f8b969a8d62..0465962bbafe33144361df3797f38f5b42699c73 100644 (file)
@@ -34,8 +34,6 @@ class Standard_NullObject;
 
 
 class Poly_Triangulation;
-class Poly_TriangulationParameters;
-
 DEFINE_STANDARD_HANDLE(Poly_Triangulation, Standard_Transient)
 
 //! Provides a triangulation for a surface, a set of surfaces, or
@@ -108,12 +106,6 @@ public:
   //! Deallocates the UV nodes.
   Standard_EXPORT void RemoveUVNodes();
 
-  //! Returns initial set of parameters used to generate this triangulation.
-  //const Handle(Poly_TriangulationParameters)& Parameters() const { return myParams; }
-
-  //! Updates initial set of parameters used to generate this triangulation.
-  //void Parameters (const Handle(Poly_TriangulationParameters)& theParams) { myParams = theParams; }
-
   //! Returns the number of nodes for this triangulation.
   Standard_Integer NbNodes() const { return myNodes.Length(); }
 
@@ -215,7 +207,6 @@ protected:
   Poly_Array1OfTriangle              myTriangles;
   Handle(TShort_HArray1OfShortReal)  myNormals;
 
-  //Handle(Poly_TriangulationParameters) myParams;
 };
 
 #endif // _Poly_Triangulation_HeaderFile
diff --git a/src/Poly/Poly_TriangulationParameters.cxx b/src/Poly/Poly_TriangulationParameters.cxx
deleted file mode 100644 (file)
index 55b7ec0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// Created on: 2021-07-20
-// Copyright (c) 2021 OPEN CASCADE SAS
-// Created by: Oleg AGASHIN
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#include <Poly_TriangulationParameters.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT (Poly_TriangulationParameters, Standard_Transient)
diff --git a/src/Poly/Poly_TriangulationParameters.hxx b/src/Poly/Poly_TriangulationParameters.hxx
deleted file mode 100644 (file)
index 176d0ab..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-// Created on: 2021-07-20
-// Copyright (c) 2021 OPEN CASCADE SAS
-// Created by: Oleg AGASHIN
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _Poly_TriangulationParameters_HeaderFile
-#define _Poly_TriangulationParameters_HeaderFile
-
-#include <Standard_Transient.hxx>
-#include <Standard_DefineHandle.hxx>
-
-//! Represents initial set of parameters triangulation is built for.
-class Poly_TriangulationParameters : public Standard_Transient
-{
-public:
-
-  //! Constructor.
-  //! Initializes object with the given parameters.
-  //! @param theDeflection linear deflection
-  //! @param theAngle angular deflection
-  //! @param theMinSize minimum size
-  Poly_TriangulationParameters (const Standard_Real theDeflection = -1.,
-                                const Standard_Real theAngle      = -1.,
-                                const Standard_Real theMinSize    = -1.)
-    : myDeflection (theDeflection)
-    , myAngle      (theAngle)
-    , myMinSize    (theMinSize)
-  {
-  }
-
-  //! Destructor.
-  virtual ~Poly_TriangulationParameters()
-  {
-  }
-
-  //! Returns true if linear deflection is defined.
-  Standard_Boolean HasDeflection() const
-  {
-    return !(myDeflection < 0.);
-  }
-
-  //! Returns true if angular deflection is defined.
-  Standard_Boolean HasAngle() const
-  {
-    return !(myAngle < 0.);
-  }
-
-  //! Returns true if minimum size is defined.
-  Standard_Boolean HasMinSize() const
-  {
-    return !(myMinSize < 0.);
-  }
-
-  //! Returns linear deflection or -1 if undefined.
-  Standard_Real Deflection() const
-  {
-    return myDeflection;
-  }
-
-  //! Returns angular deflection or -1 if undefined.
-  Standard_Real Angle() const
-  {
-    return myAngle;
-  }
-
-  //! Returns minimum size or -1 if undefined.
-  Standard_Real MinSize() const
-  {
-    return myMinSize;
-  }
-
-  DEFINE_STANDARD_RTTIEXT (Poly_TriangulationParameters, Standard_Transient)
-
-private:
-
-  Standard_Real myDeflection;
-  Standard_Real myAngle;
-  Standard_Real myMinSize;
-};
-
-DEFINE_STANDARD_HANDLE (Poly_TriangulationParameters, Standard_Transient)
-
-#endif
index b20f3bc60c9140fb4d20bc8a5d94364cc00b0aff..3f06658a10a8274a63c9eeca3ba192508ef01667 100755 (executable)
@@ -14,6 +14,6 @@ vdisplay result
 vsetdispmode result 1
 vfit
 
-checktrinfo result -tri 2711 -nod 2611
+checktrinfo result -tri 2709 -nod 2610
 
 checkview -display result -2d -path ${imagedir}/${test_image}.png
index 744889d3d3f94c3ece6831f24c617c12bef173d7..4e5d88af4720e70bf566f512670d347bec94ccb1 100644 (file)
@@ -10,10 +10,10 @@ puts "===> meshing segment of sphere"
 psphere a 100 -45 45 180
 puts ""
 puts "incmesh first time"
-set t1 [expr [lindex [time {incmesh a 0.003}] 0]/1000000]
+set t1 [expr [lindex [time {incmesh a 0.003 -a 1}] 0]/1000000]
 puts "spent $t1 sec"
 puts ""
 puts "incmesh second time"
-set t2 [expr [lindex [time {incmesh a 0.003}] 0]/1000000]
+set t2 [expr [lindex [time {incmesh a 0.003 -a 1}] 0]/1000000]
 puts "spent $t2 sec"
 if {$t2 != 0} {puts "Error: second time must be quicker"}
index a33411a9b3d65cb106c8858a397d3bb33cbd073e..71a5de423c80366606e2684303c22dfa328e9002 100755 (executable)
@@ -8,11 +8,11 @@ puts "===> meshing full sphere"
 psphere a 100
 puts ""
 puts "incmesh first time"
-set t3 [expr [lindex [time {incmesh a 0.015}] 0]/1000000]
+set t3 [expr [lindex [time {incmesh a 0.015 -a 1}] 0]/1000000]
 puts "spent $t3 sec"
 puts ""
 puts "incmesh second time"
-set t4 [expr [lindex [time {incmesh a 0.015}] 0]/1000000]
+set t4 [expr [lindex [time {incmesh a 0.015 -a 1}] 0]/1000000]
 puts "spent $t4 sec"
 if {$t4 != 0} {puts "Error: second time must be quicker"}
 puts ""
index 7140f02607083b874a9a53281bbba71141e42fab..874bbd58095c53b1bf9cc06853376e9e803514ec 100755 (executable)
@@ -19,5 +19,5 @@ isos result 0
 triangles result
 fit
 
-checktrinfo result -tri 10924 -nod 7869
+checktrinfo result -tri 10929 -nod 7874
 checkview -screenshot -2d -path ${imagedir}/${test_image}_axo.png