草圖大師外掛Ruby把一個工具列執行程式改成按圖示執行


#1

原本如下圖執行
Podium010
原本程式有3個,但我猜是下面這個觸動程式

module Named_Scene

  # Add menu items.
  unless file_loaded? File::basename(__FILE__)
    add_separator_to_menu('View')
    UI.menu("View").add_item(NaScLH['Add Named Scene']) { self.add_namedScene }
  end

  @@scene_i = 1

  def self.add_namedScene
    model = Sketchup.active_model
    pages = model.pages

    # Ask user for scene name.
    list = []
    prompts = [(NaScLH['Scene Name:'])]
    defaults = ["Scene-" + "#{@@scene_i}" ]
    input = UI.inputbox(prompts, defaults, list, NaScLH['Add Named Scene'])

    # Check if the user cancelled.
    return if input==false

    # Get data from result array
    scene_name = input[0]
    @@scene_i = @@scene_i + 1

    status = pages.add( scene_name.to_s )
  end

end

#-----------------------------------------------------------------------------
file_loaded File::basename(FILE)
#-----------------------------------------------------------------------------
我自己看書寫一個圖示按鈕如下
Podium011c

mod = Sketchup.active_model # Open model
ent = mod.entities # All entities in model
sel = mod.selection # Current selection
# 建立Command物件
tool_cmd = UI::Command.new("第一個工具"){
  UI.messagebox "這是我第一個工具按鈕!"
}

# 檢查命令。本例放水,任何狀況都可正常執行。
tool_cmd.set_validation_proc {
  true ? MF_ENABLED : MF_GRAYED
}

# 設定命令的外觀圖示
tool_cmd.small_icon = "png/scenes_16.png"
tool_cmd.large_icon = "png/scenes_24.png"
tool_cmd.tooltip = "在這裡放置工具按鈕提示,以提醒使用者操作秘訣。"

# 建立工具列
tool_toolbar = UI::Toolbar.new "第一工具列"
tool_toolbar.add_item tool_cmd
tool_toolbar.show

=============
請問前輩如何把下拉工具列執行程式移除改成按圖示執行
謝謝


#2

『請問前輩如何把下拉工具列執行程式移除改成按圖示執行』

不懂這是啥意思,或是你要達成怎樣的目的? … and 沒用過,他的程式單純在建立 listener 之類的而已 …


#3

原本每次執行都要下拉工具列執行程式
想改成按圖示執行
改寫別人的程式
變成按圖示執行


#4

你要改的應該只有一行,也就是接下來你想做啥,因為你的 listener 已經好了(按鈕本身)

UI.messagebox "這是我第一個工具按鈕!"

而你所謂的『下拉工具列執行程式』到底是啥 … 沒截圖沒明確的文字說明,按鈕長怎樣,是第幾個,啥快捷鍵,連縮寫都沒有,別人只能觀落陰哩 …

這邊是 doc https://ruby.sketchup.com/UI.html

通常找到該項目的 register 即可,類似 demo code 有寫的稍微改過而已

UI.menu("Draw").add_item("My Procedure") {
  chosen_image = UI.openpanel("Open SKP File", "c:/", "model.skp")
  status = UI.openURL("http://www.sketchup.com")
  path_to_save_to = UI.savepanel("Save Image File", "c:\\", "Shapes.jpg")
  status = UI.show_preferences('GraphicsCard')
}

其中的 Open SKP File , Save Image File 就是 register

anyway 我知道你按下去要做些動作,但你連對象都沒給我哩||| 還是你期待的是一個萬用的解法?很抱歉的通常要看狀況才行 …


#5

謝謝,有空會試。:grinning: