Does your CAD have COPYMODE variable? If so, set it to 1 and then when you initialize COPY command pick base point, move mouse in desired direction (ortho optional) and just type distances consequently... It this doesn't work, maybe try to write small lisp like this one :
(defun c:array-new ( / ss n p1 p2 k v l )
(vl-load-com)
(setq ss (ssget "_:L"))
(initget 7)
(setq n (getint "\nNumber of copies : "))
(initget 1)
(setq p1 (getpoint "\nPick or specify base point : "))
(initget 1)
(setq p2 (getpoint p1 "\nPick or specify direction point (distance between copies) : "))
(setq v (mapcar (function -) p2 p1))
(setq k 0)
(if ss
(repeat n
(setq k (1+ k))
(foreach obj (if (null l) (setq l (mapcar (function vlax-ename->vla-object) (vl-remove-if (function listp) (mapcar (function cadr) (ssnamex ss)))))) l)
(vla-move (vla-copy obj) (vlax-3d-point (list 0 0 0)) (vlax-3d-point (mapcar (function *) v (list k k k))))
)
)
)
(princ)
)