mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-04 18:06:22 +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 <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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
vfit
|
||||
|
||||
checktrinfo result -tri 2711 -nod 2611
|
||||
checktrinfo result -tri 2709 -nod 2610
|
||||
|
||||
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
||||
|
@ -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"}
|
||||
|
@ -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 ""
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user