# # author : Kannan # warranty : the usual stuff # date : 3/15/2007 # # modified to work in SU6 using observer classes # Usage : adds 'Start Recording' 'Stop Recording' to plugins menu # Select the start recording, then go about modeling as usual. SU will # record a jpg image everytime the view is refreshed, ie. whenever an entity added # or simply orbit,pan operation is done. You can collect the numbered images and make movie # using 'windows movie maker'. # # limitations : Target folder is hard coded. # class MyViewObserver < Sketchup::ViewObserver def onViewChanged (view) #view.write_image "c:/su/images/" + @@index.to_s + ".jpg" @@index += 1 model = view.model atn = model.tools.active_tool_name #p atn if atn != @lasttool @lasttool = atn end end class MyModelObserver < Sketchup::ModelObserver def onTransactionStart(model) #Sketchup.active_model.active_view.write_image "c:/su/images/" + @@index.to_s + ".jpg" #@@index += 1 puts "start" puts model.tools.active_tool_name end def onTransactionEnd(model) #Sketchup.active_model.active_view.write_image "c:/su/images/" + @@index.to_s + ".jpg" #@@index += 1 puts "end" puts model.tools.active_tool_name end end def start_recording #Sketchup.active_model.active_view.add_observer(@@viewObs) Sketchup.active_model.add_observer(@modelObs) end def stop_recording #Sketchup.active_model.active_view.remove_observer(@@viewObs) Sketchup.active_model.remove_observer(@modelObs) end if( not file_loaded?("recordersusix.rb") ) @@index = 0 #@@viewObs = MyViewObserver.new @modelObs = MyModelObserver.new menu = UI.menu("Plugins") UI.menu("Plugins").add_separator menu.add_item("Start Recording"){start_recording} menu.add_item("Stop Recording"){stop_recording} UI.menu("Plugins").add_separator end file_loaded("recordersusix.rb")