yamjqq 发表于 2015-4-30 17:50:51

请教如何让这个程序重复的标注也能计算

;★★请教如何让这个程序重复的标注也能计算,如选择两个2000,1个3000,显示2000+2000+3000,而不是现在的2000+3000★★


(defun c:qq (/ fuh i num obj ss str str1 tt)
(vl-load-com)
(setq ss (ssget '((0 . "DIMENSION"))))
(setq fuh "+")
(while (not (member (setq tt (getstring "\n请输入运算符号[加(+)/乘(*)] < + >:"))
                      '("*" "+"
                     ""
                      )
              )
       )
)
(if (/= tt "")
    (setq fuh tt)
)
(if (= fuh "+")
    (setq num 0)
    (setq num 1)
)
(setq str ""
        i 0
)
(repeat (sslength ss)
    (setq obj (vlax-ename->vla-object (ssname ss i))
          str1 (vla-get-measurement obj)
          i (1+ i)
    )
    (if (= fuh "+")
      (setq num (+ num str1)
          str (strcat str (if (= i 1)
                              ""
                              "+"
                          ) (rtos str1 2 3)
                )
      )
      (setq num (* num str1)
          str (strcat str (if (= i 1)
                              ""
                              "*"
                          ) (rtos str1 2 3)
                )
      )
    )
)
(setq num (/ num 1000.0))
(entmake (list '(0 . "TEXT") (cons 1 (strcat str "=" (rtos num 2 3)"米"))
               (cons 10 (getpoint "选择插入点")) (cons 40 (*
                                                             (vla-get-textheight obj)
                                                             (vla-get-scalefactor obj)
                                                          )
                                                   )
           )
)
(princ)
)

鱼与熊掌 发表于 2015-5-1 15:21:51

;统计表中原子个数.
(defun cx-lst-tj(lst / a tt n)
(while lst
          (setq n(length lst)a(car lst))
          (setq lst(vl-remove a lst))
          (setq tt (cons(list a(- n (length lst)))tt)))
)
页: [1]
查看完整版本: 请教如何让这个程序重复的标注也能计算