@@ -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 {}\t 1\t {}\r \n " .format (
193+ text += "PARAM\t {}\t {}\t {}\t {} \t {}\t {}\t {}\t 1\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