Exchange Forum > AutoCAD Games
Clock Animation (grdraw)
Clock Animation (grdraw)

#1

qjchen
Join Date:
08-05-2008
A few years ago, I wrote a code to grdraw dynamic clock in Autocad R14, just for fun, the code is follow, the effect is shown in the gif file.
 
The code has been post here, (I am yuanqiu at theswamp)
http://www.theswamp.org/index.php?topic=8969.0
Evgeniy has ever wrote a much beautiful clock in the upper post.
 
Code:
;;; ========================================================================
;;; Some of the following code are writen by CHEN QING JUN                 ;
;;; Civil engineering Department, South China University of Technology     ;
;;; Purpose: A animation clock draw by grdraw , just for fun               ;
;;; The command name :clock                                                ;
;;; The platform: Acad.r14 and after                                       ;
;;; Version: 0.1                                                           ;
;;; 2003.03.01                                                             ;
;;; Http://autolisper.googlepages.com (English)                            ;
;;; Http://qjchen.googlepages.com (Chinese)                                ;
;;; Http://chenqj.blogspot.com (Chineses)                                  ;
;;; ========================================================================
(defun c:clock ( / ang angfz color1 ftime I mtime p0 p2 pfz2 psz2 r stime time timelen vc vs angsz p0 p1 p2 pfz1 psz1 )
  (command "redraw")
  (setq vc (getvar "viewctr"))
  (setq vs (getvar "viewsize"))
  (setq r (* 0.5 vs))
  (setq color1 20)
  (draw12)
  (draw3)
  (draw6)
  (draw9)
  (drawcircleandline)
  (setq I 0)
  (setq p2 vc
    pfz2 p2
    psz2 p2
  )
  ;(setq temp (cadr (grread 5)))
  (while (< I 10000)
    (setq time (menucmd "m=$(edtime,$(getvar,date),hh:mm:ss)"))
    (setq timelen (strlen time))
    (setq stime (atof (substr time 1 2)))
    (if (>= stime 12)
      (setq stime (- stime 12))
    )
    (setq ftime (atof (substr time 4 2)))
    (setq mtime (atof (substr time (- timelen 1) 2)))
    (setq p0 vc)
    (setq ang (- (* 0.5 pi) (/ (* mtime pi) 30)))
    (setq angfz (- (* 0.5 pi) (/ (* ftime pi) 30)))
    (setq angsz (- (* 0.5 pi) (/ (* stime pi) 6)))
    (setq angsz (- angsz (/ (* ftime pi) 360)))
    (grdraw p0 p2 0)
    (grdraw p0 pfz2 0)
    (grdraw p0 psz2 0)
    (setq p1 (polar p0 ang (* r 0.68)))
    (setq pfz1 (polar p0 angfz (* r 0.58)))
    (setq psz1 (polar p0 angsz (* r 0.50)))
    (grdraw p0 p1 1)
    (grdraw p0 pfz1 4)
    (grdraw p0 psz1 3)
    (setq p2 p1)
    (setq pfz2 pfz1)
    (setq psz2 psz1)
    (princ)
    (std-sleep 1)
    (setq I (1+ i))
  )
)
(defun draw12 (/ pa p12-1 p12-2 p12-3 p12-4 p12-5 p12-6 p12-7 p12-8)
  (setq pa (polar vc (* 0.5 pi) (* vs 0.4)))
  (setq p12-1 (polar pa pi (* 0.05 r)))
  (setq p12-2 (polar p12-1 (* 1.5 pi) (* 0.2 r)))
  (setq p12-3 (polar pa 0 (* 0.01 r)))
  (setq p12-4 (polar p12-3 0 (* 0.1 r)))
  (setq p12-5 (polar p12-4 (* 1.5 pi) (* 0.1 r)))
  (setq p12-6 (polar p12-5 pi (* 0.1 r)))
  (setq p12-7 (polar p12-6 (* 1.5 pi) (* 0.1 r)))
  (setq p12-8 (polar p12-7 0 (* 0.1 r)))
  (grdraw p12-1 p12-2 color1)
  (grdraw p12-3 p12-4 color1)
  (grdraw p12-4 p12-5 color1)
  (grdraw p12-5 p12-6 color1)
  (grdraw p12-6 p12-7 color1)
  (grdraw p12-7 p12-8 color1)
)
(defun draw3 (/ pb p12-1 p12-2 p12-3 p12-4 p12-5 p12-6)
  (setq pb (polar vc 0 (* vs 0.37)))
  (setq p12-6 pb)
  (setq p12-3 (polar pb pi (* 0.1 r)))
  (setq p12-4 (polar pb (* 1.5 pi) (* 0.1 r)))
  (setq p12-1 (polar pb (* 0.5 pi) (* 0.1 r)))
  (setq p12-2 (polar p12-1 pi (* 0.1 r)))
  (setq p12-5 (polar p12-4 pi (* 0.1 r)))
  (grdraw p12-6 p12-3 color1)
  (grdraw p12-1 p12-2 color1)
  (grdraw p12-4 p12-5 color1)
  (grdraw p12-1 p12-6 color1)
  (grdraw p12-6 p12-4 color1)
)
(defun draw6 (/ pb p12-1 p12-2 p12-3 p12-4 p12-5 p12-6)
 
  (setq pc (polar vc (* 1.5 pi) (* vs 0.4)))
  (setq p12-1 (polar pc 0 (* 0.05 r)))
  (setq p12-2 (polar p12-1 (* 0.5 pi) (* 0.1 r)))
  (setq p12-3 (polar p12-2 pi (* 0.1 r)))
  (setq p12-4 (polar p12-3 (* 1.5 pi) (* 0.1 r)))
  (setq p12-5 (polar p12-3 (* 0.5 pi) (* 0.1 r)))
  (setq p12-6 (polar p12-5 0 (* 0.1 r)))
  (grdraw p12-1 p12-2 color1)
  (grdraw p12-2 p12-3 color1)
  (grdraw p12-4 p12-1 color1)
  (grdraw p12-4 p12-5 color1)
  (grdraw p12-5 p12-6 color1)
)
(defun draw9 (/ pb p12-1 p12-2 p12-3 p12-4 p12-5 p12-6)
  (setq pd (polar vc pi (* vs 0.37)))
  (setq p12-1 pd)
  (setq p12-2 (polar p12-1 (* 0.5 pi) (* 0.1 r)))
  (setq p12-3 (polar p12-2 0 (* 0.1 r)))
  (setq p12-4 (polar p12-3 (* 1.5 pi) (* 0.1 r)))
  (setq p12-5 (polar p12-4 (* 1.5 pi) (* 0.1 r)))
  (setq p12-6 (polar p12-5 pi (* 0.1 r)))
  (grdraw p12-1 p12-2 color1)
  (grdraw p12-2 p12-3 color1)
  (grdraw p12-4 p12-1 color1)
  (grdraw p12-3 p12-5 color1)
  (grdraw p12-5 p12-6 color1)
)
(defun drawcircleandline (/ I pe pf p1 p2)
  (setq I 1)
  (repeat 11
    (setq pe (polar vc (* I (/ pi 6)) (* vs 0.38)))
    (setq pf (polar vc (* I (/ pi 6)) (* vs 0.35)))
    (if (and
      (/= I 3)
      (/= I 6)
      (/= I 9)
    )
      (grdraw pe pf 31)
    )
    (setq I (1+ i))
  )
  (cc (* r 0.86) 42)
  (cc (* r 0.9) 31)
)
(defun cc (a b / p1 I p2)
  (setq I 0)
  (while (< I (* 2 pi))
    (setq p1 (polar vc I a))
    (setq I (+ I (/ (* 2 pi) 180)))
    (setq p2 (polar vc I a))
    (grdraw p1 p2 b)
  )
)
(defun abcderr (st)
  (if (/= st "Function cancelled")
    (princ (strcat "\nerror:" s))
  )
)
(defun STD-SLEEP (secs / endt)
  (setq endt (+ (getvar "DATE") (/ secs 86400.0))) ; fixed
  (while (< (getvar "DATE") endt)
    T
  )
)



Attachments  clock.gif  
Clock Animation (grdraw)

#2

Terry Cadd
Join Date:
09-10-2007
Welcome qjchen,
I really like the grdraw Clock Animation. It has some very useful examples for using the grdraw functions.
Thanks again,
Terry
Clock Animation (grdraw)

#3

Willie
Join Date:
08-14-2007
I like this animation. I wished it displayed 5:00 p.m. all the time.
Willie
Clock Animation (grdraw)

#4

qjchen
Join Date:
08-05-2008
Thank you very much, I will try to post more or introduce some of my collection.