tanveer4m 发表于 2022-7-6 07:41:25

在中添加(汇总)所有维度

我正在寻找一个lisp,可以总结所有维度,并给出一个单一的值,这样我可以很容易地得到线的数量。。。。

Tharwat 发表于 2022-7-6 07:59:48

检查此。。。
 

(defun c:Test (/ ss n)
(if (setq ss (ssget '((0 . "*DIMENSION"))))
   (progn (setq n 0)
          ((lambda (x / sn)
             (while (setq sn (ssname ss (setq x (1+ x))))
               (setq n (+ (cdr (assoc 42 (entget sn))) n))
             )
         )
            -1
          )
          (if (> n 0)
            (alert (strcat "Total value of seleced Dimensions is : <"
                           (rtos n 2)
                           " >"
                   )
            )
          )
   )
   (princ)
)
(princ)
)

Lee Mac 发表于 2022-7-6 08:16:55

下面是一个非常简单的解决方案:
 
(defun c:dimsum ( / i s x )
   (if (setq s
         (ssget
            '(   (0 . "DIMENSION")
                   (-4 . "<OR")
                     (70 . 000)
                     (70 . 001)
                     (70 . 032)
                     (70 . 033)
                     (70 . 128)
                     (70 . 129)
                     (70 . 160)
                     (70 . 161)
                   (-4 . "OR>")
               )
         )
       )
       (progn
         (setq x 0.0)
         (repeat (setq i (sslength s))
               (setq x (+ x (cdr (assoc 42 (entget (ssname s (setq i (1- i))))))))
         )
         (princ (strcat "\nTotal of " (itoa (sslength s)) " Dimensions: " (rtos x)))
       )
   )
   (princ)
)

tanveer4m 发表于 2022-7-6 08:25:48

谢谢你的Lisp程序。它工作得很好。如果计算时有编辑过的维度,则应提示是否包含文字替代?
 
谢谢
坦维尔

evylrat 发表于 2022-7-6 08:35:41

如此接近。。。如果Dim的文本已被移动,Lisp例程将不会对其进行计数。我必须做一个DimTedit,在得到正确的总数之前,所有的dim都在家里。
此外,它使用全精度,而不是dim的精度。
例如,如果我有四个99.5mm的DIM,全部四舍五入,我希望总和是396(不是398),这让我知道我必须四舍五入其中的两个DIM。

Lee Mac 发表于 2022-7-6 08:44:06

 
我忽略了位代码2和8的组合,现在更新了上述代码。
 
 
程序将使用LUPREC系统变量设置的精度。
页: [1]
查看完整版本: 在中添加(汇总)所有维度