Skip to content

Commit 4604452

Browse files
author
Michael Warwick
committed
Added family type category to shared parameter export (only when run in a family document)
1 parent d408713 commit 4604452

1 file changed

Lines changed: 41 additions & 5 deletions

File tree

  • pyRevit/pyMAW.extension/pyMAW.tab/Notepad++.panel/lib

pyRevit/pyMAW.extension/pyMAW.tab/Notepad++.panel/lib/Notepadpp.py

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,13 @@ def Export(file=""):
137137
forms.check_familydoc(exitscript=True)
138138
currentGroup = ""
139139
groupHeader = ";; " + "-" * 25 + "\r\n;;{:^25}\r\n;; " + "-" * 25 + "\r\n\r\n"
140-
groupNameFixes = [("PG_",""),("_"," "),("GEOMETRY","DIMENSIONS"),("TITLE","TITLE TEXT"),("MATERIALS","MATERIALS AND FINISHES")]
140+
groupNameFixes = [
141+
("PG_", ""),
142+
("_", " "),
143+
("GEOMETRY", "DIMENSIONS"),
144+
("TITLE", "TITLE TEXT"),
145+
("MATERIALS", "MATERIALS AND FINISHES"),
146+
]
141147
for fp in get_parameters():
142148
if fp["Group"] != currentGroup:
143149
groupName = str(fp["Group"]).upper()
@@ -146,8 +152,11 @@ def Export(file=""):
146152
text += groupHeader.format(groupName)
147153
currentGroup = fp["Group"]
148154
text += "[{}] {}\r\n".format(fp["Name"], str(fp["Type"]).upper())
149-
text += "; {}\r\n".format(fp["Description"]) if fp["Description"] != "" else ""
155+
text += (
156+
"; {}\r\n".format(fp["Description"]) if fp["Description"] != "" else ""
157+
)
150158
text += "{}\r\n".format(fp["Formula"]) if fp["Formula"] != "" else ""
159+
text += "{}\r\n".format(fp["Value"]) if fp["Value"] != "" else ""
151160
text += "\r\n"
152161
syntax = "-llisp"
153162
elif file == "sharedparams":
@@ -181,10 +190,11 @@ def Export(file=""):
181190
sorted(elements, key=lambda sp: sp["Name"].lower()),
182191
key=lambda e: e["Group"],
183192
):
184-
text += "PARAM\t{}\t{}\t{}\t\t{}\t{}\t{}\t1\t{}\r\n".format(
193+
text += "PARAM\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t1\t{}\r\n".format(
185194
sp["GUID"],
186195
sp["Name"],
187196
str(sp["Type"]).upper(),
197+
sp["Category"],
188198
groups[sp["Group"]],
189199
1 if sp["Visible"] else 0,
190200
sp["Description"],
@@ -324,6 +334,7 @@ def get_parameters():
324334
sharedparamfile = get_filesharedparameters()
325335
fm = revit.doc.FamilyManager
326336
params = []
337+
currentType = fm.CurrentType
327338

328339
for pr in fm.GetParameters():
329340
pr_def = pr.Definition
@@ -335,6 +346,12 @@ def get_parameters():
335346
pr_type = pr_def.ParameterType
336347
if str(pr_type) == "Invalid":
337348
pr_type = "Built-in"
349+
if str(pr.StorageType) == "ElementId":
350+
ele = revit.doc.GetElement(currentType.AsElementId(pr))
351+
pr_value = str(ele.Category.Name) if ele else ""
352+
#if str(pr_type).upper() == "FAMILYTYPE" else "no"
353+
else:
354+
pr_value = ""
338355
params.append(
339356
{
340357
"Name": pr_def.Name,
@@ -344,8 +361,9 @@ def get_parameters():
344361
"Type": pr_type,
345362
"isShared": pr.IsShared,
346363
"GUID": pr_GUID,
347-
"Description": sharedparamfile[pr_GUID],
364+
"Description": try_or(lambda: sharedparamfile[pr_GUID], ""),
348365
"Parameter": pr,
366+
"Value": pr_value,
349367
}
350368
)
351369
return params
@@ -377,6 +395,22 @@ def get_sharedparameters():
377395
doc = revit.doc
378396
sharedparams = []
379397

398+
# get parameter categories for FAMILYTYPE parameters
399+
pr_FamilyTypes = {}
400+
if doc.IsFamilyDocument:
401+
fm = doc.FamilyManager
402+
currentType = fm.CurrentType
403+
for pr in fm.GetParameters():
404+
if str(pr.StorageType) == "ElementId":
405+
if HOST_APP.is_newer_than(2022):
406+
t = pr.Definition.GetDataType()
407+
pr_type = DB.LabelUtils.GetLabelForSpec(t).replace("/", "")
408+
else:
409+
pr_type = pr.Definition.ParameterType
410+
if str(pr_type).upper() == "FAMILYTYPE":
411+
ele = doc.GetElement(currentType.AsElementId(pr))
412+
pr_FamilyTypes[pr.Definition.Name] = str(ele.Category.Id) if ele else ""
413+
380414
sp_collector = (
381415
DB.FilteredElementCollector(doc)
382416
.WhereElementIsNotElementType()
@@ -390,6 +424,7 @@ def get_sharedparameters():
390424
sp_type = DB.LabelUtils.GetLabelForSpec(t).replace("/", "")
391425
else:
392426
sp_type = sp_def.ParameterType
427+
sp_category = pr_FamilyTypes.get(sp.Name, "")
393428
sharedparams.append(
394429
{
395430
"Name": sp.Name,
@@ -403,7 +438,8 @@ def get_sharedparameters():
403438
.replace("_", " ")
404439
.title(),
405440
"Type": sp_type,
406-
"Description": sharedparamfile[sp.GuidValue or ""],
441+
"Category": sp_category,
442+
"Description": sharedparamfile.get(sp.GuidValue, ""),
407443
"Visible": sp_def.Visible,
408444
"HideWhenNoValue": sp.ShouldHideWhenNoValue(),
409445
}

0 commit comments

Comments
 (0)