PRO plot3dline, r0, r1, _extra=_extra, tiplen=tiplen, tipwid=tipwid, color=color,       $
    labeltext=labeltext, labeldist=labeldist, labeloffset=labeloffset
    @compile_opt.pro        ; On error, return to caller
InitVar, labeldist, 0

CASE IsType(tiplen, /defined) or IsType(tipwid, /defined) OF
0: plots, [ [r0], [r1] ], /t3d, _extra=_extra, color=color
1: arrow3d, r0, r1, tiplen=tiplen, tipwid=tipwid, _extra=_extra, color=color
ENDCASE

IF IsType(labeltext, /defined) THEN BEGIN
    P = r1-r0
    P = P/sqrt(total(P*P))
    plot3dtext, r1+labeldist*P, labeltext, labeloffset=labeloffset, _extra=_extra
ENDIF

RETURN  &  END