如题:


(if (setq ss (ssget '((0 . "3DFACE"))))
    (foreach en (yq_ss2lst ss)
      (setq ent (entget en))
      (setq en1 (vl-remove-if-not '(lambda (x) (member (car x) '(10 11 12 13))) ent))
      (setq en2        (vl-remove-if '(lambda (x) (member (car x) '(10 11 12 13))) ent))
      (setq en1 (mapcar '(lambda (x) (subst 0 (last x) x)) en1))
      (setq ent (append en2 en1))
      (entmod ent)
    )
  )

这个运行起来比较卡.请问下还有更简化或是运行起来更快的方法吗?请指点!


网友答: 本帖最后由 自贡黄明儒 于 2025-12-11 14:38 编辑

从en1 到ent,本来只要一句,你写了4句。会不会是这个原因?
(setq ent (mapcar (function (lambda (x) (if (member (car x) '(10 11 12 13)) (list (car x)(cadr x) (caddr x)) x))) ent))


网友答: 谢谢大神!学习了!

网友答: 本帖最后由 qifeifei 于 2025-12-11 16:08 编辑
  1. (if (setq ss (ssget '((0 . "3DFACE"))))
  2.   (foreach en (yq_ss2lst ss)
  3.     (entmod
  4.       (mapcar '(lambda (x)
  5.                  (if (member (car x) '(10 11 12 13))
  6.                    (list (car x) (cadr x) (caddr x) 0)
  7.                    x))
  8.               (entget en)))))
试试看


网友答: ***工具箱等好些工具都有 z轴归零 的功能
  • 上一篇:修改MTEXT或TEXT的高度
  • 下一篇:没有了