惜惜2 发表于 2024-9-12 14:38:37

请帮忙修正一下

(defun c:scbz ()
(setq ss (ssget "X" ' ((0. "DIMENSION") (2. "DIMDIAMETER"))))          
    (command "erase" SS "")
    (princ)
)
想法是识别所有标注集,删除标注集中的直径和半径标注

统一网名 发表于 2024-9-12 16:31:32





[*](defun c:tt (/ b count ent ent-data ss)
[*](defun dcb (L)
[*]    (cond
[*]      ((null L) nil)
[*]      ((atom L)(list L))
[*]      ((atom (car L))(cons (car L) (dcb (cdr L))))
[*]      ((append (dcb (car L))(dcb (cdr L))))
[*]    )
[*])
[*](setq ss (ssget "X" '((0 . "DIMENSION")))) ; 选择所有标注
[*](setq b nil)
[*](if ss
[*]    (progn
[*]      (setq count (sslength ss))
[*]      (repeat count
[*]      (setq ent (ssname ss (setq count (1- count))))
[*]      (setq ent-data (entget ent))
[*]      (setq b (dcb ent-data))
[*]      (foreach str b
[*]          (if
[*]            (or
[*]            (= str "AcDbRadialDimension")
[*]            (= str "AcDbDiametricDimension")
[*]            )
[*]            (entdel ent)
[*]          )
[*]      )
[*]      )
[*]    )
[*])
[*](princ)
[*])


这方法感觉有点笨,希望有更好的方法。



惜惜2 发表于 2024-9-12 16:55:50

统一网名 发表于 2024-9-12 16:31
[*](defun c:tt (/ b count ent ent-data ss)
[*](defun dcb (L)
[*]    (cond


不行提示参数太少

统一网名 发表于 2024-9-12 17:09:46

本帖最后由 统一网名 于 2024-9-12 17:11 编辑

惜惜2 发表于 2024-9-12 16:55
不行提示参数太少
又试了一下,没有问题,我的是 cad2020.或者把你的图发上来我试一下。

惜惜2 发表于 2024-9-13 10:49:33

统一网名 发表于 2024-9-12 17:09
又试了一下,没有问题,我的是 cad2020.或者把你的图发上来我试一下。

可以了谢谢
页: [1]
查看完整版本: 请帮忙修正一下