public Result
OnStartup(UIControlledApplication application)
//可停靠窗口
string
m_mainPageGuid = "C8BFE771-D9F1-47E1-8934-A425D2358F80";
DockablePaneTest m_mainPage = new
DockablePaneTest(application);
Guid
retval = Guid.Empty;
retval =
new Guid(m_mainPageGuid);
DockablePaneId sm_UserDockablePaneId = new
DockablePaneId(retval);
application.RegisterDockablePane(sm_UserDockablePaneId,"DockblePaneTest",m_mainPage
as IDockablePaneProvider);
//注册事件
try
{
//注册事件
//
application.ControlledApplication.DocumentOpened += new
EventHandler(application_DocumentOpened);
// application.Idling += new
EventHandler(ComponentManager_UIElementActivated);
}
catch
(Exception)
{
return Result.Failed;
}
--------------------------------------------------------------------------------------------------
///
///
DockablePaneTest.xaml 的交互逻辑
///
public partial class
DockablePaneTest :
Page,Autodesk.Revit.UI.IDockablePaneProvider
{
NewWall myCommand = null;
ExternalEvent hander = null;
public DockablePaneTest(UIControlledApplication
uiapp)
{
InitializeComponent();
uiapp.Idling += MyFun; //闲置事件用于获取参数
myCommand
= new NewWall();
hander =
ExternalEvent.Create(myCommand);
}
public void
SetupDockablePane(DockablePaneProviderData data)
{
data.FrameworkElement = this as FrameworkElement;
DockablePaneProviderData d = new DockablePaneProviderData();
data.InitialState = new DockablePaneState();
data.InitialState.DockPosition =
Autodesk.Revit.UI.DockPosition.Bottom;
}
private void MyFun(object sender,
Autodesk.Revit.UI.Events.IdlingEventArgs e)
{
UIApplication uiapp = sender as
Autodesk.Revit.UI.UIApplication;
Document
doc = uiapp.ActiveUIDocument.Document;
ElementId
id =
uiapp.ActiveUIDocument.Selection.GetElementIds().First();
Element
elm = doc.GetElement(id);
//
this.ElmName.Content = elm.Name;
this.label.Content = elm.Name;
}
//按钮
private void button_Click(object sender,
RoutedEventArgs e)
{
hander.Raise();
//
MessageBox.Show("收到信息了");
}
}
//外部事件体:用于修改参数
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();
Autodesk.Revit.DB.Line wallLine =
Autodesk.Revit.DB.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";
}
}
--------------------------------------------------------------------------
加载中,请稍候......