0030805: Visualization, StdSelect_BRepSelectionTool - empty sensitivity from polygon...
authorkgv <kgv@opencascade.com>
Mon, 24 Jun 2019 12:03:49 +0000 (15:03 +0300)
committerapn <apn@opencascade.com>
Tue, 25 Jun 2019 16:42:49 +0000 (19:42 +0300)
StdSelect_BRepSelectionTool::GetEdgeSensitive() now takes polygon points before creating curve Adaptor.

src/StdSelect/StdSelect_BRepSelectionTool.cxx

index ff96652..36f2db8 100644 (file)
@@ -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())