;; | ---------------------------------------------------------------------------- ;; | GE_GetSlope ;; | ---------------------------------------------------------------------------- ;; | Function : Returns the slope/azimuth of a line defined between two points ;; | Author : Rakesh Rao, Bangalore - India ;; | Arguments: 'pt1' - First point ;; | 'pt2' - Second point ;; | 'Mode' - Type of slope representatation, can be either ;; | "%", "1InN" , "Degs" or "Dir" ;; | 'Prec' - Precision value ;; | 'View' - can be either "PlanView" or "ElevationView" ;; | Returns : The Slope value as a string ;; | Updated : May 11, 2004 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun GE_GetSlope ( pt1 pt2 Mode Prec View / Z1 Z2 dH _pt1 _pt2 tmp Str ) (if (= View "PlanView") (setq Z1 (caddr pt1) Z2 (caddr pt2) _pt1 (list (car pt1) (cadr pt1) 0.0) _pt2 (list (car pt2) (cadr pt2) 0.0) dH (distance _pt1 _pt2) ) (setq Z1 (cadr pt1) Z2 (cadr pt2) dH (distance (list (car pt1) (cadr pt1) 0.0) (list (car pt2) (cadr pt1) 0.0)) ) ) (if (zerop dH) (setq Str "inf.") (progn (cond ((= Mode "%") (setq Str (strcat (rtos (* (/ (abs (- Z1 Z2)) dH) 100.0) 2 Prec) "%")) (cond ((> Z2 Z1) (setq Str (strcat "+" Str)) ) ((< Z2 Z1) (setq Str (strcat "-" Str)) ) ) ) ((= Mode "1InN") (if (= Z1 Z2) (setq Str "0 in 0") (setq Str (strcat "1:" (rtos (/ dH (abs (- Z1 Z2))) 2 Prec) ) ) ) ) ((= Mode "Degs") (setq Str (strcat (rtos (MI_r2d (atan (/ (abs (- Z1 Z2)) dH))) 2 Prec) " degs" ) ) ) ((= Mode "Dir") (cond ((> Z1 Z2) (setq Str "Down") ) ((< Z1 Z2) (setq Str "Up") ) (T (setq Str "Horiz") ) ) ) ((= Mode "Bearing") (setq Str (rtos (MI_GetBearing (MI_r2d (angle pt1 pt2))) 2 #DistPrec)) ) ) )) Str )