Options to customize Revit behavior when accessing the central model.
Namespace:
Autodesk.Revit.DB
Assembly:
RevitAPI
(in RevitAPI.dll) Version: 17.0.0.0 (17.0.484.0)
Since:
2014
Syntax
C# |
---|
|
Visual Basic |
---|
|
Visual C++ |
---|
|
Examples
Copy
C#
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;
}
}
}
Copy
VB.NET
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