ワークセットは、Revit ドキュメントの 要素のセットをサブセットに分割してワークシェアリングする方法です。1 つのドキュメントに 1 つまたは複数のワークセットがある場合があります。
ドキュメントには、そのドキュメントに含まれるすべてのワークセットに対する参照を含むテーブルである WorksetTable が含まれます。各ドキュメントには 1 つの WorksetTable があります。ドキュメントでワークシェアリングが有効になっていない場合でも、少なくとも 1 つの既定のワークセットがテーブルに存在します。Document.IsWorkshared プロパティを使用して、ドキュメントでワークシェアリングが有効になっているかを判断できます。WorksetTable クラスを使用すると、アクティブなワークセット(下の例を参照)を取得し、SetActiveWorksetId()を呼び出してアクティブなワークセットを設定できます。
|
コード領域: アクティブなワークセットを取得 |
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 クラスは Revit ドキュメントのワークセットを表します。上のワークセットのフィルタリングの例で示すように、Workset クラスは、所有者やワークセットが編集可能かどうかなど、指定のワークセットについての情報を取得するための多くのプロパティを提供します。これらのプロパティは読み取り専用です。既存のワークセットの名前を変更するには、静的メソッド WorksetTable.RenameWorkset()を使用します。
静的 Workset.Create()メソッドを使用すると、指定したドキュメントに名前を指定して新しいワークセットを作成できます。ワークセットはワークシェアリングが有効になっているドキュメントでのみ作成できます。それにはユニークな名前を付ける必要があります。静的メソッド WorksetTable.IsWorksetNameUnique ()は、指定された名前がドキュメント内で一意であることを確認します。次の例では、新しいワークセットを作成する方法を紹介します。
|
コード領域: 新しいワークセットを作成 |
public Workset CreateWorkset(Document document)
{
Workset newWorkset = null;
// Worksets can only be created in a document with worksharing enabled
if (document.IsWorkshared)
{
string worksetName = "New Workset";
// Workset name must not be in use by another workset
if (WorksetTable.IsWorksetNameUnique(document, worksetName))
{
using (Transaction worksetTransaction = new Transaction(document, "Set preview view id"))
{
worksetTransaction.Start();
newWorkset = Workset.Create(document, worksetName);
worksetTransaction.Commit();
}
}
}
return newWorkset;
}
|