Revit 2025 API
Transact |
Options to customize Revit behavior when accessing the central model.

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
The TransactWithCentralOptions type exposes the following members.

Name | Description | |
---|---|---|
![]() | TransactWithCentralOptions | Constructs a new TransactWithCentralOptions. |

Name | Description | |
---|---|---|
![]() | IsValidObject | Specifies whether the .NET object represents a valid Revit entity. |

Name | Description | |
---|---|---|
![]() | Dispose | Releases all resources used by the TransactWithCentralOptions |
![]() | Equals | Determines whether the specified object is equal to the current object. (Inherited from Object) |
![]() | GetHashCode | Serves as the default hash function. (Inherited from Object) |
![]() | GetLockCallback | Gets the callback object that changes Revit's default behavior of endlessly waiting and repeatedly trying to lock a central model. |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object) |
![]() | SetLockCallback | Sets or resets a callback object that would allow an external application to change Revit's default behavior of endlessly waiting and repeatedly trying to lock a central model. |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object) |

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
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also