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