Devitg is on right path, for simplicity I would use a SSGET "F" option so pline order is recorded saves all the sorting of X & y etc. I would also copy rather than move helps if things go wrong. Note not sure why but my Bricscad does the ssget F backwards.
; very simple copy plines and whats inside to right
; By AlanH March 2023
(defun c:wow2 ( / pt1 pt2 ss ss2 x dist oldsnap)
(setq dist (getdist "\nEnter distance X "))
(setq dist2 (- (getdist "\nEnter distance y ")))
(setq d2 dist y 0.0)
(while (setq pt1 (getpoint "\nPick 1st point Enter to exit "))
(setq pt2 (getpoint pt1 "\nPick point 2 "))
(setq oldsnap (getvar 'osmode))
(setvar 'osmode 0)
(setq x 0)
(setq ss (ssget "F" (list pt1 pt2) '((0 . "LWPOLYLINE"))))
(if (= ss nil)
(alert "No objects found")
(repeat (sslength ss)
(setq plent (ssname ss x))
(setq co-ord (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget plent))))
(setq co-ord (cons (last co-ord) co-ord)) ; make a closed list
(setq ss2 (ssget "wP" co-ord))
(if (= ss2 nil) (setq ss2 (ssadd)))
(setq ss2 (ssadd plent ss2))
(setq x (1+ x) d2 (* x d2))
(command "copy" ss2 "" "0,0" (list d2 Y))
(setq ss2 nil)
)
)
(setq d2 dist)
(setq y (+ Y dist2))
)
(setvar 'osmode oldsnap)
(princ)
)
(c:wow2)
For repeated use can put the get pt1 inside a while so pick more. I used pick left to right.
Probably needs a bit more enhancing.