明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3444|回复: 16

会动的数字时钟

  [复制链接]
发表于 2011-4-27 15:50:00 | 显示全部楼层 |阅读模式
;===========================================================
;核心的代码不是我的,原来的不会动,我改成会动的,秒针会走,程序正确
;以下小问题没有解决:3、6、9、12四个数字的字高不能随钟表的半径而成比例改变,半径30以下表比较好看
;ERASE 我设成了全部,测试时要建个空白图,图幅以A4为佳
;秒针的走动不太规律,能上网的电脑没有CAD,有小错误大家帮忙改一下,谢谢,程序昨晚能正常运行,
(defun c:YTM22()   ;数字时钟
   (setq cen (getpoint "\n中心点: "))
   (setq rr (* (getdist cen "\n半径: ") 2))
(REPEAT  120 ;设了两分钟以供测试
  (COMMAND "DELAY" 1000) ;每秒钟重画一次
   (setvar "cmdecho" 0)
   (setq os (getvar "osmode"))
   (setvar "osmode" 0)
     (lsp_22a)
   (lsp_22b)
   (setvar "osmode" os)
  (COMMAND "ERASE" "ALL" "") ;把一次画的擦去
)
)
(defun lsp_22a()
   (setvar "cecolor" "3")
   (command "donut" (/ (* rr 39) 40) rr cen "")
   (setvar "cecolor" "1")
   (setq pp_12 (polar cen (/ pi 2) (/ rr 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 12) pp_12 pp_3 pp_6 pp_9 "")
   (setvar "cecolor" "7")
   (command "pline" cen "w" (/ rr 40) "" cen (polar cen (/ pi 2) (* (/ rr 20) 7)) "")
   (setq en3 (entlast))
   (setvar "cecolor" "4")
   (command "pline" cen "w" (/ rr 50) "" cen (polar cen (/ pi 2) (* (/ rr 20) 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")
)
;===========================================================

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-4-27 17:20:22 | 显示全部楼层
类似的程序如下:
  1. (defun c:lsp_22_1()
  2. (setq os (getvar "osmode"))
  3. (setvar "osmode" 0)
  4. (setq cen (getpoint "\n中心点:"))
  5. (setq rr (* 2 (getdist cen "\n半径:")))
  6. (lsp_22a)
  7. (lsp_22b)
  8. (lsp_22c)
  9. (setvar "osmode" os)
  10. )
  11. ;;;;;;;;;;
  12. (defun lsp_22a()
  13. (setvar "cecolor" "3")
  14. (command "donut" (/ (* rr 39) 40) rr cen "")
  15. (setvar "cecolor" "1")
  16. (setq pp_12 (polar cen (/ pi 2) (/ rr 2)))
  17. (setq pp_3 (polar cen 0 (/ rr 2)))
  18. (setq pp_6 (polar cen (* pi 1.5) (/ rr 2)))
  19. (setq pp_9 (polar cen pi (/ rr 2)))
  20. (setvar "cecolor" "7")
  21. (command "pline" cen "w" (/ rr 40) "" cen (polar cen (/ pi 2) (* (/ rr 20) 7)) "")
  22. (setq en3 (entlast))
  23. (setvar "cecolor" "4")
  24. (command "pline" cen "w" (/ rr 50) "" cen (polar cen (/ pi 2) (* (/ rr 20) 8)) "")
  25. (setq en1 (entlast))
  26. (setvar "cecolor" "5")
  27. (command "pline" cen "w" (/ rr 100) "" cen (polar cen (/ pi 2) (* (/ rr 20) 9)) "")
  28. (setq en2 (entlast))
  29. (setvar "cecolor" "bylayer")
  30. (setq ti (rtos (getvar "cdate") 2 6))
  31. (setq tt (substr ti 10 2))
  32. (setq dd (substr ti 12 2))
  33. (setq mm (substr ti 14 2))
  34. (setq nn (substr ti 1 4))
  35. (setq yue (substr ti 5 2))
  36. (setq ri (substr ti 7 2))
  37. (setq ang0_mm (* (atoi mm) -6))
  38. (setq ang0_dd (* (atoi dd) -6))
  39. (setq ang0_tt (* (atoi tt) -30))
  40. (command "rotate" en3 "" cen (* (atoi tt) -30))
  41. (command "rotate" en2 "" cen (* (atoi mm) -6))
  42. (command "rotate" en1 "" cen (* (atoi dd) -6))
  43. (command "rotate" en3 "" cen (* (atoi dd) -0.5))
  44. (setvar "cecolor" "2")
  45. (command "pline" pp_12 "w" (/ rr 100) "" (polar pp_12 (* pi 1.5) (* rr (/ 88.4 1332.9))) "")
  46. (setq en4 (entlast))
  47. (setvar "cecolor" "3")
  48. (command "pline" pp_12 "w" (/ rr 200) "" (polar pp_12 (* pi 1.5) (* rr (/ 68.4 1332.9))) "")
  49. (setq en5 (entlast))
  50. (command "array" en5 "" "p" cen 60 360 "")
  51. (command "array" en4 "" "p" cen 12 360 "")
  52. )
  53. ;;;;;;;;;;;
  54. (defun lsp_22b()
  55. (setq txt_12 (polar pp_12 (* 1.5 pi) (/ rr 8)))
  56. (setq txt_3 (polar pp_3 pi (/ rr 8)))
  57. (setq txt_6 (polar pp_6 (/ pi 2) (/ rr 8)))
  58. (setq txt_9 (polar pp_9 0 (/ rr 8)))
  59. (setq txt_t (polar cen (* pi 1.5) (/ rr 4)))
  60. (command "text" "m" txt_12 (/ rr 12) 0 "12")
  61. (command "text" "m" txt_3 (/ rr 12) 0 "3")
  62. (command "text" "m" txt_6 (/ rr 12) 0 "6")
  63. (command "text" "m" txt_9 (/ rr 12) 0 "9")
  64. (setvar "cecolor" "1")
  65. (command "text" "m" txt_t (/ rr 24) 0 (strcat nn "年" " " yue "月" " " ri "日"))
  66. )
  67. ;;;;;;;;;;;;;;;;
  68. (defun lsp_22c()
  69. (while en2
  70. (setq ti (rtos (getvar "cdate") 2 8))
  71. (setq nn (substr ti 16 2))
  72. (setq mm_1 (substr ti 14 2))
  73. (setq dd_1 (substr ti 12 2))
  74. (setq tt_1 (substr ti 10 2))
  75. (setq add_mm (- (atoi mm_1) (atoi mm)))
  76. (setq add_dd (- (atoi dd_1) (atoi dd)))
  77. (setq add_tt (- (atoi tt_1) (atoi tt)))
  78. (setq ang1_mm (* (atoi mm_1) -6))
  79. (setq ang1_dd (* (atoi dd_1) -6))
  80. (setq ang1_tt (* (atoi tt_1) -30))
  81. (if (= (atoi nn) 0)
  82. (command "rotate" en2 "" cen (- ang1_mm ang0_mm))
  83. )
  84. (if (= add_dd 1)
  85. (command "rotate" en1 "" cen (- ang1_dd ang0_dd))
  86. )
  87. (if (= add_tt 1)
  88. (command "rotate" en3 "" cen (- ang1_tt ang0_tt))
  89. )
  90. (setq ang0_mm ang1_mm)
  91. (setq ang0_dd ang1_dd)
  92. (setq ang0_tt ang1_tt)
  93. (setq mm mm_1)
  94. (setq dd dd_1)
  95. (setq tt tt_1)
  96. )
  97. )




发表于 2011-4-27 20:52:22 | 显示全部楼层
谢谢楼上的分享
很好。收藏了,留下看看学习学习
谢谢
发表于 2011-4-27 23:11:02 | 显示全部楼层
停不下来。。
发表于 2011-4-28 10:16:02 | 显示全部楼层
秒钟有时会跳到对面去,不过也还可以了
 楼主| 发表于 2011-4-28 15:24:14 | 显示全部楼层
家在湾里 发表于 2011-4-28 10:16
秒钟有时会跳到对面去,不过也还可以了

我也不知道为啥走一段时间后秒针就乱跳一下,
发表于 2011-4-29 10:54:56 | 显示全部楼层
回复 革天明 的帖子

对呀!可是我不会改啊
发表于 2011-4-29 18:33:57 | 显示全部楼层
程序都需要强制退出啊  
发表于 2011-4-29 21:05:39 | 显示全部楼层
這是"魔法秘笈"中的範例練習題
 楼主| 发表于 2011-5-1 15:29:14 | 显示全部楼层
egos 发表于 2011-4-29 18:33
程序都需要强制退出啊

主要在于 repeat 的次数,我设的是两分钟,到时间就停了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-9-26 03:49 , Processed in 0.161764 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表