本帖最后由 Andyhon 于 2013-7-24 12:38 编辑
Ref:
- (defun c:xtnd (/ e n s x b b1 b2 d1 d2 p1 p2)
- ;; (setvar 'OsMode 0)
- ;; (command "undo" "m")
- (while (= b nil) (setq b (car (entsel "\nSelect baundary edge ....."))))
- (while b
- (redraw b 3)
- (setq b1 (cdr (assoc 10 (entget b)))
- b2 (cdr (assoc 11 (entget b)))
- )
- (princ "\nSelect objects to extend ; >> same side a group ..... ")
- (while (= s nil) (setq s (ssget)))
- (setq n (sslength s))
- (while (> n 0)
- (setq e (entget (ssname s (setq n (1- n))))
- p1 (cdr (assoc 10 e)) p2 (cdr (assoc 11 e))
- x (inters p1 p2 b1 b2 nil)
- )
- (if x (progn
- (setq d1 (distance x p1) d2 (distance x p2))
- (if (> d2 d1)
- (entmod (subst (cons 10 x) (assoc 10 e) e))
- (entmod (subst (cons 11 x) (assoc 11 e) e))
- ) ) ) )
- (redraw b)
- (setq b (car (entsel "\nSelect baundary edge .....")) s nil)
- )
- ;; (setvar 'OsMode 167)
- )
|