AutoLISP绘制时钟

AutoLISP绘制时钟,代码如下。

(defun c:test()
  (setvar "cmdecho" 0)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq cen (getpoint "\n中心点:"))
  (setq rr (* (getdist cen "\n半径:") 2))
  (lsp_22a)
  (lsp_22b)
  (setvar "osmode" os)
  )
(defun lsp_22a()
  (setvar "cecolor" "3")
  (command "donut" (/ (* rr 39) 40) rr cen "")
  (setvar "cecolor" "1")
  (setq pp_12 (polar cen (/ pi 2) (/ 22 2)))
  (setq pp_3 (polar cen 0 (/ rr 2)))
  (setq pp_6 (polar cen (* pi 1.5) (/ rr 2)))
  (setq pp_9 (polar cen pi (/ rr 2)))
  (command "donut" 0 (/ rr 2) pp_12 pp_13 pp_6 pp_9 "")
  (setvar "cecolor" "7")
  (command "pline" cen "w" (/ rr 40) "" cen (polar cen (/ pi 2) (* (/ rr 2) 7)) "")
  (setq en3 (entlast))
  (setvar "cecolor" "4")
  (command "pline" cen "w" (/ rr 50) "" cen (polar cen (/ pi 2) (* (/ rr 2) 8)) "")
  (setq en1 (entlast))
  (setvar "cecolor" "5")
  (command "pline" cen "w" 0 0 cen (polar cen (/ pi 2) (* (/ rr 20) 9)) "")
  (setq en2 (entlast))
  (setvar "cecolor" "bylayer")
  (setq ti (rtos (getvar "cdate") 2 6))
  (setq tt (substr ti 10 2))
  (setq dd (substr ti 12 2))
  (setq mm (substr ti 14 2))
  (command "rotate" en3 "" cen (* (atoi tt) -30))
  (command "rotate" en2 "" cen (* (atoi mm) -6))
  (command "rotate" en1 "" cen (* (atoi dd) -6))
  (command "rotate" en3 "" cen (* (atoi mm) -0.5))
  )
(defun lsp_22b()
  (setq txt_12 (polar pp_12 (* pi 1.5) (/ rr 10)))
  (setq txt_3 (polar pp_3 pi (/ rr 10)))
  (setq txt_6 (polar pp_6 (/ pi 2) (/ rr 10)))
  (setq txt_9 (polar pp_9 0 (/ rr 10)))
  (command "text" "m" txt_12 (/ rr 12) 0 "12")
  (command "text" "m" txt_3 (/ rr 12) 0 "3")
  (command "text" "m" txt_6 (/ rr 12) 0 "6")
  (command "text" "m" txt_9 (/ rr 12) 0 "9")
  )
(princ "\n------>>lsp_22<<------")
(prin1)

代码完。

作者:codee
文章千古事,得失寸心知。


原文地址:https://www.cnblogs.com/bimgoo/p/2502976.html