Try This please note I isolated the green layer and exploded once so it became line segments between the nodes, so enter offset say 20 pick the green line then window all the green lines.
I am not sure what to do with plines with multi segments I don't think its a quick answer or else diagram loses it joints.
Next version would remake pline with the 2 new lines.
; move and draw a chamfer ends to line and pline
; By Alan H info@alanh.com.au June 2020
; note pline is 2 vertices only
(defun c:test ( / object ss off tmp)
(defun aH:add-lines (obj offs / end start newst newend ang)
(if (= (vla-get-objectname obj)"AcDbLine")
(progn
(setq end (vlax-get Obj 'EndPoint))
(setq start (vlax-get Obj 'StartPoint))
(setq ang (angle start end))
(setq newst (polar start (+ ang 0.785398163397448) (* 1.414 offs)))
(setq ang (angle end start))
(setq newend (polar end (- ang 0.785398163397448) (* 1.414 offs)))
(vlax-put Obj 'EndPoint newend)
(vlax-put Obj 'StartPoint newst)
(command "line" newst start "")
(command "line" newend end "")
)
(progn
(if (> (/ (length (vlax-get obj 'Coordinates)) 2) 2)
(alert "Pline has more than 1 segment\n \n Sorry skipped")
(progn
(setq end (vlax-curve-getEndPoint Obj))
(setq start (vlax-curve-getStartPoint Obj))
(setq ang (angle start end))
(setq newst (polar start (+ ang 0.785398163397448) (* 1.4141 offs)))
(setq ang (angle end start))
(setq newend (polar end (- ang 0.785398163397448) (* 1.4141 offs)))
(setq lst (list (car newst)(cadr newst)(car newend)(cadr newend)))
(vlax-put obj 'Coordinates lst)
(command "line" newst start "")
(command "line" newend end "")
)
)
)
)
)
(setq oldsnap (getvar 'osmode))
(setvar 'osmode 0)
(if (= off nil)(setq off 20 tmp 20))
(setq off (Getreal (strcat "\nEnter offset 0 to exit " (rtos off 2 1))))
(if (= off nil)(setq off tmp))
(setq tmp off)
(while (setq ent (car (entsel "\nSelect object for layer")))
(setq lay (vla-get-layer (vlax-ename->vla-object ent)))
(setvar 'clayer lay)
(setq ss (ssget (list (cons 0 "*LINE")(cons 8 lay))))
(if (/= ss nil)
(progn
(repeat (setq x (sslength ss))
(setq object (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
(AH:add-lines object off)
)
)
)
)
(princ)
)