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

Compare commits

..

1 Commits

Author SHA1 Message Date
dpasukhi
58a48b4ac1 0033658: Foundation Classes - Move Standard_Mutex on STL base
Reorganize Standard_Mutex to use recursive_mutex
Now we can see much more dead-lock cases
Optimize progress indicator
2024-03-29 13:46:59 +00:00
21 changed files with 55 additions and 320 deletions

View File

@@ -808,11 +808,8 @@ void Approx_BSplComputeLine::Parameters(const MultiLine& Line,
const Standard_Integer aNbp = lastP - firstP + 1;
// The first parameter should always be zero according to all the logic below,
// so division by any value will give zero anyway, so it should never be scaled
// to avoid case when there is only one parameter in the array thus division by zero happens.
TheParameters(firstP) = 0.0;
if (aNbp == 2) {
TheParameters(firstP) = 0.0;
TheParameters(lastP) = 1.0;
}
else if (Par == Approx_ChordLength || Par == Approx_Centripetal)
@@ -823,6 +820,7 @@ void Approx_BSplComputeLine::Parameters(const MultiLine& Line,
if (nbP3d == 0) mynbP3d = 1;
if (nbP2d == 0) mynbP2d = 1;
TheParameters(firstP) = 0.0;
dist = 0.0;
TColgp_Array1OfPnt tabP(1, mynbP3d);
TColgp_Array1OfPnt tabPP(1, mynbP3d);
@@ -863,10 +861,10 @@ void Approx_BSplComputeLine::Parameters(const MultiLine& Line,
TheParameters(i) = TheParameters(i - 1) + Sqrt(dist);
}
}
for (i = firstP + 1; i <= lastP; i++) TheParameters(i) /= TheParameters(lastP);
for (i = firstP; i <= lastP; i++) TheParameters(i) /= TheParameters(lastP);
}
else {
for (i = firstP + 1; i <= lastP; i++) {
for (i = firstP; i <= lastP; i++) {
TheParameters(i) = (Standard_Real(i) - firstP) /
(Standard_Real(lastP - Standard_Real(firstP)));
}

View File

@@ -19,7 +19,6 @@
#include <BRep_CurveOnClosedSurface.hxx>
#include <BRep_CurveOnSurface.hxx>
#include <BRep_CurveRepresentation.hxx>
#include <BRep_GCurve.hxx>
#include <BRep_Polygon3D.hxx>
#include <BRep_PolygonOnSurface.hxx>
#include <BRep_PolygonOnTriangulation.hxx>
@@ -27,7 +26,6 @@
#include <BRep_TFace.hxx>
#include <BRep_Tool.hxx>
#include <BRep_TVertex.hxx>
#include <BRepAdaptor_Surface.hxx>
#include <ElSLib.hxx>
#include <Geom2d_Curve.hxx>
#include <Geom2d_TrimmedCurve.hxx>
@@ -63,6 +61,7 @@
#include <TopoDS_Vertex.hxx>
#include <TopTools_MapOfShape.hxx>
#include <TopTools_ShapeMapHasher.hxx>
#include <BRep_GCurve.hxx>
//modified by NIZNHY-PKV Fri Oct 17 14:13:29 2008f
static
@@ -1673,13 +1672,3 @@ Standard_Real BRep_Tool::MaxTolerance (const TopoDS_Shape& theShape,
return aTol;
}
//=======================================================================
//function : Tolerance2d
//purpose :
//=======================================================================
Standard_Real BRep_Tool::Tolerance2d(const TopoDS_Face& theFace, const Standard_Real theTolerance)
{
BRepAdaptor_Surface aAdaptorSurface(theFace);
return Max(aAdaptorSurface.UResolution(theTolerance), aAdaptorSurface.VResolution(theTolerance));
}

View File

@@ -297,11 +297,6 @@ public:
//@param theSubShape - Search subshape, only Face, Edge or Vertex are supported.
Standard_EXPORT static Standard_Real MaxTolerance (const TopoDS_Shape& theShape, const TopAbs_ShapeEnum theSubShape);
//! Returns the 2d tolerance.
//@param theFace - the input face to find 2d tolerance
//@param theTolerance - the input tolerance to calculate 2d tolerance.
Standard_EXPORT static Standard_Real Tolerance2d(const TopoDS_Face& theFace, const Standard_Real theTolerance);
};
#endif // _BRep_Tool_HeaderFile

View File

@@ -441,6 +441,7 @@ static void PERFORM_C0(const TopoDS_Edge& S1, const TopoDS_Edge& S2,
gp_Pnt P1, Pt;
Standard_Integer i, ii;
BRepClass_FaceClassifier classifier;
for (i = 1; i <= arrInter.Length(); i++)
{
const Standard_Real aParameter = arrInter(i);
@@ -771,7 +772,7 @@ void BRepExtrema_DistanceSS::Perform(const TopoDS_Vertex& theS1,
Standard_Real U, V;
gp_Pnt Pt, P1 = BRep_Tool::Pnt(theS1);
BRepClass_FaceClassifier classifier;
const Standard_Real tol2d = BRep_Tool::Tolerance2d(theS2, BRep_Tool::Tolerance(theS2));
const Standard_Real tol = BRep_Tool::Tolerance(theS2);
for (i = 1; i <= NbExtrema; i++)
{
@@ -783,7 +784,7 @@ void BRepExtrema_DistanceSS::Perform(const TopoDS_Vertex& theS1,
// Check if the parameter does not correspond to a vertex
Ext.Parameter(i, U, V);
const gp_Pnt2d PUV(U, V);
classifier.Perform(theS2, PUV, tol2d);
classifier.Perform(theS2, PUV, tol);
if (classifier.State() == TopAbs_IN)
{
if (myDstRef > Dstmin)
@@ -921,7 +922,7 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Edge& theS1, const TopoDS_Fac
if ((Dstmin < myDstRef - myEps) || (fabs(Dstmin - myDstRef) < myEps))
{
Standard_Real U, V;
const Standard_Real tol2d = BRep_Tool::Tolerance2d(theS2, BRep_Tool::Tolerance(theS2));
const Standard_Real tol = BRep_Tool::Tolerance(theS2);
gp_Pnt Pt1, Pt2;
const Standard_Real epsP = Precision::PConfusion();
@@ -940,7 +941,7 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Edge& theS1, const TopoDS_Fac
{
Ext.ParameterOnFace(i, U, V);
const gp_Pnt2d PUV(U, V);
classifier.Perform(theS2, PUV, tol2d);
classifier.Perform(theS2, PUV, tol);
if (classifier.State() == TopAbs_IN)
{
if (myDstRef > Dstmin)
@@ -973,7 +974,7 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Edge& theS1, const TopoDS_Fac
gp_Pnt Pt;
Standard_Real U, V;
const Standard_Real tol2d = BRep_Tool::Tolerance2d(theS2, BRep_Tool::Tolerance(theS2));
const Standard_Real tol = BRep_Tool::Tolerance(theS2);
Standard_Integer i;
for (i = 1; i <= arrInter.Length(); i++)
@@ -1006,7 +1007,7 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Edge& theS1, const TopoDS_Fac
// Check if the parameter does not correspond to a vertex
ExtPF.Parameter(ii, U, V);
const gp_Pnt2d PUV(U, V);
classifier.Perform(theS2, PUV, tol2d);
classifier.Perform(theS2, PUV, tol);
if (classifier.State() == TopAbs_IN)
{
if (myDstRef > Dstmin)
@@ -1061,8 +1062,8 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Face& theS1,
Dstmin = sqrt(Dstmin);
if ((Dstmin < myDstRef - myEps) || (fabs(Dstmin - myDstRef) < myEps))
{
const Standard_Real tol2d1 = BRep_Tool::Tolerance2d(theS1, BRep_Tool::Tolerance(theS1));
const Standard_Real tol2d2 = BRep_Tool::Tolerance2d(theS2, BRep_Tool::Tolerance(theS2));
const Standard_Real tol1 = BRep_Tool::Tolerance(theS1);
const Standard_Real tol2 = BRep_Tool::Tolerance(theS2);
gp_Pnt Pt1, Pt2;
gp_Pnt2d PUV;
@@ -1080,12 +1081,12 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Face& theS1,
// Check if the parameter does not correspond to a vertex
Ext.ParameterOnFace1(i, U1, V1);
PUV.SetCoord(U1, V1);
classifier.Perform(theS1, PUV, tol2d1);
classifier.Perform(theS1, PUV, tol1);
if (classifier.State() == TopAbs_IN)
{
Ext.ParameterOnFace2(i, U2, V2);
PUV.SetCoord(U2, V2);
classifier.Perform(theS2, PUV, tol2d2);
classifier.Perform(theS2, PUV, tol2);
if (classifier.State() == TopAbs_IN)
{
if (myDstRef > Dstmin)

View File

@@ -89,7 +89,7 @@ void BRepExtrema_ExtFF::Perform(const TopoDS_Face& F1, const TopoDS_Face& F2)
{
// Exploration of points and classification
BRepClass_FaceClassifier classifier;
const Standard_Real Tol2d2 = BRep_Tool::Tolerance2d(F2, BRep_Tool::Tolerance(F2));
const Standard_Real Tol2 = BRep_Tool::Tolerance(F2);
Extrema_POnSurf P1, P2;
Standard_Integer i;
@@ -98,14 +98,13 @@ void BRepExtrema_ExtFF::Perform(const TopoDS_Face& F1, const TopoDS_Face& F2)
myExtSS.Points(i, P1, P2);
P1.Parameter(U1, U2);
const gp_Pnt2d Puv1(U1, U2);
const Standard_Real Tol2d1 = BRep_Tool::Tolerance2d(F1, Tol1);
classifier.Perform(F1, Puv1, Tol2d1);
classifier.Perform(F1, Puv1, Tol1);
const TopAbs_State state1 = classifier.State();
if (state1 == TopAbs_ON || state1 == TopAbs_IN)
{
P2.Parameter(U1, U2);
const gp_Pnt2d Puv2(U1, U2);
classifier.Perform(F2, Puv2, Tol2d2);
classifier.Perform(F2, Puv2, Tol2);
const TopAbs_State state2 = classifier.State();
if (state2 == TopAbs_ON || state2 == TopAbs_IN)
{

View File

@@ -85,12 +85,12 @@ void BRepExtrema_ExtPF::Perform(const TopoDS_Vertex& TheVertex, const TopoDS_Fac
{
BRepClass_FaceClassifier classifier;
Standard_Real U1, U2;
const Standard_Real Tol2d = BRep_Tool::Tolerance2d(TheFace, BRep_Tool::Tolerance(TheFace));
const Standard_Real Tol = BRep_Tool::Tolerance(TheFace);
for (Standard_Integer i = 1; i <= myExtPS.NbExt(); i++)
{
myExtPS.Point(i).Parameter(U1, U2);
const gp_Pnt2d Puv(U1, U2);
classifier.Perform(TheFace, Puv, Tol2d);
classifier.Perform(TheFace, Puv, Tol);
const TopAbs_State state = classifier.State();
if(state == TopAbs_ON || state == TopAbs_IN)
{

View File

@@ -515,13 +515,8 @@ BSplCLib::EvalBsplineBasis
//
// this should be always invertible if ii is correctly computed
//
const Standard_Real aScale = (FlatKnots(ii + pp) - FlatKnots(ii - qq + pp + 1));
if (Abs (aScale) < gp::Resolution())
{
return 2;
}
Factor = (Parameter - FlatKnots(ii - qq + pp + 1)) / aScale;
Factor = (Parameter - FlatKnots(ii - qq + pp + 1))
/ (FlatKnots(ii + pp) - FlatKnots(ii - qq + pp + 1)) ;
Saved = Factor * BsplineBasis(1,pp) ;
BsplineBasis(1,pp) *= (1.0e0 - Factor) ;
BsplineBasis(1,pp) += BsplineBasis(1,qq) ;
@@ -541,13 +536,7 @@ BSplCLib::EvalBsplineBasis
}
for (pp = 1 ; pp <= qq - 1 ; pp++) {
const Standard_Real aScale = (FlatKnots(ii + pp) - FlatKnots(ii - qq + pp + 1));
if (Abs (aScale) < gp::Resolution())
{
return 2;
}
Inverse = 1.0e0 / aScale;
Inverse = 1.0e0 / (FlatKnots(ii + pp) - FlatKnots(ii - qq + pp + 1)) ;
Factor = (Parameter - FlatKnots(ii - qq + pp + 1)) * Inverse ;
Saved = Factor * BsplineBasis(1,pp) ;
BsplineBasis(1,pp) *= (1.0e0 - Factor) ;

View File

@@ -33,7 +33,6 @@
#include <Storage_Schema.hxx>
#include <TCollection_AsciiString.hxx>
#include <TCollection_ExtendedString.hxx>
#include <TDataStd_TreeNode.hxx>
#include <TDF_Attribute.hxx>
#include <TDF_Data.hxx>
#include <TDF_Label.hxx>
@@ -325,16 +324,7 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
// read sub-tree of the root label
if (!theFilter.IsNull())
theFilter->StartIteration();
const auto aStreamStartPosition = theIStream.tellg();
Standard_Integer nbRead = ReadSubTree (theIStream, aData->Root(), theFilter, aQuickPart, Standard_False, aPS.Next());
if (!myUnresolvedLinks.IsEmpty())
{
// In case we have skipped some linked TreeNodes before getting to
// their children.
theFilter->StartIteration();
theIStream.seekg(aStreamStartPosition, std::ios_base::beg);
nbRead += ReadSubTree(theIStream, aData->Root(), theFilter, aQuickPart, Standard_True, aPS.Next());
}
Standard_Integer nbRead = ReadSubTree (theIStream, aData->Root(), theFilter, aQuickPart, aPS.Next());
if (!aPS.More())
{
myReaderStatus = PCDM_RS_UserBreak;
@@ -383,7 +373,6 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
const TDF_Label& theLabel,
const Handle(PCDM_ReaderFilter)& theFilter,
const Standard_Boolean& theQuickPart,
const Standard_Boolean theReadMissing,
const Message_ProgressRange& theRange)
{
Standard_Integer nbRead = 0;
@@ -404,7 +393,7 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
aLabelSize = InverseUint64(aLabelSize);
#endif
// no one sub-label is needed, so, skip everything
if (aSkipAttrs && !theFilter->IsSubPassed() && myUnresolvedLinks.IsEmpty())
if (aSkipAttrs && !theFilter->IsSubPassed())
{
aLabelSize -= sizeof (uint64_t);
theIS.seekg (aLabelSize, std::ios_base::cur);
@@ -414,11 +403,6 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
}
}
if (theReadMissing)
{
aSkipAttrs = Standard_True;
}
const auto anAttStartPosition = theIS.tellg();
// Read attributes:
for (theIS >> myPAtt;
theIS && myPAtt.TypeId() > 0 && // not an end marker ?
@@ -431,12 +415,6 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
myReaderStatus = PCDM_RS_UserBreak;
return -1;
}
if (myUnresolvedLinks.Remove(myPAtt.Id()) && aSkipAttrs)
{
aSkipAttrs = Standard_False;
theIS.seekg(anAttStartPosition, std::ios_base::beg);
continue;
}
if (aSkipAttrs)
{
if (myPAtt.IsDirect()) // skip direct written stream
@@ -509,17 +487,7 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
aDriver->TypeName(), Message_Warning);
}
else if (!isBound)
{
myRelocTable.Bind(anID, tAtt);
Handle(TDataStd_TreeNode) aNode = Handle(TDataStd_TreeNode)::DownCast(tAtt);
if (!theFilter.IsNull() && !aNode.IsNull() && !aNode->Father().IsNull() && aNode->Father()->IsNew())
{
Standard_Integer anUnresolvedLink;
myPAtt.SetPosition(BP_HEADSIZE);
myPAtt >> anUnresolvedLink;
myUnresolvedLinks.Add(anUnresolvedLink);
}
}
}
else if (!myMapUnsupported.Contains(myPAtt.TypeId()))
myMsgDriver->Send(aMethStr + "warning: type ID not registered in header: "
@@ -554,7 +522,7 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
// read sub-tree
if (!theFilter.IsNull())
theFilter->Down (aTag);
Standard_Integer nbSubRead = ReadSubTree (theIS, aLab, theFilter, theQuickPart, theReadMissing, aPS.Next());
Standard_Integer nbSubRead = ReadSubTree (theIS, aLab, theFilter, theQuickPart, aPS.Next());
// check for error
if (nbSubRead == -1)
return -1;

View File

@@ -80,7 +80,6 @@ protected:
const TDF_Label& theData,
const Handle(PCDM_ReaderFilter)& theFilter,
const Standard_Boolean& theQuickPart,
const Standard_Boolean theReadMissing,
const Message_ProgressRange& theRanges = Message_ProgressRange());
@@ -126,7 +125,6 @@ private:
BinObjMgt_Persistent myPAtt;
TColStd_MapOfInteger myMapUnsupported;
BinLDrivers_VectorOfDocumentSection mySections;
NCollection_Map<Standard_Integer> myUnresolvedLinks;
};

View File

@@ -65,6 +65,11 @@ public:
//! Clears/erases opened TCL windows if any
//! and sets myBreak to False
Standard_EXPORT virtual void Reset() Standard_OVERRIDE;
Standard_Boolean IsActive() const Standard_OVERRIDE
{
return myGraphMode || myTclMode || myConsoleMode;
}
//! Defines method Show of Progress Indicator
Standard_EXPORT virtual void Show (const Message_ProgressScope& theScope,

View File

@@ -48,6 +48,7 @@ Message_ProgressRange Message_ProgressIndicator::Start()
myRootScope->myValue = 0.;
Reset();
Show (*myRootScope, Standard_False);
myRootScope->myIsActive = IsActive();
return myRootScope->Next();
}

View File

@@ -67,6 +67,8 @@ public:
//! Use this method to get the top level range for progress indication.
Standard_EXPORT Message_ProgressRange Start();
virtual Standard_Boolean IsActive() const { return true; }
//! If argument is non-null handle, returns theProgress->Start().
//! Otherwise, returns dummy range that can be safely used in the algorithms
//! but not bound to progress indicator.

View File

@@ -2134,12 +2134,11 @@ Standard_Boolean readPMIPresentation(const Handle(Standard_Transient)& thePresen
return Standard_False;
}
Handle(Transfer_TransientProcess) aTP = theTR->TransientProcess();
Handle(StepVisual_StyledItem) anAO;
Handle(StepVisual_AnnotationOccurrence) anAO;
NCollection_Vector<Handle(StepVisual_StyledItem)> anAnnotations;
if (thePresentEntity->IsKind(STANDARD_TYPE(StepVisual_AnnotationOccurrence)) ||
thePresentEntity->IsKind(STANDARD_TYPE(StepVisual_TessellatedAnnotationOccurrence)))
if (thePresentEntity->IsKind(STANDARD_TYPE(StepVisual_AnnotationOccurrence)))
{
anAO = Handle(StepVisual_StyledItem)::DownCast(thePresentEntity);
anAO = Handle(StepVisual_AnnotationOccurrence)::DownCast(thePresentEntity);
if (!anAO.IsNull())
{
thePresentName = anAO->Name();
@@ -4369,8 +4368,7 @@ Standard_Boolean STEPCAFControl_Reader::ReadGDTs(const Handle(XSControl_WorkSess
}
}
else if (anEnt->IsKind(STANDARD_TYPE(StepVisual_DraughtingCallout)) ||
anEnt->IsKind(STANDARD_TYPE(StepVisual_AnnotationOccurrence)) ||
anEnt->IsKind(STANDARD_TYPE(StepVisual_TessellatedAnnotationOccurrence)))
anEnt->IsKind(STANDARD_TYPE(StepVisual_AnnotationOccurrence)))
{
// Protection against import presentation twice
Handle(StepVisual_DraughtingCallout) aDC;

View File

@@ -15,62 +15,6 @@
#include <Standard_Mutex.hxx>
//=============================================
// Standard_Mutex::Standard_Mutex
//=============================================
Standard_Mutex::Standard_Mutex ()
{
#if (defined(_WIN32) || defined(__WIN32__))
InitializeCriticalSection (&myMutex);
#else
pthread_mutexattr_t anAttr;
pthread_mutexattr_init (&anAttr);
pthread_mutexattr_settype (&anAttr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init (&myMutex, &anAttr);
pthread_mutexattr_destroy (&anAttr);
#endif
}
//=============================================
// Standard_Mutex::~Standard_Mutex
//=============================================
Standard_Mutex::~Standard_Mutex ()
{
#if (defined(_WIN32) || defined(__WIN32__))
DeleteCriticalSection (&myMutex);
#else
pthread_mutex_destroy (&myMutex);
#endif
}
//=============================================
// Standard_Mutex::Lock
//=============================================
void Standard_Mutex::Lock ()
{
#if (defined(_WIN32) || defined(__WIN32__))
EnterCriticalSection (&myMutex);
#else
pthread_mutex_lock (&myMutex);
#endif
}
//=============================================
// Standard_Mutex::TryLock
//=============================================
Standard_Boolean Standard_Mutex::TryLock ()
{
#if (defined(_WIN32) || defined(__WIN32__))
return (TryEnterCriticalSection (&myMutex) != 0);
#else
return (pthread_mutex_trylock (&myMutex) != EBUSY);
#endif
}
//=============================================
// Standard_Mutex::DestroyCallback
//=============================================

View File

@@ -29,6 +29,8 @@
#include <time.h>
#endif
#include <mutex>
/**
* @brief Mutex: a class to synchronize access to shared data.
*
@@ -122,9 +124,9 @@ public:
}
//! This method should not be called (prohibited).
Sentry (const Sentry &);
Sentry (const Sentry &) = delete;
//! This method should not be called (prohibited).
Sentry& operator = (const Sentry &);
Sentry& operator = (const Sentry &) = delete;
private:
Standard_Mutex* myMutex;
@@ -135,22 +137,22 @@ public:
//! Constructor: creates a mutex object and initializes it.
//! It is strongly recommended that mutexes were created as
//! static objects whenever possible.
Standard_EXPORT Standard_Mutex ();
Standard_Mutex() {};
//! Destructor: destroys the mutex object
Standard_EXPORT ~Standard_Mutex ();
~Standard_Mutex() {};
//! Method to lock the mutex; waits until the mutex is released
//! by other threads, locks it and then returns
Standard_EXPORT void Lock ();
void Lock() { myMutex.lock(); }
//! Method to test the mutex; if the mutex is not hold by other thread,
//! locks it and returns True; otherwise returns False without waiting
//! mutex to be released.
Standard_EXPORT Standard_Boolean TryLock ();
Standard_Boolean TryLock () { return myMutex.try_lock(); }
//! Method to unlock the mutex; releases it to other users
void Unlock ();
void Unlock() { myMutex.unlock(); }
private:
@@ -158,29 +160,14 @@ private:
Standard_EXPORT virtual void DestroyCallback() Standard_OVERRIDE;
//! This method should not be called (prohibited).
Standard_Mutex (const Standard_Mutex &);
Standard_Mutex (const Standard_Mutex &) = delete;
//! This method should not be called (prohibited).
Standard_Mutex& operator = (const Standard_Mutex &);
Standard_Mutex& operator = (const Standard_Mutex &) = delete;
private:
#if (defined(_WIN32) || defined(__WIN32__))
CRITICAL_SECTION myMutex;
#else
pthread_mutex_t myMutex;
#endif
std::recursive_mutex myMutex;
};
typedef NCollection_Shared<Standard_Mutex> Standard_HMutex;
// Implementation of the method Unlock is inline, since it is
// just a shortcut to system function
inline void Standard_Mutex::Unlock ()
{
#if (defined(_WIN32) || defined(__WIN32__))
LeaveCriticalSection (&myMutex);
#else
pthread_mutex_unlock (&myMutex);
#endif
}
#endif /* _Standard_Mutex_HeaderFile */

View File

@@ -1,14 +0,0 @@
puts "========================"
puts "0033394: Modeling Algorithms - Wrong usage of BRepClass_FaceClassifier with 3d tolerance"
puts "========================"
puts ""
pload MODELING
restore [locate_data_file bug33394.brep] fb
vertex vert 1016.3915670000133 17180 -5689.3758362036951
distmini aa fb vert
set tolerance [checkmaxtol aa]
if { [dval aa_val] > ${tolerance} } {
puts "Error: The distance should be 0"
}

View File

@@ -1,11 +0,0 @@
puts "========"
puts "0033616: Data Exchange - Using filter while reading XBF may result in unresolved links"
puts "========"
pload ALL
XOpen [locate_data_file bug28905_as1-oc-214.xbf] D -read0:1:1:2:1
XGetShape sh D 0:1:1:2:1
checknbshapes sh -solid 1
Close D

View File

@@ -3,12 +3,12 @@ set filename bug29362_MMT200.stp
set ref_data {
NbOfDimensions : 4
NbOfDimensions : 2
NbOfDimensionalSize : 1
NbOfDimensionalLocation: 1
NbOfAngular : 0
NbOfWithPath : 0
NbOfCommonLabels : 1
NbOfCommonLabels : 0
NbOfTolerances : 0
NbOfGTWithModifiers : 0
NbOfGTWithMaxTolerance : 0

View File

@@ -1,92 +0,0 @@
# !!!! This file is generated automatically, do not edit manually! See end script
set filename bug33661_nist_ftc_08_asme1_ap242-e1-tg.stp
set ref_data {
NbOfDimensions : 60
NbOfTolerances : 0
NbOfDatumFeature : 0
NbOfAttachedDatum : 0
NbOfDatumTarget : 0
0:1:1:2:1 Shape.4
0:1:4:32 Dimension.4.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:2 Shape.5
0:1:4:4 Dimension.5.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:5 Dimension.5.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:4 Shape.7
0:1:4:14 Dimension.7.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:18 Dimension.7.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:20 Dimension.7.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:14 Shape.17
0:1:4:27 Dimension.17.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:62 Shape.65
0:1:4:35 Dimension.65.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:65 Shape.68
0:1:4:36 Dimension.68.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:72 Shape.75
0:1:4:53 Dimension.75.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:84 Shape.87
0:1:4:54 Dimension.87.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:90 Shape.93
0:1:4:31 Dimension.93.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:33 Dimension.93.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:34 Dimension.93.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:94 Shape.97
0:1:4:39 Dimension.97.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:40 Dimension.97.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:51 Dimension.97.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:52 Dimension.97.4 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:55 Dimension.97.5 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:96 Shape.99
0:1:4:43 Dimension.99.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:44 Dimension.99.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:45 Dimension.99.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:46 Dimension.99.4 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:57 Dimension.99.5 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:98 Shape.101
0:1:4:47 Dimension.101.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:48 Dimension.101.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:49 Dimension.101.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:50 Dimension.101.4 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:56 Dimension.101.5 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:100 Shape.103
0:1:4:37 Dimension.103.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:38 Dimension.103.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:41 Dimension.103.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:42 Dimension.103.4 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:58 Dimension.103.5 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:102 Shape.105
0:1:4:25 Dimension.105.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:26 Dimension.105.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:116 Shape.119
0:1:4:24 Dimension.119.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:120 Shape.123
0:1:4:23 Dimension.123.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:161 Shape.164
0:1:4:15 Dimension.164.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:179 Shape.182
0:1:4:1 Dimension.182.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:2 Dimension.182.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:3 Dimension.182.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:237 Shape.240
0:1:4:17 Dimension.240.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:19 Dimension.240.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:246 Shape.249
0:1:4:6 Dimension.249.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:8 Dimension.249.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:9 Dimension.249.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:248 Shape.251
0:1:4:7 Dimension.251.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:10 Dimension.251.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:11 Dimension.251.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:250 Shape.253
0:1:4:12 Dimension.253.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:13 Dimension.253.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:2:256 Shape.259
0:1:4:28 Dimension.259.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:29 Dimension.259.2 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:4:30 Dimension.259.3 ( N "DGT:Dimension" T 31, V 0, P 0 )
0:1:1:3:1 Shape.276
0:1:4:16 Dimension.276.1 ( N "DGT:Dimension" T 31, V 0, P 0 )
}

View File

@@ -2,13 +2,7 @@
set filename bug29362_MMT200.stp
set ref_data {
Centre of mass: 13.412719368151439 6.1818909424750705 -13.415402720911091
Mass: 252.25931515680639
}
set ref_data_write {
Centre of mass: 13.412719368151233 6.1818909424748316 -13.415402720907935
Mass: 252.25931515678892
Centre of mass: 0 0 0
Mass: 0
}

View File

@@ -1,16 +0,0 @@
# !!!! This file is generated automatically, do not edit manually! See end script
puts "TODO CR11111 ALL: Error on writing file"
set filename bug33661_nist_ftc_08_asme1_ap242-e1-tg.stp
set ref_data {
Centre of mass: -62.99891835601813 78.203476181663817 20.269103705327481
Mass: 47784.542040997127
}
set ref_data_write {
Centre of mass: -261.12759307366923 196.9986700086933 -13.86055926862322
Mass: 17568.06377585962
}