`中微子 发表于 昨天 13:45

把三维对象的Z轴放在0的相关代码!

如题:


(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)
    )
)

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

自贡黄明儒 发表于 昨天 14:27

本帖最后由 自贡黄明儒 于 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))

`中微子 发表于 昨天 16:02

谢谢大神!学习了!

qifeifei 发表于 昨天 16:06

本帖最后由 qifeifei 于 2025-12-11 16:08 编辑

(if (setq ss (ssget '((0 . "3DFACE"))))
(foreach en (yq_ss2lst ss)
    (entmod
      (mapcar '(lambda (x)
               (if (member (car x) '(10 11 12 13))
                   (list (car x) (cadr x) (caddr x) 0)
                   x))
            (entget en)))))试试看
页: [1]
查看完整版本: 把三维对象的Z轴放在0的相关代码!