using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB.Structure;
namespace DMU开发
{
[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
//可以使用addinmanager调试的DMU
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
ElementCategoryFilter genericmodelFilter = new ElementCategoryFilter(BuiltInCategory.OST_GenericModel);//常规模型过滤器
AddInId addin = commandData.Application.ActiveAddInId;//获取应用程序的GUID值
MyUpdater _updater = new MyUpdater(addin, addin.GetGUID());//创建更新器
//UpdaterRegistry.RegisterUpdater(_updater, true);//应用层级应用
UpdaterRegistry.RegisterUpdater(_updater, doc);//文档级别应用
ChangeType changeTwo = ChangeType.ConcatenateChangeTypes(Element.GetChangeTypeGeometry(), Element.GetChangeTypeElementAddition());
// 改变类别 几何变化引发更新 元素增加引发更新
//几何引发更新:位置的变更也会引发几何变化
UpdaterRegistry.AddTrigger(_updater.GetUpdaterId(), doc, genericmodelFilter, changeTwo);//更新器引发
return Result.Succeeded;
}
}
public class MyUpdater : IUpdater
{
UpdaterId _uid;
public MyUpdater(AddInId Adin, Guid guid)
{
_uid = new UpdaterId(Adin, guid);
}
public void Execute(UpdaterData data)
//Execute函数是主要的回调函数,它会在DMU触发的时候被调用,通过该函数的参数UpdaterData,
//我们可以获取很多内容,比如UpdaterData..GetDocument()可以获取Document, GetAddedElementIds()可以获取被添加的元素id。
//我们可以在此函数里面做很多事情,例如,修改其他元素实现关联修改。这完全可以取决于我们自己。
//在Execute函数里面不能使用Transaction,因为它本身就在Transaction里面
{
try
{
TaskDialog.Show("1", "1");
}
catch (Exception ee)
{
TaskDialog.Show("1", ee.Message.ToString());
}
}
public string GetAdditionalInformation()
{
return "N/A";
}
public ChangePriority GetChangePriority()
{
return ChangePriority.FreeStandingComponents;
}
public UpdaterId GetUpdaterId()
{
return _uid;
}
public string GetUpdaterName()
{
return "MyUpdater";
}
}
}
引用:https://blog.csdn.net/lushibi/article/details/50629022