然而,你可以使用slide_图像作为按钮,一年前我试图创建一个DCL计算器只是为了好玩。我放弃了这个想法,因为我无法绕过所有这些算术函数,尤其是“除法”
附件是我失败的尝试,也许你会有更好的运气。
- (defun c:calD ( / _operand _values curV STotal nums)
- (vl-load-com)
- (defun _operand (lst sym / a)
- (set_tile "Total"
- (setq a (if (>= (length lst) 2)
- (rtos (eval (cons (eval (read sym)) (mapcar 'atof lst))) 2)
- (car lst))))
- a
- )
- (defun _values (var str)
- (setq var (strcat var
- (if (and (wcmatch var "*.*")
- (eq str ".")) "" str)))
- )
- (setq curV "" STotal "" nums nil)
- (setq Dcl_sm (load_dialog "CALCD.DCL"))
- (new_dialog "Numbers" Dcl_sm)
- (set_tile "Title" " pBe Calculator")
- (start_image "Title")
- (foreach slnm (setq vls '("1" "2" "3" "4" "5" "6" "7"
- "8" "9" "0" "iplus" "iminus" "idivide"
- "iequal" "imultiply" "idot" "iCan"))
- (setq _X (dimx_tile slnm))
- (setq _Y (- (dimy_tile slnm) 2))(end_image)
- (start_image slnm)(slide_image 1 1 _X _Y slnm)
- )(end_image)
- (foreach dgt '("1" "2" "3" "4" "5" "6" "7" "8" "9" "0" )
- (action_tile dgt
- (vl-prin1-to-string
- (quote (progn
- (setq curV (_values curv $key))
- (set_tile "Total" curV)))))
- )
- (action_tile "idot"
- "(setq curV (_values curV "."))
- (set_tile "Total" curV) ")
- (action_tile "iminus"
- "(setq nums (cons curV nums))
- (setq STotal (_operand nums (setq sy "-")) curV "") ")
- (action_tile "imultiply"
- "(setq nums (cons curV nums))
- (setq STotal (_operand nums (setq sy "*")) curV "") ")
- (action_tile "iplus"
- "(setq nums (cons curV nums))
- (setq STotal (_operand nums (setq sy "+")) curV "") ")
- (action_tile "iequal"
- "(set_tile "T" (setq STotal (_operand (cons curV nums) sy)))(setq curV "" nums nil)")
- (action_tile "iCan" "(setq curV "" nums nil)(set_tile "Total" "") ")
- (action_tile "accept" "(done_dialog 1)")
- (start_dialog)
- (unload_dialog Dcl_sm)
- STotal
- )
由于某些原因,您必须将自己的幻灯片装入板条箱,因为它不接受将其作为附件
HTH公司
计算。DCL |