本帖最后由 尘缘一生 于 2018-7-5 18:30 编辑
【三领外挂】采用的,提供出来
 - ;;-------求和并写出-----------------------------------------------------------
- (defun c:qiuhe(/ e e1 p n l l1 d pt0 pt2 pt3 ang hi)
- (command)
- (SSET)
- (setvar "LUPREC" 2);;;;精度到小数点后2位
- (setq pt0 0)
- (setq e(ssget))
- (setq p (sslength e))
- (setq n 0)
- (setq p (- p 1))
- (while (<= n p)
- (setq e1(entget(ssname e n)))
- (if (="TEXT" (cdr(assoc 0 e1)))
- (progn
- (setq pt2(atof(cdr(assoc 1 e1))))
- (setq pt0(+ pt0 pt2))
- )
- )
- (setq n(+ n 1))
- )
- (alert(setq pt0 (rtos pt0))) ;;;;;把和数字变为字符串,并显示出来
- (setq l(strlen pt0))
- (while (="0" (substr pt0 l))
- (setq pt0 (substr pt0 1 (- l 1)))
- (setq l(strlen pt0))
- )
- (if (="." (substr pt0 l))
- (setq pt0 (substr pt0 1 (- l 1)))
- (setq l(strlen pt0))
- )
- (CHZI)
- (SSET1)
- )
- ;;----------------------------------------------------------------------------
- (defun SSET( )
- (setq oldos (getvar "OSMODE"))
- (setq oldorh (getvar "ORTHOMODE"))
- (setq oldsn (getvar "SNAPMODE"))
- (setq oldlup (getvar "LUPREC"))
- (setvar "OSMODE" 0) ;;;捕捉关闭
- (setvar "ORTHOMODE" 0) ;;;正交关闭
- (setvar "SNAPMODE" 0);;;;实体捕捉关闭
- (setvar "CMDECHO" 0)
- (setvar "TEXTEVAL" 1)
- )
- ;;---------------------------------------------------------------------------
- (defun SSET1( )
- (setvar "ORTHOMODE" oldorh) ;;;恢复正交
- (setvar "OSMODE" oldos) ;;;恢复正交
- (setvar "SNAPMODE" oldsn) ;;;;恢复实体捕捉
- (setvar "LUPREC" oldlup) ;;;;恢复数值小数位数
- (setvar "CMDECHO" 1)
- )
- ;;------根据给出的字符串pt0改-写字符----------------------------------------------------
- (defun CHZI ( )
- (setq oldlup (getvar "LUPREC"))
- (setvar "LUPREC" 0);;;;精度到各位,以便后续取得标准颜色号
- (princ "\n 选择修改数字,空选(右键)即写出: ")
- (setq e1(ssget))
- (if (/= e1 nil)
- (progn
- (setq p (sslength e1))
- (setq n 0)
- (setq p (- p 1))
- (while (<= n p)
- (setq e(entget(ssname e1 n)))
- (if (OR (="TEXT" (cdr(assoc 0 e)))(="MTEXT" (cdr(assoc 0 e))))
- (progn
- (setq ang(angtos (cdr(assoc 50 e)) 0 2))
- (setq hi(cdr(assoc 40 e)))
- (setq sty(cdr(assoc 7 e)))
- (setq pt1(cdr(assoc 10 e)))
- (entdel(ssname e1 n))
- (command "TEXT" "S" sty pt1 hi ang pt0)
- (vl-cmdf "_.JustifyText" (entlast) "" "ML")
- (command "CHANGE" (entlast) "" "P" "C" (rtos (1+ (rem (getvar "CPUTICKS") 8))) "")
- );;;;progn
- ) ;;;; end if
- (setq n (+ n 1))
- );;;;while
- );;;progn
- )
- (if (= e1 nil)
- (progn
- (setq pt3 (nth 1 (grread 5))) ;取得文字写入点
- (command "TEXT" pt3 (* (getvar "DIMSCALE") 3.0) 0 pt0)
- (vl-cmdf "_.JustifyText" (entlast) "" "ML")
- (command "MOVE" (entlast) "" pt3 pause"")
- (command "CHANGE" (entlast) "" "P" "C" (rtos (1+ (rem (getvar "CPUTICKS") 8))) "")
- ) ; progn
- )
- (setvar "LUPREC" oldlup) ;;;;恢复数值小数位数
- )
- ;;-----------------------------------------------------------------------------------
|