The second can be done via TRIM, select cut line, use the F option, "Fence" and drag over the little bits sticking out.
So in a programming sense pick cut line, pick side, you offset the end points a very small amount and use these points as input to the "F" option. This is much easier than intersectwith. For more complicated extends like a pline note straights only use offset to work out points.
(defun c:wow ( / ent entg end start pt oldsnap )
(setq ent (entsel "\nSelect cut line "))
(setq entg (entget (car ent)))
(setq end (cdr (assoc 10 entg)) start (cdr (assoc 11 entg)))
(setq pt (getpoint "\nPick a point for side "))
(setq oldsnap (getvar 'osmode))
(setvar 'osmode 0)
(setq end (polar end (angle end pt) 0.001))
(setq start (polar start (angle start pt) 0.001))
(command "TRIM" ent "" "F" (list end start) "" "")
(setvar 'osmode oldsnap)
(princ)
)
(c:wow)