求修改里面的求和程序。
现在的程序有以下的问题需要修改:1.前缀是汉字的无法求和。
2.前缀是字母或数字的,只能显示一个。
3.字体大小默认为1,字体大小改为2后,表格不会跟随字体大小变化。
源程序如下:
;主要对单行文本多行文本全是数字或前后有中文,字母等的数字求合
(defun c:HK ()
(SETQ OM (GETVAR "CMDECHO"))
(SETVAR "CMDECHO" 0)
(setq ss (ssget '((0 . "*TEXT")))
n 0
XY (GETPOINT "请点击表格左上角位置:")
)
(setq sl (sslength ss))
(SETQ zmlist '()
zwlist '()
szlist '()
zmlist1 '()
ZWLIST1'()
)
(repeat sl
(setq a (cdr (assoc 1 (entget (ssname ss n)))))
(setq a1 (vl-string->list a))
(setq max1 (apply 'max a1))
(setq sz1 (<= max1 57)
ZM1 (AND (<= max1 122) (> MAX1 57))
ZW1 (>= MAX1 128)
)
(IF (AND (= SZ1 T) (= ZM1 NIL) (= ZW1 NIL))
(progn
(setq sz2 (atoi a))
(setq szlist (cons sZ2 szlist))
)
)
(IF (AND (= SZ1 NIL) (= ZM1 T) (= ZW1 NIL))
(PROGN
(setq zm2 (vl-position max1 a1))
(if (= zm2 0)
(progn
(setq zm3 (atoi (substr a 2)))
(setq zmlist (cons zm3 zmlist))
)
(progn
(setq zm3 (atoi (substr a 1 (- (strlen a) 1))))
(setq zmlist1 (cons zm3 zmlist1))
)
)
(setq zm4 (substr a (+ zm2 1) 1))
)
)
(IF (AND (= SZ1 NIL) (= ZM1 NIL) (= ZW1 T))
(PROGN
(setq ZW2 (VL-POSITION MAX1 A1))
(IF (= ZW2 0)
(PROGN
(SETQ ZW3 (ATOI (SUBSTR A 3)))
(SETQ ZWLIST (CONS ZW3 ZWLIST))
)
(PROGN
(SETQ ZW2 (ATOI (SUBSTR A 1 (- (STRLEN A) 2))))
(SETQ ZWLIST1 (CONS ZW3 ZWLIST1))
)
)
(SETQ ZW4 (SUBSTR A (+ ZW2 1) 2))
)
)
(SETQ N (1+ N))
)
(IF (/= SZLIST NIL)
(PROGN
(SETQ SZH (APPLY '+ SZLIST))
(SETQ SZLR (RTOS SZH 2 0))
(SETQ HILGH (STRLEN SZLR))
(SETQ XY1 (POLAR XY (ANGTOF "270") 1.5)
XY2 (POLAR XY 0 HILGH)
XY3 (POLAR XY1 0 HILGH)
XY4 (POLAR XY (ANGTOF "279") 1.5)
)
(COMMAND "PLINE"XY1 XY3 XY2 XY "C" )
(COMMAND "TEXT" "J" "BL" XY4 "1" "0" SZLR)
(SETQ XY XY2)
)
)
(IF (/= ZMLIST NIL)
(PROGN
(SETQ ZMH (APPLY '+ ZMLIST))
(SETQ ZMLR (STRCAT ZM4 (RTOS ZMH 2 0)))
(SETQ HILGH (STRLEN ZMLR))
(SETQ XY1 (POLAR XY (ANGTOF "270") 1.5)
XY2 (POLAR XY 0 HILGH)
XY3 (POLAR XY1 0 HILGH)
XY4 (POLAR XY (ANGTOF "279") 1.5)
)
(COMMAND "PLINE" XY1 XY3 XY2 XY "C" )
(COMMAND "TEXT" "J" "BL" XY4 "1" "0" ZMLR )
(SETQ XY XY2)
)
)
(IF (/= ZMLIST1 NIL)
(PROGN
(SETQ ZMH (APPLY '+ ZMLIST1))
(SETQ ZMLR (STRCAT ZM4 (RTOS ZMH 2 0)))
(SETQ HILGH (STRLEN ZMLR))
(SETQ XY1 (POLAR XY (ANGTOF "270") 1.5)
XY2 (POLAR XY 0 HILGH)
XY3 (POLAR XY1 0 HILGH)
XY4 (POLAR XY (ANGTOF "279") 1.5)
)
(COMMAND "PLINE" XY1 XY3 XY2 XY "C" )
(COMMAND "TEXT" "J" "BL" XY4 "1" "0" ZMLR)
(SETQ XY XY2)
)
)
(IF (/= ZWLIST NIL)
(PROGN
(SETQ ZMH (APPLY '+ ZWLIST))
(SETQ ZMLR (STRCAT ZW4 (RTOS ZMH 2 0)))
(SETQ HILGH (STRLEN ZMLR))
(SETQ XY1 (POLAR XY (ANGTOF "270") 1.5)
XY2 (POLAR XY 0 HILGH)
XY3 (POLAR XY1 0 HILGH)
XY4 (POLAR XY (ANGTOF "279") 1.5)
)
(COMMAND "PLINE" XY1 XY3 XY2 XY "C" )
(COMMAND "TEXT" "J" "BL" XY4 "1" "0" ZMLR)
(SETQ XY XY2)
)
)
(IF (/= ZWLIST1 NIL)
(PROGN
(SETQ ZMH (APPLY '+ ZWLIST))
(SETQ ZMLR (STRCAT ZW4 (RTOS ZMH 2 0)))
(SETQ HILGH (STRLEN ZMLR))
(SETQ XY1 (POLAR XY (ANGTOF "270") 1.5)
XY2 (POLAR XY 0 HILGH)
XY3 (POLAR XY1 0 HILGH)
XY4 (POLAR XY (ANGTOF "279") 1.5)
)
(COMMAND "PLINE" XY1 XY3 XY2 XY "C" )
(COMMAND "TEXT" "J" "BL" XY4 "1" "0" ZMLR )
(SETQ XY XY2)
)
)
(SETVAR "CMDECHO" OM)
(princ)
)
(princ "程序加载成功输入HK运行!")
期待高手出现!
kankan谢谢 xyp1964 发表于 2015-4-6 12:11 static/image/common/back.gif
下载了,楼主的e派工具箱无所不能呀! 院长,你这是在眼馋我们啊,没有你的工具箱,我们只能看,不能用啊。 我这边下载链接提示失效了,打不开。
页:
[1]