using Autodesk.Revit.DB;
using System;
using System.ComponentModel;
namespace Sai.Toolkit.Revit.Helpers;
///
/// 复制元素处理方法
///
///
///
///var options = new CopyPasteOptions();
///options.SetDuplicateTypeNamesHandler(new DuplicateTypeNamesHandler());
///options.SetDuplicateTypeNamesHandler(new DuplicateTypeNamesHandler(() => DuplicateTypeAction.Abort));
///options.SetDuplicateTypeNamesHandler(new DuplicateTypeNamesHandler(DuplicateTypeAction.UseDestinationTypes));
///ElementTransformUtils.CopyElements(source, elementIds, destination, null, options);
///
public class DuplicateTypeNamesHandler : IDuplicateTypeNamesHandler
{
///
/// 创建一个新的处理程序,默认其中包括
///
public DuplicateTypeNamesHandler() => duplicateTypeAction = DuplicateTypeAction.UseDestinationTypes;
///
/// Creates a new handler
///
/// 一个结构,提供关于试图复制名称在目标文件中已经存在的类型的信息。
public DuplicateTypeNamesHandler(DuplicateTypeAction action) => duplicateTypeAction = action;
///
/// Creates a new handler
///
///
/// 封装了在一个结构,提供关于试图复制名称在目标文件中已经存在的类型的信息。
///
public DuplicateTypeNamesHandler(Func actionHandler) => duplicateTypeAction = actionHandler();
private readonly DuplicateTypeAction duplicateTypeAction;
///
/// 当目标文件包含与被复制的类型相同名称的类型时被调用。
///
/// 名称重复的类型的信息
///
/// 要采取的行动:只复制具有唯一名称的类型或取消操作。
///
[EditorBrowsable(EditorBrowsableState.Never)]
public DuplicateTypeAction OnDuplicateTypeNamesFound(DuplicateTypeNamesHandlerArgs args) => duplicateTypeAction;
}