这个例子是在一个非模态对话框里,点一下按钮,
然后在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