From: jfa Date: Wed, 12 Aug 2020 10:52:36 +0000 (+0300) Subject: bos #16247: EDF - Problem of partition X-Git-Tag: V9_6_0a1~3 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=95c850c1c068e09c615fd15ce37165829c01e8da;p=modules%2Fgeom.git bos #16247: EDF - Problem of partition --- diff --git a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx index c459ed627..a2bcdd27a 100644 --- a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx @@ -1677,9 +1677,10 @@ TopoDS_Shape GEOMImpl_ShapeDriver::MakeIsoline Handle(Geom_Surface) aSurface = BRep_Tool::Surface(theFace); Handle(Geom_Curve) anIsoCurve = (IsUIso ? aSurface->UIso(theParameter) : aSurface->VIso(theParameter)); - Handle(Geom2d_Curve) aPIsoCurve = - aHatcher.GetHatching(aHatchingIndex); - const Standard_Real aTol = Precision::Confusion(); + Handle(Geom2d_Curve) aPIsoCurve = aHatcher.GetHatching(aHatchingIndex); + + Standard_Real aTol = BRep_Tool::MaxTolerance(theFace, TopAbs_EDGE); + Standard_Integer anIDom = 1; Standard_Real aV1; Standard_Real aV2; @@ -1695,6 +1696,10 @@ TopoDS_Shape GEOMImpl_ShapeDriver::MakeIsoline // Update it with a parametric curve on face. aBuilder.UpdateEdge(anEdge, aPIsoCurve, theFace, aTol); + for (TopExp_Explorer ExV (anEdge, TopAbs_VERTEX); ExV.More(); ExV.Next()) { + TopoDS_Vertex V = TopoDS::Vertex(ExV.Current()); + aBuilder.UpdateVertex(V, aTol); + } aNbEdges++; if (aNbEdges > 1) { diff --git a/src/GEOMImpl/GEOMImpl_VectorDriver.cxx b/src/GEOMImpl/GEOMImpl_VectorDriver.cxx index fcd648aef..52152f0fc 100644 --- a/src/GEOMImpl/GEOMImpl_VectorDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_VectorDriver.cxx @@ -28,6 +28,7 @@ #include "GEOM_Object.hxx" #include +#include #include #include #include @@ -120,8 +121,12 @@ Standard_Integer GEOMImpl_VectorDriver::Execute(Handle(TFunction_Logbook)& log) if (P1.Distance(P2) < Precision::Confusion()) { Standard_ConstructionError::Raise("The end points are too close"); } - aShape = BRepBuilderAPI_MakeEdge(V1, V2).Shape(); - } + TopoDS_Edge anEdge = BRepBuilderAPI_MakeEdge(V1, V2); + Standard_Real aTol = Max(BRep_Tool::Tolerance(V1), BRep_Tool::Tolerance(V2)); + BRep_Builder aBuilder; + aBuilder.UpdateEdge(anEdge, aTol); + aShape = anEdge; + } else if (aType == VECTOR_TANGENT_CURVE_PAR) { Handle(GEOM_Function) aRefCurve = aPI.GetCurve(); TopoDS_Shape aRefShape = aRefCurve->GetValue();