需要帮助计算数字
有人能帮我修改下面粘贴的代码吗?因为我从其他网站得到的Lisp程序。。。但我想根据我的要求修改。。。我不熟悉lisp程序。。。请有人帮帮我。。目前,这个lisp将只在每个文本选择中添加第一个数字中的数字(即2,3)。。。但我想做如下改变。。
根据快照。。。总计=((2*4)+(3*5)+(5*6))=53
代码是
(Defun c:add()
(setq sset(Ssget '(( 0 . "TEXT")))
Index 0
val 0)
(repeat (sslength sset)
(setq strend(- (strlen (cdr(Assoc 1 (entget(ssname sset index)))))4)
cval (substr (cdr(Assoc 1 (entget(ssname sset index)))) 1 strend)
cval1(atoi cval)
val(+ val cval1))
(Setq index (+ 1 index)))
(alert (Strcat "Total " (rtos val 2 0) " No's found"))) 这是一组非常具体的情况。
值是否总是第一个和第三个字符
它们总是数值吗
等
-大卫 谢谢David Bethel。。。
对仅第一个和第三个字符。。。但第三个字符将是一个或两个数字(例如33、43)
对所有值始终仅为数值 试试这个
(defun c:add (/ cval cval1 index l ss strend val)
(setq ss (ssget '(( 0 . "text")))
l (sslength ss)
index 0
val 0)
(repeat l
(setq strend (cdr(assoc 1 (entget(ssname ss index))))
cval (atoi (substr strend 3))
cval1(atoi strend)
val (+ val (* cval cval1))
index(+ 1 index)))
(alert (strcat "total = " (rtos val 2 0)))) 也许 吧:
(defun c:sumtext (/ ss i en tv i1 i2 vl sum)
(and (setq ss (ssget '((0 . "TEXT")(1 . "#?#*"))))
(setq i 0)
(while (setq en (ssname ss i))
(setq tv (cdr (assoc 1 (entget en)))
i1 (atoi (substr tv 1 1))
i2 (if (wcmatch (substr tv 4 1) "#")
(atoi (substr tv 3 2))
(atoi (substr tv 3 1)))
vl (cons (* i1 i2) vl))
(setq i (1+ i)))
(setq sum (apply '+ vl)))
(prin1 sum)
(prin1))
-大卫 这将允许“x”两侧有任意数量的数字:
(defun c:addit ( / a b c d )
(if (setq a (ssget '((0 . "TEXT") (1 . "#*#*"))))
(repeat (setq b (sslength a))
(setq c (strcase (cdr (assoc 1 (entget (ssname a (setq b (1- b)))))))
d (cons (* (atoi c) (atoi (substr c (+ 2 (vl-string-position 88 c))))) d)
)
)
)
(print (apply '+ d))
(princ)
) 谢谢paulmcz,David Bethel和Lee Mac。。工作正常。。。谢谢。。
页:
[1]