This should do the trick. Any angle, any distance, can specify a no-move line.
(vl-load-com)
(defun c:LineSpacing ( / *error* doc s x p l f i a d q o)
(or *pls-c* (setq *pls-c* 10)) ; default
(defun *error* (errmsg)
(if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break,end"))
(princ (strcat "\nError: " errmsg)))
(if doc (vla-endundomark doc))
(princ))
(and (princ "\nSelect polylines at segments to space, ")
(setq s (ssget "_:L" '((0 . "LWPOLYLINE"))))
(>= (sslength s) 2)
(setq *pls-c* (cond ((getdist (strcat "\nSpecify offset <" (rtos *pls-c*) ">: "))) (*pls-c*)))
(or (setq f (car (entsel "\nSpecify fix line : "))) t)
(setq x (ssnamex s))
(setq p (cond ((assoc 1 x) (cadr (last (assoc 1 x)))) ; last pointed selection
((assoc 4 x) (cadr (last (assoc 4 x)))) ; first point of fence
((minusp (car (last x))) (mapcar '/ (apply 'mapcar (cons '+ (mapcar 'cadr (cdr (last x))))) '(4 4)))))
(setq l (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
(setq l (mapcar '(lambda (x) (list x (vlax-curve-getclosestpointto x p))) l))
(setq l (vl-sort l '(lambda (x1 x2) (< (caadr x1) (caadr x2)))))
(setq l (vl-sort l '(lambda (x1 x2) (< (cadadr x1) (cadadr x2)))))
(setq f (cond (f) ((caar l))))
(setq i (vl-position f (mapcar 'car l)))
(setq l (mapcar '(lambda (x) (cons (- (vl-position x l) i) x)) l))
(setq o (cdr (assoc 0 l)))
(setq r (vlax-curve-getparamatpoint (car o) (cadr o)))
(setq o (list (vlax-curve-getpointatparam (car o) (fix r)) (vlax-curve-getpointatparam (car o) (1+ (fix r)))))
(not (vla-startundomark (setq doc (vla-get-activedocument (vlax-get-acad-object)))))
(foreach j l
(and (mapcar 'set '(i e p) j)
(setq r (vlax-curve-getparamatpoint e p))
(setq a (+ (/ pi 2) (angle '(0 0 0) (vlax-curve-getFirstDeriv e r))))
(setq a (rem a (* 2 pi)))
(setq a (if (< (* 0.75 pi) a (* 1.75 pi)) (+ pi a) a))
(setq d (entget e))
(setq q (reverse (cdr (reverse (vlax-curve-getpointatparam e (fix r))))))
(setq d (subst (cons 10 (polar (inters (car o) (cadr o) q (polar q a 1) nil) a (* i *pls-c*))) (cons 10 q) d))
(setq q (reverse (cdr (reverse (vlax-curve-getpointatparam e (1+ (fix r)))))))
(setq d (subst (cons 10 (polar (inters (car o) (cadr o) q (polar q a 1) nil) a (* i *pls-c*))) (cons 10 q) d))
(entmod d)))
)
(*error* "end")
)