我在使用中央文件模型和两台不同计算机上的两个本地文件时遇到问题。当我在一台机器上添加一个元素,进行同步,然后在另一台机器上重新加载时,API不会在DocumentChanged事件中看到这个新添加的元素。
这是代码:
private void DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
{
switch(e.Operation.ToString())
{
case "TransactionUndone":
case "TransactionRedone":
case "TransactionCommitted":
this.transactionEventHandler.HandleEvent(sender, e, this.persistance, this.elementMutationHandler);
break;
}
}
在此代码之后我立即执行此操作:
ICollection<ElementId> deletedElements = e.GetDeletedElementIds();
ICollection<ElementId> changedElements = e.GetModifiedElementIds();
ICollection<ElementId> addedElements = e.GetAddedElementIds();
问题在于,对于已删除的元素,这可以完美地工作(在重新加载之后),但是对于已修改和添加的元素,这不起作用。
在本地文件中添加或修改元素时,代码可以正常工作,但这不是我需要的。我需要处理来自将这些更改同步到中心文件的其他用户的已修改和添加的元素。
有人知道我做错了什么,或者还有其他方法可以做到这一点吗?
答案 0 :(得分:0)
我认为您需要添加 Attribute
[Regeneration(RegenerationOption.Automatic)]