(defun c:mcc ( / cen rr anghh angmm angss enhh enmm enss entt thetime)
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setq cen (getpoint "\n中心点: "))
(setq rr (getdist cen "\n半径: "))
;;;(setq cen (list 0 0)
;;; rr 100)
(clk_face cen rr)
(setq thetime (gettime))
(setq entt (clktext cen rr thetime))
(setq anghh (cdr (assoc 'anghh thetime)))
(setq angmm (cdr (assoc 'angmm thetime)))
(setq angss (cdr (assoc 'angss thetime)))
(setvar "cecolor" "4")
(setq enhh (drawpt cen rr anghh 0.6))
(setvar "cecolor" "4")
(setq enmm (drawpt cen rr angmm 0.75))
(setvar "cecolor" "4")
(setq enss (drawpt cen rr angss 0.9))
(REPEAT 60
(COMMAND "DELAY" 1000)
(setq thetime (gettime))
(setq anghh (cdr (assoc 'anghh thetime)))
(setq angmm (cdr (assoc 'angmm thetime)))
(setq angss (cdr (assoc 'angss thetime)))
(upent enhh cen rr anghh 0.6)
(upent enmm cen rr angmm 0.75)
(upent enss cen rr angss 0.9)
(upclktext entt thetime)
)
(print)
)
(defun clk_face (cen rr / )
(setvar "cecolor" "7")
(command "circle" cen rr "")
(command "donut" 0 (/ rr 10) cen "")
(command "text" "m" (polar cen (/ pi 2) (* rr 0.9)) (* rr 0.15) 0 "12")
(command "text" "m" (polar cen (* (/ (- 3 1) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 1 6.0) -180) "1")
(command "text" "m" (polar cen (* (/ (- 3 2) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 2 6.0) -180) "2")
(command "text" "m" (polar cen (* (/ (- 3 3) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 3 6.0) -180) "3")
(command "text" "m" (polar cen (* (/ (- 3 4) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 10 6.0) -180) "4")
(command "text" "m" (polar cen (* (/ (- 3 5) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 11 6.0) -180) "5")
(command "text" "m" (polar cen (* (/ (- 3 6) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 12 6.0) -180) "6")
(command "text" "m" (polar cen (* (/ (- 3 7) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 1 6.0) -180) "7")
(command "text" "m" (polar cen (* (/ (- 3 8) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 2 6.0) -180) "8")
(command "text" "m" (polar cen (* (/ (- 3 9) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 9 6.0) -180) "9")
(command "text" "m" (polar cen (* (/ (- 3 10) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 10 6.0) -180) "10")
(command "text" "m" (polar cen (* (/ (- 3 11) 6.0) pi) (* rr 0.9)) (* rr 0.15) (* (/ 11 6.0) -180) "11")
)
(defun gettime ( / ti hh mm ss anghh angmm angss shh smm sss)
(setq ti (rtos (* (getvar "cdate") 1000000) 2 0))
(setq shh (substr ti 9 2))
(setq smm (substr ti 11 2))
(setq sss (substr ti 13 2))
(setq hh (atoi shh))
(setq mm (atoi smm))
(setq ss (atoi sss))
(setq anghh (if (>= hh 12)
(-(* (/ (- 3 (- hh 12)) 6.0) pi) (* (/ mm 360.0) pi))
(-(* (/ (- 3 hh) 6.0) pi)(* (/ mm 360.0) pi))
))
(setq angmm (- (/ pi 2) (* (/ mm 30.0) pi)))
(setq angss (- (/ pi 2) (* (/ ss 30.0) pi)))
(list (cons 'hh shh)(cons 'mm smm)(cons 'ss sss)(cons 'anghh anghh)(cons 'angmm angmm)(cons 'angss angss))
)
(defun drawpt (cen rr ang hms / pt1 pt2 pt3 pt4 en1 en2 en3 en4)
(setq pt1 (polar (polar cen ang (* rr hms)) (+ ang (/ pi 2)) (* (- 1 hms) (/ rr 20))))
(setq pt2 (polar pt1 (+ ang pi) (* (/ rr 0.8) hms)))
(setq pt3 (polar pt2 (- ang (/ pi 2)) (* (- 1 hms) (/ rr 10))))
(setq pt4 (polar pt1 (- ang (/ pi 2)) (* (- 1 hms) (/ rr 10))))
(command "line" pt1 pt2 "")
(setq en1 (entlast))
(command "line" pt2 pt3 "")
(setq en2 (entlast))
(command "line" pt3 pt4 "")
(setq en3 (entlast))
(command "line" pt4 pt1 "")
(setq en4 (entlast))
(list (cons 'en1 en1) (cons 'en2 en2) (cons 'en3 en3) (cons 'en4 en4))
)
(defun upent (enxx cen rr ang hms / pt1 pt2 pt3 pt4 en1 en2 en3 en4)
(setq pt1 (polar (polar cen ang (* rr hms)) (+ ang (/ pi 2)) (* (- 1 hms) (/ rr 20))))
(setq pt2 (polar pt1 (+ ang pi) (* (/ rr 0.8) hms)))
(setq pt3 (polar pt2 (- ang (/ pi 2)) (* (- 1 hms) (/ rr 10))))
(setq pt4 (polar pt1 (- ang (/ pi 2)) (* (- 1 hms) (/ rr 10))))
(setq en1 (entget (cdr (assoc 'en1 enxx))))
(setq en2 (entget (cdr (assoc 'en2 enxx))))
(setq en3 (entget (cdr (assoc 'en3 enxx))))
(setq en4 (entget (cdr (assoc 'en4 enxx))))
(setq en1 (subst (cons 10 pt1) (assoc 10 en1) en1 ))
(setq en1 (subst (cons 11 pt2) (assoc 11 en1) en1 ))
(entmod en1)
(setq en2 (subst (cons 10 pt2) (assoc 10 en2) en2 ))
(setq en2 (subst (cons 11 pt3) (assoc 11 en2) en2 ))
(entmod en2)
(setq en3 (subst (cons 10 pt3) (assoc 10 en3) en3 ))
(setq en3 (subst (cons 11 pt4) (assoc 11 en3) en3 ))
(entmod en3)
(setq en4 (subst (cons 10 pt4) (assoc 10 en4) en4 ))
(setq en4 (subst (cons 11 pt1) (assoc 11 en4) en4 ))
(entmod en4)
(list (cons 'en1 en1) (cons 'en2 en2) (cons 'en3 en3) (cons 'en4 en4))
)
(defun clktext (cen rr tm / tt entt)
(setq tt (strcat (cdr (assoc 'hh tm)) ":" (cdr (assoc 'mm tm)) ":" (cdr (assoc 'ss tm))))
(setvar "cecolor" "3")
(command "text" "j" "c" (polar cen (* pi -0.5) (* rr 1.25)) (* rr 0.2) 0 tt)
(setq entt (entlast))
)
(defun upclktext (encc tm / tt entt)
(setq tt (strcat (cdr (assoc 'hh tm)) ":" (cdr (assoc 'mm tm)) ":" (cdr (assoc 'ss tm))))
(setq entt (entget encc))
(setq entt (entmod (subst (cons 1 tt) (assoc 1 entt) entt )))
(setq entt (entlast))
) 不知道怎么以代码的形式发,只好这样了 学习一下,谢谢 ;;----------------------=={ Clock.lsp }==---------------------;;;; ;;;;Program displays a chronograph style clock interface ;;;;powered by a command reactor. ;;;; ;;;;Clock shows analog display, 24H dial, Day of Week Dial, ;;;;Date, Month & Year and Digital display. ;;;; ;;;; ;;;;To Run: ;;;;------------- ;;;;Type 'Clock' to activate Clock display - clock will ;;;;update when any command is invoked ;;;; ;;;; ;;;;To Disable: ;;;;------------- ;;;;Type 'Clock' to disable the Clock display. ;;;; ;;;;------------------------------------------------------------;;;;Author: Lee Mac, Copyright ?2010 - www.lee-mac.com ;;;;------------------------------------------------------------;;(defun c:Clock ( / *error* )(defun *error* ( msg ) (LM:PurgeClock) (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **"))) (princ))(setq *layer* "LMAC_Clock" *sH*"LMAC_Second" *mH*"LMAC_Minute" *hH*"LMAC_Hour" *dH*"LMAC_Day" *24H*"LMAC_24H" *font*(if (findfile "C:\\Windows\\Fonts\\Coprgtl.ttf") "Copperplate Gothic Light" "Times New Roman" ))((lambda ( data foo / react pt ) (if (setq react (vl-some (function (lambda ( reactor ) (if (eq data (vlr-data reactor)) reactor) ) ) (cdar (vlr-reactors :vlr-command-reactor) ) ) ) (if (vlr-added-p react) (progn (vlr-remove react) (LM:PurgeClock) (princ "\nClock Stopped.") ) (vlr-add react) ) (if (setq pt (getpoint "\nPick Insertion Point for Clock: ")) (progn (LM:MakeClock pt) (setq react (vlr-command-reactor data (list (cons :vlr-CommandEnded foo) ) ) ) (princ "\nClock Running.") ) (princ "\n*Cancel*") ) ) react ) "Clock" 'Clock-CallBack)(princ));;-------------------=={ Clock-CallBack }==-------------------;;;; ;;;;Reactor Callback function to update the relevant items ;;;;------------------------------------------------------------;;;;Author: Lee Mac, Copyright ?2010 - www.lee-mac.com ;;;;------------------------------------------------------------;;;;Arguments: ;;;;reactor - the calling reactor object ;;;;arguments - the arguments supplied by the reactor ;;;;------------------------------------------------------------;;(defun Clock-CallBack ( reactor arguments / date SecDec MinDec 12HDec 24HDec DayDec ss )(setq date (LM:toDate "HH:MM:SS"))(setq SecDec (/ (atoi (substr date 7 2)) 60.) MinDec (/ (+ (atoi (substr date 4 2)) SecDec) 60.) 12HDec (/ (+ (rem (atoi (substr date 1 2)) 12) MinDec) 12.) 24HDec (/ (+ (atoi (substr date 1 2)) MinDec) 24.) DayDec (/ (fix (rem (getvar 'DATE) 7)) 7.))(mapcar (function (lambda ( block rotation / ss ) (if (setq ss (ssget "_X" (list (cons 0 "INSERT") (cons 2 block) (cons 8 *layer*)))) (vla-put-rotation (vlax-ename->vla-object (ssname ss 0)) rotation) ) ) ) (list *sH* *mH* *hH* *dH* *24H*) (mapcar '(lambda ( x ) (* x -2. pi)) (list SecDec MinDec 12HDec DayDec 24HDec)))(if (setq ss (ssget "_X" (list (cons 0 "MTEXT") (cons 8 *layer*) (cons 1 "*##:##*")))) ( (lambda ( o ) (vla-put-TextString o (strcat "{\\f" *font* "|b0|i0|c0|p34;\\C2;" (LM:toDate "HH:MM") "}") ) ) (vlax-ename->vla-object (ssname ss 0)) ))(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object) ) acActiveViewport) (princ));;----------------------=={ To Date }==-----------------------;;;; ;;;;Returns a string containing the current date/time in the;;;;specified format ;;;;------------------------------------------------------------;;;;Author: Lee Mac, Copyright ?2010 - www.lee-mac.com ;;;;------------------------------------------------------------;;;;Arguments: ;;;;format- DIESEL edtime string specifying format ;;;;------------------------------------------------------------;;;;Returns:Date/time string ;;;;------------------------------------------------------------;;(defun LM:toDate ( format )(menucmd (strcat "m=$(edtime,$(getvar,DATE)," format ")")));;-----------------------=={ Itemp }==------------------------;;;; ;;;;Retrieves the item with index 'item' if present in the ;;;;specified collection, else nil ;;;;------------------------------------------------------------;;;;Author: Lee Mac, Copyright ?2010 - www.lee-mac.com ;;;;------------------------------------------------------------;;;;Arguments: ;;;;coll - the VLA Collection Object ;;;;item - the index of the item to be retrieved ;;;;------------------------------------------------------------;;;;Returns:the VLA Object at the specified index, else nil ;;;;------------------------------------------------------------;;(defun LM:Itemp ( coll item )(if (not (vl-catch-all-error-p (setq item (vl-catch-all-apply (function vla-item) (list coll item) ) ) ) ) item));;--------------------=={ Make Clock }==----------------------;;;; ;;;;Creates the Clock Object, including layers and blocks ;;;;------------------------------------------------------------;;;;Author: Lee Mac, Copyright ?2010 - www.lee-mac.com ;;;;------------------------------------------------------------;;;;Arguments: ;;;;p - Insertion Point for the Clock ;;;;------------------------------------------------------------;;(defun LM:MakeClock ( p / LM:LWPoly LM:Insert LM:Circle LM:MText LM:Layer lay date SecDec MinDec 12HDec 24HDec DayDec )(setq lay *layer* *Fill* (getvar 'FILLMODE))(setvar 'FILLMODE 1) (defun LM:LWPoly ( pts bul wid cls ) (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 8 lay) (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length pts)) (cons 70 cls) (cons 43 wid) ) (apply 'append (mapcar '(lambda ( p b ) (list (cons 10 p) (cons 42 b)) ) pts bul ) ) ) ))(defun LM:Insert ( pt Nme ro ) (entmakex (list (cons 0 "INSERT") (cons 8 lay) (cons 2 Nme) (cons 10 pt) (cons 50 ro) ) ))(defun LM:Circle ( cen rad ) (entmakex (list (cons 0 "CIRCLE") (cons 8 lay) (cons 10 cen) (cons 40 rad) ) ))(defun LM:MText ( pt str hg ro ) (entmakex (list (cons 0 "MTEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbMText") (cons 8 lay) (cons 10 pt) (cons 40 hg) (cons 50 ro) (cons 1 str) (cons 71 5) ) ))(defun LM:Layer ( Nme Col Plt ) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 Nme) (cons 70 0) (cons 62 Col) (cons 290 Plt) ) ))(setq date (LM:toDate "HH:MM:SS"))(setq SecDec (/ (atoi (substr date 7 2)) 60.) MinDec (/ (+ (atoi (substr date 4 2)) SecDec) 60.) 12HDec (/ (+ (rem (atoi (substr date 1 2)) 12) MinDec) 12.) 24HDec (/ (+ (atoi (substr date 1 2)) MinDec) 24.) DayDec (/ (fix (rem (getvar 'DATE) 7)) 7.))(or (tblsearch "LAYER" lay) (LM:Layer lay 80 0))(LM:LWPoly (list (polar p 0 0.09) (polar p pi 0.09)) (list 1. 1.) 0.18 1)(LM:Circle p 0.5)( (lambda ( i ) (repeat 12 (LM:LWPoly (list (polar p (* (setq i (1+ i)) (/ pi 6.)) 10) (polar p (* i (/ pi 6.)) 8.4) ) '(0. 0.) 0.2 0 ) ) ) -1)( (lambda ( i ) (repeat 60 (LM:LWPoly (list (polar p (* (setq i (1+ i)) (/ pi 30.)) 10.) (polar p (* i (/ pi 30.)) 9.) ) '(0. 0.) 0. 0 ) ) ) -1)(mapcar (function (lambda ( a r ) (LM:Circle (polar p a 4.45) r) ) ) (list (/ pi 2.) (/ pi 2.) pi pi) (list 2.5 0.2 2.5 0.2))( (lambda ( i c ) (repeat 7 (LM:LWPoly (list (polar c (+ (/ pi 2.) (* (setq i (1+ i)) (/ (* 2 pi) 7.))) 2.5) (polar c (+ (/ pi 2.) (* i (/ (* 2 pi) 7.))) 2.0) ) '(0. 0.) 0.1 0 ) ) ) -1 (polar p (/ pi 2.) 4.45))( (lambda ( i c ) (repeat 12 (LM:LWPoly (list (polar c (* (setq i (1+ i)) (/ pi 6.)) 2.5) (polar c (* i (/ pi 6.)) 2.0) ) '(0. 0.) 0.1 0 ) ) ) -1 (polar p pi 4.45))( (lambda ( i c ) (repeat 24 (LM:LWPoly (list (polar c (* (setq i (1+ i)) (/ pi 12.)) 2.5) (polar c (* i (/ pi 12.)) 2.15) ) '(0. 0.) 0.0 0 ) ) ) -1 (polar p pi 4.45))(LM:LWPoly (list (polar (polar p 0 5.0) (/ (* 3 pi) 2.) 0.9) (polar (polar p 0 7.8) (/ (* 3 pi) 2.) 0.9) (polar (polar p 0 7.8) (/ pi 2.) 0.9) (polar (polar p 0 5.0) (/ pi 2.) 0.9) ) '(0.201387 0.0 0.201387 0.0) 0.0 1)(mapcar 'LM:MText (list (polar (polar p 0 5.04) (/ pi 2.) 2.31) (polar p 0 6.4) (polar p (/ (* 3 pi) 2.) 2.50) (polar p (/ (* 3 pi) 2.) 4.15) ) (list (strcat "{\\f"*font*"|b0|i0|c0|p34;\\C2;By Lee Mac}") (strcat "{\\f"*font*"|b0|i0|c0|p34;\\C2;" (LM:toDate "DD") "}") (strcat "{\\f"*font*"|b0|i0|c0|p34;\\C2;" (LM:toDate "HH:MM") "}") (strcat "{\\f"*font*"|b0|i0|c0|p34;\\C2;" (LM:toDate "MONTH YYYY") "}") ) (list 0.5 1.0 1.0 1.0) (list 0. 0. 0. 0.))(mapcar (function (lambda ( i c l ) (mapcar (function (lambda ( s ) (LM:MText (polar c (+ (/ pi 2.) (* (setq i (1+ i)) (/ (* 2. pi) (length l)))) 1.65) (strcat "{\\f"*font*"|b0|i0|c0|p34;\\C2;" (car s) "}") 0.3 (cadr s) ) ) ) l ) ) ) '(-1 -1) (list (polar p pi 4.45) (polar p (/ pi 2.) 4.45)) (list (list '("24" 0.) '("18" 0.) '("12" 0.) '("6" 0.)) (list (list "Mon" 0.) (list "Sun" (/ (*2 pi) 7.)) (list "Sat" (/ (*4 pi) 7.)) (list "Fri" (/ (*6 pi) 7.)) (list "Thu" (/ (*8 pi) 7.)) (list "Wed" (/ (* 10 pi) 7.)) (list "Tue" (/ (* 12 pi) 7.)) ) ))(mapcar (function (lambda ( block points width insertion rotation ) (cond ( (tblsearch "BLOCK" block) ) (t (entmakex (list (cons 0 "BLOCK") (cons 10 '(0. 0. 0.)) (cons 2 block) (cons 70 0) ) ) (LM:LWPoly points (mapcar '(lambda ( x ) 0.) points) width 0) (entmakex (list (cons 0 "ENDBLK") (cons 8 "0") ) ) ) ) (LM:Insert insertion block rotation) ) ) (list *sH* *mH* *hH* *dH* *24H*) (list (list '(0.0 0.5) '(0.0 8.0)) (list '(0.0 0.5) '(0.0 8.0)) (list '(0.0 0.5) '(0.0 4.5)) (list '(0.0 0.2) '(0.0 1.3)) (list '(0.0 0.2) '(0.0 1.3)) ) (list 0.0 0.2 0.2 0.1 0.1) (list p p p (polar p (/ pi 2.) 4.45) (polar p pi 4.45)) (mapcar '(lambda ( x ) (* x -2. pi)) (list SecDec MinDec 12HDec DayDec 24HDec)))(vla-ZoomWindow (vlax-get-acad-object) (vlax-3D-point (polar p (/ (* 5 pi) 4.) (+ 3. (sqrt 200.)))) (vlax-3D-point (polar p (/ pi 4.) (+ 3. (sqrt 200.)))))(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object) ) acActiveViewport))(defun LM:PurgeClock ( / doc ss )(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))(and *Fill* (setvar 'FILLMODE *Fill*))(if (and *layer* (setq ss (ssget "_X" (list (cons 8 *layer*))))) ( (lambda ( i / e ) (while (setq e (ssname ss (setq i (1+ i)))) (entdel e)) ) -1 ))(mapcar (function (lambda ( sym ) (and sym (tblsearch "BLOCK" sym) (vl-catch-all-apply 'vla-delete (list (LM:Itemp (vla-get-Blocks doc) sym) ) ) ) ) ) (list *sH* *mH* *hH* *dH* *24H*))(if (and *layer* (tblsearch "LAYER" *layer*)) (vl-catch-all-apply 'vla-delete (list (LM:Itemp (vla-get-Layers doc) *layer*) ) ))(mapcar '(lambda ( sym ) (set sym nil)) '(*sH* *mH* *hH* *dH* *24H* *layer* *Fill* *font*)) (princ))(vl-load-com)(princ "\n:: Clock.lsp | Version 1.0 | ?Lee Mac 2010 www.lee-mac.com ::")(princ "\n:: Type \"Clock\" to Toggle Clock ::")(princ);;------------------------------------------------------------;;;; End of File ;;;;------------------------------------------------------------;;
lee-mac.com写的反应器版本,使用任意命令结束时时间会更新
倒是整理下啊,这样看着眼晕!
页:
1
[2]