SketchUp扩展程序规范

规范插件目录

在上一章节中我们提到了将插件放在Plugins目录下,
我们继续来看看怎么优雅的将自己的代码放在Plugins目录下。
我们打开Plugins目录,看看系统默认的插件格式。

 

 

 

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

插件示例
我们来把之前的插件整理一下,跟软件默认保持一致
在Plugins目录下创建了一个lwt_load.rb文件及lwt_plug文件夹。如图1:

 

 

 

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

cmd.large_icon = cmd.small_icon = "lwt_plug/image/toolSphere.png"
我们可以自己制作一个自己喜欢的图标,由于本人比较懒,所以在这里给大家推荐两个下载图标的连接:
链接一:https://www.easyicon.net/
链接二:https://www.iconfont.cn/
我们将下载好的图标放在image文件夹下,如图:

 

 

 

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

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 = "img/su_attr.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
复制代码

 


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

工具条效果
带有图标的工具就完成了

 

 

 

————————————————
版权声明:本文为CSDN博主「买辣椒也用积分」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bobo_993/article/details/106991966

posted @   unicornsir  阅读(384)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示