(psurf, **kwargs)
return dict(u=crvlist_u, v=crvlist_v)
Extracts curves from a surface.

    The return value is a ``dict`` object containing the following keys:

    * ``u``: the curves which generate u-direction (or which lie on the v-direction)
    * ``v``: the curves which generate v-direction (or which lie on the u-direction)

    As an example; if a curve lies on the u-direction, then its knotvector is equal to surface's knotvector on the
    v-direction and vice versa.

    The curve extraction process can be controlled via ``extract_u`` and ``extract_v`` boolean keyword arguments.

    :param psurf: input surface
    :type psurf: abstract.Surface
    :return: extracted curves
    :rtype: dict
Extracts curves from a surface.
Extracts curves from a surface .
def extract_curves(psurf, **kwargs):
    """ Extracts curves from a surface.

    The return value is a ``dict`` object containing the following keys:

    * ``u``: the curves which generate u-direction (or which lie on the v-direction)
    * ``v``: the curves which generate v-direction (or which lie on the u-direction)

    As an example; if a curve lies on the u-direction, then its knotvector is equal to surface's knotvector on the
    v-direction and vice versa.

    The curve extraction process can be controlled via ``extract_u`` and ``extract_v`` boolean keyword arguments.

    :param psurf: input surface
    :type psurf: abstract.Surface
    :return: extracted curves
    :rtype: dict
    """
    if psurf.pdimension != 2:
        raise GeomdlException("The input should be a spline surface")
    if len(psurf) != 1:
        raise GeomdlException("Can only operate on single spline surfaces")

    # Get keyword arguments
    extract_u = kwargs.get('extract_u', True)
    extract_v = kwargs.get('extract_v', True)

    # Get data from the surface object
    surf_data = psurf.data
    rational = surf_data['rational']
    degree_u = surf_data['degree'][0]
    degree_v = surf_data['degree'][1]
    kv_u = surf_data['knotvector'][0]
    kv_v = surf_data['knotvector'][1]
    size_u = surf_data['size'][0]
    size_v = surf_data['size'][1]
    cpts = surf_data['control_points']

    # Determine object type
    obj = shortcuts.generate_curve(rational)

    # v-direction
    crvlist_v = []
    if extract_v:
        for u in range(size_u):
            curve = obj.__class__()
            curve.degree = degree_v
            curve.set_ctrlpts([cpts[v + (size_v * u)] for v in range(size_v)])
            curve.knotvector = kv_v
            crvlist_v.append(curve)

    # u-direction
    crvlist_u = []
    if extract_u:
        for v in range(size_v):
            curve = obj.__class__()
            curve.degree = degree_u
            curve.set_ctrlpts([cpts[v + (size_v * u)] for u in range(size_u)])
            curve.knotvector = kv_u
            crvlist_u.append(curve)

    # Return shapes as a dict object
    return dict(u=crvlist_u, v=crvlist_v)
def extract_curves ( psurf , * * kwargs ) : if psurf . pdimension != 2 : raise GeomdlException ( "The input should be a spline surface" ) if len ( psurf ) != 1 : raise GeomdlException ( "Can only operate on single spline surfaces" ) # Get keyword arguments extract_u = kwargs . get ( 'extract_u' , True ) extract_v = kwargs . get ( 'extract_v' , True ) # Get data from the surface object surf_data = psurf . data rational = surf_data [ 'rational' ] degree_u = surf_data [ 'degree' ] [ 0 ] degree_v = surf_data [ 'degree' ] [ 1 ] kv_u = surf_data [ 'knotvector' ] [ 0 ] kv_v = surf_data [ 'knotvector' ] [ 1 ] size_u = surf_data [ 'size' ] [ 0 ] size_v = surf_data [ 'size' ] [ 1 ] cpts = surf_data [ 'control_points' ] # Determine object type obj = shortcuts . generate_curve ( rational ) # v-direction crvlist_v = [ ] if extract_v : for u in range ( size_u ) : curve = obj . __class__ ( ) curve . degree = degree_v curve . set_ctrlpts ( [ cpts [ v + ( size_v * u ) ] for v in range ( size_v ) ] ) curve . knotvector = kv_v crvlist_v . append ( curve ) # u-direction crvlist_u = [ ] if extract_u : for v in range ( size_v ) : curve = obj . __class__ ( ) curve . degree = degree_u curve . set_ctrlpts ( [ cpts [ v + ( size_v * u ) ] for u in range ( size_u ) ] ) curve . knotvector = kv_u crvlist_u . append ( curve ) # Return shapes as a dict object return dict ( u = crvlist_u , v = crvlist_v )