mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-18 14:27:39 +03:00
Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e49db28066 |
@@ -19,7 +19,6 @@
|
|||||||
#include <BRep_CurveOnClosedSurface.hxx>
|
#include <BRep_CurveOnClosedSurface.hxx>
|
||||||
#include <BRep_CurveOnSurface.hxx>
|
#include <BRep_CurveOnSurface.hxx>
|
||||||
#include <BRep_CurveRepresentation.hxx>
|
#include <BRep_CurveRepresentation.hxx>
|
||||||
#include <BRep_GCurve.hxx>
|
|
||||||
#include <BRep_Polygon3D.hxx>
|
#include <BRep_Polygon3D.hxx>
|
||||||
#include <BRep_PolygonOnSurface.hxx>
|
#include <BRep_PolygonOnSurface.hxx>
|
||||||
#include <BRep_PolygonOnTriangulation.hxx>
|
#include <BRep_PolygonOnTriangulation.hxx>
|
||||||
@@ -27,7 +26,6 @@
|
|||||||
#include <BRep_TFace.hxx>
|
#include <BRep_TFace.hxx>
|
||||||
#include <BRep_Tool.hxx>
|
#include <BRep_Tool.hxx>
|
||||||
#include <BRep_TVertex.hxx>
|
#include <BRep_TVertex.hxx>
|
||||||
#include <BRepAdaptor_Surface.hxx>
|
|
||||||
#include <ElSLib.hxx>
|
#include <ElSLib.hxx>
|
||||||
#include <Geom2d_Curve.hxx>
|
#include <Geom2d_Curve.hxx>
|
||||||
#include <Geom2d_TrimmedCurve.hxx>
|
#include <Geom2d_TrimmedCurve.hxx>
|
||||||
@@ -63,6 +61,7 @@
|
|||||||
#include <TopoDS_Vertex.hxx>
|
#include <TopoDS_Vertex.hxx>
|
||||||
#include <TopTools_MapOfShape.hxx>
|
#include <TopTools_MapOfShape.hxx>
|
||||||
#include <TopTools_ShapeMapHasher.hxx>
|
#include <TopTools_ShapeMapHasher.hxx>
|
||||||
|
#include <BRep_GCurve.hxx>
|
||||||
|
|
||||||
//modified by NIZNHY-PKV Fri Oct 17 14:13:29 2008f
|
//modified by NIZNHY-PKV Fri Oct 17 14:13:29 2008f
|
||||||
static
|
static
|
||||||
@@ -1673,13 +1672,3 @@ Standard_Real BRep_Tool::MaxTolerance (const TopoDS_Shape& theShape,
|
|||||||
|
|
||||||
return aTol;
|
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));
|
|
||||||
}
|
|
||||||
|
@@ -297,11 +297,6 @@ public:
|
|||||||
//@param theSubShape - Search subshape, only Face, Edge or Vertex are supported.
|
//@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);
|
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
|
#endif // _BRep_Tool_HeaderFile
|
||||||
|
@@ -441,6 +441,7 @@ static void PERFORM_C0(const TopoDS_Edge& S1, const TopoDS_Edge& S2,
|
|||||||
|
|
||||||
gp_Pnt P1, Pt;
|
gp_Pnt P1, Pt;
|
||||||
Standard_Integer i, ii;
|
Standard_Integer i, ii;
|
||||||
|
BRepClass_FaceClassifier classifier;
|
||||||
for (i = 1; i <= arrInter.Length(); i++)
|
for (i = 1; i <= arrInter.Length(); i++)
|
||||||
{
|
{
|
||||||
const Standard_Real aParameter = arrInter(i);
|
const Standard_Real aParameter = arrInter(i);
|
||||||
@@ -771,7 +772,7 @@ void BRepExtrema_DistanceSS::Perform(const TopoDS_Vertex& theS1,
|
|||||||
Standard_Real U, V;
|
Standard_Real U, V;
|
||||||
gp_Pnt Pt, P1 = BRep_Tool::Pnt(theS1);
|
gp_Pnt Pt, P1 = BRep_Tool::Pnt(theS1);
|
||||||
BRepClass_FaceClassifier classifier;
|
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++)
|
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
|
// Check if the parameter does not correspond to a vertex
|
||||||
Ext.Parameter(i, U, V);
|
Ext.Parameter(i, U, V);
|
||||||
const gp_Pnt2d PUV(U, V);
|
const gp_Pnt2d PUV(U, V);
|
||||||
classifier.Perform(theS2, PUV, tol2d);
|
classifier.Perform(theS2, PUV, tol);
|
||||||
if (classifier.State() == TopAbs_IN)
|
if (classifier.State() == TopAbs_IN)
|
||||||
{
|
{
|
||||||
if (myDstRef > Dstmin)
|
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))
|
if ((Dstmin < myDstRef - myEps) || (fabs(Dstmin - myDstRef) < myEps))
|
||||||
{
|
{
|
||||||
Standard_Real U, V;
|
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;
|
gp_Pnt Pt1, Pt2;
|
||||||
const Standard_Real epsP = Precision::PConfusion();
|
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);
|
Ext.ParameterOnFace(i, U, V);
|
||||||
const gp_Pnt2d PUV(U, V);
|
const gp_Pnt2d PUV(U, V);
|
||||||
classifier.Perform(theS2, PUV, tol2d);
|
classifier.Perform(theS2, PUV, tol);
|
||||||
if (classifier.State() == TopAbs_IN)
|
if (classifier.State() == TopAbs_IN)
|
||||||
{
|
{
|
||||||
if (myDstRef > Dstmin)
|
if (myDstRef > Dstmin)
|
||||||
@@ -973,7 +974,7 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Edge& theS1, const TopoDS_Fac
|
|||||||
|
|
||||||
gp_Pnt Pt;
|
gp_Pnt Pt;
|
||||||
Standard_Real U, V;
|
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;
|
Standard_Integer i;
|
||||||
for (i = 1; i <= arrInter.Length(); 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
|
// Check if the parameter does not correspond to a vertex
|
||||||
ExtPF.Parameter(ii, U, V);
|
ExtPF.Parameter(ii, U, V);
|
||||||
const gp_Pnt2d PUV(U, V);
|
const gp_Pnt2d PUV(U, V);
|
||||||
classifier.Perform(theS2, PUV, tol2d);
|
classifier.Perform(theS2, PUV, tol);
|
||||||
if (classifier.State() == TopAbs_IN)
|
if (classifier.State() == TopAbs_IN)
|
||||||
{
|
{
|
||||||
if (myDstRef > Dstmin)
|
if (myDstRef > Dstmin)
|
||||||
@@ -1061,8 +1062,8 @@ void BRepExtrema_DistanceSS::Perform (const TopoDS_Face& theS1,
|
|||||||
Dstmin = sqrt(Dstmin);
|
Dstmin = sqrt(Dstmin);
|
||||||
if ((Dstmin < myDstRef - myEps) || (fabs(Dstmin - myDstRef) < myEps))
|
if ((Dstmin < myDstRef - myEps) || (fabs(Dstmin - myDstRef) < myEps))
|
||||||
{
|
{
|
||||||
const Standard_Real tol2d1 = BRep_Tool::Tolerance2d(theS1, BRep_Tool::Tolerance(theS1));
|
const Standard_Real tol1 = BRep_Tool::Tolerance(theS1);
|
||||||
const Standard_Real tol2d2 = BRep_Tool::Tolerance2d(theS2, BRep_Tool::Tolerance(theS2));
|
const Standard_Real tol2 = BRep_Tool::Tolerance(theS2);
|
||||||
|
|
||||||
gp_Pnt Pt1, Pt2;
|
gp_Pnt Pt1, Pt2;
|
||||||
gp_Pnt2d PUV;
|
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
|
// Check if the parameter does not correspond to a vertex
|
||||||
Ext.ParameterOnFace1(i, U1, V1);
|
Ext.ParameterOnFace1(i, U1, V1);
|
||||||
PUV.SetCoord(U1, V1);
|
PUV.SetCoord(U1, V1);
|
||||||
classifier.Perform(theS1, PUV, tol2d1);
|
classifier.Perform(theS1, PUV, tol1);
|
||||||
if (classifier.State() == TopAbs_IN)
|
if (classifier.State() == TopAbs_IN)
|
||||||
{
|
{
|
||||||
Ext.ParameterOnFace2(i, U2, V2);
|
Ext.ParameterOnFace2(i, U2, V2);
|
||||||
PUV.SetCoord(U2, V2);
|
PUV.SetCoord(U2, V2);
|
||||||
classifier.Perform(theS2, PUV, tol2d2);
|
classifier.Perform(theS2, PUV, tol2);
|
||||||
if (classifier.State() == TopAbs_IN)
|
if (classifier.State() == TopAbs_IN)
|
||||||
{
|
{
|
||||||
if (myDstRef > Dstmin)
|
if (myDstRef > Dstmin)
|
||||||
|
@@ -89,7 +89,7 @@ void BRepExtrema_ExtFF::Perform(const TopoDS_Face& F1, const TopoDS_Face& F2)
|
|||||||
{
|
{
|
||||||
// Exploration of points and classification
|
// Exploration of points and classification
|
||||||
BRepClass_FaceClassifier classifier;
|
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;
|
Extrema_POnSurf P1, P2;
|
||||||
|
|
||||||
Standard_Integer i;
|
Standard_Integer i;
|
||||||
@@ -98,14 +98,13 @@ void BRepExtrema_ExtFF::Perform(const TopoDS_Face& F1, const TopoDS_Face& F2)
|
|||||||
myExtSS.Points(i, P1, P2);
|
myExtSS.Points(i, P1, P2);
|
||||||
P1.Parameter(U1, U2);
|
P1.Parameter(U1, U2);
|
||||||
const gp_Pnt2d Puv1(U1, U2);
|
const gp_Pnt2d Puv1(U1, U2);
|
||||||
const Standard_Real Tol2d1 = BRep_Tool::Tolerance2d(F1, Tol1);
|
classifier.Perform(F1, Puv1, Tol1);
|
||||||
classifier.Perform(F1, Puv1, Tol2d1);
|
|
||||||
const TopAbs_State state1 = classifier.State();
|
const TopAbs_State state1 = classifier.State();
|
||||||
if (state1 == TopAbs_ON || state1 == TopAbs_IN)
|
if (state1 == TopAbs_ON || state1 == TopAbs_IN)
|
||||||
{
|
{
|
||||||
P2.Parameter(U1, U2);
|
P2.Parameter(U1, U2);
|
||||||
const gp_Pnt2d Puv2(U1, U2);
|
const gp_Pnt2d Puv2(U1, U2);
|
||||||
classifier.Perform(F2, Puv2, Tol2d2);
|
classifier.Perform(F2, Puv2, Tol2);
|
||||||
const TopAbs_State state2 = classifier.State();
|
const TopAbs_State state2 = classifier.State();
|
||||||
if (state2 == TopAbs_ON || state2 == TopAbs_IN)
|
if (state2 == TopAbs_ON || state2 == TopAbs_IN)
|
||||||
{
|
{
|
||||||
|
@@ -85,12 +85,12 @@ void BRepExtrema_ExtPF::Perform(const TopoDS_Vertex& TheVertex, const TopoDS_Fac
|
|||||||
{
|
{
|
||||||
BRepClass_FaceClassifier classifier;
|
BRepClass_FaceClassifier classifier;
|
||||||
Standard_Real U1, U2;
|
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++)
|
for (Standard_Integer i = 1; i <= myExtPS.NbExt(); i++)
|
||||||
{
|
{
|
||||||
myExtPS.Point(i).Parameter(U1, U2);
|
myExtPS.Point(i).Parameter(U1, U2);
|
||||||
const gp_Pnt2d Puv(U1, U2);
|
const gp_Pnt2d Puv(U1, U2);
|
||||||
classifier.Perform(TheFace, Puv, Tol2d);
|
classifier.Perform(TheFace, Puv, Tol);
|
||||||
const TopAbs_State state = classifier.State();
|
const TopAbs_State state = classifier.State();
|
||||||
if(state == TopAbs_ON || state == TopAbs_IN)
|
if(state == TopAbs_ON || state == TopAbs_IN)
|
||||||
{
|
{
|
||||||
|
@@ -1103,6 +1103,13 @@ void OpenGl_View::drawBackground (const Handle(OpenGl_Workspace)& theWorkspace,
|
|||||||
if (myBackgrounds[Graphic3d_TOB_GRADIENT]->GradientFillMethod() >= Aspect_GradientFillMethod_Corner1
|
if (myBackgrounds[Graphic3d_TOB_GRADIENT]->GradientFillMethod() >= Aspect_GradientFillMethod_Corner1
|
||||||
&& myBackgrounds[Graphic3d_TOB_GRADIENT]->GradientFillMethod() <= Aspect_GradientFillMethod_Corner4)
|
&& myBackgrounds[Graphic3d_TOB_GRADIENT]->GradientFillMethod() <= Aspect_GradientFillMethod_Corner4)
|
||||||
{
|
{
|
||||||
|
// Set colored quad shader program
|
||||||
|
Quantity_Color aColor1, aColor2;
|
||||||
|
GradientBackground().Colors(aColor1, aColor2);
|
||||||
|
myColoredQuadParams->Aspect()->SetShaderProgram(aCtx->ShaderManager()->GetColoredQuadProgram());
|
||||||
|
myColoredQuadParams->Aspect()->ShaderProgram()->PushVariableVec3 ("uColor1", aColor1.Rgb());
|
||||||
|
myColoredQuadParams->Aspect()->ShaderProgram()->PushVariableVec3 ("uColor2", aColor2.Rgb());
|
||||||
|
|
||||||
const OpenGl_Aspects* anOldAspectFace = theWorkspace->SetAspects (myColoredQuadParams);
|
const OpenGl_Aspects* anOldAspectFace = theWorkspace->SetAspects (myColoredQuadParams);
|
||||||
|
|
||||||
myBackgrounds[Graphic3d_TOB_GRADIENT]->Render (theWorkspace, theProjection);
|
myBackgrounds[Graphic3d_TOB_GRADIENT]->Render (theWorkspace, theProjection);
|
||||||
|
@@ -211,8 +211,8 @@ static struct
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} ViewerTest_DefaultBackground = { Quantity_NOC_BLACK, Quantity_NOC_BLACK, Quantity_NOC_BLACK, Aspect_GradientFillMethod_None };
|
} ViewerTest_DefaultBackground = { Quantity_NOC_BLACK, Quantity_NOC_BLACK, Quantity_NOC_BLACK, Aspect_GradientFillMethod_None };
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
// EVENT GLOBAL VARIABLES
|
// EVENT GLOBAL VARIABLES
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
@@ -795,7 +795,6 @@ TCollection_AsciiString ViewerTest::ViewerInit (const ViewerTest_VinitParams& th
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
VT_GetWindow()->Map();
|
VT_GetWindow()->Map();
|
||||||
|
|
||||||
// Set the handle of created view in the event manager
|
// Set the handle of created view in the event manager
|
||||||
ViewerTest::ResetEventManager();
|
ViewerTest::ResetEventManager();
|
||||||
|
|
||||||
|
@@ -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"
|
|
||||||
}
|
|
Reference in New Issue
Block a user