如何在Python(Dynamo)中订阅Revit事件?
特别是DialogBoxShowing,这样我就可以看到是否为“使用临时隐藏/隔离导出”警告,然后选择“保留临时隔离模式并导出”?
这是在C#中完成的:
http://thebuildingcoder.typepad.com/blog/2013/03/export-wall-parts-individually-to-dxf.html
请参阅子标题:处理和消除警告消息
谢谢!
使它比本教程中更简单:
在Revit内部,使用RevitPythonShell,事件订阅部分可以非常容易。
事件处理程序只是带有两个参数的可调用对象:sender
和event
。那么事件,或发送给参数一起玩,DialogId
并OverrideResult
在我们的例子。
为了保留建筑编码器示例,让我们继续:
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] 删除。
我来说两句