code: def detect_sense(curve, tol):
      
      if curve.opt_get('reversed') is None:
          # Detect sense since it is unset
          pts = curve.evalpts
          num_pts = len(pts)
          for idx in range(1, num_pts - 1):
              sense = detect_ccw(pts[idx - 1], pts[idx], pts[idx + 1], tol)
              if sense < 0:  # cw
                  curve.opt = ['reversed', 0]
                  return True
              elif sense > 0:  # ccw
                  curve.opt = ['reversed', 1]
                  return True
              else:
                  continue
          # One final test with random points to determine the orientation
          sense = detect_ccw(pts[int(num_pts/3)], pts[int(2*num_pts/3)], pts[-int(num_pts/3)], tol)
          if sense < 0:  # cw
              curve.opt = ['reversed', 0]
              return True
          elif sense > 0:  # ccw
              curve.opt = ['reversed', 1]
              return True
          else:
              # Cannot determine the sense
              return False
      else:
          # Don't touch the sense value as it has been already set
          return True
docs: Detects the sense, i.e. clockwise or counter-clockwise, of the curve.
  
      :param curve: 2-dimensional trim curve
      :type curve: abstract.Curve
      :param tol: tolerance value
      :type tol: float
      :return: True if detection is successful, False otherwise
      :rtype: bool