• Login
sketchucation logo sketchucation
  • Login
โš ๏ธ Libfredo 15.4b | Minor release with bugfixes and improvements Update

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 3 May 2009, 17:56

    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 3 May 2009, 18:15

      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 3 May 2009, 18:23

        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 3 May 2009, 18:58

          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 3 May 2009, 19:34

            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 3 May 2009, 20:13

              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 3 May 2009, 20:24

                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 3 May 2009, 20:34

                  Will the connection depend on the axis of the object?

                  1 Reply Last reply Reply Quote 0
                  • C Offline
                    CPhillips
                    last edited by 3 May 2009, 21:05

                    @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 4 May 2009, 15:25

                      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 4 May 2009, 23:26

                        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
                        1 / 1
                        • First post
                          1/11
                          Last post
                        Buy SketchPlus
                        Buy SUbD
                        Buy WrapR
                        Buy eBook
                        Buy Modelur
                        Buy Vertex Tools
                        Buy SketchCuisine
                        Buy FormFonts

                        Advertisement