(surface, file_name, **kwargs)
Exports surface(s) as surface mesh (smesh) files.

    Please see :py:func:`.import_smesh()` for details on the file format.

    :param surface: surface(s) to be exported
    :type surface: abstract.Surface or multi.SurfaceContainer
    :param file_name: name of the output file
    :type file_name: str
    :raises GeomdlException: an error occurred writing the file
Exports surface(s) as surface mesh (smesh) files.
Exports surface ( s ) as surface mesh ( smesh ) files .
def export_smesh(surface, file_name, **kwargs):
    """ Exports surface(s) as surface mesh (smesh) files.

    Please see :py:func:`.import_smesh()` for details on the file format.

    :param surface: surface(s) to be exported
    :type surface: abstract.Surface or multi.SurfaceContainer
    :param file_name: name of the output file
    :type file_name: str
    :raises GeomdlException: an error occurred writing the file
    """
    # Input validity checking
    if surface.pdimension != 2:
        raise exch.GeomdlException("Can only export surfaces")

    # Get keyword arguments
    decimals = kwargs.get('decimals', 18)

    # Split file name and extension
    fname, fext = os.path.splitext(file_name)

    # Enumerate file name only if we are working with multiple surfaces
    numerate_file = True if len(surface) > 1 else False

    for idx, s in enumerate(surface):
        if s.rational:
            pts = s.ctrlptsw
        else:
            pts = compatibility.combine_ctrlpts_weights(s.ctrlpts)
        line = str(s.dimension) + "\n"
        line += str(s.degree_u) + " " + str(s.degree_v) + "\n"
        line += str(s.ctrlpts_size_u) + " " + str(s.ctrlpts_size_v) + "\n"
        line += " ".join([("{:." + str(decimals) + "f}").format(k) for k in s.knotvector_u]) + "\n"
        line += " ".join([("{:." + str(decimals) + "f}").format(k) for k in s.knotvector_v]) + "\n"
        # Flip control points
        ctrlptsw = compatibility.flip_ctrlpts(pts, s.ctrlpts_size_u, s.ctrlpts_size_v)
        # Convert control points into (x, y, z, w) format
        ctrlptsw = compatibility.generate_ctrlpts_weights(ctrlptsw)
        for ptw in ctrlptsw:
            line += " ".join([("{:." + str(decimals) + "f}").format(p) for p in ptw]) + "\n"
        # Open or closed?
        line += "1\n"

        # Write to file
        fname_curr = fname + "." + str(idx + 1) if numerate_file else fname
        exch.write_file(fname_curr + fext, line)
def export_smesh ( surface , file_name , * * kwargs ) : # Input validity checking if surface . pdimension != 2 : raise exch . GeomdlException ( "Can only export surfaces" ) # Get keyword arguments decimals = kwargs . get ( 'decimals' , 18 ) # Split file name and extension fname , fext = os . path . splitext ( file_name ) # Enumerate file name only if we are working with multiple surfaces numerate_file = True if len ( surface ) > 1 else False for idx , s in enumerate ( surface ) : if s . rational : pts = s . ctrlptsw else : pts = compatibility . combine_ctrlpts_weights ( s . ctrlpts ) line = str ( s . dimension ) + "\n" line += str ( s . degree_u ) + " " + str ( s . degree_v ) + "\n" line += str ( s . ctrlpts_size_u ) + " " + str ( s . ctrlpts_size_v ) + "\n" line += " " . join ( [ ( "{:." + str ( decimals ) + "f}" ) . format ( k ) for k in s . knotvector_u ] ) + "\n" line += " " . join ( [ ( "{:." + str ( decimals ) + "f}" ) . format ( k ) for k in s . knotvector_v ] ) + "\n" # Flip control points ctrlptsw = compatibility . flip_ctrlpts ( pts , s . ctrlpts_size_u , s . ctrlpts_size_v ) # Convert control points into (x, y, z, w) format ctrlptsw = compatibility . generate_ctrlpts_weights ( ctrlptsw ) for ptw in ctrlptsw : line += " " . join ( [ ( "{:." + str ( decimals ) + "f}" ) . format ( p ) for p in ptw ] ) + "\n" # Open or closed? line += "1\n" # Write to file fname_curr = fname + "." + str ( idx + 1 ) if numerate_file else fname exch . write_file ( fname_curr + fext , line )