this is chinese version
author :- lgx
(defun progress_lgx(current_pcs tatoal current1_pcs tatoal1 / lgx_screenmin_point lgx_screenmax_point width-x_lgx
height-y_lgx half-y_lgx grve_lgx min-x_lgx max-x_lgx y_zl_lgx x_zl_lgx)
;;;By: Liu new
(redraw)
(setq lgx_screenmin_point(list (- (car (getvar "viewctr")) (/ (*(/ (getvar "viewsize") (cadr (getvar "screensize"))) (car (getvar "screensize"))) 2))
(- (cadr (getvar "viewctr")) (/ (getvar "viewsize") 2))))
(setq lgx_screenmax_point(list (+ (car (getvar "viewctr")) (/ (*(/ (getvar "viewsize") (cadr (getvar "screensize"))) (car (getvar "screensize"))) 2))
(+ (cadr (getvar "viewctr")) (/ (getvar "viewsize") 2))))
(setq width-x_lgx (- (car lgx_screenmax_point)(car lgx_screenmin_point)))
(setq height-y_lgx (- (cadr lgx_screenmax_point)(cadr lgx_screenmin_point)))
(setq half-y_lgx (+ (cadr lgx_screenmin_point)(* height-y_lgx 0.5)))
(if (and (/= tatoal nil)(> tatoal 0))
(progn
(setq grve_lgx nil)
(setq min-x_lgx (+ (car lgx_screenmin_point)(* width-x_lgx 0.25)))
(setq max-x_lgx (- (car lgx_screenmax_point)(* width-x_lgx 0.25)))
(if (and (/= tatoal1 nil)(> tatoal1 0))
(progn
(setq min-y_lgx (+ half-y_lgx (* height-y_lgx 0.005)))
(setq max-y_lgx (+ half-y_lgx (* height-y_lgx 0.025)))
)
(progn
(setq min-y_lgx (- half-y_lgx (* height-y_lgx 0.01)))
(setq max-y_lgx (+ half-y_lgx (* height-y_lgx 0.01)))
)
)
(setq grve_lgx (list (list min-x_lgx min-y_lgx)(list min-x_lgx max-y_lgx)
(list min-x_lgx min-y_lgx)(list max-x_lgx min-y_lgx)
(list min-x_lgx max-y_lgx)(list max-x_lgx max-y_lgx)
(list max-x_lgx max-y_lgx)(list max-x_lgx min-y_lgx)))
(grvecs (cons 98 grve_lgx))
(setq grve_lgx nil)
(setq y_zl_lgx (/(* height-y_lgx 0.02) 11.0))
(if (/= current_pcs 0)
(setq x_zl_lgx (* width-x_lgx 0.5 (/ (float current_pcs) (float tatoal))))
(setq x_zl_lgx 0)
)
(setq max-x_lgx (+ min-x_lgx x_zl_lgx))
(repeat 10
(setq min-y_lgx (+ min-y_lgx y_zl_lgx))
(setq max-y_lgx min-y_lgx)
(setq grve_lgx (list (list min-x_lgx min-y_lgx)(list min-x_lgx max-y_lgx)
(list min-x_lgx min-y_lgx)(list max-x_lgx min-y_lgx)
(list min-x_lgx max-y_lgx)(list max-x_lgx max-y_lgx)
(list max-x_lgx max-y_lgx)(list max-x_lgx min-y_lgx)))
(grvecs (cons 1 grve_lgx))
)
)
)
(if (and (/= tatoal1 nil)(> tatoal1 0))
(progn
(setq grve_lgx nil)
(setq min-x_lgx (+ (car lgx_screenmin_point)(* width-x_lgx 0.25)))
(setq max-x_lgx (- (car lgx_screenmax_point)(* width-x_lgx 0.25)))
(setq min-y_lgx (- half-y_lgx (* height-y_lgx 0.025)))
(setq max-y_lgx (- half-y_lgx (* height-y_lgx 0.005)))
(setq grve_lgx (list (list min-x_lgx min-y_lgx)(list min-x_lgx max-y_lgx)
(list min-x_lgx min-y_lgx)(list max-x_lgx min-y_lgx)
(list min-x_lgx max-y_lgx)(list max-x_lgx max-y_lgx)
(list max-x_lgx max-y_lgx)(list max-x_lgx min-y_lgx)))
(grvecs (cons 98 grve_lgx))
(setq grve_lgx nil)
(setq y_zl_lgx (/(* height-y_lgx 0.02) 11.0))
(if (/= current1_pcs 0)
(setq x_zl_lgx (* width-x_lgx 0.5 (/ (float current1_pcs) (float tatoal1))))
(setq x_zl_lgx 0)
)
(setq max-x_lgx (+ min-x_lgx x_zl_lgx))
(repeat 10
(setq min-y_lgx (+ min-y_lgx y_zl_lgx))
(setq max-y_lgx min-y_lgx)
(setq grve_lgx (list (list min-x_lgx min-y_lgx)(list min-x_lgx max-y_lgx)
(list min-x_lgx min-y_lgx)(list max-x_lgx min-y_lgx)
(list min-x_lgx max-y_lgx)(list max-x_lgx max-y_lgx)
(list max-x_lgx max-y_lgx)(list max-x_lgx min-y_lgx)))
(grvecs (cons 1 grve_lgx))
)
)
)
)
(defun c:test()
(setq current 1)
(setq current1 1)
(while (/= (car (apply 'GRREAD '(t 7 0))) 11)
(progress_lgx current 1000 current1 100)
(setq current (+ current 1))
(setq current1 (+ current1 1))
(if (= current 1000) (setq current 1))
(if (= current1 100) (setq current1 1))
)
)
;;;How time can be used to control the progress bar is displayed, for example,
;;;I would like to use the following methods, but shows the process can not be displayed
;;;(progn
;;;(setq current 1)
;;;(repeat 51
;;;(setq time_start (getvar "cdate"))
;;;(while (< (* 1000000 (- (setq time_end (getvar "cdate")) time_start)) 0.03))
;;;(progress_lgx current 100 current 150)
;;;(setq current (+ current 2))
;;;)
;;;)