Pretty straight forward pick top Pline, then other line, get the Y difference between the Vertice and the line and apply a scale factor if required, typical road long section has a vertical scale.
This is a start.
;Calculates level of a point in cross or long sections
; BY alanh 2014
(setvar "cmdecho" 0)
(princ "\n To run just type SRL")
;;-------------------=={ Parse Numbers }==--------------------;;`
;; ;;
;; Parses a list of numerical values from a supplied string. ;;
;;------------------------------------------------------------;;
;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
;; Arguments: ;;
;; s - String to process ;;
;;------------------------------------------------------------;;
;; Returns: List of numerical values found in string. ;;
;;------------------------------------------------------------;;
(defun LM:ParseNumbers ( s )
(
(lambda ( l )
(read
(strcat "("
(vl-list->string
(mapcar
(function
(lambda ( a b c )
(if
(or
(< 47 b 58)
(and (= 45 b) (< 47 c 58) (not (< 47 a 58)))
(and (= 46 b) (< 47 a 58) (< 47 c 58))
)
b 32
)
)
)
(cons nil l) l (append (cdr l) (list nil))
)
)
")"
)
)
)
(vl-string->list s)
)
)
(defun c:SRL ()
(setq olddimzin (getvar "dimzin"))
(setvar "dimzin" 0)
(if (= dwgscale nil)
(setq dwgscale (/ 1000.0 (getreal "\n enter vertical scale ")))
)
;(setq datum (getreal "\n Enter datum level "))
(setq datum (car (LM:ParseNumbers (cdr (assoc 1 (entget (car (entsel "\nPick datum text"))))))))
(setq test 1)
(setq pt1 (cadr (getpoint "\npick datum")))
(while (= test 1)
(setq pt2 (cadr (getpoint "\npick point")))
(setq dist (/(abs (- pt1 pt2)) dwgscale))
(setq en1 (car (entsel "\nSelect text number:" )))
(if (/= en1 nil)
(progn
(setq tent (entget en1))
(setq a (+ dist datum))
(setq a (rtos a 2 3))
(setq el (subst (cons 1 a) (assoc 1 tent) tent))
(entmod el)
);progn
(princ "\nplease pick again"); else
);if
); while t
(setq el nil
en nil
a nil
en1 nil
test nil)
(setvar "cmdecho" 1)
(setvar "dimzin" olddimzin)
(princ)
) ;ends main defun
You can write direct to excel, but need a dwg and an Excel, will there be say multiple long sections ?