1. Maya stores more complex data types, such as NURBS surfaces, as special geometry data. In order to be able to create and store this kind of data, you need to use the appropriate MFGeometryData function set.
2. To get the data of an input NURBS surface, use MFnNurbsSurfaceData to create a new object, and copy the original surface data to this new created one.
3. To access and change the NURBS surface data, MFnNurbsSurface function is need.
4. All the surface control vertices (CVs) are retrieved and stored in an array using the MFnNurbsSurface's getCVs function. Also for individual get and set using getCV and setCV.
5. Using setCVs to modify the control vertices.
6. Using MFnNurbsSurface's updateSurface() to update the surface.
7. MFnGenericAttribute allows you to define a variety of different data types that will accept.