If no other entities interfere those lines, than try this :
Code:
(defun c:overlaplinesdist ( / unit chkoverlap collinear-p ss li1 li2 p1 p2 p3 p4 )
(defun unit ( v )
(mapcar '(lambda ( x ) (/ x (distance '(0.0 0.0 0.0) v))) v)
)
(defun chkoverlap ( li1 li2 / p1 p2 p3 p4 )
(setq p1 (cdr (assoc 10 (entget li1))) p2 (cdr (assoc 11 (entget li1))) p3 (cdr (assoc 10 (entget li2))) p4 (cdr (assoc 11 (entget li2))))
(if (and (= (sslength (ssget "_C" p1 p2)) 2) (or (equal (unit (mapcar '- p2 p1)) (unit (mapcar '- p4 p3)) 1e-6) (equal (unit (mapcar '- p2 p1)) (unit (mapcar '- p3 p4)) 1e-6)))
t
nil
)
)
(defun collinear-p ( p1 p p2 )
(equal (distance p1 p2) (+ (distance p1 p) (distance p p2)) 1e-6)
)
(prompt "\nSelect 2 lines that overlap each other...")
(setq ss (ssget '((0 . "LINE"))))
(while (or (not ss) (and ss (/= (sslength ss) 2)) (and ss (= (sslength ss) 2) (not (chkoverlap (ssname ss 0) (ssname ss 1)))))
(prompt "\nEmpty sel.set or selected more or less than 2 line entities or 2 selected lines don't overlap... Please select 2 overlapping lines again...")
(setq ss (ssget '((0 . "LINE"))))
)
(setq li1 (ssname ss 0) li2 (ssname ss 1))
(setq p1 (cdr (assoc 10 (entget li1))) p2 (cdr (assoc 11 (entget li1))) p3 (cdr (assoc 10 (entget li2))) p4 (cdr (assoc 11 (entget li2))))
(cond
( (and (collinear-p p3 p1 p4) (collinear-p p3 p2 p4))
(princ (rtos (distance p1 p2) 2 50))
(grdraw p1 p2 1 1)
)
( (and (collinear-p p1 p3 p2) (collinear-p p1 p4 p2))
(princ (rtos (distance p3 p4) 2 50))
(grdraw p3 p4 1 1)
)
( (and (collinear-p p3 p1 p4) (collinear-p p1 p3 p2))
(princ (rtos (distance p1 p3) 2 50))
(grdraw p1 p3 1 1)
)
( (and (collinear-p p3 p1 p4) (collinear-p p1 p4 p2))
(princ (rtos (distance p1 p4) 2 50))
(grdraw p1 p4 1 1)
)
( (and (collinear-p p3 p2 p4) (collinear-p p1 p3 p2))
(princ (rtos (distance p2 p3) 2 50))
(grdraw p2 p3 1 1)
)
( (and (collinear-p p3 p2 p4) (collinear-p p1 p4 p2))
(princ (rtos (distance p2 p4) 2 50))
(grdraw p2 p4 1 1)
)
)
(princ)
)
(defun c:old nil (c:overlaplinesdist))
HTH, M.R.