NurbsSurface
============

.. py:module:: rhino3dm

.. py:class:: NurbsSurface

   .. py:attribute:: IsRational

      bool: Gets a value indicating whether or not the NURBS surface is rational.

   .. py:attribute:: OrderU

      int: Gets the order in the U direction.

   .. py:attribute:: OrderV

      int: Gets the order in the V direction.

   .. py:attribute:: KnotsU

      Collections.NurbsSurfaceKnotList: The U direction knot vector.

   .. py:attribute:: KnotsV

      Collections.NurbsSurfaceKnotList: The V direction knot vector.

   .. py:attribute:: Points

      Collections.NurbsSurfacePointList: Gets a collection of surface control points that form this surface.

   .. py:staticmethod:: Create(dimension, isRational, order0, order1, controlPointCount0, controlPointCount1)

      Constructs a new NURBS surface with internal uninitialized arrays.

      :param int dimension: The number of dimensions.>= 1. This value is usually 3.
      :param bool isRational: True to make a rational NURBS.
      :param int order0: The order in U direction.>= 2.
      :param int order1: The order in V direction.>= 2.
      :param int controlPointCount0: Control point count in U direction.>= order0.
      :param int controlPointCount1: Control point count in V direction.>= order1.

      :return: A new NURBS surface, or None on error.

      :rtype: NurbsSurface

   .. py:staticmethod:: CreateFromCone(cone)

      Constructs a new NURBS surfaces from cone data.

      :param Cone cone: A cone value.

      :return: A new NURBS surface, or None on error.

      :rtype: NurbsSurface

   .. py:staticmethod:: CreateFromSphere(sphere)

      Constructs a new NURBS surfaces from sphere data.

      :param rhino3dm.Sphere sphere: A sphere value.

      :return: A new NURBS surface, or None on error.

      :rtype: NurbsSurface

   .. py:staticmethod:: CreateFromCylinder(cylinder)

      Constructs a new NURBS surfaces from cylinder data.

      :param Cylinder cylinder: A cylinder value.

      :return: A new NURBS surface, or None on error.

      :rtype: NurbsSurface

   .. py:staticmethod:: CreateRuledSurface(curveA, curveB)

      Constructs a ruled surface between two curves. Curves must share the same knot-vector.

      :param rhino3dm.Curve curveA: First curve.
      :param rhino3dm.Curve curveB: Second curve.

      :return: A ruled surface on success or None on failure.

      :rtype: NurbsSurface

   .. py:method:: MakeRational()

      Makes this surface rational.

      :return: True if the operation succeeded; otherwise, false.

      :rtype: bool

   .. py:method:: MakeNonRational()

      Makes this surface non-rational.

      :return: True if the operation succeeded; otherwise, false.

      :rtype: bool

   .. py:method:: IncreaseDegreeU(desiredDegree)

      Increase the degree of this surface in U direction.

      :param int desiredDegree: The desired degree. \
         Degrees should be number between and including 1 and 11.

      :return: True on success, False on failure.

      :rtype: bool

   .. py:method:: IncreaseDegreeV(desiredDegree)

      Increase the degree of this surface in V direction.

      :param int desiredDegree: The desired degree. \
         Degrees should be number between and including 1 and 11.

      :return: True on success, False on failure.

      :rtype: bool
