Dynamo中用Python Script制作TaskDialog对话框,有两种方式,一种是直接调用Python库里的windows.Form,我们可以直接引入windows.Form库使用。另一种是调用Revit API中的TaskDialog方法,可以直接引入RevitAPIUI里的TaskDialog来使用。下面我附上两种方式得基本代码:
1、调用windows.Form
import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import MessageBox
msg = IN[0]
out = []
if msg == True:
out = MessageBox.Show("BIM的乐趣")
OUT = out
2、调用RevitAPIUI
import clr
clr.AddReference("RevitAPIUI")
from Autodesk.Revit.UI import TaskDialog
a = IN[0]
out = []
if(a == True):
out = TaskDialog.Show("九哥BIMer","BIM的乐趣")
OUT = out
3、调用RevitAPIUI——方式二
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitAPIUI")
from Autodesk.Revit.UI import *
task_dialog = TaskDialog("标题样例")
task_dialog.CommonButtons = TaskDialogCommonButtons.Cancel | TaskDialogCommonButtons.Ok | TaskDialogCommonButtons.Close | TaskDialogCommonButtons.No | TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.Retry | TaskDialogCommonButtons.None
task_dialog.FooterText = "脚部样例标题"
task_dialog.MainInstruction = "主窗口内容样例"
task_dialog.MainContent = "这是主要内容提示样例"
OUT = task_dialog.Show()
4、点击按钮后,继续弹窗(摘自“牛侃BIM”公众号)
import clr
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
element=UnwrapElement(IN[0])
#定义对话框的名称
dialog=TaskDialog("BIM的乐趣")
#定义对话框的标题
dialog.MainInstruction="构件信息"
#定义对话框的主要内容
dialog.MainContent="构件名称"
dialog.AddCommandLink(TaskDialogCommandLinkId.CommandLink1, "查看构件ID")
Result=dialog.Show()
#返回结果
if TaskDialogResult.CommandLink1 == Result:
#新对话框
dialog1= TaskDialog("九哥BIMer")
dialog1.MainInstruction = "构件ID: " + element.Id.ToString()
dialog1.Show()
OUT =element.Id.ToString()
5、提示框添加图标
之前有小伙伴问我,能不能像Excel提示一样,前面有个特殊图标,测试了下,确实有,附上代码和截图:
import clr
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import TaskDialog, TaskDialogCommonButtons, TaskDialogResult, TaskDialogCommandLinkId, TaskDialogIcon
mainDialog = TaskDialog("BIM的乐趣")
mainDialog.MainInstruction = "By 九哥BIMer "
mainDialog.MainContent = "图标测试"
#mainDialog.MainIcon = TaskDialogIcon.TaskDialogIconShield
mainDialog.MainIcon = TaskDialogIcon.TaskDialogIconWarning
mainDialog.CommonButtons = TaskDialogCommonButtons.Close;
mainDialog.DefaultButton = TaskDialogResult.Close;
mainDialog.FooterText = "角标"
tResult = mainDialog.Show()
OUT = tResult
此功能需要,我们访问Revit API内的消息框图标:
除了上面那种,还有如下几种样式: