;; | ---------------------------------------------------------------------------- ;; | GE_PolyStat ;; | ---------------------------------------------------------------------------- ;; | Function : Returns vital statistics about a polygon(polyline) ;; | Arguments: ;; | 'vlist' - List of points forming the polygon ;; | Action : Returns a complete list giving the following information in order: ;; | 'dh' - Horizontal projected distance ;; | 'ds' - Actual Slope Distance ;; | 'MinX' - Minimum Value of X coordinate ;; | 'MinY' - Minimum Value of Y coordinate ;; | 'MinZ' - Minimum Value of Z coordinate ;; | 'MaxX' - Maximum Value of X coordinate ;; | 'MaxY' - Maximum Value of Y coordinate ;; | 'MaxZ' - Maximum Value of Z coordinate ;; | Comments : If you need a closed polygon, the first and last point must be ;; | explicitly duplicated. ;; | Updated : October 5, 1998 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun GE_PolyStat ( vlist / n pt1 pt2 ds dh MaxX MaxY MaxZ MinX MinY MinZ nverts ) (setq ds 0.0 dh 0.0 MaxX -1E+20 MinX +1E+20 MaxY -1E+20 MinY +1E+20 MaxZ -1E+20 MinZ +1E+20 pt1 (car vlist) nverts (length vlist) n 0 ) (repeat nverts (setq pt2 (nth n vlist) ds (+ ds (distance pt1 pt2)) dh (+ dh (distance (list (car pt1) (cadr pt1) 0.0) (list (car pt2) (cadr pt2) 0.0))) n (1+ n) pt1 pt2 ) (if (> (car pt1) MaxX) (setq MaxX (car pt1))) (if (< (car pt1) MinX) (setq MinX (car pt1))) (if (> (cadr pt1) MaxY) (setq MaxY (cadr pt1))) (if (< (cadr pt1) MinY) (setq MinY (cadr pt1))) (if (> (caddr pt1) MaxZ) (setq MaxZ (caddr pt1))) (if (< (caddr pt1) MinZ) (setq MinZ (caddr pt1))) ) (list dh ds MinX MinY MinZ MaxX MaxY MaxZ nverts) )