;Copy object to existing points
;(C)2023 Arkance Systems - www.cadforum.cz
;
(defun C:CopyToPts (/ obj basept pt ptlist)
  (and
	(setq obj (car (entsel "\nSelect object to copy: ")))
	(setq obj (vlax-ename->vla-object obj))
	(setq basept (getpoint "\nPick source base point: "))
	(setq basept (vlax-3d-point (trans basept 1 0)))
	(princ "\nSelect target point objects (point, insert, circle, arc)")
	(setq ptlist (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "POINT,INSERT,CIRCLE,ARC"))))))))
    (foreach pt ptlist
	  (vla-move (vla-copy obj)
		 basept
		 (cond
		   ((vlax-property-available-p pt 'Center)(vla-get-center pt))
		   ((vlax-property-available-p pt 'InsertionPoint)(vla-get-insertionpoint pt))
		   (T (vla-get-coordinates pt))
		 )
	  )
    )
   )
  (princ (strcat "\n" (itoa (length ptlist)) " objects copied."))
  (princ)
)