rocking2008 发表于 2018-10-30 09:53:28

最后3个明经币,求改个求和的插件。

我想要的是这个样子的结果:


效果要和NBS求和的一样,我有一个,但是有的图纸上能用,有的又不能用,框选后右击就结束了,没有结果,不知道哪里问题。
本人不懂lsp,纯属于下载党,在此感谢明经的大师们提供帮助和你们开发的产品。
我之前的代码如下:


;混数求和
(defun c:nbs ( / ss filter mspace n e str asclst strs add pt txt txth)
    (setvar "cmdecho" 0)
(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"))
      (princ (strcat """" oldch (rtos add 2 1) ))

          (princ "\n数字和为: ")
       (princ add)
      (if (setq PO (getpoint "\n“指定计算结果的写入点”?<否则回车>:"))
(command "text" po 20
      (princ (strcat """" oldch (rtos add 2 1) )))
          (setvar "cmdecho" 1)
        )
;;;    (princ add)
;;;   (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)
    )
)
)
(prin)

页: [1] 2
查看完整版本: 最后3个明经币,求改个求和的插件。