接口 Autodesk.Revit.DB.Structure.IRebarUpdateServer
定义了一些方法用于处理混凝土加强材料(rebar)的更新。
IList<Document> GetRebarDocuments(UIDocument uiDoc)
返回一个包含所有混凝土加强材料所在文件的列表。
uiDoc
:UIDocument
类型的实例。一个包含 Document
实例的列表,代表当前视图中所有的混凝土加强材料所在的 Document
对象。
bool UpdateRebar(ICollection<ElementId> rebarIds)
更新指定的混凝土加强材料。
rebarIds
:ElementId
类型的实例的集合,代表需要更新的混凝土加强材料的 ID。如果更新成功,则返回 true
;否则返回 false
。
以下示例会首先获取当前视图中所有混凝土加强材料所在的文件,然后将文件逐一打开,选择所有加强材料,最后更新它们。
UIDocument uiDoc = Revit.ActiveUIDocument;
Autodesk.Revit.ApplicationServices.Application app = uiDoc.Application;
// 获取当前视图中所有混凝土加强材料所在的文件
IList<Document> docs = app.GetRebarUpdateServer().GetRebarDocuments(uiDoc);
// 遍历每个文件
foreach (Document doc in docs)
{
// 打开文件并开始事务
using (Transaction t = new Transaction(doc, "Update All Rebars"))
{
t.Start();
// 选择所有混凝土加强材料
FilteredElementCollector collector = new FilteredElementCollector(doc);
ElementCategoryFilter filter = new ElementCategoryFilter(BuiltInCategory.OST_Rebar);
ICollection<ElementId> rebarIds = collector.WherePasses(filter).ToElementIds();
// 更新所有混凝土加强材料
app.GetRebarUpdateServer().UpdateRebar(rebarIds);
t.Commit();
}
}