\def allows for specifying the parameter text that is to be expected, while \newcommand does not. xparse brings this back, but not with the simplicity that accompanies \def:

\documentclass{article}
\usepackage{pstricks-add,xparse}
\def\door(#1,#2)#3{
\psline[
linecap = 0,
linewidth = 1.5\pslinewidth,
linecolor = white
](#1,#2)(!#1 #2 #3 add)
\psline[
linecap = 2
](#1,#2)(!#1 #3 add #2)
\psarc[
linestyle = dotted
](#1,#2){#3}{0}{90}
}
\makeatletter
\NewDocumentCommand{\Xdoor}{ > { \SplitArgument {1} {,} } r() m}{%
\psline[
linecap = 0,
linewidth = 1.5\pslinewidth,
linecolor = white
](\@firstoftwo#1,\@secondoftwo#1)(!\@firstoftwo#1 \@secondoftwo#1 #2 add)
\psline[
linecap = 2
](\@firstoftwo#1,\@secondoftwo#1)(!\@firstoftwo#1 #2 add \@secondoftwo#1)
\psarc[
linestyle = dotted
](\@firstoftwo#1,\@secondoftwo#1){#2}{0}{90}
}
\makeatother
\begin{document}
\begin{pspicture}(3,1)
\door(0,0){1}
\Xdoor(2,0){1}
\end{pspicture}
\end{document}
\SplitArgument{1}{,} splits r() - a required argument that is delimited by (...) - into two parts that should be separated by , in the following way: (a,b) > {a}{b}. As such, \@firstoftwo#1 results in a, and \@secondoftwo#1 results in b. Of course, you could define commands for these rather than \@first-/\@secondoftwo.
\rputwill not remove them. – kiss my armpit Dec 12 '13 at 21:05%but this is a very tiresome task.) – Svend Tveskæg Dec 12 '13 at 21:25%at the end of a line does have a useful function of helping egreg keep ahead of us all as he earns most of his rep points by telling people to put%at ends of lines. – David Carlisle Dec 12 '13 at 22:00\newcommand*? – lhf Dec 13 '13 at 01:34\defseems ideal. – lhf Dec 13 '13 at 02:02