Is there some known problem with (vla-insertBlock) and mirrored attributes? I am trying to polish up a routine here and noticed if the selected attributed block is mirrored the newly created blocks attribs are backwards. ; mirrored attributed blocks are still a problem. (defun c:blockClone (/ ent new p1 ename data old obj) (setq *doc* (vla-get-activedocument (vlax-get-acad-object))) (while (not (setq ent (entsel " select block to clone: ")))) (while (= "" (setq new (getstring t " specify new block name: ")))) (initget 1) (setq p1 (getpoint " specify insertion point: ")) (setq ename (car ent)) (setq data (entget ename)) (setq old (cdr (assoc 2 data))) (cond ((cloneBlock old new) (setq obj (vla-insertblock (if (zerop (currentSpace)) (vla-get-paperspace *doc*) (vla-get-modelspace *doc*) ) (vlax-3d-point p1) new 1 1 1 0 ) ) (vla-put-xscalefactor obj (cdr (assoc 41 data))) (vla-put-yscalefactor obj (cdr (assoc 42 data))) (vla-put-zscalefactor obj (cdr (assoc 43 data))) (vla-put-rotation obj (cdr (assoc 50 data))) ) (t (princ " unable to duplicate block")) ) (princ) ) ;(cloneBlock "atr-note" "test") (defun cloneBlock (old new / ename data lst) (and (tblsearch "block" old) (not (tblsearch "block" new)) (setq ename (tblobjname "block" old)) (setq data (entget ename)) (setq data (subst (cons 2 new) (assoc 2 data) data)) (setq lst (nEnts ename "*")) (setq data (cons data (mapcar 'entget lst))) (mapcar 'entmake data) (entmake '((0 . "ENDBLK"))) ) ) ; Jason Piercey . June 2nd, 2003 ; [ename] - entity name or vla-object - block, insert or polyline ; [filter] - string, re: wcmatch() ; return: list of enames or nil ; revised: July 10th, 2003 - accepts ename or vla-object (defun nEnts (ename filter / data ent rtn) (or (= 'ename (type ename)) (setq ename (vlax-vla-object->ename ename)) ) (setq filter (strcase filter)) (while (and ename (setq ename (entnext ename))) (setq data (entget ename)) (setq ent (cdr (assoc 0 data))) (if (wcmatch ent filter) (setq rtn (cons ename rtn)) ) (if (= "SEQEND" ent) (setq ename nil)) ) (reverse rtn) ) ; determine which space is active ; return: integer ; 1 - model space ; -1 - floating model space ; 0 - paper space (defun currentSpace (/ mode) (setq mode (getvar "tilemode")) (cond ((and (zerop mode) (<= 2 (getvar "cvport"))) -1) (t mode) ) )