删除相交的对象
大家好,我已经问过了。。但我?我找不到帖子(可能已经被删除了?)不管怎样,麦克·李先生回答我说有两种方法。
1) 慢慢地,它询问每一个物体,并找出它是否与plyne相交
2) 快速,使用缩放功能
我已经编译了第一个,但是如果我有很多项目的话,它会非常慢。
有人能提醒我第二种方法吗?谢谢大家
旧代码
(DEFUN cancella_cerchi (/)
(SETQ
i 0
deleted (LIST)
lista_polilinee (LIST)
)
(sel_polylines "Bordi")
(REPEAT (LENGTH lista_polilinee)
(setq n 0
p_linea (NTH i lista_polilinee))
(REPEAT (LENGTH lista_cerchi)
(SETQ cerchio_obj (VLAX-ENAME->VLA-OBJECT (NTH n lista_cerchi)))
(IF
(/= (VLAX-INVOKE p_linea 'intersectwith cerchio_obj ACEXTENDNONE) nil)
(PROGN (ENTDEL (NTH n lista_cerchi))
(SETQ deleted (APPEND deleted (LIST (NTH n lista_cerchi))))
)
)
(SETQ n (1+ n))
)
(SETQ del 0)
(REPEAT (LENGTH deleted)
(SETQ lista_cerchi (VL-REMOVE (NTH del deleted) lista_cerchi))
(SETQ del (1+ del))
)
(SETQ i (1+ i))
(entdel (VLAX-VLA-OBJECT->ENAME p_linea))
)
;(prompt (length lista_cerchi))
)
编辑:
只是一个例子。
(setq s (car (entsel "\nSelect Polyline :")))
(vla-getboundingbox (vlax-ename->vla-object s) 'j 'k)
(vla-ZoomWindow (vlax-get-acad-object) j k)
谢谢,我有一个小问题。
看这段视频:http://autode.sk/1My5bQW
创建图案填充时,我保存了边界的多段线,并使用第一种方法删除了对象。。边界不是一个完美的正方形。。
如果边界为矩形,则您发布的代码似乎工作正常。。对的也许我错了,请告诉我
谢谢,丹尼斯 请参阅本线程中建议的方法:http://www.theswamp.org/index.php?topic=50190.0
谢谢李,很难找到太多论坛了
我会试着在那里张贴解决方案!
谢谢
编辑:解决方案
好吧,这就是解决方案!
(defun cdrs (key lst / pair rtn)
(while (setq pair (assoc key lst))
(setq rtn (cons (cdr pair) rtn)
lst (cdr (member pair lst))
)
)
(reverse rtn)
)
(setq vertici_pl (cdrs 10 (entget (car (entsel "\nSelect a polyline")))))
(defun c:cancella_cerchi_interni ( / e i n s x )
(if (setq s (ssget "_CP" vertici_pl'((0 . "CIRCLE"))))
(progn
(setq i 0
n (sslength s)
)
(repeat n
(setq e (ssname s i)
;x (cdr (assoc 0 (entget e)))
i (1+ i)
)
(entdel e)
)
)
)
(princ)
)
(defun c:cancella_cerchi_lungo_linea ( / e i n s x )
(if (setq s (ssget "_F" (append vertici_pl (list (car vertici_pl)))'((0 . "CIRCLE"))))
(progn
(setq i 0
n (sslength s)
)
(repeat n
(setq e (ssname s i)
;x (cdr (assoc 0 (entget e)))
i (1+ i)
)
(entdel e)
)
)
)
(princ)
)
1) 仅删除穿过选择栏的对象
2) 删除内部所有内容并跨越选择栏
页:
[1]