规范插件目录

在上一章节中我们提到了将插件放在Plugins目录下,

我们继续来看看怎么优雅的将自己的代码放在Plugins目录下。

我们打开Plugins目录,看看系统默认的插件格式。

DesignSurface扩展类_ruby sketchup

从个上面这个目录可以看出每个插件在目录中的形式是:
一个文件夹和一个.rb的文件
在这个文件夹中存放的是我们插件的文件
而这个.rb文件的功能就是加载文件夹中插件的主文件

插件示例

我们来把之前的插件整理一下,跟软件默认保持一致

在Plugins目录下创建了一个lwt_load.rb文件及lwt_plug文件夹。如图1:

DesignSurface扩展类_ruby sketchup_02

插件图标

在上一章节的插件中我们是没有给它添加工具图标的。其代码如下:

cmd.large_icon = cmd.small_icon = "lwt_plug/image/toolSphere.png"

我们可以自己制作一个自己喜欢的图标,由于本人比较懒,所以在这里给大家推荐两个下载图标的连接:

链接一:https://www.easyicon.net/ 链接二:https://www.iconfont.cn/

我们将下载好的图标放在image文件夹下,如图:

DesignSurface扩展类_DesignSurface扩展类_03


到这里我们准备工作已经做好了。

lwt_load.rb文件

1、加载shpere.rb文件

path = File.dirname(__FILE__).force_encoding('utf-8')
files = [
    File.join(path, 'lwt_plug/sphere.rb'),
]
files.each{|file|
    next unless File.file?(file)
    load file
}

把文件路径存放在files数组中,这样写的好处在于后期新增插件时,直接将路径追加到files中即可。
2、创建工具条

menu = UI.menu('Extensions')
toolbar = UI::Toolbar.new "老顽童工具条"
cmd = UI::Command.new("create_sphere"){
     LWT.create_sphere # 调用创建球体插件
}
cmd.large_icon = cmd.small_icon = "lwt_plug/image/toolSphere.png"
cmd.tooltip = "创建球体"                      
cmd.status_bar_text = "这是创建球体的插件" 
toolbar.add_item cmd
toolbar.show
menu.add_item cmd

在上一章节中为了方便大家理解,我将这部分代码放在了sphere.rb文件中,现在把这部分代码抽离出来是为了后期新增工具时不用再创建工具条,直接追加在这个工具条中。

sphere.rb文件

在这个文件中只存放功能代码,方便阅读及新增功能。

class LWT
     def self.create_sphere
       mod = Sketchup.active_model # Open model
       ent = mod.entities # All entities in model
       group = ent.add_group
       circle = group.entities.add_circle(ORIGIN, X_AXIS, 1.m, 48)
       face = group.entities.add_face(circle)
       face.reverse!
       path = group.entities.add_circle(ORIGIN, Z_AXIS, 2.m, 48)
       face.followme(path)
       group.entities.erase_entities(path)
     end
end

我们把这个方法封装为一个类,也是为了尽可能规范代码,增加可读性。

工具条效果

带有图标的工具就完成了

DesignSurface扩展类_sketchup开发_04