Skip to content

Commit 55d2f6b

Browse files
authored
Update selection.py
Improved bug fix.
1 parent 978edc0 commit 55d2f6b

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

pyrevitlib/pyrevit/revit/selection.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,18 @@ def _pick_obj(obj_type, message, multiple=False, world=False, selection_filter=N
183183
else:
184184
return_values = [ref.UVPoint for ref in refs]
185185
else:
186-
return_values = [
187-
DOCS.doc.GetElement(ref).GetGeometryObjectFromReference(ref)
188-
if not isinstance(DOCS.doc.GetElement(ref), DB.RevitLinkInstance)
189-
else DOCS.doc.GetElement(ref.ElementId)
190-
.GetLinkDocument()
191-
.GetElement(ref.LinkedElementId)
192-
for ref in refs
193-
]
186+
return_values = []
187+
for ref in refs:
188+
element = DOCS.doc.GetElement(ref) # Cache to avoid 3x calls
189+
if obj_type == UI.Selection.ObjectType.LinkedElement and isinstance(element, DB.RevitLinkInstance):
190+
link_doc = element.GetLinkDocument()
191+
if link_doc and ref.LinkedElementId != DB.ElementId.InvalidElementId:
192+
return_values.append(link_doc.GetElement(ref.LinkedElementId))
193+
else:
194+
mlogger.debug("Skipping unloaded link or invalid reference: %s", ref)
195+
return_values.append(None)
196+
else:
197+
return_values.append(element.GetGeometryObjectFromReference(ref))
194198

195199
mlogger.debug("Processed return elements are: %s", return_values)
196200

0 commit comments

Comments
 (0)