找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3199|回复: 8

[每日一码] 修正了我的进度条,可以用时间及次数循环来控制了

[复制链接]

已领礼包: 146个

财富等级: 日进斗金

发表于 2014-8-11 22:49:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
修正了我的进度条,可以用时间及次数循环来控制了
  1. (defun progress_lgx(current_pcs tatoal current1_pcs tatoal1 / lgx_screenmin_point lgx_screenmax_point width-x_lgx
  2.         height-y_lgx half-y_lgx grve_lgx min-x_lgx max-x_lgx y_zl_lgx x_zl_lgx)
  3. ;;;(progn  ;;;例子如下
  4. ;;;(setq current 0)
  5. ;;;(repeat 11
  6. ;;;(progress_lgx current 100 current 150)
  7. ;;;(while (/= (getpoint) nil))
  8. ;;;(setq current (+ current 10))
  9. ;;;)
  10. ;;;(repeat 11
  11. ;;;(progress_lgx current 100 current 0)
  12. ;;;(while (/= (getpoint) nil))
  13. ;;;(setq current (+ current 10))
  14. ;;;)
  15. ;;;)
  16. ;;;原创,编写:  刘国新
  17. ;;;进度条显示
  18. (redraw)
  19. (setq lgx_screenmin_point(list (- (car (getvar "viewctr")) (/ (*(/ (getvar "viewsize") (cadr (getvar "screensize"))) (car (getvar "screensize"))) 2))
  20.          (- (cadr (getvar "viewctr")) (/ (getvar "viewsize") 2))))
  21. (setq lgx_screenmax_point(list (+ (car (getvar "viewctr")) (/ (*(/ (getvar "viewsize") (cadr (getvar "screensize"))) (car (getvar "screensize"))) 2))
  22.          (+ (cadr (getvar "viewctr")) (/ (getvar "viewsize") 2))))
  23. (setq width-x_lgx (- (car lgx_screenmax_point)(car lgx_screenmin_point)))
  24. (setq height-y_lgx (- (cadr lgx_screenmax_point)(cadr lgx_screenmin_point)))
  25. (setq half-y_lgx (+ (cadr lgx_screenmin_point)(* height-y_lgx 0.5)))
  26. (if (and (/= tatoal nil)(> tatoal 0))
  27. (progn
  28. (setq grve_lgx nil)
  29. (setq min-x_lgx (+ (car lgx_screenmin_point)(* width-x_lgx 0.25)))
  30. (setq max-x_lgx (- (car lgx_screenmax_point)(* width-x_lgx 0.25)))
  31. (if (and (/= tatoal1 nil)(> tatoal1 0))
  32. (progn
  33. (setq min-y_lgx (+ half-y_lgx (* height-y_lgx 0.005)))
  34. (setq max-y_lgx (+ half-y_lgx (* height-y_lgx 0.025)))
  35. )
  36. (progn
  37. (setq min-y_lgx (- half-y_lgx (* height-y_lgx 0.01)))
  38. (setq max-y_lgx (+ half-y_lgx (* height-y_lgx 0.01)))
  39. )
  40. )
  41. (setq grve_lgx (list (list min-x_lgx min-y_lgx)(list min-x_lgx max-y_lgx)
  42.          (list min-x_lgx min-y_lgx)(list max-x_lgx min-y_lgx)
  43.          (list min-x_lgx max-y_lgx)(list max-x_lgx max-y_lgx)
  44.          (list max-x_lgx max-y_lgx)(list max-x_lgx min-y_lgx)))
  45. (grvecs (cons 98 grve_lgx))
  46. (setq grve_lgx nil)
  47. (setq y_zl_lgx (/(* height-y_lgx 0.02) 11.0))
  48. (if (/= current_pcs 0)
  49. (setq x_zl_lgx (* width-x_lgx 0.5 (/ (float current_pcs) (float tatoal))))
  50. (setq x_zl_lgx 0)
  51. )
  52. (setq max-x_lgx (+ min-x_lgx x_zl_lgx))
  53. (repeat 10
  54. (setq min-y_lgx (+ min-y_lgx y_zl_lgx))
  55. (setq max-y_lgx min-y_lgx)
  56. (setq grve_lgx (list (list min-x_lgx min-y_lgx)(list min-x_lgx max-y_lgx)
  57.        (list min-x_lgx min-y_lgx)(list max-x_lgx min-y_lgx)
  58.        (list min-x_lgx max-y_lgx)(list max-x_lgx max-y_lgx)
  59.        (list max-x_lgx max-y_lgx)(list max-x_lgx min-y_lgx)))
  60. (grvecs (cons 1 grve_lgx))
  61. )
  62. )
  63. )
  64. (if (and (/= tatoal1 nil)(> tatoal1 0))
  65. (progn
  66. (setq grve_lgx nil)
  67. (setq min-x_lgx (+ (car lgx_screenmin_point)(* width-x_lgx 0.25)))
  68. (setq max-x_lgx (- (car lgx_screenmax_point)(* width-x_lgx 0.25)))
  69. (setq min-y_lgx (- half-y_lgx (* height-y_lgx 0.025)))
  70. (setq max-y_lgx (- half-y_lgx (* height-y_lgx 0.005)))
  71. (setq grve_lgx (list (list min-x_lgx min-y_lgx)(list min-x_lgx max-y_lgx)
  72.          (list min-x_lgx min-y_lgx)(list max-x_lgx min-y_lgx)
  73.          (list min-x_lgx max-y_lgx)(list max-x_lgx max-y_lgx)
  74.          (list max-x_lgx max-y_lgx)(list max-x_lgx min-y_lgx)))
  75. (grvecs (cons 98 grve_lgx))
  76. (setq grve_lgx nil)
  77. (setq y_zl_lgx (/(* height-y_lgx 0.02) 11.0))
  78. (if (/= current1_pcs 0)
  79. (setq x_zl_lgx (* width-x_lgx 0.5 (/ (float current1_pcs) (float tatoal1))))
  80. (setq x_zl_lgx 0)  
  81. )
  82. (setq max-x_lgx (+ min-x_lgx x_zl_lgx))
  83. (repeat 10
  84. (setq min-y_lgx (+ min-y_lgx y_zl_lgx))
  85. (setq max-y_lgx min-y_lgx)
  86. (setq grve_lgx (list (list min-x_lgx min-y_lgx)(list min-x_lgx max-y_lgx)
  87.        (list min-x_lgx min-y_lgx)(list max-x_lgx min-y_lgx)
  88.        (list min-x_lgx max-y_lgx)(list max-x_lgx max-y_lgx)
  89.        (list max-x_lgx max-y_lgx)(list max-x_lgx min-y_lgx)))
  90. (grvecs (cons 1 grve_lgx))
  91. )
  92. )
  93. )
  94. )





  95. (defun c:test2(/ current time_start loop time_end)
  96. (setq current 1)
  97. (repeat 101
  98. (setq time_start (getvar "cdate"))
  99. (setq loop t)
  100. (while loop
  101. (if (> (* 1000000 (- (setq time_end (getvar "cdate")) time_start)) 0.04)
  102. (setq loop nil)
  103. )
  104. (princ)
  105. (progress_lgx current 100 current 150)
  106. )
  107. (setq current (+ current 1))
  108. )
  109. )

  110. (defun c:test1(/ current loop)
  111. (setq current 1)
  112. (setq loop t)
  113. (while loop
  114. (princ)
  115. (progress_lgx current 150 current 100)
  116. (setq current (+ current 0.05))
  117. (if (>= current 100)
  118. (setq loop nil)
  119. )
  120. )
  121. )

  122. (defun c:test(/ current loop)
  123. (setq current 1)
  124. (setq loop t)
  125. (while loop
  126. (princ)
  127. (progress_lgx current 100 nil nil)
  128. (setq current (+ current 0.05))
  129. (if (>= current 100)
  130. (setq loop nil)
  131. )
  132. )
  133. )


