;;; MCOPY (gile) ;;; Effectue des copies multiples d'une sélection suivant le décalage spécifié par 2 points (defun c:mcopy (/ mcopy_err AcDoc Space pt1 pt2 nb) (vl-load-com) (defun mcopy_err (msg) (if (= msg "Fonction annulée") (princ) (princ (strcat "\nErreur: " msg)) ) (vla-endUndoMark AcDoc) (setq *error* m:err m:err nil ) (princ) ) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vla-StartUndoMark AcDoc) (if (and (= 1 (getvar "pickfirst")) (setq ss (cadr (ssgetfirst))) ) (sssetfirst nil nil) (setq ss (ssget)) ) (initget 1) (setq pt1 (getpoint "\nSpécifiez le décalage, premier point: ")) (initget 1) (setq pt2 (getpoint pt1 "\nDeuxième point: ")) (initget 1) (setq nb (getint "\nNombre d'éléments: ")) (foreach obj (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) (setq obj (vlax-ename->vla-object obj)) (repeat (1- nb) (vla-Copy obj) (vla-move obj (vlax-3d-point (trans pt1 1 0)) (vlax-3d-point (trans pt2 1 0))) ) ) (vla-endUndoMark AcDoc) (setq *error* m:err m:err nil ) (princ) )