求助,公式计算
如图片所示,不知道能不能实现...请大家帮我看下本帖最后由 vitalgg 于 2021-5-22 20:19 编辑
没有做 0 除检查 和 R0 /= Rt 检查 ,自己加吧。 顺便 推广一下 @lisp: http://atlisp.cn
(defun ktr0rt:dialog (/ dcl_fp dcl-tmp dcl_id ktr0rt:cal)
(defun ktr0rt:cal (/ k t1 r0 rt res)
(setq k (read (get_tile "K")))
(setq t1 (read (get_tile "t")))
(setq r0 (read (get_tile "R0")))
(setq rt (read (get_tile "Rt")))
(if k (setq k (float k)))
(if t1 (setq t1 (float t1)))
(if r0 (setq r0 (float r0)))
(if rt (setq rt (float rt)))
(cond ((or (= 0 r0)(= 0 rt)(= 0 t1)) (alert "R0 Rt t不能为 0"))
((and (null k)
(numberp t1)
(numberp r0)
(numberp rt))
(set_tile "K"(rtos (* t1 (- (/ 1 rt)(/ 1 r0))) 2 5)))
((and (numberpk)
(null t1)
(numberp r0)
(numberp rt))
(set_tile "t" (rtos (/ k (- (/ 1 rt)(/ 1 r0))) 2 2)))
((and (numberp k)
(numberp t1)
(null r0)
(numberp rt))
(set_tile "R0" (rtos (/ 1 (- (/ 1 rt) (/ k t1))) 2 2)))
((and (numberp k)
(numberp t1)
(numberp r0)
(null rt))
(set_tile "Rt" (rtos (/ 1 (+ (/ 1 r0) (/ k t1))) 2 2))) (t (alert "数据不全或太全。"))
))
(progn
(setq dcl-tmp (strcat (getenv "temp") "\\" "tmp-ktr0rt.dcl" ))
(setq dcl_fp (open dcl-tmp "w"))
(write-line (strcat "panel : dialog {"
"label = \"Calc\"; "
":row{"
": edit_box { key=\"K\";label=\"K\";}"
": edit_box { key=\"t\";label=\"t\";}"
": edit_box { key=\"R0\";label=\"R0\";}"
": edit_box { key=\"Rt\";label=\"Rt\";}"
": button { key=\"calc\";label=\"Cal\";}"
"}ok_cancel;}")
dcl_fp)
(close dcl_fp))
(setq dcl_id (load_dialog dcl-tmp))
(if (not (new_dialog "panel" dcl_id))
(exit))
(action_tile "calc" "(ktr0rt:cal)")
(start_dialog)
(unload_dialog dcl_id)
(vl-file-delete dcl-tmp))
(defun C:tt ()(ktr0rt:dialog))
vitalgg 发表于 2021-5-22 19:55
没有做 0 除检查 和 R0 /= Rt 检查 ,自己加吧。 顺便 推广一下 @lisp: http://atlisp.cn
这里一个高手!支持@lisp
页:
[1]