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; }