Autodesk.Revit.DB.DuplicateTypeNamesHandlerArgs是Revit API中的一个类。它用于处理Revit中出现类型重名的情况。
Document
:获取当前文档对象。
OriginalTypeName
:获取类型名称的原名。
ProposedTypeName
:获取提议的新类型名称。
Duplicate()
: 将ProposedTypeName改为唯一名称。以下示例为将类型的名称改为唯一的名称:
public Autodesk.Revit.DB.ElementType DuplicateTypeNamesHandler(DuplicateTypeNamesHandlerArgs args)
{
args.ProposedTypeName = args.OriginalTypeName + "_" + DateTime.Now.ToString("yyyyMMddHHmmss");
args.Duplicate();
return args.Document.GetElement(args.ProposedTypeName)?.GetTypeId()?.GetElementType();
}
在此示例中,我们向上下文中添加了时间戳并附加到类型名称中。如果类型重名,我们使用Duplicate()
方法来更改ProposedTypeName的名称,以确保它是唯一的。
DuplicateTypeNamesHandlerArgs
只能在实例化时使用。该类使用文档上下文和名称作为参数。在对类型重命名时,您可以使用此类,减少对其它元素的干扰。
避免使用过于复杂的逻辑,否则在重名类型的复制期间可能会出现进一步的命名重名。
在Regeneration阶段之前,不允许删除类型。这样可以避免在显式事务中回滚两个事务之间的更改。这也是Revit API中的一般规则。