UI对话框
在这一章节中,我们来熟悉一下常用的对话框
在程序中常用的有:
- 消息输入对话框
- 消息提示对话框
0 1、用户消息输入框
inputbox — 创建一个用于输入用户信息的对话框。
该对话框包含带有静态文本提示,
可选默认值,可选下拉选项和可选标题的输入字段。
还可以使用此方法通过传递可选参数来显示选项的下拉列表。
调用方法:
inputbox(prompts, defaults, title) ⇒ Array<String>, false
inputbox(prompts, defaults, list, title) ⇒ Array<String>, false
参数:
prompts (Array<String>) — 提示输入信息的名称数组
defaults (Array<String>) — 输入框默认值数组
list (String, Array<String>) — 包含用|分割下拉选项值字符串的数组
title (String) — 信息输入框的标题
返回值:如果用户未取消对话框,则返回值的数组。如果用户取消了对话框,则返回false。数组中返回的值将与输入字段的顺序相同
示例:
prompts = ["Name", "Age", "Gender"]
defaults = ["Enter name", "", "Male"]
list = ["", "", "Male|Female"]
title = "老顽童"
input = UI.inputbox(prompts, defaults, list, title)
上面这段示例效果如图:
0 2、消息提示框
messagebox — 创建一个包含静态文本的消息框
调用方法:
messagebox(message, type = MB_OK) ⇒ Integer
参数:
messagebox — 你要显示的消息
type — 消息框类型,常量类型
有效的消息框类型有:
MB_OK—包含“确定”按钮。
MB_OKCANCEL — 包含“确定”和“取消”按钮。
MB_ABORTRETRYIGNORE — 包含“中止”,“重试”和“忽略”按钮。
MB_YESNOCANCEL — 包含“是”,“否”和“取消”按钮。
MB_YESNO — 包含是和否按钮。
MB_RETRYCANCEL — 包含“重试”和“取消”按钮。
MB_MULTILINE — 包含和“确定”按钮
返回值可以是以下任意值:
IDOK
IDCANCEL
IDABORT
IDRETRY
IDIGNORE
IDYES
IDNO
示例:
result = UI.messagebox('是否感兴趣?', MB_YESNO)
if result == IDYES
UI.messagebox('关注我')
end
效果:
在这里还有很多的type类型,感兴趣的小伙伴可以自己试试。
0 3、UI对话框实战
我们想实现一个参数控制的正方体插件
示例
我们去之前的工具条中加上cube工具
cube_cmd = UI::Command.new("cube_tool"){
Cube.create_cube # 矩形工具插件
}
menu.add_item cube_cmd
cube_cmd.large_icon = cube_cmd.small_icon = "lwt_plug/image/cube.png"
cube_cmd.tooltip = "矩形工具"
cube_cmd.status_bar_text = "这是矩形工具"
toolbar.add_item cube_cmd
记得一定要把cube.rb路径放入files数组中加载改文件
看一下cube.rb文件:
class Cube
def self.create_cube
model = Sketchup.active_model
model.start_operation('Create Cube', true)
# 创建信息输入框
prompts = ["长度", "宽度", "高度", "材质"]
defaults = ["1000", "1000", "1000", "red"]
list = ["", "", "", "red|yellow|purple"]
input = UI.inputbox(prompts, defaults, list, "创建矩形")
#
if input
vue = [input[0].to_f.mm,input[1].to_f.mm,input[2].to_f.mm]
v = vue.find{|v| v if v==0}
# 判断输入值是否有效,messbox提示
res = UI.messagebox("在输入的长、宽、高中存在不合法数值", MB_OK) if v
return if res
group = model.active_entities.add_group
entities = group.entities
points = [
Geom::Point3d.new(0, 0, 0),
Geom::Point3d.new(input[0].to_f.mm, 0, 0),
Geom::Point3d.new(input[0].to_f.mm, input[1].to_f.mm, 0),
Geom::Point3d.new(0, input[1].to_f.mm, 0)
]
face = entities.add_face(points)
face.reverse! unless face.normal.samedirection? Z_AXIS
face.pushpull(input[2].to_f.mm)
group.material = input[-1]
end
model.commit_operation
end
end
我们先创建一个信息输入框,可以输入长宽高及材质
判断输入的长宽高是否有效
若果存在无效值
弹出消息框
效果如图:
这样我们在工具中就运用了这两个命令
是不是觉得还挺简单的
感兴趣的小伙伴动手试试吧
感兴趣小伙伴关注我吧