本帖最后由 ZZXXQQ 于 2014-12-27 13:02 编辑
 - (defun c:js (/ uu txt3 ent)
- (if (not(wcmatch fuh "+,-,*,/")) (setq fuh "*"))
- (if (not(wcmatch mos "a,b")) (setq mos "a"))
- (setq txt1 (getstring (strcat "\n请输入运算符号[加(+)/减(-)/乘(*)/除(/)] <" fuh ">:")))
- (if (apply 'and (mapcar '(lambda (x) (/= txt1 x)) '("+" "-" "*" "/" ""))) (exit))
- (if (= txt1 "") (setq txt1 fuh) (setq fuh txt1))
- (setq zz (getstring (strcat "\n请输入模式[单步(A)/连续(B)] <" (strcase mos)">:")))
- (if (apply 'and (mapcar '(lambda (x) (/= zz x)) '("a" "b" ""))) (exit))
- (if (= zz "") (setq zz mos) (setq mos zz))
- (setq zz (strcase zz T))
- (setq uu (strcat txt1 zz))
- (jisuan txt1 zz)
- (princ)
- )
- (defun jisuan (fun ab)
- (setq yslst '(("+" . "加") ("-" . "减") ("*" . "乘") ("/" . "除")))
- (setq tmp (cdr(assoc fun yslst)))
- (setq lx (cdr(assoc ab '(("a" . "单步") ("b" . "连续")))))
- (princ (strcat "\n " lx tmp "法运算: "))
- (if (= ab "a") (progn
- (setq ent (car(entsel (strcat "\n选择第一个" tmp "数: "))))
- (setq txt2 (entget ent))
- (setq txt2 (atof (cdr (assoc 1 txt2))))
- (princ (rtos txt2))
- (setq ent (car(entsel (strcat "\n选择第二个" tmp "数: "))))
- (setq txt3 (entget ent))
- (setq txt3 (atof (cdr (assoc 1 txt3))))
- (princ (rtos txt3))
- (setq sum ((read fun) txt2 txt3))
- (princ (strcat "\n两数的" tmp "法运算为: " (rtos sum 2)))
- ) (progn
- (setq ent (car (entsel "\n选择第一个数: ")))
- (setq sum (atof (cdr (assoc 1 (entget ent))))
- (princ (rtos sum))
- (prompt (strcat "\n请选择" tmp "数: "))
- (if (setq sstext (ssget '((0 . "*TEXT")))) (progn
- (setq mm 0)
- (princ (strcat "选择的" tmp "数: "))
- (repeat (setq len (sslength sstext))
- (setq txtent (ssname sstext (setq len (1- len))))
- (setq modeltxt (cdr (assoc 1 (entget txtent))))
- (setq sum ((read fun) sum (atof modeltxt)))
- (setq mm (1+ mm))
- (princ (strcat "\n 第" (itoa mm) tmp "数:"))
- (princ modeltxt)
- )
- ))
- (princ (strcat "\n计算的结果为:" (rtos sum 2)))
- ))
- (setq ent (car (entsel "\n选择结果的位置: ")))
- (princ "完成")
- (setq ent (entget ent))
- (entmod (subst (cons 1 (rtos sum 2 2)) (assoc 1 ent) ent))
- )
|