@designforlife said: Can anyone explain the correct use of view.invalidate and/or start_timer? You may try to substitute "while...end" or "for...end" etc control structures by timer. The funny thing is that maybe it is not necessary to put 'Sketchup.active_model.active_view.invalidate' line inside the timer. ` wait_time=(<suspend period>) times=(how many times you want to repeat <some code>) timer_id=UI.start_timer(wait_time,true) { <some code> # put some geometry to active_model times -=1 # decrement times to be able to stop timer Sketchup.active_model.active_view.invalidate do not forget to stop timer timer_id=UI.stop_timer timer_id if times==0 }` I noticed, that visual results of <some code> processing appears even without view.invalidate. Note, that <some code> appears to work a kind of 'transparent' way (you may zoom, pan, rotate view and even launch other commands during the timer processing).Such behaviour indicates, that during <suspend period> all possible events (mouse events, key stroke events and so on) rise and you can handle them. Hope that helps.