1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-08 14:17:06 +03:00

Compare commits

...

2 Commits

Author SHA1 Message Date
anv
5244fcf3d1 0033369: Modeling Algorithms - BRepBuilderAPI_Transform makes invalid shape after transformation
Added check to avoid setting parametric boundaries to infinity.
2023-05-23 21:59:44 +01:00
atychini
cbc7d857f5 0033000: JT Import - perform XT translation in multiple threads
Creating mutex for proper parallel processing.
2022-07-05 16:19:34 +03:00
4 changed files with 27 additions and 8 deletions

View File

@@ -182,11 +182,11 @@ Standard_Boolean BRepTools_TrsfModification::NewCurve2d
if(l - lc > Precision::PConfusion()) l = lc; if(l - lc > Precision::PConfusion()) l = lc;
if(Abs(l - f) < Precision::PConfusion()) if(Abs(l - f) < Precision::PConfusion())
{ {
if(Abs(f - fc) < Precision::PConfusion()) if(Abs(f - fc) < Precision::PConfusion() && !Precision::IsInfinite(lc))
{ {
l = lc; l = lc;
} }
else else if (!Precision::IsInfinite(fc))
{ {
f = fc; f = fc;
} }

View File

@@ -20,12 +20,15 @@
#include <ShapeProcess_Context.hxx> #include <ShapeProcess_Context.hxx>
#include <Standard_ErrorHandler.hxx> #include <Standard_ErrorHandler.hxx>
#include <Standard_Failure.hxx> #include <Standard_Failure.hxx>
#include <Standard_Mutex.hxx>
#include <Standard_Type.hxx> #include <Standard_Type.hxx>
#include <TCollection_AsciiString.hxx> #include <TCollection_AsciiString.hxx>
#include <TCollection_HAsciiString.hxx> #include <TCollection_HAsciiString.hxx>
#include <sys/stat.h> #include <sys/stat.h>
IMPLEMENT_STANDARD_RTTIEXT(ShapeProcess_Context,Standard_Transient) IMPLEMENT_STANDARD_RTTIEXT(ShapeProcess_Context, Standard_Transient)
static Standard_Mutex THE_SHAPE_PROCESS_MUTEX;
//======================================================================= //=======================================================================
//function : ShapeProcess_Context //function : ShapeProcess_Context
@@ -73,6 +76,7 @@ Standard_Boolean ShapeProcess_Context::Init (const Standard_CString file,
Handle(Resource_Manager) ShapeProcess_Context::LoadResourceManager (const Standard_CString name) Handle(Resource_Manager) ShapeProcess_Context::LoadResourceManager (const Standard_CString name)
{ {
Standard_Mutex::Sentry aLock(&THE_SHAPE_PROCESS_MUTEX);
// Optimisation of loading resource file: file is load only once // Optimisation of loading resource file: file is load only once
// and reloaded only if file date has changed // and reloaded only if file date has changed
static Handle(Resource_Manager) sRC; static Handle(Resource_Manager) sRC;
@@ -127,7 +131,7 @@ Handle(Resource_Manager) ShapeProcess_Context::LoadResourceManager (const Standa
sUMtime = aUMtime; sUMtime = aUMtime;
} }
} }
return sRC; return new Resource_Manager(*sRC);
} }
//======================================================================= //=======================================================================

View File

@@ -64,7 +64,9 @@
#include <XSAlgo_ToolContainer.hxx> #include <XSAlgo_ToolContainer.hxx>
#include <TopExp_Explorer.hxx> #include <TopExp_Explorer.hxx>
IMPLEMENT_STANDARD_RTTIEXT(XSAlgo_AlgoContainer,Standard_Transient) IMPLEMENT_STANDARD_RTTIEXT(XSAlgo_AlgoContainer, Standard_Transient)
static Standard_Mutex THE_RESOURCE_MUTEX;
//======================================================================= //=======================================================================
//function : XSAlgo_AlgoContainer //function : XSAlgo_AlgoContainer
@@ -167,9 +169,11 @@ TopoDS_Shape XSAlgo_AlgoContainer::ProcessShape (const TopoDS_Shape& shape,
} }
// Define runtime tolerances and do Shape Processing // Define runtime tolerances and do Shape Processing
rsc->SetResource ( "Runtime.Tolerance", Prec ); {
rsc->SetResource ( "Runtime.MaxTolerance", maxTol ); Standard_Mutex::Sentry aLock(&THE_RESOURCE_MUTEX);
rsc->SetResource("Runtime.Tolerance", Prec);
rsc->SetResource("Runtime.MaxTolerance", maxTol);
}
if ( !ShapeProcess::Perform(context, seq, theProgress) ) if ( !ShapeProcess::Perform(context, seq, theProgress) )
return shape; // return original shape return shape; // return original shape

View File

@@ -0,0 +1,11 @@
puts "======================================================="
puts "0033369: OCCT:Modeling Algorithms - BRepBuilderAPI_Transform makes invalid shape after transformation"
puts "======================================================="
puts ""
restore [locate_data_file bug33369.brep] f
ttranslate f 1 1 1 -copy
checkshape f