Revit 2023 API C#:如何替换GetWorksetIds获取所有工作集?
在Revit 2023中获取所有工作集替代GetWorksetIds的方法
你在Revit 2023中使用GetWorksetIds方法时出现CS1061错误,是因为该版本的WorksetTable类已移除这个方法。你的原代码如下:
WorksetTable worksetTable = _doc.GetWorksetTable(); newChangeWorkSetComboBox.Items.Clear(); IList<WorksetId> worksetIds = worksetTable.GetWorksetIds(); foreach (WorksetId worksetId in worksetIds) { Workset workset = worksetTable.GetWorkset(worksetId); if (workset != null && !string.IsNullOrEmpty(workset.Name)) { newChangeWorkSetComboBox.Items.Add(workset.Name); } } StackPanel_ChangeWorkSets.Children.Add(newChangeWorkSetComboBox);
错误信息:
Error (active) CS1061 "WorksetTable" does not contain the definition of "GetWorksetIds", and an available extension method "GetWorksetIds" could not be found that accepts the type "WorksetTable" as the first argument (perhaps the using directive or assembly reference was omitted).
替代方案
在Revit 2023中,直接使用WorksetTable.GetWorksets()方法即可获取所有工作集对象的集合,无需先获取ID再逐个查询工作集。修改后的代码如下:
WorksetTable worksetTable = _doc.GetWorksetTable(); newChangeWorkSetComboBox.Items.Clear(); // 直接获取所有Workset对象 IList<Workset> worksets = worksetTable.GetWorksets(); foreach (Workset workset in worksets) { if (workset != null && !string.IsNullOrEmpty(workset.Name)) { newChangeWorkSetComboBox.Items.Add(workset.Name); } } StackPanel_ChangeWorkSets.Children.Add(newChangeWorkSetComboBox);
说明
GetWorksets()方法会返回当前文档中所有工作集的Workset对象列表,直接遍历这个列表就能拿到每个工作集的名称等信息,简化了代码逻辑。- 确保代码引用了正确的Revit API程序集,并且包含必要的命名空间:
using Autodesk.Revit.DB;
内容的提问来源于stack exchange,提问作者zavla
相关产品推荐
相关产品推荐

