钢筋编号,从1~上百,如1~199,每个数字都在圆内,用lisp可以自动找到所有文字,并全部修改为一个高度和宽度比例,但我想将1~9号数字的宽度比例用0.7,10~99号数字的宽度比例用0.65,100~199号数字的宽度比例用0.55,如何能自动搜索文字字段并修改圆内数字相应宽度比例?是个头痛的问题,请高手不吝赐教。 ;********** PMZT 将钢筋标注字体左对齐(L)*** (defun PMZT() (setq old_hh 2.50) ;字体高度(默认为2.5) (setq str_hh (strcat "\n 请输入钢筋标注字体高度<" (rtos old_hh 2) ">: ")) (setq hh (getdist str_hh)) (if (null hh) (setq hh old_hh)) (setq zkxs (getreal "\n 请输入钢筋标注字体宽度比例系数<0.7>: "));字体宽度系数(默认为0.7) (if (null zkxs) (setq zkxs 0.7)) (setq sszt (ssget "X" '((0 . "TEXT")))) (command "justifytext" "P" "" "M") (ztdX) (prin1) ) (defun ztdX() (setq i 0) (setq nn (sslength sszt)) (repeat nn (setq ssn (ssname sszt i)) (setq ssdata (entget ssn)) (setq sstyp (cdr (assoc 0 ssdata))) (if (= sstyp "TEXT") (progn (setq old_hh (assoc 40 ssdata));改文字高度 (setq new_hh (cons 40 hh)) (setq old_kb (assoc 41 ssdata));改宽度比例数 (setq new_kb (cons 41 zkxs)) (setq ssdata (subst new_hh old_hh ssdata)) (setq ssdata (subst new_kb old_kb ssdata)) (entmod ssdata) );end if );end if (setq i (1+ i)) ) (prompt "\n 正在处理...请稍候......") (prin1) ) |