From e05d8d90c0ac0db2f70f15cb5258cca27bc31f11 Mon Sep 17 00:00:00 2001 From: kgv Date: Mon, 24 Jun 2019 15:03:49 +0300 Subject: [PATCH] 0030805: Visualization, StdSelect_BRepSelectionTool - empty sensitivity from polygon-only Edge StdSelect_BRepSelectionTool::GetEdgeSensitive() now takes polygon points before creating curve Adaptor. --- src/StdSelect/StdSelect_BRepSelectionTool.cxx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/StdSelect/StdSelect_BRepSelectionTool.cxx b/src/StdSelect/StdSelect_BRepSelectionTool.cxx index ff96652a36..36f2db83e8 100644 --- a/src/StdSelect/StdSelect_BRepSelectionTool.cxx +++ b/src/StdSelect/StdSelect_BRepSelectionTool.cxx @@ -443,6 +443,15 @@ void StdSelect_BRepSelectionTool::GetEdgeSensitive (const TopoDS_Shape& theShape Handle(Select3D_SensitiveEntity)& theSensitive) { const TopoDS_Edge& anEdge = TopoDS::Edge (theShape); + // try to get points from existing polygons + Handle(TColgp_HArray1OfPnt) aPoints = GetPointsFromPolygon (anEdge); + if (!aPoints.IsNull() + && !aPoints->IsEmpty()) + { + theSensitive = new Select3D_SensitiveCurve (theOwner, aPoints); + return; + } + BRepAdaptor_Curve cu3d; try { OCC_CATCH_SIGNALS @@ -451,14 +460,6 @@ void StdSelect_BRepSelectionTool::GetEdgeSensitive (const TopoDS_Shape& theShape return; } - // try to get points from existing polygons - Handle(TColgp_HArray1OfPnt) aPoints = GetPointsFromPolygon (anEdge); - if (!aPoints.IsNull() && aPoints->Length() > 0) - { - theSensitive = new Select3D_SensitiveCurve (theOwner, aPoints); - return; - } - Standard_Real aParamFirst = cu3d.FirstParameter(); Standard_Real aParamLast = cu3d.LastParameter(); switch (cu3d.GetType()) -- 2.39.5