Jump to content

Burst a Block and keep the display text?


Recommended Posts

Posted

Hi, is there a command, or lisp routine, that will Burst a block and then only display what was originally displayed before the block was burst? I want the other all the other attributes to remain hidden or placed on a turned off layer.

Thank You

Posted

Or, can you burst a block, or group of blocks, and place each attribute on it's own layer?

Posted

I'm assuming you know about the BURST command in Express Tools.

 

This will perform in the same way as BURST but will not create invisible attributes.

 

[i][color=#990099];; Performs in the same way as Burst.lsp, but[/color][/i]
[i][color=#990099];; doesn't display invsible attributes.[/color][/i]
[i][color=#990099];; Restrictions: Cannot process Multiline Attribs[/color][/i]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:Burst2 [b][color=RED]([/color][/b] [b][color=BLUE]/[/color][/b] *error* doc blocks undo ss [b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
 [i][color=#990099];; © Lee Mac  ~  20.05.10[/color][/i]

 [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] *error* [b][color=RED]([/color][/b] msg [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] Undo [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] msg[b][color=RED])[/color][/b] [b][color=#a52a2a]"*BREAK,*CANCEL*,*EXIT*"[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\n** Error: "[/color][/b] msg [b][color=#a52a2a]" **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]    

 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc    [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       blocks [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Blocks[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]    

 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#a52a2a]"_:L"[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#a52a2a]"INSERT"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Undo [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-StartUndoMark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     
     [b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] obj [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveSelectionSet[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]

       [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [color=Blue][b]:vlax-true[/b][/color] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Explodable[/color][/b] [b][color=RED]([/color][/b]Itemp blocks [b][color=RED]([/color][/b]BlockName obj[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
           
           [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=Blue]:vlax-true[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-HasAttributes[/color][/b] obj[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
             
             [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] att [b][color=RED]([/color][/b][b][color=BLUE]vlax-invoke[/color][/b] obj [b][color=DARKRED]'[/color][/b]GetAttributes[b][color=RED])[/color][/b]
               
               [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=Blue]:vlax-false[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Invisible[/color][/b] att[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
                        [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=Blue]:vlax-false[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-MTextAttribute[/color][/b] att[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
                 
                 [b][color=RED]([/color][/b]Att2Text [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-vla-object->ename[/color][/b] att[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
               [b][color=RED])[/color][/b]
             [b][color=RED])[/color][/b]
           [b][color=RED])[/color][/b]              
                   
           [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] eobj [b][color=RED]([/color][/b][b][color=BLUE]vlax-invoke[/color][/b] obj [b][color=DARKRED]'[/color][/b]Explode[b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#a52a2a]"AcDbAttributeDefinition"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ObjectName[/color][/b] eobj[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] eobj[b][color=RED])[/color][/b]
             [b][color=RED])[/color][/b]
           [b][color=RED])[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] obj[b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
       [b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vla-Delete[/color][/b] ss[b][color=RED])[/color][/b]

     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Undo [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndomark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b]            
[b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] BlockName [b][color=RED]([/color][/b] obj [b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-property[/color][/b] obj
   [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-property-available-p[/color][/b] obj [b][color=DARKRED]'[/color][/b]EffectiveName[b][color=RED])[/color][/b]
     [b][color=DARKRED]'[/color][/b]EffectiveName [b][color=DARKRED]'[/color][/b]Name
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]
                                                
[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] Itemp [b][color=RED]([/color][/b] coll item [b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-error-p[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] item
         [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=Blue]vla-item[/color][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] coll item[b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
       [b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
   item
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] RemovePairs [b][color=RED]([/color][/b] lst pairs [b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] pair [b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]vl-position[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pair[b][color=RED])[/color][/b] pairs[b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
   lst
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] Att2Text [b][color=RED]([/color][/b] eLst [b][color=BLUE]/[/color][/b] dx74 [b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] dx74 [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]74[/color][/b] eLst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   
 [b][color=RED]([/color][/b][b][color=BLUE]entmake[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b] [b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#a52a2a]"TEXT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b]RemovePairs
       [b][color=RED]([/color][/b][b][color=BLUE]subst[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]73[/color][/b] dx74[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]74[/color][/b] eLst[b][color=RED])[/color][/b] eLst
       [b][color=RED])[/color][/b]
       [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]100[/color][/b] [b][color=#009900]2[/color][/b] [b][color=#009900]74[/color][/b] [b][color=#009900]70[/color][/b] [b][color=#009900]280[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]

     

Posted

You're welcome :)

 

It should work a lot faster than the Express Tools Version too :D

Posted

Here's an update which should work with Multiline Attributes too:

 

;; Performs in the same way as Burst.lsp,
;; but is faster and doesn't display invisible attributes.

(defun c:Burst2 ( / *error* doc blocks undo ss )
 (vl-load-com)
 ;; © Lee Mac  ~  20.05.10

 (defun *error* ( msg ) (and Undo (vla-EndUndoMark doc))
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
   (princ)
 )    

 (setq doc    (vla-get-ActiveDocument (vlax-get-acad-object))
       blocks (vla-get-Blocks doc))    

 (if (ssget "_:L" '((0 . "INSERT")))
   (progn
     (setq Undo (not (vla-StartUndoMark doc)))
     
     (vlax-for obj (setq ss (vla-get-ActiveSelectionSet doc))

       (if (eq :vlax-true (vla-get-Explodable (Itemp blocks (BlockName obj))))
         (progn
           
           (if (eq :vlax-true (vla-get-HasAttributes obj))
             
             (foreach att (vlax-invoke obj 'GetAttributes)
               
               (if (eq :vlax-false (vla-get-Invisible att))

                 (
                   (if (eq :vlax-false (vla-get-MTextAttribute att))

                     Att2Text MAtt2MText
                   )
                   (entget (vlax-vla-object->ename att))
                 )
               )
             )
           )              
                   
           (foreach eobj (vlax-invoke obj 'Explode)
             (if (eq "AcDbAttributeDefinition" (vla-get-ObjectName eobj))
               (vla-delete eobj)
             )
           )
           (vla-delete obj)
         )
       )
     )
     (vla-Delete ss)

     (setq Undo (vla-EndUndomark doc))
   )
 )
 (princ)            
)

(defun BlockName ( obj )
 (vlax-get-property obj
   (if (vlax-property-available-p obj 'EffectiveName)
     'EffectiveName 'Name
   )
 )
)
                                                
(defun Itemp ( coll item )
 (if
   (not
     (vl-catch-all-error-p
       (setq item
         (vl-catch-all-apply
           (function vla-item) (list coll item)
         )
       )
     )
   )
   item
 )
)

(defun RemovePairs ( pairs lst )
 ;; © Lee Mac  ~  22.05.10
 (vl-remove-if
   (function
     (lambda ( pair )
       (vl-position (car pair) pairs)
     )
   )
   lst
 )
)

(defun RemoveFirstPairs ( pairs lst )
 ;; © Lee Mac  ~  22.05.10
 (defun foo ( pair lst )
   (if lst
     (if (eq pair (caar lst))
       (cdr lst)
       (cons (car lst) (foo pair (cdr lst)))
     )
   )
 )

 (foreach pair pairs
   (setq lst (foo pair lst))
 )
 lst
)
 
(defun Att2Text ( eLst / dx74 )
 ;; © Lee Mac  ~  22.05.10
 (setq dx74 (cdr (assoc 74 eLst)))
   
 (entmake
   (append '( (0 . "TEXT") )
     (RemovePairs '(0 100 2 74 70 280)
       (subst
         (cons 73 dx74) (assoc 74 eLst) eLst
       )
     )
   )
 )
)

(defun MAtt2MText ( eLst )
 ;; © Lee Mac  ~  22.05.10
 (entmake
   (append '( (0 . "MTEXT") (100 . "AcDbEntity") (100 . "AcDbMText") )
     (RemoveFirstPairs '(40 1 50 41 7 71 72 71 72 73 10 11 11 210)
       (RemovePairs '(-1 330 5 0 100 101 2 42 43 51 74 70 280) eLst)
     )
   )
 )
)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...