code: def export_csv(obj, file_name, point_type='evalpts', **kwargs):
      
      if not 0 < obj.pdimension < 3:
          raise exch.GeomdlException("Input object should be a curve or a surface")
  
      # Pick correct points from the object
      if point_type == 'ctrlpts':
          points = obj.ctrlptsw if obj.rational else obj.ctrlpts
      elif point_type == 'evalpts':
          points = obj.evalpts
      else:
          raise exch.GeomdlException("Please choose a valid point type option. Possible types: ctrlpts, evalpts")
  
      # Prepare CSV header
      dim = len(points[0])
      line = "dim "
      for i in range(dim-1):
          line += str(i + 1) + ", dim "
      line += str(dim) + "\n"
  
      # Prepare values
      for pt in points:
          line += ",".join([str(p) for p in pt]) + "\n"
  
      # Write to file
      return exch.write_file(file_name, line)
docs: Exports control points or evaluated points as a CSV file.
  
      :param obj: a spline geometry object
      :type obj: abstract.SplineGeometry
      :param file_name: output file name
      :type file_name: str
      :param point_type: ``ctrlpts`` for control points or ``evalpts`` for evaluated points
      :type point_type: str
      :raises GeomdlException: an error occurred writing the file