求助!多行文本数字求和问题!请帮看看。
本帖最后由 guankuiwu 于 2012-5-4 16:31 编辑首先这个lsp是网上找的,多谢原作者!自己稍微改动了输出。
现运行如下:单行文本正常,多行文本如果文本宽度因子、间距因子,倾斜因子为1时正常,如果不是1的话,会把这些因子的数值加进去最终结果,求助怎样过滤多行文本的其他属性数值!
;-----------------------------------------------------------------------------------------------
;plus->文本计数求和;
(defun C:aaa ( / ss filter mspace n e str asclst strs add pt txt txth)
(defun *error* (msg) (if ss (x_draw ss 4)) (setq *error* oerr))
(princ "\n文本数字求和")
(vl-load-com)
(princ "\n选择要计算的文本:")
(setq oerr *error*
ss (ssget '((0 . "*TEXT")))
filter "0123456789.-+"
mspace (vla-get-modelspace(vla-get-activedocument (vlax-get-acad-object)))
str nil strs nil)
(if ss
(repeat (setq n (sslength ss))
(x_draw ss 3)
(setq n (1- n)
e (ssname ss n)
str (vla-get-textstring(vlax-ename->vla-object e))
asclst (mapcar '(lambda (x) (if (vl-string-search(chr x) filter) x 32)) (vl-string->list str))
strs (strcat (if strs strs "") (apply 'strcat (mapcar 'chr asclst)) " "))
)
)
(if (and ss (/= "" strs))
(progn
(setq add (eval (read (strcat "(+ " strs ")"))))
(setq n2 (getvar "DIMSCALE"))
(setq insertpt (getpoint "\n请输入文字插入点: "))
(setq height (getint "\n绘图比例<比例为当前标注比例,回车或右击忽略>:"))
(if (= height nil)
(setq height n2)
)
(setq h1 (* height3))
(command "_.text"
"non"
insertpt
h1
""
(strcat(rtos add 2 2) )
)
(x_draw ss 4)
(progn (if ss (x_draw ss 4))(xtcal))
)
)
)
;;;;配套程序(x_draw ss key)
(defun x_draw (ss key / n e)
(if (= 'PICKSET (type ss))
(repeat (setq n (sslength ss))
(setq n (1- n)
e (ssname ss n))
(redraw e key)
)
)
)
本帖最后由 wowan1314 于 2012-5-4 17:59 编辑
给个测试图看看, 我一般不用多行文字。看来多行文字不是好东西啊
不过好像听哪个说过有过滤多行文字格式得到真实内容的程序。不妨找找看
wowan1314 发表于 2012-5-4 17:56 static/image/common/back.gif
给个测试图看看, 我一般不用多行文字。看来多行文字不是好东西啊
不过好像听哪个说过有过滤多行文字格式得 ...
我自己平时也不用,但是有时别人图里有这个! 没有高手看看啊
页:
[1]