当上偏差或下偏差有一个为零时,"0"就和"+"或"-"对起,那看起来很别扭,我帮你改了一下:
(defun c:gc (/ ++++ ---- ltoll+ ltoll- ltola ltolb diment ENT dimtext ldimdata rr ltoltext1 ccc pr01 ltoltext2 ddd pr02 crackl) (setvar "cmdecho" 0) (if (null ltoldata+)(setq ltoldata+ "0.1")) (if (null ltoldata-)(setq ltoldata- "0.1")) (setq ++++ (strcat "\n输入上公差" "<" ltoldata+ ">" ":")) (initget 128)(setq ltoll+ (getkword ++++))(if (null ltoll+)(setq ltoll+ ltoldata+)) (setq ---- (strcat "\n输入下公差" "<" ltoldata- ">" ":")) (initget 128)(setq ltoll- (getkword ----))(if (null ltoll-)(setq ltoll- ltoldata-)) (COND ((= (STRLEN ltoll+) 1) (setq ltola (strcat "{\\H0.6x;\\S " ltoll+ "^"ltoll-";}"))) ((= (STRLEN ltoll-) 1) (setq ltola (strcat "{\\H0.6x;\\S" ltoll+ "^ "ltoll-";}"))) (T (setq ltola (strcat "{\\H0.6x;\\S" ltoll+ "^" ltoll-";}")))) (if (= ltoll+ ltoll-)(setq ltolb (strcat "%%P" ltoll+))) (setq ltoldata+ ltoll+);;保存本次输入正公差数值 (setq ltoldata- ltoll-);;保存本次输入负公差数值 ;;选择开始 (SETQ diment (ENTSEL "\n选择应用公差的尺寸 : "));;选择物件 (if (null diment)(exit (PRINC "\n错误! 没有选择任何物件!")));;判断是否为有效选取 (SETQ ENT (ENTGET (CAR diment)));;取得选择的资料串行 (setq dimtext (CDR (ASSOC 0 ENT)));;取得资料串行名称,判断选择的物件是否为尺寸 (if (/= dimtext "DIMENSION")(exit (princ "\n错误! 选择的物件非尺寸或尺寸已分解!"))) (setq ldimdata (CDR (ASSOC 1 ENT)));;取得尺寸资料串行 (setq rr (substr ldimdata 1 2));;抽取尺寸值前2位 (if (or (= rr "") (= rr "<>")) (progn (setq ltoltext1 (strcat "<>" ltola)) (setq ccc(subst (cons 1 ltoltext1)(assoc 1 ENT)ENT)) (entmod ccc);;(entupd diml1) (princ) ) (progn (if (or (/= rr "") (/= rr "<>"))(exit (princ "\n错误! 尺寸被修改过! 只支持实际数值及未分解的尺寸!"))) ) ) (if (= ltoldata+ ltoldata-) (progn (setq ltoltext2 (strcat "<>" ltolb)) (setq ddd(subst (cons 1 ltoltext2)(assoc 1 ENT)ENT)) (entmod ddd) (princ) ) (progn (setq crackl 2006) ) ) (princ (strcat "\nOK! 恭喜你成功标注公差!")) (princ) )
|