Explode all selected blocks containing a specific layer

Explode all selected blocks containing a specific layer

Migumby
Advocate Advocate
1,121 Views
5 Replies
Message 1 of 6

Explode all selected blocks containing a specific layer

Migumby
Advocate
Advocate

Hello,

I’m looking for a lsp that will explode all selected blocks that contain a layer named “text tags”.

Is such a thing even possible?

Thanks

0 Likes
Accepted solutions (1)
1,122 Views
5 Replies
Replies (5)
Message 2 of 6

hmsilva
Mentor
Mentor

@Migumby wrote:

I’m looking for a lsp that will explode all selected blocks that contain a layer named “text tags”.

Is such a thing even possible?


Hi Migumby,

 

if I have understood your goal, perhaps something like this...

 

(vl-load-com)
(defun c:demo (/ i lst lst1 name obj ss)
  (or acdoc (setq acdoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (setq ss (ssget "_:L" '((0 . "INSERT"))))
    (progn
      (repeat (setq i (sslength ss))
        (setq obj  (vlax-ename->vla-object (ssname ss (setq i (1- i))))
              name (vla-get-effectivename obj)
        )
        (if (not (vl-position name lst))
          (setq lst (cons name lst))
        )
      )
      (vlax-for blk (vla-get-blocks acdoc)
        (if (and (= (vla-get-islayout blk) :vlax-false)
                 (= (vla-get-isxref blk) :vlax-false)
                 (vl-position (setq name (vla-get-name blk)) lst)
            )
          (vlax-for obj blk
            (if (and (= (vla-get-layer obj) "text tags")
                     (not (vl-position name lst1))
                )
              (setq lst1 (cons name lst1))
            )
          )
        )
      )
      (if lst1
        (repeat (setq i (sslength ss))
          (setq obj  (vlax-ename->vla-object (ssname ss (setq i (1- i))))
                name (vla-get-effectivename obj)
          )
          (if (and (vl-position name lst1)
                   (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-invoke (list obj 'explode))))
              )
            (vla-delete obj)
          )
        )
      )
    )
  )
  (princ)
)

 

Hope this helps,
Henrique

EESignature

Message 3 of 6

Migumby
Advocate
Advocate

Hello Henrique,

for some reason I cant get this lsp to work.

It doesnt give me any errors on loading or executing.

I'm attaching an example of the blocks that I would want exploded.

thank you for all of your help.

0 Likes
Message 4 of 6

hmsilva
Mentor
Mentor
Accepted solution

Hi Migumby,

 

try to change

 

(= (vla-get-layer obj) "text tags")
;;to
(= (strcase (vla-get-layer obj)) "TEXT TAGS")

 

Hope this helps,
Henrique

EESignature

0 Likes
Message 5 of 6

Migumby
Advocate
Advocate

Great!

That did it!

Thank you very much

0 Likes
Message 6 of 6

hmsilva
Mentor
Mentor

You're welcome, Migumby!
Glad I could help

Henrique

EESignature

0 Likes