Hello,
I am trying to hide elements from a linked model by selection. This is in case we are not owners of the linked model and hence cannot assign parameters inside the linked model. In this particular case, there is no parameter that I can use to filter elements and have to resort to manually hiding elements. This is related to showing the sequence of construction. The error I am receiving is this:
**One of the elements cannot be hidden. **
Parameter name: elementIdSet
Code Below:
doc = revit.doc
uidoc = revit.uidoc
class CustomISelectionFilter(ISelectionFilter):
def __init__(self, category_name, document):
self.category_name = category_name
self.document = document
def AllowElement(self, element):
some_type = self.document.GetElement(element.GetTypeId())
type_name = some_type.FamilyName
if type_name == "Linked Revit Model":
return True
else:
if element.Category.Name == self.category_name:
return True
else:
return False
def AllowReference(self, ref, point):
element = self.document.GetElement(ref)
some_type = revit.doc.GetElement(element.GetTypeId())
type_name = some_type.FamilyName
if type_name == "Linked Revit Model":
li = clr.Convert(element, type(element))
linked_document = li.GetLinkDocument()
element = linked_document.GetElement(ref.LinkedElementId)
if element.Category.Name == self.category_name:
return True
else:
return False
def HideElements(view, elements):
elsids_can_be_hidden = []
for i in elements:
elsids_can_be_hidden.append(i.LinkedElementId)
clist_ids = List[DB.ElementId](elsids_can_be_hidden)
view.HideElements(clist_ids)
return None
with forms.WarningBar(title="Pick elements in linked model"):
wall_collector_link=uidoc.Selection.PickObjects(ObjectType.LinkedElement,CustomISelectionFilter("Structural Framing", doc))
listoflinkedelemeid = []
for i in wall_collector_link:
listoflinkedelemeid.append(i.LinkedElementId)
try:
mylist = List[DB.ElementId](listoflinkedelemeid)
activeView = revit.uidoc.ActiveGraphicalView
activeView.HideElements(mylist)
except Exception as e:
print (e)