–>select folder , it will scan all other subfolders as well,
–>for purge it will ask you select options which will be applied to all others too.
import rhinoscriptsyntax as rs
import os
import glob
# Open a dialog to choose a folder
folder = rs.BrowseForFolder(message="Select a folder")
# Open a log file
with open(os.path.join(folder, "log.txt"), "w") as log_file:
# Check if a folder was selected
if folder:
# Get a list of all Rhino files in the folder and subfolders
files = [os.path.join(dirpath, file) for dirpath, dirnames, files in os.walk(folder) for file in files if file.endswith(".3dm")]
# Sort the files by modified date in descending order
files.sort(key=os.path.getmtime, reverse=True)
# Loop through each file
for file in files:
# Open the file
rs.Command("_-Open " + '"' + file + '"' + " _Enter", True)
# Get the current file path
current_path = rs.DocumentPath()
# Check if the document has a path
if current_path:
# Get all viewports
viewports = rs.ViewNames()
# Set all viewports to wireframe
for viewport in viewports:
rs.ViewDisplayMode(viewport, mode="Wireframe")
# Purge unused items
rs.Command("_-Purge _Enter", True)
# Save the document using the "Save Small" command
rs.Command("_-SaveSmall " + '"' + current_path + '"' + " _Enter _Enter", True)
# Write to the log file
log_file.write("Saved file: " + current_path + "\n")
# Open a new document
rs.Command("_-New _None _Enter", True)
posting more scripts soon.