按扩展数据信息删除数据
你好我的图形有不同类型的实体(多段线(闭合)、圆、线、点),并附有扩展数据。
扩展数据索引唯一值。我正在尝试根据扩展数据索引删除实体的代码
(定义c:delobj()
(setq selobj(entsel“选择要删除的对象:”))
(setq ndx(cdr(cadr(cadr(assoc-3(entget(car selobj)'(“索引”))))))))
(setq a(ssget“X”(list(list-3(list“Index”(cons 1000 ndx 1070;)Ю)))))
(setq b(ssname a 0))
(entdel b)
)
我只能删除多段线(闭合)和圆,但线和点a显示错误。
提前感谢
Sidharth kamasani公司 我想这条线会对你有帮助。基本上你不能那样做。这是为您准备的线程:
(defun c:delents (/ EN I SS VAL)
;; Courtesy of MP, http://www.theswamp.org/index.php?topic=7229.msg89412#msg89412
(defun RemoveFromPicksetIf ( ss func / I ENAME)
;;The supplied func must take one
;;argument, an ename. What it does
;;we don't care, but if it returns
;;a non nil result remove the entity
;;from the pickset
(if (eq 'pickset (type ss))
(repeat (setq i (sslength ss))
(if
(func
(setq ename
(ssname ss
(setq i (1- i))
)
)
)
(ssdel ename ss)
)
)
)
ss
)
(AND (setq en (entsel))
(setq val (cdr (assoc 1000 (cdr (assoc "INDEX" (cdr (assoc -3 (entget (car en) (list "*")))))))))
(setq ss
(RemoveFromPicksetIf
(ssget "X" '((-3 ("INDEX"))))
(lambda ( ename / xdata )
(or
(null
(setq xdata
(assoc -3
(entget ename
'("INDEX")
)
)
)
)
(null
(member
(cons 1000 val)
(cdadr xdata)
))))))
(setq i -1)
(while (setq en (ssname ss (setq i (1+ i))))
(entdel en)
)
)
(princ)
)
我可能错了,但我不认为可以在ssget“X”过滤器中使用扩展数据(-3)。(从我记忆中未被使用的部分的后面)-大卫 谢谢大家宝贵的解决方案
热regds
Sidharth kamasani公司 希望你能找到工作。
页:
[1]