(defun c:doit ( / car-sort ss s1 s1l s2l p lix )
(defun car-sort ( lst cmp / rtn )
(setq rtn (car lst))
(foreach itm (cdr lst)
(if (apply cmp (list itm rtn))
(setq rtn itm)
)
)
rtn
)
(if (setq ss (ssget '((0 . "LINE") (8 . "pattern_1,guide2"))))
(progn
(setq s1 (ssget "_P" '((8 . "pattern_1"))))
(setq s1l (vl-remove-if 'listp (mapcar 'cadr (ssnamex s1))))
(foreach li s1l
(ssdel li ss)
)
(setq s2l (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq s1l (mapcar '(lambda ( x y ) (list (mapcar '/ (mapcar '+ (car y) (cadr y)) (list 2.0 2.0 2.0)) x)) s1l (mapcar '(lambda ( x ) (mapcar 'cdr (vl-remove-if-not '(lambda ( y ) (vl-position (car y) '(10 11))) (entget x)))) s1l)))
(setq s2l (mapcar '(lambda ( x y ) (list (mapcar '/ (mapcar '+ (car y) (cadr y)) (list 2.0 2.0 2.0)) x)) s2l (mapcar '(lambda ( x ) (mapcar 'cdr (vl-remove-if-not '(lambda ( y ) (vl-position (car y) '(10 11))) (entget x)))) s2l)))
(foreach li s1l
(setq p (car (car-sort s2l '(lambda ( a b ) (< (distance (car li) (car a)) (distance (car li) (car b)))))))
(entupd (cdr (assoc -1 (entmod (subst (cons 10 (mapcar '+ (cdr (assoc 10 (setq lix (entget (cadr li))))) (mapcar '- p (car li)))) (assoc 10 lix) (subst (cons 11 (mapcar '+ (cdr (assoc 11 lix)) (mapcar '- p (car li)))) (assoc 11 lix) lix))))))
)
)
)
(princ)
)
Marko Ribar, d.i.a. (graduated engineer of architecture)