motee-z 发表于 2022-9-11 17:01:50

在选择中查找最大数量

我需要一个可以在包含数字和文本字符串的选择中找到最大值数字的 lisp任何帮助将不胜感激.

mhupp 发表于 2022-9-11 17:29:05

使用 atof 将字符串转换为数字将其添加到列表中使用 vl-sort > 在列表中输出列表中的第一个数字;;----------------------------------------------------------------------------;;
;;List Maximum Value
(defun C:MValue (/ ss txt lst)
(if (setq ss (ssget '((0 . "*TEXT"))))
    (foreach txt (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))
      (setq value (atof (cdr (assoc 1 (entget txt)))))
      (setq lst (cons value lst))
      (setq lst (vl-sort lst '>))
    )
)
(prompt (strcat "\nMaximum Value: " (rtos (car lst) 2)))
(princ)
)

motee-z 发表于 2022-9-11 17:59:23

如果您的字符串包含字母和数字可能需要在 atof 之前做更多的事情      
(setq lst (car lst))或者这样
(setq lst (nth 0 lst))两者都将变量lst设置为该列表中的第一个值,并删除所有其他值。
我认为RonJonp提供了一个同样的解决方案。

ronjonp 发表于 2022-9-11 18:18:36

(defun c:foo (/ ss)
(if (setq ss (ssget '((0 . "*TEXT"))))
    (print (apply 'max
                  (mapcar '(lambda (x) (atof (cdr (assoc 1 (entget x)))))
                          (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
                  )
           )
    )
)
(princ)
)
页: [1]
查看完整版本: 在选择中查找最大数量