3.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 146个

财富等级: 日进斗金

 楼主| 发表于 2014-8-12 18:53:07 | 显示全部楼层
拉契 发表于 2014-8-12 18:02
一般什么时候会用到这个呢?

一般不会用到这个,如果你想弄点花样,在图面上显示一下你的程序在运算过程的进度如何时,如在大量计算或在循环时用到。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

发表于 2014-8-12 09:20:28 | 显示全部楼层
这都是高手啊!{:soso_e179:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-12 18:02:07 | 显示全部楼层
一般什么时候会用到这个呢?

点评

一般不会用到这个,如果你想弄点花样,在图面上显示一下你的程序在运算过程的进度如何时,如在大量计算或在循环时用到。  详情 回复 发表于 2014-8-12 18:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2014-8-15 14:58:14 | 显示全部楼层
在运算中 grvecs真能即时更新吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-27 11:36:32 | 显示全部楼层
比较有创意,顶了。。。。。。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2014-8-30 10:28:12 | 显示全部楼层
进度条好象是在命令行中显示才有用吧
你这在图中显示
感觉位置应改在命令行中
或在屏幕中间水平位置
画一根会动的进度线也不错
画会后暂停N秒后此线自动删除
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1094个

财富等级: 财源广进

发表于 2021-7-8 00:07:39 | 显示全部楼层
感谢楼主分享修正了我的进度条,可以用时间及次数循环来控制了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 756个

财富等级: 财运亨通

发表于 2021-7-8 08:34:00 | 显示全部楼层
感谢分享源码!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-29 04:20 , Processed in 0.430464 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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