从e中删除删除的对象
我有选择集,其中的一些对象被删除。如何从ss中删除它们?我试着自己做,但我的代码不起作用。
我的代码:
(setq n 0)
(setq ssx ss)
(setq x (sslength ssx))
(repeat x
(if (entget(ssname ssx n))
(princ n)
(progn
(setq en (ssname ssx n))
(ssdel en ss)
)
)
(setq n (1+ n))) 这样地:
(repeat (setq i (sslength ssx))
(or (entget (setq ent (ssname ssx (setq i (1- i)))))
(ssdel ent ssx)
)
)
@塔尔瓦特:
使用vlax-erased-p检查实体是否被擦除速度更快。该函数还接受ENAME。
顺便说一句:
将包含已擦除实体的选择集传递给命令不会导致任何问题(至少在BricsCAD中是这样)。 速度不够快,无法在IMO中引入vlax函数。
约5000个selset已全部擦除
在拥有约22000件物品的selset上更快地进入长椅:
效果很好!谢谢 我认为DXF比将对象转换为vla对象更快,尽管vlax-erased-p函数在我这方面比零抛出以下错误,这似乎很奇怪。
不客气。 @罗恩琼普:
您测试了一个独特的案例。请使用已删除10%实体的选择集重试。您会发现,为未擦除的实体构建实体列表相对较慢。
@塔尔瓦特:
如前所述:vlax-erased-p也接受ENAME。因此无需转换为vla对象。
谢谢Roy,老实说,我不知道vlax-erased-p函数可以与实体名一起使用,所以我刚刚试用过,它也可以使用。 如果在遍历SS时删除一个实体,这不会弄乱它内部的ename索引吗?
也就是说,如果您在选择一个选择集之后立即迭代一个选择集,但如果用户有两个或多个选择集,则可能是其中一个SS中涉及的删除,迫使用户从特定SS中扣除已擦除的对象。只是一个猜测。
页:
[1]
2