Obtains ownership for the current user of as many specified worksets as possible.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.3.0.0 (25.3.0.0)
Syntax
C#
public static ICollection<WorksetId> CheckoutWorksets( Document document, ICollection<WorksetId> worksetsToCheckout )
Parameters
- document Document
- The document containing the worksets.
- worksetsToCheckout ICollection<WorksetId>
- The ids of the worksets to attempt to check out.
Return Value
ICollection<WorksetId>The ids of all specified worksets that are now owned, including all that were owned prior to the function call.
Exceptions
Exception | Condition |
---|---|
ArgumentException | document is not a workshared document. -or- document is not a primary document, it is a linked document. -or- document is read-only: It cannot be modified. -or- document has an open editing transaction and is accepting changes. -or- There are one or more ids with no corresponding workset. -or- Saving is not allowed in the current application mode. |
ArgumentNullException | A non-optional argument was null |
CentralFileCommunicationException | The file-based central model could not be reached, e.g. the network is down or the file server is down. |
CentralModelAccessDeniedException | Access to the central model was denied due to lack of access privileges. -or- Access to the central model was denied. A possible reason is because the model was under maintenance. |
CentralModelContentionException | The central model are locked by another client. |
CentralModelException | The central model is overwritten by other user. -or- The central model is missing. -or- An internal error happened on the central model, please contact the server administrator. |
CentralModelVersionArchivedException | Last central version merged into the local model has been archived in the central model. This exception could only be thrown from cloud models. |
InvalidOperationException | Operation is not permitted when there is any open sub-transaction, transaction, or transaction group. |
RevitServerCommunicationException | The server-based central model could not be accessed because of a network communication error. |
RevitServerInternalException | An internal error happened on the server, please contact the server administrator. |
Remarks
For best performance, check out all worksets in one big call, rather than many small calls.
When there comes a contention error when locking the central model, this API would wait and retry endlessly until getting the lock of the central model.
Example
C#
void CheckoutAllViewWorksets(Document doc) { FilteredWorksetCollector collector = new FilteredWorksetCollector(doc); // find all view worksets collector.OfKind(WorksetKind.ViewWorkset); ICollection<WorksetId> viewworksets = collector.ToWorksetIds(); ICollection<WorksetId> checkoutworksets = WorksharingUtils.CheckoutWorksets(doc, viewworksets); TaskDialog.Show("Checked out worksets", "Number of worksets checked out: " + checkoutworksets.Count); }
VB
Private Sub CheckoutAllViewWorksets(doc As Document) Dim collector As New FilteredWorksetCollector(doc) ' find all view worksets collector.OfKind(WorksetKind.ViewWorkset) Dim viewworksets As ICollection(Of WorksetId) = collector.ToWorksetIds() Dim checkoutworksets As ICollection(Of WorksetId) = WorksharingUtils.CheckoutWorksets(doc, viewworksets) TaskDialog.Show("Checked out worksets", "Number of worksets checked out: " + checkoutworksets.Count) End Sub