@komondormrex wrote:
to quickly make selected blocks definition annotative. note that you should add needed annotative scales to each insertion.
(defun c:make_b_def_anno (/ blocks insert_sset name processed)
(setq blocks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
(if (setq insert_sset (ssget '((0 . "insert"))))
(foreach insert (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex insert_sset))))
(if (not (member (setq name (vla-get-effectivename insert)) processed))
(progn (entmod (append (entget (vlax-vla-object->ename (vla-item blocks name)))
'((-3 ("AcadAnnotative" (1000 . "AnnotativeData") (1002 . "{") (1070 . 1) (1070 . 1) (1002 . "}"))))
)
)
(setq processed (append processed (list name)))
)
)
)
)
)
That will definitely work for blocks that are on the screen in a drawing, and maybe I am not explaining this correctly. I need to edit almost every block to be annotative. Say I wanted these 3 (below), plus a few others within the current drawing, not annotative. I know I can use BEDIT and go in to each one and select, annotative or not. I was just hoping there might be a lisp routine that would pop up with the list of blocks within the drawing and you could select which ones you want annotative and which ones you don't. Kind of like purge. You can choose to purge certain things or deselect them to not be purged. Is that a little clearer?
The lisp routine that I attached in a previous post is just missing an option to pick and choose which blocks to leave out of being annotative.
