ワークセット

ワークセット

ワークセットは、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;
}
Workset クラスは要素から派生していないため、一連のワークセットから検索、フィルタ、反復を行うには、FilteredWorksetCollector を使用します。条件を割り当てて返されたワークセットをフィルタすることができます。条件が適用されていない場合、このフィルタは、ドキュメントのすべてのワークセットにアクセスします。WorksetKind 列挙子は、次の例に示すようにワークセットのフィルタリングに便利です。WorksetKind は、ワークセットの次のサブディビジョンを指定します。
  • User - ユーザ管理による 3D インスタンス要素のワークセット
  • Family - ファミリ記号とファミリを保持
  • Standard - システム ファミリ タイプを含むプロジェクト標準を持つ
  • Other - 通常はアプリケーションとして考慮されない、内部仕様のワークセット
  • View - ビューとビュー固有の要素を持つ

コード領域: ワークセットのフィルタリング

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 クラスは、所有者やワークセットが編集可能かどうかなど、指定のワークセットについての情報を取得するための多くのプロパティを提供します。