1. 程式人生 > >Revit開發之外部事件IExternalEventHandler

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