;; | ----------------------------------------------------------------------------- ;; | SS_SSWindow ;; | ----------------------------------------------------------------------------- ;; | Function : Does a ssget Window around a point (either "C" "W" or "F" modes ;; | can be used). ;; | Arguments: 'pt' - Point around which ssWindow is to be applied. ;; | 'Wid' - Width of Window Rectangle ;; | This argument can either be a list of type (X Y) or a real ;; | or integer single argument. ;; | 'Mode' - Mode of selection to use ;; | 'filtr'- Filter criteria to use ;; | Return : Selection set matching criteria ;; | Comments : No Zooming is done to ensure that the points ar eon-screen ;; | Updated : October 14, 1998 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ----------------------------------------------------------------------------- (defun SS_SSWindow( pt Wid Mode filtr / ss p1 p2 p3 p4 WidX WidY OS) ;; p1 p2 ;; p3 p4 (setq OS (getvar "OSMODE")) (setvar "OSMODE" 0) (if (= (type Wid) 'LIST) (setq WidX (nth 0 Wid) WidY (nth 1 Wid) ) (setq WidX Wid WidY Wid )) (setq WidX (* 0.5 WidX) WidY (* 0.5 WidY) p1 (list (- (car pt) WidX) (+ (cadr pt) WidY) 0.0) p2 (list (+ (car pt) WidX) (+ (cadr pt) WidY) 0.0) p3 (list (- (car pt) WidX) (- (cadr pt) WidY) 0.0) p4 (list (+ (car pt) WidX) (- (cadr pt) WidY) 0.0) ss nil ) (cond ((member Mode (list "C" "W")) (if filtr (setq ss (ssget (strcat "_" Mode) p3 p2 filtr)) (setq ss (ssget (strcat "_" Mode) p3 p2)) ) ) ((= Mode "F") (if filtr (setq ss (ssget (strcat "_" Mode) (list p1 p2 p4 p3 p1) filtr)) (setq ss (ssget (strcat "_" Mode) (list p1 p2 p4 p3 p1))) ) ) ) (setvar "OSMODE" OS) ss )