revit-apirevit

Unable to hide element category in a view in Revit file


I want to hide certain elements in the view. I managed to hid (with view..HideCategoryTemporary) all the elements I wanted except the marked one in the picture attached. 3D_House_before_hide

Element snoop This element is a building section of category OST_Viewers. Manually hiding the element category via the view works, but fetching all OST_Viewers in the code and hiding them does not work.

The following code contain the building section elements in addition to the grids,

FilteredElementCollector viewers_sections = new FilteredElementCollector(doc, v_id).OfCategory(BuiltInCategory.OST_Viewers);
FilteredElementCollector grids = new FilteredElementCollector(doc, v_id).OfCategory(BuiltInCategory.OST_Grids);

FilteredElementCollector elements_to_be_hidden = new FilteredElementCollector(doc, v_id);
elements_to_be_hidden.UnionWith(viewers_sections).UnionWith(grids)

foreach (Element e in elements_to_be_hidden)
{
     cur_view.HideCategoryTemporary(e.Category.Id);
}

I've checked that viewers_sections contains the mentioned building sections however it is not hidden from the view. After hide

How do I hide these building sections?


Solution

  • Please use View#SetCategoryHidden instead to turn off the visibility of the category, the result of the View#HideCategoryTemporary will be reset after closing the file. Here is the working example:

    var gridCate = this.Document.Settings.Categories.get_Item(BuiltInCategory.OST_Grids);
    var sectionsCate = this.Document.Settings.Categories.get_Item(BuiltInCategory.OST_Sections);
    
    using(var trans = new Transaction(this.Document))
    {
        trans.Start("Hide Grids & Secions");
        this.ActiveView.SetCategoryHidden(gridCate.Id, true);
        this.ActiveView.SetCategoryHidden(sectionsCate.Id, true);
        trans.Commit();
    }