Hey guys,
Today I noticed my startup script (hook when doc is opened) isn’t working anymore. Perhaps things have changed and I never noticed until now …
I even tried moving things from py2.7 to py3 … but nothing is triggered.
(folder structure: myextension.extension / hooks / doc-opened.py)
import os
import re
from pyrevit.forms import alert
from pyrevit import revit, DB, HOST_APP, script
from pyrevit import EXEC_PARAMS
def clean_filename(file_path):
filename = os.path.basename(file_path)
filename_no_ext = os.path.splitext(filename)[0]
cleaned_name = re.sub(r"_(?!r\d+$)[^_]+$", "", filename_no_ext)
return cleaned_name + ".rvt"
def starts_with_four_digits(s):
return re.match(r'^\d{4}', s) is not None
def checkfilename(doc):
if not HOST_APP.is_newer_than(2021):
script.exit()
if doc.IsFamilyDocument:
script.exit()
try:
ProjectInformations = list(DB.FilteredElementCollector(revit.doc).OfCategory(DB.BuiltInCategory.OST_ProjectInformation))
current_pi = ProjectInformations[-1]
s_blad_bestandsnaam = current_pi.LookupParameter("s_blad_bestandsnaam")
print(s_blad_bestandsnaam) # Fixed
if not s_blad_bestandsnaam:
script.exit()
bestandsnaam_huidig = s_blad_bestandsnaam.AsString()
bestandsnaam = clean_filename(revit.doc.PathName)
print(bestandsnaam) # Fixed
if not starts_with_four_digits(bestandsnaam):
script.exit()
param_mapping = {
"s_project_nummer": "Project Number",
"s_project_naam": "Project Name",
"s_project_locatie": "Project Address",
"s_opdrachtgever_naam": "Client Name"
}
with revit.Transaction("s_blad_bestandsnaam aanpassen"):
for source_name, target_name in param_mapping.items(): # Fixed
source_param = current_pi.LookupParameter(source_name)
target_param = current_pi.LookupParameter(target_name)
try:
s_blad_bestandsnaam.Set(bestandsnaam)
if source_param and target_param:
if source_param.StorageType == DB.StorageType.String:
target_param.Set(source_param.AsString())
elif source_param.StorageType == DB.StorageType.Integer:
target_param.Set(source_param.AsInteger())
elif source_param.StorageType == DB.StorageType.Double:
target_param.Set(source_param.AsDouble())
elif source_param.StorageType == DB.StorageType.ElementId:
target_param.Set(source_param.AsElementId())
else:
print('error') # Fixed
except Exception as e:
print(e) # Fixed
if bestandsnaam_huidig != bestandsnaam:
alert("Projectparameter \"bestandsnaam\" aangepast van \"{}\" naar \"{}\".".format(bestandsnaam_huidig, bestandsnaam))
except Exception as e:
print("Error: {}".format(e)) # Fixed
script.exit()
if __name__ == "__main__":
doc = EXEC_PARAMS.event_args.Document
print(doc) # Fixed
if not isinstance(doc, DB.Document):
script.exit()
checkfilename(doc)