Jump to content

change text color according to text height in a given range


Astro

Recommended Posts

Hi all,

i need again your kind help. I made a lot of searchs on google (whithout success) to find a lisp which does following tasks:

 

when the comand is executed,

 

-scan the drawing for TXT, MTXT and attributes

-according to their size range change the color

 

size table:

from 0.000mm to 2.150mm white

from 2.151mm to 3.000mm green

from 3.001mm to 4.250mm yellow

from 4.251mm to 6.000mm red

from 6.001mm to unlimited magenta

 

This could be very usefull when you use plotstyles colors associtaed to diffrent lineweigths to print. like this all your texts are in the correct color and get well printed in the good lineweight.

And also it helps to clean up your drawing whitout having to select each text, check the size and assing the needed color.

 

In advance thanks for your kind help :)

Link to comment
Share on other sites

Here is a start needs a cond to change the Height value. Will see if I have time.

 

(setq ss (ssget "X" (list (cons 0 "Text,Mtext")))) ; selection set of text within polygon
(if (= ss nil) 
(princ "\nnothing inside")
(progn
(setq numb2 (sslength ss))
(setq y numb2)
(repeat y
(setq tobj (vlax-ename->vla-object (ssname ss (setq y (- y 1)))))
(setq textht (vlax-get-property tobj "Height"))
(princ textht) ; change to write text to file
(COND ((and (> textht 0.0) (< textht 2.5)) (vla-put-Color tobj 1)) ; 1 is color number
((and (> textht 2.501) (< textht 5.0)) (vla-put-Color tobj 2))
((and (> textht 5.01) (< textht 7.5)) (vla-put-Color tobj 3))
((> textht 7.501) (vla-put-Color tobj 4))
); end cond
); repeat 
); end progn
); end if

Edited by BIGAL
cond added
Link to comment
Share on other sites

woow thanks Bigal :)

 

it's already working quite nice.

I only changed the range and colors to my need. My lisp level doesn't allow me to do more :( hehe

 


(defun C:test ()
(setq ss (ssget "X" (list (cons 0 "Text,Mtext")))) ; 
selection set of text within polygon
(if (= ss nil) 
(princ "\nnothing 
inside")
(progn
(setq numb2 (sslength ss))
(setq y numb2)
(repeat 
y
(setq tobj (vlax-ename->vla-object (ssname ss (setq y (- y 
1)))))
(setq textht (vlax-get-property tobj "Height"))
;(princ textht) ; 
change to write text to file
(COND ((and (> textht 0.0) (< textht 
2.15)) (vla-put-Color tobj 7)) ; 1 is color number
((and (> textht 2.151) 
(< textht 3.0)) (vla-put-Color tobj 3))
((and (> textht 3.001) (< 
textht 4.25)) (vla-put-Color tobj 2))
((and (> textht 4.251) (< textht 
6.0)) (vla-put-Color tobj 1))
((> textht 6.001) (vla-put-Color tobj 
6))
); end cond
); repeat 
); end progn
); end if
) ;_ end of 
defun

 

Just 2 things. Is it possible to get it to work also inside blocks (if possible also dynamic blocks) and for attributes?

 

Many thanks for your help, it already helps me a lot :)

Link to comment
Share on other sites

I know nothing about dynamic blocks ....

 

This should work in all releases of AutoCAD:

 

[b][color=BLACK]([/color][/b]defun c:txtclr [b][color=FUCHSIA]([/color][/b]/ ct ss i en ed h cn bl bn td fe fd f[b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]defun lookup [b][color=NAVY]([/color][/b]v l / c[b][color=NAVY])[/color][/b]
    [b][color=NAVY]([/color][/b]foreach h l
       [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]<= [b][color=BLUE]([/color][/b]car h[b][color=BLUE])[/color][/b] v [b][color=BLUE]([/color][/b]cadr h[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
           [b][color=GREEN]([/color][/b]setq c [b][color=BLUE]([/color][/b]caddr h[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]if c c 6[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]setq ct '[b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]4.250 6.000 1[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]3.000 4.250 2[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]2.150 3.000 3[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]0.000 2.150 7[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 ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"TEXT,MTEXT"[/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]setq i 0[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 i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
                    h [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 40 ed[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]assoc 62 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                 [b][color=GREEN]([/color][/b]setq ed [b][color=BLUE]([/color][/b]append ed '[b][color=RED]([/color][/b][b][color=PURPLE]([/color][/b]62 . 256[b][color=PURPLE])[/color][/b][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 cn [b][color=GREEN]([/color][/b]lookup h ct[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]entmod [b][color=GREEN]([/color][/b]subst [b][color=BLUE]([/color][/b]cons 62 cn[b][color=BLUE])[/color][/b]
                            [b][color=BLUE]([/color][/b]assoc 62 ed[b][color=BLUE])[/color][/b] ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[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]setq bl nil[b][color=FUCHSIA])[/color][/b]

  [b][color=FUCHSIA]([/color][/b]princ [color=#2f4f4f]"\nReading BLOCK Tables...\n"[/color][b][color=FUCHSIA])[/color][/b]
  [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq td [b][color=MAROON]([/color][/b]tblnext [color=#2f4f4f]"BLOCK"[/color] [b][color=GREEN]([/color][/b]not td[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
         [b][color=NAVY]([/color][/b]setq bn [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 2 td[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
               fe [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc -2 td[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
                f nil[b][color=NAVY])[/color][/b]
         [b][color=NAVY]([/color][/b]princ [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\t"[/color] bn[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
         [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]not f[b][color=GREEN])[/color][/b] fe[b][color=MAROON])[/color][/b]
                [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]if [b][color=GREEN]([/color][/b]member [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=BLUE]([/color][/b][color=#2f4f4f]"TEXT"[/color] [color=#2f4f4f]"MTEXT"[/color] [color=#2f4f4f]"ATTRIB"[/color][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]
                           f T[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 td [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 td[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    [b][color=NAVY]([/color][/b]princ [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\t"[/color] b[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    [b][color=NAVY]([/color][/b]entmake td[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]if [b][color=GREEN]([/color][/b]member [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=BLUE]([/color][/b][color=#2f4f4f]"TEXT"[/color] [color=#2f4f4f]"MTEXT"[/color] [color=#2f4f4f]"ATTRIB"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
               [b][color=GREEN]([/color][/b]progn
                  [b][color=BLUE]([/color][/b]setq h [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 40 fd[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                  [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]not [b][color=PURPLE]([/color][/b]assoc 62 fd[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
                      [b][color=RED]([/color][/b]setq fd [b][color=PURPLE]([/color][/b]append fd '[b][color=TEAL]([/color][/b][b][color=OLIVE]([/color][/b]62 . 256[b][color=OLIVE])[/color][/b][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 cn [b][color=RED]([/color][/b]lookup h ct[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                  [b][color=BLUE]([/color][/b]setq fd [b][color=RED]([/color][/b]subst [b][color=PURPLE]([/color][/b]cons 62 cn[b][color=PURPLE])[/color][/b]
                           [b][color=PURPLE]([/color][/b]assoc 62 fd[b][color=PURPLE])[/color][/b] fd[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]command [color=#2f4f4f]"_.REGENALL"[/color][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

-David

Link to comment
Share on other sites

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