;; | ----------------------------------------------------------------------------- ;; | TX_SortByDistance ;; | ----------------------------------------------------------------------------- ;; | Function : Sorts a selection of text by its nearness to a given point ;; | Author : Rakesh Rao, Bangalore - India ;; | ;; | Arguments: 'pt' - Point to check ;; | 'ss' - Selection set of text objects ;; | 'DistMode' - Distance measuring mode ("Slope" or "Horiz") ;; | 'LookFor' - Check what point for nearest ("Insp" or "Physically") ;; | "Insp" looks for the insertion point of a text ;; | while "Physically" looks for a physically nearest ;; | point ;; | Updated : January 23, 2005 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ----------------------------------------------------------------------------- (defun TX_SortByDistance ( pt ss DistMode LookFor / ssl cnt Lst Lst1 entl Insp ename len len1 len2 ll ur ) (setq ssl (sslength ss) cnt 0 ) (if (= DistMode "Horiz") (setq pt (list (car pt) (cadr pt) 0.0)) ) (setq Lst '()) (repeat ssl (setq ename (ssname ss cnt)) (if (= LookFor "Insp") (progn (setq entl (entget ename) Insp (LI_item 10 entl) ) (if (= DistMode "Horiz") (setq Insp (list (car Insp) (cadr Insp) 0.0)) ) (setq len (distance pt Insp) Lst (cons (list len ename) Lst) ) ) (progn (setq Lst1 (GE_GetObjectBoundingBox ename) ll (car Lst1) ur (cadr Lst1) ) (if (= DistMode "Horiz") (setq ll (list (car ll) (cadr ll) 0.0)) ) (if (= DistMode "Horiz") (setq ur (list (car ur) (cadr ur) 0.0)) ) (setq len1 (distance pt ll) len2 (distance pt ur) len (min len1 len2) Lst (cons (list len ename) Lst) ) )) (setq cnt (1+ cnt)) ) (setq Lst (l_ssort Lst 0 '>)) )