本帖最后由 tryhi 于 2016-4-4 23:59 编辑
 - ;;打断最长的直线边
- ;;BY-tryhi大海
- (defun c:tt (/ ens)
- (command "UNDO" "be")
- (setq ens (try-ss2EnList(ssget '((0 . "LWPOLYLINE")(-4 . "&")(70 . 1)))))
- (foreach n ens (brtt n))
- (command "UNDO" "end")
- )
- (defun brtt (en / en enl enlst enlst-l llst ss ss1)
- (setq enl(entlast))
- (command "_explode" en)
- (setq ss0(try-ssend enl))
- (command "SELECT" ss "")
- (setq ss(ssget "P" '((0 . "line")))
- enlst(try-ss2EnList ss)
- Llst(mapcar '(lambda(e)(vla-get-Length(vlax-ename->vla-object e))) enlst)
- enlst-l(mapcar 'list enlst Llst)
- enlst-l (vl-sort enlst-l '(lambda(a b)(> (cadr a)(cadr b))))
- en1(car (car enlst-l))
- ss1(ssdel en1 ss0)
- )
- (command "_pedit" "m" ss1 "" "" "j" "" "")
- (command "ERASE"(car (car enlst-l))"")
- )
- (defun try-ssend(en / ss)
- (setq ss (ssadd))
- (while (setq en(entnext en))
- (setq ss(ssadd en ss))
- )
- ss
- )
- (defun try-Enlist2ss(enlist / ss)
- (setq ss (ssadd))
- (foreach n (reverse enlist) (ssadd n ss))
- )
- (defun try-ss2EnList(ss / a en lst)
- (setq a -1)
- (if ss
- (while
- (setq en(ssname ss(setq a(1+ a))))
- (setq lst(cons en lst))
- )
- )
- (reverse lst)
- )
|