dreams 发表于 2022-7-6 06:52:40

需要帮助计算数字

有人能帮我修改下面粘贴的代码吗?因为我从其他网站得到的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 发表于 2022-7-6 07:07:30

这是一组非常具体的情况。
 
值是否总是第一个和第三个字符
它们总是数值吗
 

 
 
-大卫

dreams 发表于 2022-7-6 07:13:26

谢谢David Bethel。。。
 
 
对仅第一个和第三个字符。。。但第三个字符将是一个或两个数字(例如33、43)
 
 
对所有值始终仅为数值

paulmcz 发表于 2022-7-6 07:23:23

试试这个
 
(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))))

David Bethel 发表于 2022-7-6 07:33:09

也许 吧:
 

(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))

 
-大卫

Lee Mac 发表于 2022-7-6 07:50:16

这将允许“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)
)

dreams 发表于 2022-7-6 07:55:53

谢谢paulmcz,David Bethel和Lee Mac。。工作正常。。。谢谢。。
页: [1]
查看完整版本: 需要帮助计算数字