上一讲我们学会了
菜单栏中放入自己写的插件
今天带小可爱们来制作一个 带图标 的 完整插件 吧!
彩色魔方插件效果演示▼
记性好的小可爱们应该知道这是ruby code editor的官方demo,
那今天就顺便带大家分析一下这个demo的思路。
思路解析▼
我们先忽略颜色:
1 、 这是一个 n*n 的方块阵列
2 、 方块可以由 矩形推拉 形成
3 、 矩形由四个点封面形成
那我们直接通过Ruby的循环来实现矩形阵列吧!
矩形阵列▼
对应代码:
#============创建阵列矩形==============
mod = Sketchup.active_model # 打开模型
ent = mod.entities # 所有的实体模型
n = 2 # 魔方边盒子数量
s = 100 # 盒子间隔(2个盒子同一位置点的间隔,不是间距哦)
w = 50 # 盒子高度
# i j k 可以理解成 x y z 轴
(0..n-1).each{|i|
(0..n-1).each{|j|
(0..n-1).each{|k|
# 通过组件的盒子的4个点,封面
face = ent.add_face [i*s,j*s,k*s],[i*s,j*s+w,k*s],[i*s+w,j*s+w,k*s],[i*s+w,j*s,k*s]
}
}
}
我们设置了盒子的数量为n,
#============循环遍历==============
n = 6
(0..n-1).each{|i|
puts i
}
# 在ruby控制台输出结果为
0
1
n*s就得到了我们矩形的一个端点,
+w的三次偏移就能得到矩形的另外3个点。
看不懂的小可爱们就要去看下ruby的循环语法了!
Ruby 循环 | 菜鸟教程
得到阵列面之后,
可以通过face.back_material
给面上色,
最后只需要用face.pushpull
把所有面推拉出预设好的高度就得到了我们的盒子了。
现在我们就可以把这个彩色魔方的功能放到插件里面去了。
下面是官方文档关于UI类下面的Toolbar类插件demo:
toolbar = UI::Toolbar.new "Test"
# This toolbar icon simply displays Hello World on the screen
cmd = UI::Command.new("Test") {
# 该插件要做的事情
UI.messagebox "Hello World"
}
cmd.small_icon = "ToolPencilSmall.png" # 大图标
cmd.large_icon = "ToolPencilLarge.png" # 小图标
cmd.tooltip = "Test Toolbars" # 工具条提示
cmd.status_bar_text = "Testing the toolbars class" # 状态栏提示
cmd.menu_text = "Test"
toolbar = toolbar.add_item cmd
toolbar.show
大图标 large_icon
:用于工具条上的图标。
小图标 small_icon
:用于工具条提示文字中的图标。
菜单文本 menu_text
:在菜单中显示的按钮名称,和命令对象构造时的参数是一样的。
状态栏提示文字 status_bar_text
:鼠标移到对应的按钮上时状态栏的提示文本,鼠标移到工具条按钮上时还作为提示气泡的内容显示。
工具条提示文字 tooltip
:鼠标移到工具条按钮上时弹出的提示气泡标题。
demo字段解释▼
为了可以灵活设置盒子的数量,
我们再添加了一个交互界面接收盒子数量参数n。
顺便截了个图作插件的图标。
最后给上这个插件完整源码:
#============创建图标插件==============
toolbar = UI::Toolbar.new "magicCube" # 插件名称
cmd = UI::Command.new("magicCube") {
mod = Sketchup.active_model # 打开模型
ent = mod.entities # 所有的实体模型
#============创建交互窗口==============
prompts = ['边盒子数量(mm)']
defaults = [@radius.to_i]
title = '创建魔方'
input = UI.inputbox(prompts,defaults,title)
#============创建魔方==============
n = input[0] # 魔方边盒子数量
s = 100 # 盒子间隔(2个盒子同一位置点的间隔,不是间距哦)
w = 50 # 盒子高度
# i j k 可以理解成 x y z 轴
(0..n-1).each{|i|
(0..n-1).each{|j|
(0..n-1).each{|k|
# 把每个盒子建成组件
group = ent.add_group
# 通过组件的盒子的4个点,封面
face = group.entities.add_face [i*s,j*s,k*s],[i*s,j*s+w,k*s],[i*s+w,j*s+w,k*s],[i*s+w,j*s,k*s]
# 给面添加材质(RGB 颜色)
face.back_material = [(255/(n-1)*i).round,(255/(n-1)*j).round,(255/(n-1)*k).round]
# 所有面推拉出高度
face.pushpull -w
}
}
}
}
# 设置插件 大图标 小图标
cmd.small_icon = "C:/Users/Administrator/Desktop/magic_cobe_icon.png"
cmd.large_icon = "C:/Users/Administrator/Desktop/magic_cobe_icon.png"
# 设置插件 工具条提示 状态栏提示
cmd.tooltip = "magicCube tips"
cmd.status_bar_text = "magicCube bar_test"
cmd.menu_text = "1"
toolbar = toolbar.add_item cmd
# 显示插件
toolbar.show
把源码保存成.rb
文件,放到你的SketchUp
下的Plugins
文件夹即可安装该插件。
至此,
咱这天然无公害的一个完整插件就搞定了
有问题的小可爱可以关注公众号问我!▼
文章转载请注明出处author by Nicaicaiwo