I just wipped this together quickly, and hopefully it works (not tested).
You should get a rough idea on how to solve your problem though.
; given - LEN = door width
- OFF = offset distance
- JMB = jamb width
(setvar "osmode" 35) ;endpoint, intersection,
(setq Pt0 (getpoint "Reference point: "))
(setvar "osmode" 512) ;nearest point
(setq Pt1 (getpoint Pt0 "Pick a point along the wall: "))
(setvar "osmode" 128) ;perpendicular
(setq Pt3 (getpoint pt1 "Pick opposite wall: ")
ANG1 (angle PT0 PT1)
ANG2 (angle PT1 PT3)
DST (distance PT1 PT3)
PT1 (polar PT0 ANG1 OFF)
PT4 (polar PT1 ANG1 LEN)
PT3 (polar PT1 ANG2 DST)
PT5 (polar PT3 ANG1 LEN)
PT7 (polar PT1 (* ANG1 -1) JMB)
PT6 (polar PT3 (* ANG1 -1) JMB)
PT8 (polar PT4 ANG1 JMB)
PT9 (polar PT5 ANG1 JMB)
);
I have a programme I wrote in the past for doors and windows, very similar to what you are asking, but unfortunetly I do not have the source code available, due to I am at work.
When I get home and I remember I will send you the programme.