For starters:
(defun c:... (/ ... angle ...)) You shouldn't use angle as a variable as it is a predefined function.
Is this pseudocode? (setq width bottom 2.00 (is adjustable up to 2.375) would throw many errors not to mention it lacks parenthesis matching.
You need to have your variables connected as one word as something like (setq width bottom) would set width to bottom which at this point is undefined and would return nil as would (width top) (rightangle brick) etc.
Why are you forcing orthomode? Why are you not getting the current sysvars so you can return the users program back to what they're used to. I would print this code out, fold it into a plane or a ninja star and throw it at you if I had to use it because of the fact that you aren't playing nice with my settings.
BTW, what's with the prognappload? What is that?
Other than that, it looks like you're going in a direction, but I thought you originally had more info than this and what you had before was a good start, it just needed to be cleaned up and expounded upon.