Jump to content

Recommended Posts

Posted

Hello everybody.

 

How to change the properties of the selected Block .

 

Things like changing colors for specific elements and Line Types and Weights and so on ...

 

(if (setq a (car (entsel "\n Please Select a Block HONEY ? :")))
 (and what else ....
      ........

 

Many thanks Gentlemen

  • Replies 28
  • Created
  • Last Reply

Top Posters In This Topic

  • Sweety

    13

  • alanjt

    4

  • BlackBox

    4

  • Lee Mac

    3

Top Posters In This Topic

Posted (edited)

Look into the entnext function.

Edited by BlackBox
Typo
Posted

Hello Renderman.

 

I guess that would be after entring the Block definition by nentsel ( I am not that sure) .

 

Agree ?

Posted
Hello Renderman.

 

I guess that would be after entring the Block definition by nentsel ( I am not that sure) .

 

Agree ?

 

 

Simple example:

 

(defun c:FOO (/ ss eName eData)
 (if (setq ss (ssget ":S:E" '((0 . "INSERT") (66 . 1))))
   (progn
     (setq eName (ssname ss 0))
     (setq eData (entget eName))
     (while (and (/= (cdr (assoc 0 eData)) "ATTRIB")
                 (/= (cdr (assoc 2 eData)) "[color=red]attribute_tag_name_here[/color]"))
       (progn
         (setq eName (entnext eName))
         (setq eData (entget eName)))
       (progn
         ;; ... Do something else.
         )))
   (prompt "\n  <!>  Nothing selected  <!> "))
 (princ))

Posted

Thanks a lot .

 

So how to change the Line Type or Line Weight of a circle in a block ?

Posted

Actually it's a normal block , no attributes are included at all .

Posted

You can either step through the block definition and change any properties or use nentsel/nentselp to select an individual object within the block to edit.

Posted
You can either step through the block definition and change any properties or use nentsel/nentselp to select an individual object within the block to edit.

 

That's exactly what I meant.

 

But this issue is very diffecult to me to make , Have you written any codes about the same thread ?

 

Thanks

Posted
That's exactly what I meant.

 

But this issue is very diffecult to me to make , Have you written any codes about the same thread ?

 

Thanks

Exactly what? I have you two options. Single selection (nentsel/nentselp) works exactly the same as if you were editing an object you selected with entsel.

 

Quickie vla example (change color of object to 5 - will update all blocks after regen):

 (vla-put-color (vlax-ename->vla-object (car (nentsel))) 5)

 

Quickie entmod example (same thing):

(if (setq e (nentsel))
 (entmod (if (setq a (assoc 62 (setq d (entget (car e)))))
           (subst (cons 62 5) a d)
           (append d (list (cons 62 5)))
         )
 )
)

Posted

That's really great Mr Alanjt.

 

So is it also possible to add entities to the Block , things like texts, circles , ans so on ..... please ?

 

Many thanks gentleman Alan.

Posted

Yes. Lee did something a while back that would allow the user to add objects to an existing block.

Posted
Yes. Lee did something a while back that would allow the user to add objects to an existing block.

 

O' yeah so nice ,

 

I hope that Lee would come up soon to discuss the issue with us too.

 

Thanks a lot.

Posted

search here for blockedit.lsp its a good starting point to make changes to a block

Posted
search here for blockedit.lsp its a good starting point to make changes to a block

 

I could not find it , So could you please upload the link ?

 

Thank you so much.

Posted

To modify the block, maybe like this:

 

[b][color=BLACK]([/color][/b]defun c:blk-mod [b][color=FUCHSIA]([/color][/b]/ input cl bl val lt la tk cr i ss en bn bl nb
                   tdef fe fd[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while
    [b][color=NAVY]([/color][/b]progn
      [b][color=MAROON]([/color][/b]and cl [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\n"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]prin1 cl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
      [b][color=MAROON]([/color][/b]initget [color=#2f4f4f]"6 8 39 62"[/color][b][color=MAROON])[/color][/b]
      [b][color=MAROON]([/color][/b]setq input [b][color=GREEN]([/color][/b]getkword [b][color=BLUE]([/color][/b]strcat [color=#2f4f4f]"\nWhat Properties Do You Wish To Change - "[/color]
                                    [color=#2f4f4f]"[b][color=RED]([/color][/b]6[b][color=RED])[/color][/b]Linetype [b][color=RED]([/color][/b]8[b][color=RED])[/color][/b]Layer [b][color=RED]([/color][/b]39[b][color=RED])[/color][/b]Thickness [b][color=RED]([/color][/b]62[b][color=RED])[/color][/b]Color:   "[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    [b][color=NAVY]([/color][/b]and input
         [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]member input cl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
         [b][color=MAROON]([/color][/b]setq cl [b][color=GREEN]([/color][/b]cons input cl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

  [b][color=FUCHSIA]([/color][/b]foreach p cl
     [b][color=NAVY]([/color][/b]setq val nil[b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]cond [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= p [color=#2f4f4f]"6"[/color][b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]or [b][color=RED]([/color][/b]not val[b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b]not [b][color=PURPLE]([/color][/b]snvalid val[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b]not [b][color=PURPLE]([/color][/b]or [b][color=TEAL]([/color][/b]= [b][color=OLIVE]([/color][/b]strcase val[b][color=OLIVE])[/color][/b] [color=#2f4f4f]"BYLAYER"[/color][b][color=TEAL])[/color][/b]
                                [b][color=TEAL]([/color][/b]tblsearch [color=#2f4f4f]"LTYPE"[/color] val[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                   [b][color=BLUE]([/color][/b]setq val [b][color=RED]([/color][/b]getstring [color=#2f4f4f]"\nNew Linetype For All Entities:   "[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]setq lt [b][color=BLUE]([/color][/b]cons 6 [b][color=RED]([/color][/b]strcase val[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
           [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= p [color=#2f4f4f]"8"[/color][b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]or [b][color=RED]([/color][/b]not val[b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b]not [b][color=PURPLE]([/color][/b]snvalid val[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                   [b][color=BLUE]([/color][/b]setq val [b][color=RED]([/color][/b]getstring [color=#2f4f4f]"\nNew Layer For All Entities:   "[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]setq la [b][color=BLUE]([/color][/b]cons 8 [b][color=RED]([/color][/b]strcase val[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
           [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= p [color=#2f4f4f]"39"[/color][b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]initget 1[b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]setq val [b][color=BLUE]([/color][/b]getdist [color=#2f4f4f]"\nNew Thickness For All Entities:   "[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]setq tk [b][color=BLUE]([/color][/b]cons 39 val[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
           [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= p [color=#2f4f4f]"62"[/color][b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]or [b][color=RED]([/color][/b]not val[b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b]> val 256[b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b]< val 0[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                   [b][color=BLUE]([/color][/b]initget 5[b][color=BLUE])[/color][/b]
                   [b][color=BLUE]([/color][/b]setq val [b][color=RED]([/color][/b]getint [color=#2f4f4f]"\nNew Color Thickness For All Entities 0-255:   "[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
            [b][color=GREEN]([/color][/b]setq cr [b][color=BLUE]([/color][/b]cons 62 val[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

  [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq i -1
            ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"INSERT"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss [b][color=BLUE]([/color][/b]setq i [b][color=RED]([/color][/b]1+ i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
              [b][color=MAROON]([/color][/b]setq bn [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 2 [b][color=RED]([/color][/b]entget en[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
              [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]member bn bl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                  [b][color=GREEN]([/color][/b]setq bl [b][color=BLUE]([/color][/b]cons bn bl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

  [b][color=FUCHSIA]([/color][/b]foreach b bl
     [b][color=NAVY]([/color][/b]setq tdef [b][color=MAROON]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] b[b][color=MAROON])[/color][/b]
             fe [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc -2 tdef[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]entmake tdef[b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]while fe
        [b][color=MAROON]([/color][/b]setq fd [b][color=GREEN]([/color][/b]entget fe[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]= [color=#2f4f4f]"INSERT"[/color] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 0 fd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq nb [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 2 fd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]member nb bl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq bl [b][color=BLUE]([/color][/b]append bl [b][color=RED]([/color][/b]list nb[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]setq fe [b][color=GREEN]([/color][/b]entnext fe[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

  [b][color=FUCHSIA]([/color][/b]foreach b bl
     [b][color=NAVY]([/color][/b]setq tdef [b][color=MAROON]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] b[b][color=MAROON])[/color][/b]
             fe [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc -2 tdef[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]entmake tdef[b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]while fe
        [b][color=MAROON]([/color][/b]setq fd [b][color=GREEN]([/color][/b]entget fe[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]member [color=#2f4f4f]"8"[/color] cl[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq fd [b][color=BLUE]([/color][/b]subst la [b][color=RED]([/color][/b]assoc 8 fd[b][color=RED])[/color][/b] fd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]member [color=#2f4f4f]"6"[/color] cl[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]assoc 6 fd[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq fd [b][color=BLUE]([/color][/b]subst lt [b][color=RED]([/color][/b]assoc 6 fd[b][color=RED])[/color][/b] fd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]member [color=#2f4f4f]"6"[/color] cl[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]assoc 6 fd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq fd [b][color=BLUE]([/color][/b]append fd [b][color=RED]([/color][/b]list lt[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]member [color=#2f4f4f]"39"[/color] cl[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]assoc 39 fd[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq fd [b][color=BLUE]([/color][/b]subst tk [b][color=RED]([/color][/b]assoc 39 fd[b][color=RED])[/color][/b] fd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]member [color=#2f4f4f]"39"[/color] cl[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]assoc 39 fd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq fd [b][color=BLUE]([/color][/b]append fd [b][color=RED]([/color][/b]list tk[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]member [color=#2f4f4f]"62"[/color] cl[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]assoc 62 fd[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq fd [b][color=BLUE]([/color][/b]subst cr [b][color=RED]([/color][/b]assoc 62 fd[b][color=RED])[/color][/b] fd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]member [color=#2f4f4f]"62"[/color] cl[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]assoc 62 fd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]setq fd [b][color=BLUE]([/color][/b]append fd [b][color=RED]([/color][/b]list cr[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]entmake fd[b][color=MAROON])[/color][/b]
        [b][color=MAROON]([/color][/b]setq fe [b][color=GREEN]([/color][/b]entnext fe[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"ENDBLK"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

  [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

 

-David

Posted (edited)

I found this one a long time ago... Cant even remember where :oops:

Its very usefull with Blocks ... in our office we have a very strict rule of entities should always be "BYLAYER" i.e (lientype, lineweight ...)which i think is the whole idea of layers

 

(defun C:FIXBLKS (/ ELST ENAM ESEL BNAM FLST)
 (vl-load-com)
 (setq ESEL (entsel "\nSelect block: ")
ENAM (car ESEL)
ELST (entget ENAM)
BNAM (cdr (assoc 2 ELST))
FLST nil
 )
 (fix1 BNAM)
 (vl-cmdf "regen")
 (prin1)
)
(defun FIX1 (BNAM / BENAM)
 (if (not (member BNAM FLST))
   (progn
     (setq FLST  (cons BNAM FLST)
    BENAM (tblobjname "block" BNAM)
     )
     (while (setq BENAM (entnext BENAM))
    ;(print (entget BENAM))
(if (= (cdr (assoc 0 (entget BENAM))) "INSERT")
  (fix1 (cdr (assoc 2 (entget BENAM))))
  (vla-put-color (vlax-ename->vla-object BENAM) 256)
)
     )
   )
 )
)

It made used of recursive programming, what it does is change every color of entity to "BYLAYER"

I used this and modify it for half a dozen routines....

 

Hope this helps .

 

Cheers to the Author :)

Edited by pBe
fat fingers syndrome
Posted

This would be more than enough to change Block color to By Layer ....

 

(defun C:BLk-col (/ e)
 (vl-load-com)
 (setq e (car (entsel "\nSelect block: ")))
   (vla-put-color (vlax-ename->vla-object e ) 256)
 (princ)
)

Posted
This would be more than enough to change Block color to By Layer ....

 

(defun C:BLk-col (/ e)
(vl-load-com)
(setq e (car (entsel "\nSelect block: ")))
(vla-put-color (vlax-ename->vla-object e ) 256)
(princ)
)

 

Not even close SWEETY... it's more than what you think

Look at the code :)

Posted
... what it does is change every color of entity to "BYLAYER"

I used this and modify it for half a dozen routines....

 

... Or since you're using 2009, you could just use the ._setbylayer command. :wink:

Posted
... Or since you're using 2009, you could just use the ._setbylayer command. :wink:

 

thats right.. but that code also works with xref :)

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...