sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Forcing a Screen Update during a Ruby script

    Scheduled Pinned Locked Moved Developers' Forum
    11 Posts 5 Posters 1.2k Views 5 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K Offline
      KevinKarney
      last edited by

      I am running a shadow modelling study covering a year . I use a simple plug-in script that increments the date by a day at a time. That all runs fine - the shadows move as expected.

      But while the script runs, I want to see the Shadows Info dialog refresh as the date changes. Presently the Shadows Info dialog only visibly updates when the script has completed.

      Anyone know of a way to force a screen refresh while a script is running ??

      Any help greatly appreciated... I have wasted too much time with this already!

      Best wishes
      Kevin Karney

      Best Regards
      Kevin Karney

      1 Reply Last reply Reply Quote 0
      • thomthomT Offline
        thomthom
        last edited by

        You might need to refactor your loop to use a timer. Timers allow for the rest of the system of do some work. Might just give it enough time to update the viewport.

        Thomas Thomassen β€” SketchUp Monkey & Coding addict
        List of my plugins and link to the CookieWare fund

        1 Reply Last reply Reply Quote 0
        • Dan RathbunD Offline
          Dan Rathbun
          last edited by

          @kevinkarney said:

          Anyone know of a way to force a screen refresh while a script is running ??

          The Shadows dialog is actually an "inspector" toolwindow.

          So try this module function call:
          UI.refresh_inspectors()

          I'm not here much anymore.

          1 Reply Last reply Reply Quote 0
          • K Offline
            KevinKarney
            last edited by

            Dear Dan
            Many thanks for troubling to reply. But I am still stuck! The Inspector just updates when the loop is finished.

            require 'sketchup'
            UI.menu("PlugIns").add_item("Change Date") { change_date_loop }

            def change_date_by_one_day
            Sketchup.active_model.shadow_info["ShadowTime_time_t"] =
            Sketchup.active_model.shadow_info["ShadowTime_time_t"] + 606024
            shadowinfo = Sketchup.active_model.shadow_info
            UI.refresh_inspectors()
            refreshed_view = Sketchup.active_model.active_view.refresh
            end

            def change_date_loop
            for the_step in 1..365
            sleep(0.025)
            change_date_by_one_day
            end
            end

            Best Regards
            Kevin Karney

            1 Reply Last reply Reply Quote 0
            • thomthomT Offline
              thomthom
              last edited by

              Did you try with a timer?

              Or... Maybe the FrameAnimation class....

              Sent from my LT25i using Tapatalk 2

              Thomas Thomassen β€” SketchUp Monkey & Coding addict
              List of my plugins and link to the CookieWare fund

              1 Reply Last reply Reply Quote 0
              • TIGT Offline
                TIG Moderator
                last edited by

                This works fine for me.
                The dialog updates and so does the view.
                The statusbar shows the day

                require('sketchup.rb')
                module TIG
                	UI.menu("PlugIns").add_item("All 365 Days"){self.change_date_loop()}
                	def self.change_date_loop()
                		model=Sketchup.active_model
                		365.times{|i|
                			sleep(0.025) ### change step time here
                			model.shadow_info["ShadowTime_time_t"]=model.shadow_info["ShadowTime_time_t"]+(60*60*24)
                			model.active_view.refresh
                			UI.refresh_inspectors()
                			Sketchup.status_text="Day #{i+1}"
                		}
                		UI.beep ### when done
                	end
                end
                

                TIG

                1 Reply Last reply Reply Quote 0
                • D Offline
                  driven
                  last edited by

                  @tig said:

                  This works fine for me.
                  The dialog updates and so does the view.
                  The statusbar shows the day

                  only The statusbar text changes on a mac... nothing else
                  john

                  learn from the mistakes of others, you may not live long enough to make them all yourself...

                  1 Reply Last reply Reply Quote 0
                  • TIGT Offline
                    TIG Moderator
                    last edited by

                    @driven said:

                    @tig said:

                    This works fine for me.
                    The dialog updates and so does the view.
                    The statusbar shows the day

                    only The statusbar text changes on a mac... nothing else
                    john
                    on my PC it works fine !
                    The shadow dialog changes and the screen image changes at each step...
                    If the OP had said they had a MAC we might have avoided a dead-end...

                    @driven: Can you make any variant of my PC-good code work?

                    Thought: If Users want us to help them efficiently, then they MUST add their Version and OS to their User-Profile... πŸ˜’

                    TIG

                    1 Reply Last reply Reply Quote 0
                    • D Offline
                      driven
                      last edited by

                      @tig said:

                      @driven: Can you make any variant of my PC-good code work?

                      I'll give it a go... I'm curious why it didn't work out of the box...
                      I often just try bits you and others post to see if they work on a mac.

                      @unknownuser said:

                      Thought: If Users want us to help them efficiently, then they MUST add their Version and OS to their User-Profile... :roll:

                      I think the OP's on a PC, but filling in the profile would be useful,

                      learn from the mistakes of others, you may not live long enough to make them all yourself...

                      1 Reply Last reply Reply Quote 0
                      • D Offline
                        driven
                        last edited by

                        @Tig

                        this does it for the view

                                 model.active_view.refresh || Sketchup.active_model.active_view.invalidate
                        
                        

                        I'll try and find the dialog updater now...

                        john

                        learn from the mistakes of others, you may not live long enough to make them all yourself...

                        1 Reply Last reply Reply Quote 0
                        • thomthomT Offline
                          thomthom
                          last edited by

                          This is the reason the Animation class is there for: http://www.sketchup.com/intl/en/developer/docs/ourdoc/animation.php

                          Thomas Thomassen β€” SketchUp Monkey & Coding addict
                          List of my plugins and link to the CookieWare fund

                          1 Reply Last reply Reply Quote 0
                          • 1 / 1
                          • First post
                            Last post
                          Buy SketchPlus
                          Buy SUbD
                          Buy WrapR
                          Buy eBook
                          Buy Modelur
                          Buy Vertex Tools
                          Buy SketchCuisine
                          Buy FormFonts

                          Advertisement