@CADaSchtroumpf wrote:
And can't the ARRAY command do this job?
Certainly it can! Here's a horizontal one very like the Message 1 video:
(defun C:AHD (/ ss); = Array Horizontally, Dynamic
(if (setq ss (ssget "_:L"))
(progn ; then
(initcommandversion)
(command "_.array" ss "" "_rectangular"
"_rows" 1 "" ""
"_columns" 2 (getdist)
); command
)
); if
(prin1)
)
That leaves you with two of them, likely not initially at the right spacing but it's asking you for the spacing, so give it that [either by picking two points as in the video or typing in a value], and then you're left to grab the grip and drag for the number of columns, as in the video.

It works whether you have ARRAY set to be Associative or not, but that choice could be built in if you have a preference. Also set DELOBJ for whether you want the source object(s) to remain in addition to the Array result.
A single command could be made to offer the choice of going horizontal or vertical, or separate commands could be defined, or....
Kent Cooper, AIA