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!!

Top comments (0)