02.Ruby for SketchUp 在菜单栏中放入自已写的插件

这一章的话,主要是介绍如何将自已写的插件添加到草图的菜单内。

01.下面,我们开始吧,先将代码复制到 Ruby 代码编辑器 内测试运行。

mod = Sketchup.active_model # 打开模型
ent = mod.entities # 模型中的所有实体
sel = mod.selection # 当前选择
#============创建自定义菜单============== 
cmd = UI::Command.new('绘制球体'){
    #============创建工具窗口==============
    prompts = ['半径(mm)']
    defaults = [@radius.to_f]
    title = '创建球体'
    input = UI.inputbox(prompts,defaults,title)
    #============创建球体==============
    qx1 = ent.add_circle [0,0,0],[0,1,0],15.cm
    qx1m = ent.add_face qx1
    qx2 = ent.add_circle [0,0,0],[0,0,1],16.cm
    qx1m.followme qx2
    ent.erase_entities qx2
}
 menu = UI.menu('extensions')
 menu.add_item(cmd)

02.运行完毕后,我们会在扩展重新那一栏找到我们刚才添加的那个名字为 绘制球体 的菜单。

03.点击菜单后、弹出的对话框效果如下。

下面、我们来对代码进行一下讲解吧。

前3行:Ruby 代码编辑器 的默认代码,这一块我们先不进行任何改动。

第5-17行(如下):

cmd = UI::Command.new('绘制球体'){
    #============创建工具窗口==============
    prompts = ['半径(mm)']
    defaults = [@radius.to_f]
    title = '创建球体'
    input = UI.inputbox(prompts,defaults,title)
    #============创建球体==============
    qx1 = ent.add_circle [0,0,0],[0,1,0],15.cm
    qx1m = ent.add_face qx1
    qx2 = ent.add_circle [0,0,0],[0,0,1],16.cm
    qx1m.followme qx2
    ent.erase_entities qx2
}

cmd = UI::Command.new(‘绘制球体’) :这一段中、.new 后面括号里面的是我们在菜单里面看到的插件名称,注意名称两侧要带上英文单引号。

{ } :大括号内则是点击这个菜单以后要执行的命令,这里添加的是一个对话框。

prompts 是那个对话框内的文字提示内容,然后 defaults 是文字内容后方的输入框、用来输入我们要进行设置的数值,title 是弹出的这个对话框的名称,这些都是定义UI界面的内容的代码,下面的 input 是创建对话框。

接着下面就是上一章提到的 创建球体 的代码了。

倒数第二行 menu = UI.menu(‘extensions’) 这一行是用来设置我们的菜单要出现在哪一个菜单栏菜单里面的、比如 extensions 就是 扩展程序 菜单,下面将其它菜单的相关英文名称都列出来了,在使用时可以参考一下。

文件(F)编辑(E)视图(V)相机(C)绘图(R)工具(T)窗口(W)扩展程序帮助(H)
FileEditViewCameaDrawToolsWindowExtensionsHelp

最后一行 这一行则是将我们设定好的菜单添加到菜单栏菜单里面去。

明白了代码组成,我们可以在此基础上做到更多:

如下方的代码,就是在上面的基础上,将对话框输入的数值指定为我们的圆半径大小。

cmd = UI::Command.new('绘制球体'){
    #============创建工具窗口==============
    prompts = ['半径(mm)']
    defaults = [@radius.to_f]
    title = '创建球体'
    input = UI.inputbox(prompts,defaults,title)
    #============创建球体==============
    qx1 = ent.add_circle [0,0,0],[0,1,0],input[0] # input [0]的意思是指获取到对话框输入的数组的的第0个值。
    qx1m = ent.add_face qx1
    qx2 = ent.add_circle [0,0,0],[0,0,1],16
    qx1m.followme qx2
    ent.erase_entities qx2
}
 menu = UI.menu('extensions')
 menu.add_item(cmd)

或者是像下面这样,让我们的圆球的半径和段数都能自已定义。

 mod = Sketchup.active_model # 打开模型
 ent = mod.entities # 模型中的所有实体
 sel = mod.selection # 当前选择
 #============创建自定义菜单============== 
 cmd = UI::Command.new('绘制球体2'){
     #============创建工具窗口==============
     prompts = ['半径(mm)','段数']
     defaults = [@radius.to_f,24]
     title = '创建球体'
     input = UI.inputbox(prompts,defaults,title)
     #============创建球体==============
     qx1 = ent.add_circle [0,0,0],[0,1,0],input[0],input[1]
     qx1m = ent.add_face qx1
     qx2 = ent.add_circle [0,0,0],[0,0,1],16,input[1]
     qx1m.followme qx2
     ent.erase_entities qx2
 }
  menu = UI.menu('extensions')
  menu.add_item(cmd)

本文结束,水平有限,仅供参考。。。

本文是根据 一片叶 大佬的视频来进行操作的,可以前往大佬的B站查看视频教程。

另外,也参考了知乎大佬 nicaicai 的文章。

相关推荐

暂无评论