Astro Posted October 3, 2013 Share Posted October 3, 2013 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 Quote Link to comment Share on other sites More sharing options...
BIGAL Posted October 4, 2013 Share Posted October 4, 2013 (edited) 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 October 4, 2013 by BIGAL cond added Quote Link to comment Share on other sites More sharing options...
Astro Posted October 4, 2013 Author Share Posted October 4, 2013 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 Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 4, 2013 Share Posted October 4, 2013 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.