Fixes direction, connectivity and similar issues of the trim curves.

    This function works for surface trim curves consisting of a single curve.

    :param obj: input surface
    :type obj: abstract.Surface

def fix_trim_curves(obj):
    """ Fixes direction, connectivity and similar issues of the trim curves.

    This function works for surface trim curves consisting of a single curve.

    :param obj: input surface
    :type obj: abstract.Surface
    """
    # Validate input
    if obj.pdimension != 2:
        raise GeomdlException("Input geometry must be a surface")

    # Get trims of the surface
    for o in obj:
        trims = o.trims
        if not trims:
            continue

        # Get parameter space bounding box
        parbox = get_par_box(o.domain, True)

        # Check and update trim curves with respect to the underlying surface
        updated_trims = []
        for trim in trims:
            flag, trm = check_trim_curve(trim, parbox)
            if flag:
                if trm:
                    cont = shortcuts.generate_container_curve()
                    cont.add(trm)
                    updated_trims.append(cont)
                else:
                    updated_trims.append(trim)

        # Set updated trims
        obj.trims = updated_trims