ワークセットは、Revit ドキュメントの 要素のセットをサブセットに分割してワークシェアリングする方法です。1 つのドキュメントに 1 つまたは複数のワークセットがある場合があります。
ドキュメントには、そのドキュメントに含まれるすべてのワークセットに対する参照を含むテーブルである WorksetTable が含まれます。各ドキュメントには 1 つの WorksetTable があります。ドキュメントでワークシェアリングが有効になっていない場合でも、少なくとも 1 つの既定のワークセットがテーブルに存在します。Document.IsWorkshared プロパティを使用して、ドキュメントでワークシェアリングが有効になっているかを判断できます。
コード領域: アクティブなワークセットを取得 |
public Workset GetActiveWorkset(Document doc) { // Get the workset table from the document WorksetTable worksetTable = doc.GetWorksetTable(); // Get the Id of the active workset WorksetId activeId = worksetTable.GetActiveWorksetId(); // Find the workset with that Id Workset workset = worksetTable.GetWorkset(activeId); return workset; } |
コード領域: ワークセットのフィルタリング |
public void GetWorksetsInfo(Document doc) { String message = String.Empty; // Enumerating worksets in a document and getting basic information for each FilteredWorksetCollector collector = new FilteredWorksetCollector(doc); // find all user worksets collector.OfKind(WorksetKind.UserWorkset); IList<Workset> worksets = collector.ToWorksets(); // get information for each workset int count = 3; // show info for 3 worksets only foreach (Workset workset in worksets) { message += "Workset : " + workset.Name; message += "\nUnique Id : " + workset.UniqueId; message += "\nOwner : " + workset.Owner; message += "\nKind : " + workset.Kind; message += "\nIs default : " + workset.IsDefaultWorkset; message += "\nIs editable : " + workset.IsEditable; message += "\nIs open : " + workset.IsOpen; message += "\nIs visible by default : " + workset.IsVisibleByDefault; TaskDialog.Show("GetWorksetsInfo", message); if (0 == --count) break; } } |
前の例で示すように、Workset クラスは、所有者やワークセットが編集可能かどうかなど、指定のワークセットについての情報を取得するための多くのプロパティを提供します。