def export_3dpdf(
    client,
    file_=None,
    filename=None,
    dirname=None,
    height=None,
    width=None,
    dpi=None,
    use_drawing_settings=None,
    sheet_range="all",
):
    """Export a model to a 3D PDF file.

    Args:
        client (obj):
            creopyson Client.
        `file_` (str, optional):
            Model name. Defaults is current active model.
        filename (str, optional):
            Destination file name. May also contain a path to the file.
            Defaults is the model name with the appropriate file extension,
            in Creo's working directory.
        dirname (str, optional):
            Destination directory. Defaults is Creo's current
            working directory.
        height (float, optional):
            PDF image height. Defaults is Creo default export height.
        width (float, optional):
            PDF image width. Defaults is Creo default export width.
        dpi (int, optional):
            PDF Image DPI. Default is Creo default export DPI.
        use_drawing_settings (boolean, optional):
            Whether to use special settings for exporting drawings.
            Defaut is False.
        sheet_range (string):
            Range of drawing sheets to export. Default vale is "all".
            Valid values: "all", "current", range of sheet numbers (ex: "1,3-4")

    Returns:
        dict:
            dirname (str): Directory of the output file
            filename (str): Name of the output file

    """
    data = {"sheet_range": sheet_range}
    if file_ is not None:
        data["file"] = file_
    else:
        active_file = client.file_get_active()
        if active_file:
            data["file"] = active_file["file"]
    if filename is not None:
        data["filename"] = filename
    if dirname is not None:
        data["dirname"] = dirname
    if height is not None:
        data["height"] = height
    if width is not None:
        data["width"] = width
    if dpi is not None:
        data["dpi"] = dpi
    if use_drawing_settings is not None:
        data["use_drawing_settings"] = use_drawing_settings
    return client._creoson_post("interface", "export_3dpdf", data)