1
1
"""Compare instance and type properties between two elements."""
2
- #pylint: disable=import-error,invalid-name,broad-except
2
+ # pylint: disable=import-error,invalid-name,broad-except
3
3
from pyrevit import revit , DB
4
4
from pyrevit import forms
5
5
from pyrevit import script
@@ -106,12 +106,16 @@ def compare_props(src_element, tgt_element):
106
106
title = 'Unique Type Properties'
107
107
)
108
108
109
+
109
110
# main
110
111
# try use selected elements
111
112
selected_elements = revit .get_selection ().elements
112
- if len (selected_elements ) == 1 and forms .alert ("Use selected %s?" % ("view"
113
- if isinstance (selected_elements [0 ], DB .View ) else "element" ),
114
- yes = True , no = True ):
113
+ if len (selected_elements ) == 1 and forms .alert (
114
+ "Use selected %s?"
115
+ % ("view" if isinstance (selected_elements [0 ], DB .View ) else "element" ),
116
+ yes = True ,
117
+ no = True ,
118
+ ):
115
119
source_element = selected_elements [0 ]
116
120
target_type = "Views" if isinstance (source_element , DB .View )\
117
121
else "Elements"
@@ -121,24 +125,35 @@ def compare_props(src_element, tgt_element):
121
125
# some are not selectable in graphical views
122
126
target_type = \
123
127
forms .CommandSwitchWindow .show (
124
- ["Elements" , "Views" ],
128
+ ["Elements" , "Views" , "View Templates" ],
125
129
message = "Pick type of targets:" )
126
130
127
131
# determine source element
128
132
if target_type == "Elements" :
129
- with forms .WarningBar (title = "Pick source object :" ):
130
- source_element = revit .pick_element ()
133
+ with forms .WarningBar (title = "Pick source element :" ):
134
+ source_element = revit .pick_element (message = "Pick source element:" )
131
135
elif target_type == "Views" :
132
136
source_element = \
133
137
forms .select_views (title = "Select Source View" , multiple = False )
138
+ elif target_type == "View Templates" :
139
+ source_element = \
140
+ forms .select_viewtemplates (title = "Select Source View Template" , multiple = False )
134
141
135
142
# grab parameters from source element
136
143
if source_element :
137
144
target_element = None
145
+
146
+ def exclude_source (el ):
147
+ return el .Id != source_element .Id
148
+
138
149
if target_type == "Elements" :
139
- target_element = revit .pick_element (message = "Pick target element:" )
150
+ with forms .WarningBar (title = "Pick target object:" ):
151
+ target_element = revit .pick_element (message = "Pick target element:" )
140
152
elif target_type == "Views" :
141
153
target_element = \
142
- forms .select_views (title = "Select Target View" , multiple = False )
154
+ forms .select_views (title = "Select Target View" , multiple = False , filterfunc = exclude_source )
155
+ elif target_type == "View Templates" :
156
+ target_element = \
157
+ forms .select_viewtemplates (title = "Select Target View Template" , multiple = False , filterfunc = exclude_source )
143
158
if target_element :
144
159
compare_props (source_element , target_element )
0 commit comments