Options to customize Revit behavior when accessing the central model.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 23.0.0.0 (23.1.0.0)
Since:
2014
Syntax
C# |
---|
public class TransactWithCentralOptions : IDisposable |
Visual Basic |
---|
Public Class TransactWithCentralOptions _ Implements IDisposable |
Visual C++ |
---|
public ref class TransactWithCentralOptions : IDisposable |
Examples

public static void SynchWithCentralWithMessage(Document doc) { // Checkout workset (for use with "keep checked out worksets" option later) FilteredWorksetCollector fwc = new FilteredWorksetCollector(doc); fwc.OfKind(WorksetKind.UserWorkset); Workset workset1 = fwc.First<Workset>(ws => ws.Name == "Workset1"); WorksharingUtils.CheckoutWorksets(doc, new WorksetId[] { workset1.Id }); // Make a change using (Transaction t = new Transaction(doc, "Add Level")) { t.Start(); Level.Create(doc, 100); t.Commit(); } // Tell user what we're doing TaskDialog td = new TaskDialog("Alert"); td.MainInstruction = "Application 'Automatic element creator' has made changes and is prepared to synchronize with central."; td.MainContent = "This will update central with all changes currently made in the project by the application or by the user. This operation " + "may take some time depending on the number of changes made by the app and by the user."; td.AddCommandLink(TaskDialogCommandLinkId.CommandLink1, "Do not synchronize at this time."); td.AddCommandLink(TaskDialogCommandLinkId.CommandLink2, "Synchronize and relinquish all elements."); td.AddCommandLink(TaskDialogCommandLinkId.CommandLink3, "Synchronize but keep checked out worksets."); td.DefaultButton = TaskDialogResult.CommandLink1; TaskDialogResult result = td.Show(); switch (result) { case TaskDialogResult.CommandLink1: default: { // Do not synch. Nothing to do. break; } case TaskDialogResult.CommandLink2: case TaskDialogResult.CommandLink3: { // Prepare to synch // TransactWithCentralOptions has to do with the behavior related to locked or busy central models. // We'll use the default behavior. TransactWithCentralOptions twcOpts = new TransactWithCentralOptions(); // Setup synch-with-central options (add a comment about our change) SynchronizeWithCentralOptions swcOpts = new SynchronizeWithCentralOptions(); swcOpts.Comment = "Synchronized by 'Automatic element creator' with user acceptance."; if (result == TaskDialogResult.CommandLink3) { // Setup relinquish options to keep user worksets checked out RelinquishOptions rOptions = new RelinquishOptions(true); rOptions.UserWorksets = false; swcOpts.SetRelinquishOptions(rOptions); } doc.SynchronizeWithCentral(twcOpts, swcOpts); break; } } }

Public Shared Sub SynchWithCentralWithMessage(doc As Document) ' Checkout workset (for use with "keep checked out worksets" option later) Dim fwc As New FilteredWorksetCollector(doc) fwc.OfKind(WorksetKind.UserWorkset) Dim workset1 As Workset = fwc.First(Function(ws) ws.Name = "Workset1") WorksharingUtils.CheckoutWorksets(doc, New WorksetId() {workset1.Id}) ' Make a change Using t As New Transaction(doc, "Add Level") t.Start() Level.Create(doc, 100) t.Commit() End Using ' Tell user what we're doing Dim td As New TaskDialog("Alert") td.MainInstruction = "Application 'Automatic element creator' has made changes and is prepared to synchronize with central." td.MainContent = "This will update central with all changes currently made in the project by the application or by the user. This operation " + "may take some time depending on the number of changes made by the app and by the user." td.AddCommandLink(TaskDialogCommandLinkId.CommandLink1, "Do not synchronize at this time.") td.AddCommandLink(TaskDialogCommandLinkId.CommandLink2, "Synchronize and relinquish all elements.") td.AddCommandLink(TaskDialogCommandLinkId.CommandLink3, "Synchronize but keep checked out worksets.") td.DefaultButton = TaskDialogResult.CommandLink1 Dim result As TaskDialogResult = td.Show() Select Case result Case TaskDialogResult.CommandLink1 If True Then ' Do not synch. Nothing to do. Exit Select End If Case TaskDialogResult.CommandLink2, TaskDialogResult.CommandLink3 If True Then ' Prepare to synch ' TransactWithCentralOptions has to do with the behavior related to locked or busy central models. ' We'll use the default behavior. Dim twcOpts As New TransactWithCentralOptions() ' Setup synch-with-central options (add a comment about our change) Dim swcOpts As New SynchronizeWithCentralOptions() swcOpts.Comment = "Synchronized by 'Automatic element creator' with user acceptance." If result = TaskDialogResult.CommandLink3 Then ' Setup relinquish options to keep user worksets checked out Dim rOptions As New RelinquishOptions(True) rOptions.UserWorksets = False swcOpts.SetRelinquishOptions(rOptions) End If doc.SynchronizeWithCentral(twcOpts, swcOpts) Exit Select End If End Select End Sub
Inheritance Hierarchy
System..::..Object
Autodesk.Revit.DB..::..TransactWithCentralOptions
Autodesk.Revit.DB..::..TransactWithCentralOptions