无法在 Revit 文件的视图中隐藏图元类别

Unable to hide element category in a view in Revit file

我想隐藏视图中的某些元素。 我设法隐藏了(使用 view..HideCategoryTemporary)我想要的所有元素,除了附图中标记的元素。 3D_House_before_hide

Element snoop 此元素是类别 OST_Viewers 的建筑部分。 通过视图手动隐藏元素类别是可行的,但在代码中获取所有 OST_Viewers 并隐藏它们是行不通的。

除了网格之外,以下代码还包含建筑部分元素,

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);
}

我检查过 viewers_sections 包含提到的建筑部分,但它没有隐藏在视图中。 After hide

如何隐藏这些建筑部分?

请使用View#SetCategoryHidden instead to turn off the visibility of the category, the result of the View#HideCategoryTemporary关闭文件后会重置。这是工作示例:

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();
}