Further to Jason's post:
Every thing can be and is variable.
To draw your geometry, set up variables for stiles (SW=75), rails(RW=75), step to arch(Step=75), arch height(ARCHT=75) and so on. Your door height is lpx (800), width is lpy (500), however you want but that's the idea.
Line endpoints might look like:
From a start point
LPX-(RW+ARCHT)
LPY-SW
Then
LPX-(RW+ARCHT)
LPY-(SW+STEP)
ARC (three point)
CTR = lpx-rw, lpy/2
END = lpx-(rw+Archt), SW+Step
Line same x to SW and so on to close.
Change LPY to 300 and note the arc problem.
If you want to control the variables based on door width you would insert instructions at the beginning of your program.
An example for the above might be:
If LPY<=300 Then
step=10
SW=60
End If
The vb instruction can be as complex as you need it to be but does need to cover all the possibilities you may want to throw in. You can't leave holes in the logic.
You can test that:
Change lpy to 300 - it should work OK
Change LPY to 250 you should start to see a problem that requires another if then.
It's up to you how you correct the arc but I just threw it in with all the values to demonstrate.