mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +03:00
0032471: Mesh - Deflection of the triangulation is not recomputed for planar face
Remove Poly_TriangulationParameters and API related to Poly_Triangulation in order to keep binary compatibility of dynamic libraries.
This commit is contained in:
parent
5c331e6954
commit
dd79df67d7
@ -20,7 +20,6 @@
|
|||||||
#include <IMeshData_PCurve.hxx>
|
#include <IMeshData_PCurve.hxx>
|
||||||
#include <OSD_Parallel.hxx>
|
#include <OSD_Parallel.hxx>
|
||||||
#include <BRepLib.hxx>
|
#include <BRepLib.hxx>
|
||||||
#include <Poly_TriangulationParameters.hxx>
|
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelPostProcessor, IMeshTools_ModelAlgo)
|
IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelPostProcessor, IMeshTools_ModelAlgo)
|
||||||
|
|
||||||
@ -165,11 +164,8 @@ namespace
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
DeflectionEstimator (const Handle(IMeshData_Model)& theModel,
|
DeflectionEstimator (const Handle(IMeshData_Model)& theModel)
|
||||||
const IMeshTools_Parameters& theParams)
|
: myModel(theModel)
|
||||||
: myModel (theModel)
|
|
||||||
, myParams (new Poly_TriangulationParameters (
|
|
||||||
theParams.Deflection, theParams.Angle, theParams.MinSize))
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,21 +180,11 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
BRepLib::UpdateDeflection (aDFace->GetFace());
|
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:
|
private:
|
||||||
|
|
||||||
Handle(IMeshData_Model) myModel;
|
Handle(IMeshData_Model) myModel;
|
||||||
Handle(Poly_TriangulationParameters) myParams;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,6 +224,6 @@ Standard_Boolean BRepMesh_ModelPostProcessor::performInternal(
|
|||||||
|
|
||||||
// Estimate deflection here due to BRepLib::EstimateDeflection requires
|
// Estimate deflection here due to BRepLib::EstimateDeflection requires
|
||||||
// existence of both Poly_Triangulation and Poly_PolygonOnTriangulation.
|
// 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;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#include <IMeshData_PCurve.hxx>
|
#include <IMeshData_PCurve.hxx>
|
||||||
#include <OSD_Parallel.hxx>
|
#include <OSD_Parallel.hxx>
|
||||||
#include <BRepMesh_ConeRangeSplitter.hxx>
|
#include <BRepMesh_ConeRangeSplitter.hxx>
|
||||||
#include <Poly_TriangulationParameters.hxx>
|
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelPreProcessor, IMeshTools_ModelAlgo)
|
IMPLEMENT_STANDARD_RTTIEXT(BRepMesh_ModelPreProcessor, IMeshTools_ModelAlgo)
|
||||||
|
|
||||||
@ -56,15 +55,8 @@ namespace
|
|||||||
|
|
||||||
if (!aTriangulation.IsNull())
|
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 =
|
Standard_Boolean isTriangulationConsistent =
|
||||||
BRepMesh_Deflection::IsConsistent (aDeflection,
|
BRepMesh_Deflection::IsConsistent (aTriangulation->Deflection(),
|
||||||
aDFace->GetDeflection(),
|
aDFace->GetDeflection(),
|
||||||
myAllowQualityDecrease);
|
myAllowQualityDecrease);
|
||||||
|
|
||||||
|
@ -24,7 +24,5 @@ Poly_Polygon3D.hxx
|
|||||||
Poly_PolygonOnTriangulation.cxx
|
Poly_PolygonOnTriangulation.cxx
|
||||||
Poly_PolygonOnTriangulation.hxx
|
Poly_PolygonOnTriangulation.hxx
|
||||||
Poly_Triangle.hxx
|
Poly_Triangle.hxx
|
||||||
Poly_TriangulationParameters.hxx
|
|
||||||
Poly_TriangulationParameters.cxx
|
|
||||||
Poly_Triangulation.cxx
|
Poly_Triangulation.cxx
|
||||||
Poly_Triangulation.hxx
|
Poly_Triangulation.hxx
|
||||||
|
@ -34,8 +34,6 @@ class Standard_NullObject;
|
|||||||
|
|
||||||
|
|
||||||
class Poly_Triangulation;
|
class Poly_Triangulation;
|
||||||
class Poly_TriangulationParameters;
|
|
||||||
|
|
||||||
DEFINE_STANDARD_HANDLE(Poly_Triangulation, Standard_Transient)
|
DEFINE_STANDARD_HANDLE(Poly_Triangulation, Standard_Transient)
|
||||||
|
|
||||||
//! Provides a triangulation for a surface, a set of surfaces, or
|
//! Provides a triangulation for a surface, a set of surfaces, or
|
||||||
@ -108,12 +106,6 @@ public:
|
|||||||
//! Deallocates the UV nodes.
|
//! Deallocates the UV nodes.
|
||||||
Standard_EXPORT void RemoveUVNodes();
|
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.
|
//! Returns the number of nodes for this triangulation.
|
||||||
Standard_Integer NbNodes() const { return myNodes.Length(); }
|
Standard_Integer NbNodes() const { return myNodes.Length(); }
|
||||||
|
|
||||||
@ -215,7 +207,6 @@ protected:
|
|||||||
Poly_Array1OfTriangle myTriangles;
|
Poly_Array1OfTriangle myTriangles;
|
||||||
Handle(TShort_HArray1OfShortReal) myNormals;
|
Handle(TShort_HArray1OfShortReal) myNormals;
|
||||||
|
|
||||||
//Handle(Poly_TriangulationParameters) myParams;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _Poly_Triangulation_HeaderFile
|
#endif // _Poly_Triangulation_HeaderFile
|
||||||
|
@ -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)
|
|
@ -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
|
|
@ -14,6 +14,6 @@ vdisplay result
|
|||||||
vsetdispmode result 1
|
vsetdispmode result 1
|
||||||
vfit
|
vfit
|
||||||
|
|
||||||
checktrinfo result -tri 2711 -nod 2611
|
checktrinfo result -tri 2709 -nod 2610
|
||||||
|
|
||||||
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
||||||
|
@ -10,10 +10,10 @@ puts "===> meshing segment of sphere"
|
|||||||
psphere a 100 -45 45 180
|
psphere a 100 -45 45 180
|
||||||
puts ""
|
puts ""
|
||||||
puts "incmesh first time"
|
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 "spent $t1 sec"
|
||||||
puts ""
|
puts ""
|
||||||
puts "incmesh second time"
|
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"
|
puts "spent $t2 sec"
|
||||||
if {$t2 != 0} {puts "Error: second time must be quicker"}
|
if {$t2 != 0} {puts "Error: second time must be quicker"}
|
||||||
|
@ -8,11 +8,11 @@ puts "===> meshing full sphere"
|
|||||||
psphere a 100
|
psphere a 100
|
||||||
puts ""
|
puts ""
|
||||||
puts "incmesh first time"
|
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 "spent $t3 sec"
|
||||||
puts ""
|
puts ""
|
||||||
puts "incmesh second time"
|
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"
|
puts "spent $t4 sec"
|
||||||
if {$t4 != 0} {puts "Error: second time must be quicker"}
|
if {$t4 != 0} {puts "Error: second time must be quicker"}
|
||||||
puts ""
|
puts ""
|
||||||
|
@ -19,5 +19,5 @@ isos result 0
|
|||||||
triangles result
|
triangles result
|
||||||
fit
|
fit
|
||||||
|
|
||||||
checktrinfo result -tri 10924 -nod 7869
|
checktrinfo result -tri 10929 -nod 7874
|
||||||
checkview -screenshot -2d -path ${imagedir}/${test_image}_axo.png
|
checkview -screenshot -2d -path ${imagedir}/${test_image}_axo.png
|
||||||
|
Loading…
x
Reference in New Issue
Block a user