rendered paste body(defun c:swap (/ sv mss1 mss1p1 mss1p2 mss2 mss2p1 mss2p2)
(prompt "\nFirst group to move")
(setq mss1 (ssget))
(setq mss1p1 (getpoint "\nMove Group 1 From: "))
(setq mss1p2 (getpoint "\nMove Group 1 To: "))
(prompt "\nSecond group to move")
(setq mss2 (ssget))
(setq mss2p1 (getpoint "\nMove Group 2 From: "))
(setq mss2p2 (getpoint "\nMove Group 2 To: "))
(snapset "off")
(command "move" mss1 "" mss1p1 mss1p2 "move" mss2 "" mss2p1 mss2p2)
(snapset "on"))
(defun snapset (state) (if (= state "off")
(progn
(setq sv (getvar "osmode"))
(setvar "osmode" 22655)))
(if (= state "on") (setvar "osmode" sv)))