mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-25 17:00:35 +05:00
Bos #16182. Use OCCT algo UnifySameDomain. Fix for compatibility with old OCCT versions.
This commit is contained in:
parent
8db1e932e3
commit
6a0d013cc0
@ -36,6 +36,8 @@
|
||||
|
||||
#include <Precision.hxx>
|
||||
|
||||
#include <Basics_OCCTVersion.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(BlockFix_BlockFixAPI, Standard_Transient)
|
||||
|
||||
//=======================================================================
|
||||
@ -70,6 +72,12 @@ void BlockFix_BlockFixAPI::Perform()
|
||||
|
||||
// faces unification
|
||||
TopoDS_Shape aResult = myShape;
|
||||
#if OCC_VERSION_LARGE < 0x07050301
|
||||
BlockFix_UnionFaces aFaceUnifier;
|
||||
aFaceUnifier.GetTolerance() = myTolerance;
|
||||
aFaceUnifier.GetOptimumNbFaces() = myOptimumNbFaces;
|
||||
aResult = aFaceUnifier.Perform(aResult);
|
||||
#else
|
||||
if (myOptimumNbFaces > 1) {
|
||||
// use old algo BlockFix_UnionFaces for exactly given resulting number of faces
|
||||
BlockFix_UnionFaces aFaceUnifier;
|
||||
@ -94,6 +102,7 @@ void BlockFix_BlockFixAPI::Perform()
|
||||
else {
|
||||
// myOptimumNbFaces == -1 means do not union faces
|
||||
}
|
||||
#endif
|
||||
|
||||
// avoid problem with degenerated edges appearance
|
||||
// due to shape quality regress
|
||||
@ -102,8 +111,10 @@ void BlockFix_BlockFixAPI::Perform()
|
||||
aResult = RemLoc.GetResult();
|
||||
|
||||
// edges unification
|
||||
//BlockFix_UnionEdges anEdgeUnifier;
|
||||
//myShape = anEdgeUnifier.Perform(aResult,myTolerance);
|
||||
#if OCC_VERSION_LARGE < 0x07050301
|
||||
BlockFix_UnionEdges anEdgeUnifier;
|
||||
myShape = anEdgeUnifier.Perform(aResult,myTolerance);
|
||||
#else
|
||||
ShapeUpgrade_UnifySameDomain Unifier;
|
||||
Standard_Boolean isUnifyEdges = Standard_True;
|
||||
Standard_Boolean isUnifyFaces = Standard_False; //only edges
|
||||
@ -112,6 +123,7 @@ void BlockFix_BlockFixAPI::Perform()
|
||||
Unifier.SetLinearTolerance(myTolerance);
|
||||
Unifier.Build();
|
||||
myShape = Unifier.Shape();
|
||||
#endif
|
||||
|
||||
TopoDS_Shape aRes = BlockFix::FixRanges(myShape,myTolerance);
|
||||
myShape = aRes;
|
||||
|
@ -102,6 +102,8 @@
|
||||
#include <Standard_TypeMismatch.hxx>
|
||||
#include <Standard_ConstructionError.hxx>
|
||||
|
||||
#include <Basics_OCCTVersion.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//function : GetID
|
||||
//purpose :
|
||||
@ -744,9 +746,11 @@ Standard_Integer GEOMImpl_BlockDriver::Execute(Handle(TFunction_Logbook)& log) c
|
||||
Standard_NullObject::Raise("Null Shape given");
|
||||
}
|
||||
|
||||
//BlockFix_UnionFaces aFaceUnifier;
|
||||
//aFaceUnifier.GetOptimumNbFaces() = 0; // To force union faces.
|
||||
//aShape = aFaceUnifier.Perform(aBlockOrComp);
|
||||
#if OCC_VERSION_LARGE < 0x07050301
|
||||
BlockFix_UnionFaces aFaceUnifier;
|
||||
aFaceUnifier.GetOptimumNbFaces() = 0; // To force union faces.
|
||||
aShape = aFaceUnifier.Perform(aBlockOrComp);
|
||||
#else
|
||||
// Use OCCT algo ShapeUpgrade_UnifySameDomain instead of BlockFix_UnionFaces:
|
||||
Standard_Boolean isUnifyEdges = Standard_False;
|
||||
Standard_Boolean isUnifyFaces = Standard_True;
|
||||
@ -757,6 +761,7 @@ Standard_Integer GEOMImpl_BlockDriver::Execute(Handle(TFunction_Logbook)& log) c
|
||||
aUnifier.SetAngularTolerance(Precision::Confusion());
|
||||
aUnifier.Build();
|
||||
aShape = aUnifier.Shape();
|
||||
#endif
|
||||
} else { // unknown function type
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user