如何通过Revit API中的Execute方法访问Revit应用程序?

时间:2019-03-19 15:45:33

标签: revit-api

我已经通过pyRevit使用Revit API了一段时间(因此,使用Python),现在我还需要在代码的某些部分使用C#。

我正在尝试访问由Application类提供的VersionNumber属性。就像我所做的那样,使用pyRevit做到这一点非常简单

app = __revit__.Application

就是这样。我可以在任何地方都可以使用,效果很好。

现在,我看一下说明这一点的C#示例(顺便说一下,我是一名C#初学者),所有示例似乎都表明了相同的处理方式:

UIApplication uiApp = commandData.Application;
Application app = uiApp.Application;

,其中 commandData 是作为 ExternalCommandData 对象作为类的 Execute 方法中的参数传递。

我的问题是:如果我不是在Execute方法中,如何访问commandData?也就是说,如果未将commandData作为参数传递。是否可以像使用Python一样实例化Application对象?怎么样?

非常感谢

Arnaud。

1 个答案:

答案 0 :(得分:0)

您是否处于Revit的ExternalCommand上下文中,是否需要访问UIApplication。您是正确的,ExternalCommand是通过commandData提供的。您也可以从空闲事件中获取它,如下所示:

private static void OnIdling(object sender, IdlingEventArgs e)
{
    var app = (UIApplication)sender;
}

也可以从ExternalEventHandler`Execute方法访问它,如下所示:

public void Execute(UIApplication app)
{
}