DEV Community

Cover image for A Gathering of revit files
Symon  Kipkemei
Symon Kipkemei

Posted on

A Gathering of revit files

Problem

I wanted to update my Revit template based on all the Revit projects I have done previously in the past.

The challenge I encountered was that the Revit files were scattered in several folders of sub folders of subfolders. Retrieving them would be a lot harder and a tedious work.

Besides that, Some Revit files are back-up files that are currently consuming unnecessary storage space. Filtering through to get the latest native Revit files would be a lot harder.

Below is a script that I developed that would assist gather all Revit files in a project directory

Scripting process

Import pathlib module

import pathlib
Enter fullscreen mode Exit fullscreen mode

Establish the project directory. In this case a project directory is the root folder for all your architectural projects

# path to my desktop
start_path = "/mnt/d/New folder"
start_path_obj = pathlib.Path(start_path)
Enter fullscreen mode Exit fullscreen mode

Create a new directory where you would like to store your revit files

# create new folder
new_path = pathlib.Path(f"{start_path}/Revit-bastards")
new_path.mkdir(exist_ok=True )
Enter fullscreen mode Exit fullscreen mode

Defining a function that would establish if a file is a revit file, if it is a revit file will be moved to a new directory/ folder specified above

def check_move_files(path,new_path) -> None:
    """check if file is  png it then moves to a separate folder

    Args:
        path (Path): path of the current folder/file/directory

    """

    if path.suffix == ".rvt" or path.suffix == ".txt":
        # create a new path for the level_1 
       new_filepath = new_path.joinpath(path.name)

       #move files
       path.replace(new_filepath)

Enter fullscreen mode Exit fullscreen mode

We can start scanning across for the revit files,incase we encounter a folder, we will open the folder and check for the revit files level 1....level 2....level 3

We can scan for files until the script is done.

# starting level
for level_1 in start_path_obj.iterdir():
    if level_1.is_file():
        check_move_files(level_1,new_path)

    # level 1
    else:
        level_1_path = start_path_obj.joinpath(level_1)
        for level_2 in level_1_path.iterdir():
            if level_2.is_file():
                check_move_files(level_2,new_path)
            #level 2
            else:
                level_2_path = level_1_path.joinpath(level_2)
                for level_3 in level_2_path.iterdir():
                    if level_2.is_file():
                        check_move_files(level_3,new_path)
Enter fullscreen mode Exit fullscreen mode

To check the full script, checkout :
https://github.com/symonkipkemei/mover

if you encounter any challenges, feel free to leave an issue:
https://github.com/symonkipkemei/mover/issues

Thank you!!

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay