如何在Python(Revit Dynamo)中自动处理DialogBoxShowing事件?

周杰伦

如何在Python(Dynamo)中订阅Revit事件?

特别是DialogBoxShowing,这样我就可以看到是否为“使用临时隐藏/隔离导出”警告,然后选择“保留临时隔离模式并导出”?

这是在C#中完成的:

http://thebuildingcoder.typepad.com/blog/2013/03/export-wall-parts-individually-to-dxf.html

请参阅子标题:处理和消除警告消息

谢谢!

PRMoureu

使它比本教程中更简单:

在Revit内部,使用RevitPythonShell,事件订阅部分可以非常容易。

事件处理程序只是带有两个参数的可调用对象:senderevent那么事件,或发送给参数一起玩,DialogIdOverrideResult在我们的例子。

为了保留建筑编码器示例,让我们继续:

def on_dialog_open(sender, event):
    try:
        if event.DialogId == 'TaskDialog_Really_Print_Or_Export_Temp_View_Modes':
            event.OverrideResult(1002) 
            # 1001 call TaskDialogResult.CommandLink1
            # 1002 call TaskDialogResult.CommandLink2
            # int(TaskDialogResult.CommandLink2) to check the result
    except Exception as e:
        pass #print(e) # uncomment this to debug 

您只需要使用以下语法将此函数插入​​事件:

__uiControlledApplication__.DialogBoxShowing += on_dialog_open

这可以在RevitPythonShell的启动文件中完成:

C:\Users\USERNAME\AppData\Roaming\RevitPythonShell2017\startup.py

(或在插件的启动部分)

更好的方法是,如果您不再需要该处理程序,则注销该处理程序,即在Revit关闭时(请查看教程以获取更多详细信息):

__uiControlledApplication__.DialogBoxShowing -= on_dialog_open


如果要在控制台中尝试此操作,可以使用:

def on_dialog_open(sender, event):
    # [...]

__revit__.DialogBoxShowing += on_dialog_open 

在尝试导出后:

__revit__.DialogBoxShowing -= on_dialog_open


编辑:结果命令的快捷方式(感谢Callum!)

('Cancel', 2)
('Close', 8)
('CommandLink1', 1001)
('CommandLink2', 1002)
('CommandLink3', 1003)
('CommandLink4', 1004)
('No', 7)
('None', 0)
('Ok', 1)
('Retry', 4)
('Yes', 6)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Dynamo for Revit 中使用 Python 覆盖导出的 CSV 文件?

如何在Revit Python Shell中验证参数是否为空

如何在 Revit 的设计自动化 api 中激活 3d 视图并保存 Revit 模型

IndependentTag-如何在Revit中称呼它?

如何在 Forge Viewer 中应用 Revit 显示设置?

如何在 Revit 中获取与房间面关联的材质名称

如何在WPF,C#中自动生成事件处理程序?

IronPython和Revit API-如何在列表框中显示项目属性(属性名称)?

如何在 Revit API 中的所有元素上设置“房间边界”属性

如何在C ++中处理按键事件

如何在VSIX中处理键盘事件?

如何在事件处理程序中获取事件名称

Revit API / Dynamo脚本中的MullionType错误

如何在React中的const中添加事件处理程序?

如何在js中处理动态创建的元素中的事件

在Firefox中,更改keydown事件处理程序中的焦点会自动单击已聚焦的对象。我该如何预防?

如何在Python中实现事件?

如何在python中处理单个socket.io客户端事件?

如何在python中自动回答是?

如何在python中自动递增

如何在Android中自动收集按钮单击的分析事件?

事件循环如何处理JavaScript中的事件处理程序?

如何在Python中处理ServiceRequestError

如何在python中处理对象null

如何在Bokeh(Python)中处理图像

如何在 Python 中并行处理列表?

如何在python中处理递归?

如何在python中处理重音字符?

如何在python中处理GET请求