Revit開發之外部事件IExternalEventHandler
這個例子是在一個非模態對話方塊裡,點一下按鈕,
然後在Revit裡新建一面牆。
直接上程式碼!
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
MyWin myWin = new MyWin();
myWin.Show();
return Result.Succeeded;
}
public partial class MyWin : Window
{
NewWall myCommand = null;
ExternalEvent hander =null ;
public MyWin()
{
InitializeComponent();
myCommand = new NewWall();
hander = ExternalEvent.Create(myCommand);
}
private void myBtn_Click(object sender, RoutedEventArgs e)
{
hander.Raise();
}
}
public class NewWall : IExternalEventHandler
{
public void Execute(UIApplication app)
{
Document doc = app.ActiveUIDocument.Document;
FilteredElementCollector lvlFilter = new FilteredElementCollector(doc);
lvlFilter.OfClass(typeof(Level));
Level lvl = lvlFilter.First() as Level;
Transaction tans = new Transaction(doc, "New Wall");
tans.Start();
Line wallLine = Line.CreateBound(new XYZ(), new XYZ(10, 0, 0));
Wall wall = Wall.Create(doc,wallLine,lvl.Id,false);
tans.Commit();
}
public string GetName()
{
return "NewWall";
}
}
博主會經常更新一些技術文章,請大家多多關注,
原始碼下載請加qq群480950299