sketchucation logo sketchucation
    • Login
    ๐Ÿค‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

    Timer variable to SPIV?

    Scheduled Pinned Locked Moved SketchyPhysics
    11 Posts 5 Posters 1.1k 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.
    • H Offline
      hpnisse
      last edited by

      I have an idea to the SPIV
      It is possible to create some kind of Timer (clock) in future version of SP?

      I had an idea how to get it look, really simple idea.

      To start the timer: (when the time is reached it would set the variable to 1, one)

      setTime('timer_name',time in seconds)

      example:

      setTime('timer1',10)
      

      a timer at ten seconds

      and to reset it: (set the variable to 0, zero)
      rstTime('timer_name')

      example:

      rstTime('timer1')
      

      Or is it possible already in SP3x or something?
      Thanks for answer and hope that this is possible, it would be a really helpfull stuff in SPIV.
      (sorry for bad English ๐Ÿ˜„ )

      ` /hpnisse`
      ` Windows 7 U -Sketchup 8 -SketchyPhysics 3.2-Dec2 - from Sweden`

      1 Reply Last reply Reply Quote 0
      • M Offline
        MrPlanet
        last edited by

        Pt this code somewhere...

        if key("space")==1 then setVar("time",10);end;
        

        That will set time to 10 on key space...

        setVar("time",getVar("time")-1)
        

        Put that in onTick with a rate of 30 frame. That will reduce time by 1 every second.

        I reject your reality and substitute my own.

        1 Reply Last reply Reply Quote 0
        • M Offline
          MrPlanet
          last edited by

          Else, if you want something to start at a frame then

          if frame==350 then setVar("time",10);end;
          

          Which means, after 350 frames, the timer will be set to 10.

          I reject your reality and substitute my own.

          1 Reply Last reply Reply Quote 0
          • H Offline
            hpnisse
            last edited by

            Thanks!

            But that is not the thing I searching for...
            cause:

            @unknownuser said:

            if key("space")==1 then setVar("time",10);end;

            only set a standard variable to 10 with the name "time".

            I search for something that count to ten (or something else), and when it reach the number it would set the variable to 1 (one).

            and with another script it would reset the timer/counter.

            your script is good, nothing wrong, but not the thing i searched for.

            but thanks for the help, I appreciate that ๐Ÿ˜„

            ` /hpnisse`
            ` Windows 7 U -Sketchup 8 -SketchyPhysics 3.2-Dec2 - from Sweden`

            1 Reply Last reply Reply Quote 0
            • W Offline
              Wacov
              last edited by

              if frame==0 then setVar("time",300); setVar("var",0); end;
              #Sets 'time' to 300 frames, and 'var' to 0 on the first frame of the simulation
              
              if key("space")==1 then setVar("time",300); end;
              #Resets 'time' to 300 when space is pressed
              
              setVar("time",getVar("time")-1);
              #reduces 'time' by 1 every frame
              
              if getVar("time")<=0 then setVar("var",1); end;
              #Sets 'var' to 1 when 'time' reaches 0
              

              That's a self-contained script to go in onTick. Time is measured in frames (it's easier), and the timer will start on frame 0. Pressing space will reset the timer. Once the timer reaches 0, a variable called 'var' is set to 1; resetting the timer will NOT change this variable back. If this still isn't right, please detail exactly what you want it to do.

              With regards to your original question, you'll have to ask Chris; but, as we've shown, what you ask is possible already, just slightly longer than your suggested way.

              http://sketchup.google.com/3dwarehouse/cldetails?mid=3096a836877fb9af6cd8ad826e9017b8&prevstart=0

              1 Reply Last reply Reply Quote 0
              • C Offline
                CPhillips
                last edited by

                SPIV will have a timer but not exactly how you suggest:

                
                #start a timer that will "go off" in 10 frames.
                startTimer(10){
                   #when 10 frame have passed do this code
                   setVar("timer1",1);
                }
                

                Here are the events that I am planning on for SPIV.
                #tick,timer
                #start,end,create,destroy
                #key,keyDown,keyUP
                #button,joy
                #click,drag,unclick
                #onSetVar

                The way it will work is there will be an addEvent button in the UI. Then you
                select which event from a list and the the code section will appear
                in the UI.

                In the code field you will be able to do almost anything. Every property and setting on an object will be setable (like magnetic, static, nocollison, etc).
                You can force objects to move or rotate, copy them, create and break joints.

                It will be pretty cool what you can do. Here is an example. Make a box and name it "carbody" then create a disk for a wheel. In the UI add a "start" event. Start is called when the simulation first starts and then never again. In the code section you could put:

                connectTo(findBody("carbody"),"hinge")
                
                

                Now when you start the simulation the wheel body will be connect to the carbody with a hinge (down the center of the wheel). Now you can make copies of the wheel and they too will connect to "carbody".

                1 Reply Last reply Reply Quote 0
                • C Offline
                  CPhillips
                  last edited by

                  I take it back. You can do what you want in SP3. Its a bit dangerous though. Put this in onTick:

                  
                  if(frame==10)
                  UI.start_timer(10){setVar("timer1",1)}
                  end
                  
                  

                  Now here are some important things you need to be aware of:
                  First the 10 is seconds not frames.

                  You dont want to create very many timers. A few at most. And you dont want to create a timer every frame! In the above example I start the timer at frame 10.
                  After 10 seconds the value of "timer1" will be set to 1.

                  Finally, this timer operates outside the simulation so it will happen even if the simulation is paused. It will even happen after the simulation has finished. AND if you use large delays then it could happen during the next run of the simulation:

                  Start a timer set to go off in 30 seconds. Run the simulation for 5 sec and then restart. 25 seconds later the first timer will go off and set the value of timer1. Then 5 seconds later you will get the second one.

                  Use short delays.

                  1 Reply Last reply Reply Quote 0
                  • P Offline
                    Physicsguy1
                    last edited by

                    Will the connection depend on the axis of the object?

                    1 Reply Last reply Reply Quote 0
                    • C Offline
                      CPhillips
                      last edited by

                      @unknownuser said:

                      Will the connection depend on the axis of the object?

                      It will default to the axis of the object and you can change the axis. Or you can specify a object to be the axis. Group a disk with a cylinder named "hingepin" where you want the axis to be. Then:

                      connectTo("carbody","hinge","hingepin")
                      
                      1 Reply Last reply Reply Quote 0
                      • H Offline
                        hpnisse
                        last edited by

                        THANKS CPhillips!!

                        this code was the thing I searched for ๐Ÿ˜‰

                        
                        if(frame==10)
                        UI.start_timer(10){setVar("timer1",1)}
                        end
                        
                        

                        But I start/reset it with a "getVar" command... and it works perfect!

                        
                        if getVar('start')==1
                        UI.start_timer(5){setVar("timer1",1)}
                        end
                        if getVar('stop')==1
                         setVar('timer1',0)
                        end
                        
                        

                        Why should I don't use it to many timers at the same project? Would Sketchup crash?? ๐Ÿ˜ฎ

                        Thanks again!
                        I'm look forward to see SPIV, can it be better than it is now?:D

                        ` /hpnisse`
                        ` Windows 7 U -Sketchup 8 -SketchyPhysics 3.2-Dec2 - from Sweden`

                        1 Reply Last reply Reply Quote 0
                        • C Offline
                          CPhillips
                          last edited by

                          I don't think it would crash. It would probably get slow if you have too many tho.

                          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