Custom observer class for tool-name, tool-id

Hello,

I want to auto start “add_tool_observer” when I open SketchUp, open a new model, or open a saved model.

I attached the code below; please check and correct it . . . .

Thanks.

require 'sketchup.rb'

# DEFINE A CUSTOM OBSERVER CLASS FOR TOOL-NAME, TOOL-ID
class ToolChangeObserver < Sketchup::ToolsObserver
  # WHEN THE ACTIVE TOOL CHANGE
  def onActiveToolChanged(tools, tool_name, tool_id = nil)
    puts "\nActive tool changed to: #{tool_name}" if tool_name 
    #puts "\nTool ID: #{tool_id}" if tool_id 
  end
end

def add_tool_observer
  model = Sketchup.active_model
  tools = model.tools

  # CUSTOM OBSERVER
  observer = ToolChangeObserver.new
  tools.add_observer(observer)

	#puts "ToolChangeObserver attached successfully!"
end

# CALL THE FUNCTION "ADD_TOOL_OBSERVER"
add_tool_observer

You need to use Sketchup::AppObserver
There’s a good example how to use at the Overlay documentation.

2 Likes

Thank you so much, Dezmo . . . . :grinning:

Now I am tracking the SketchUp active tool.

1 Like