3
3
import os
4
4
import math
5
5
import tempfile
6
+ from collections import defaultdict
6
7
from pyrevit import revit , forms , script , DB , HOST_APP
7
8
8
9
output = script .get_output ()
15
16
save_as_options = DB .SaveAsOptions ()
16
17
save_as_options .OverwriteExistingFile = True
17
18
19
+
18
20
def convert_size (size_bytes ):
19
21
if not size_bytes :
20
22
return "N/A"
@@ -75,7 +77,7 @@ def print_sorted(families, group_by):
75
77
key = lambda fam_item : fam_item .get (sort_by ),
76
78
reverse = False
77
79
)
78
-
80
+
79
81
for fam_item in sorted_families :
80
82
group_by_value = fam_item [group_by ]
81
83
if group_by_value not in families_grouped :
@@ -86,7 +88,7 @@ def print_sorted(families, group_by):
86
88
if group_by in ["Creator" , "Category" ]:
87
89
output .print_md ("---" )
88
90
output .print_md ("## {}: {}" .format (group_by , group_value ))
89
-
91
+
90
92
# Prepare table data
91
93
table_data = []
92
94
for fam_item in families_grouped [group_value ]:
@@ -100,19 +102,21 @@ def print_sorted(families, group_by):
100
102
else :
101
103
row .append (str (value ))
102
104
table_data .append (row )
103
-
105
+
104
106
# Print table using output.print_table()
105
107
output .print_table (
106
108
table_data ,
107
109
columns = fields_sorted
108
110
)
109
-
111
+
110
112
print_totals (families_grouped [group_value ])
111
113
114
+
112
115
# main logic
113
116
# ask use to choose sort option
114
- sort_by = forms .CommandSwitchWindow .show (FIELDS ,
115
- message = 'Sorting options:' ,
117
+ sort_by = forms .CommandSwitchWindow .show (
118
+ FIELDS ,
119
+ message = "Sorting options:" ,
116
120
)
117
121
if not sort_by :
118
122
script .exit ()
@@ -131,12 +135,6 @@ def print_sorted(families, group_by):
131
135
.ToElements ()
132
136
133
137
# Create a dictionary to count instances per family
134
- family_instance_counts = {}
135
- for instance in all_family_instances :
136
- try :
137
- if instance .Symbol :
138
- family_name = instance .Symbol .Family .Name
139
- family_instance_counts [family_name ] = \
140
138
family_instance_counts = defaultdict (int )
141
139
for instance in all_family_instances :
142
140
try :
@@ -172,10 +170,10 @@ def print_sorted(families, group_by):
172
170
fam .Id ).Creator
173
171
if fam_path and os .path .exists (fam_path ):
174
172
fam_size = os .path .getsize (fam_path )
175
-
173
+
176
174
# Get instance count for this family
177
175
fam_count = family_instance_counts .get (fam .Name , 0 )
178
-
176
+
179
177
all_family_items .append ({"Size" : fam_size ,
180
178
"Creator" : fam_creator ,
181
179
"Category" : fam_category ,
0 commit comments