Jump to content

Search lisp


warlock-993

Recommended Posts

Hello Everyone :D

 

I need a lisp to search all texts in a specific layer in the entire drawing and if there is more than two identical texts i need it to color them in yellow.

for example:

if there are three texts in the drawing with the value "4 T32-562 [T1]", I need the all the three texts to be colored in yellow and so on :D.

thanks a lot in advance.

Have a great day everybody :)

Link to comment
Share on other sites

Hi

(defun C:test ( / e enx lyr SSX i Lst dupes )
 
 (sssetfirst nil nil)(setvar 'errno 0)
 (while (/= 52 (getvar 'errno))
   (setq e (car (entsel "\nSelect text object to filter by its layer <exit>: ")))
   (cond
     ((= 7 (getvar 'errno)) (princ "\nMissed.") (setvar 'errno 0))
     ((and e (wcmatch (cdr (assoc 0 (setq enx (entget e)))) "~*TEXT"))
       (princ "\nThis is not a text object.")
     )
     ((and e (= 4 (logand 4 (cdr (assoc 70 (tblsearch "LAYER" (cdr (setq lyr (assoc 8 enx)))))))))
       (princ "\nThis text is on a locked layer.")
     )
     (e 
       (if (setq SSX (ssget "_X" (list (cons 0 "*TEXT") lyr)))
         (progn
           (repeat (setq i (sslength SSX))
             (setq enx (entget (setq e (ssname SSX (setq i (1- i))))))
             (setq Lst (cons (cons e (cdr (assoc 1 enx))) Lst))
           )
           (and Lst
             (setq dupes (LM:ListDupes (mapcar 'cdr Lst)))
             (mapcar (function (lambda (x) (PutIndexColor (car x) 2)))
               (vl-remove-if-not 
                 (function
                   (lambda (x)
                     (member (cdr x) dupes)
                   )
                 )
                 Lst
               )
             )
           )
         )
       )
       (setvar 'errno 52)
     )
   )
 )
 (princ)
) (vl-load-com) (princ)

(defun PutIndexColor ( e col / enx )
 (and 
   (eq 'ENAME (type e)) (eq 'INT (type col)) (<= 0 col 256)
   (setq enx (vl-remove-if (function (lambda (x) (= 420 (car x)))) (entget e))) ; remove the true color if present
   (or
     (and (assoc 62 enx) (entmod (subst (cons 62 col) (assoc 62 enx) enx)))
     (entmod (append enx (list (cons 62 col))))
   ) 
 )
)

;; List Duplicates  -  Lee Mac
;; Returns a list of items appearing more than once in a supplied list

(defun LM:ListDupes ( l )
 (if l
   (if (member (car l) (cdr l))
     (cons (car l) (LM:ListDupes (vl-remove (car l) (cdr l))))
     (LM:ListDupes (vl-remove (car l) (cdr l)))
   )
 )
)     

Link to comment
Share on other sites

I was trying this approach, but can't get the ssfilter stop evaluating the brackets []

 


[b][color=BLACK]([/color][/b]setq s [color=#2f4f4f]"T 32-562 [T1]"[/color]   [color=#8b4513]; String to match[/color]
    sl [color=#2f4f4f]"3D"[/color][b][color=BLACK])[/color][/b]             [color=#8b4513];Search LAyer[/color]

[b][color=BLACK]([/color][/b]setq ss [b][color=FUCHSIA]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=MAROON])[/color][/b][b][color=MAROON]([/color][/b]cons 8 sl[b][color=MAROON])[/color][/b][b][color=MAROON]([/color][/b]cons 1 s[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

 

Maybe some cam jump in. -David

Link to comment
Share on other sites

attachment.php?attachmentid=60197&cid=1&stc=1

 

Thanks for your replies guys;

@ Grrr it worked but it colors the text that are duplicated more than once .. can you adjust it to work on texts that are duplicated more than twice please :)

See the attached image ... the top one is what your lisp did ... the bottom is what i need it to do.

thanks again everyone:)

1.jpg

Link to comment
Share on other sites

Now I got what you're asking warlock-993:


[b][color=BLACK]([/color][/b]defun C:test [color=#8b4513];| credits to: Lee Mac, Michael Puckett |; [b][color=FUCHSIA]([/color][/b] / morethan e enx lyr SSX i Lst dupes lyrs [b][color=FUCHSIA])[/color][/b][/color]
 [b][color=FUCHSIA]([/color][/b]or 
   [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]initget [b][color=BLUE]([/color][/b]+ 2 4[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq morethan [b][color=GREEN]([/color][/b]getint [color=#2f4f4f]"\nSpecify more than value <3>: "[/color] [b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
   [b][color=NAVY]([/color][/b]setq morethan 3[b][color=NAVY])[/color][/b]
 [b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]sssetfirst nil nil[b][color=FUCHSIA])[/color][/b][b][color=FUCHSIA]([/color][/b]setvar 'errno 0[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]/= 52 [b][color=MAROON]([/color][/b]getvar 'errno[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
   [b][color=NAVY]([/color][/b]setq e [b][color=MAROON]([/color][/b]car [b][color=GREEN]([/color][/b]entsel [color=#2f4f4f]"\nSelect text object to filter by its layer <exit>: "[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
   [b][color=NAVY]([/color][/b]cond
     [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= 7 [b][color=BLUE]([/color][/b]getvar 'errno[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nMissed."[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setvar 'errno 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
     [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and e [b][color=BLUE]([/color][/b]wcmatch [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 0 [b][color=TEAL]([/color][/b]setq enx [b][color=OLIVE]([/color][/b]entget e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [color=#2f4f4f]"~*TEXT"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
       [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nThis is not a text object."[/color][b][color=GREEN])[/color][/b]
     [b][color=MAROON])[/color][/b]
     [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and e [b][color=BLUE]([/color][/b]= 4 [b][color=RED]([/color][/b]logand 4 [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 70 [b][color=OLIVE]([/color][/b]tblsearch [color=#2f4f4f]"LAYER"[/color] [b][color=GRAY]([/color][/b]cdr [b][color=AQUA]([/color][/b]setq lyr [b][color=LIME]([/color][/b]assoc 8 enx[b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b][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=GREEN])[/color][/b]
       [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nThis text is on a locked layer."[/color][b][color=GREEN])[/color][/b]
     [b][color=MAROON])[/color][/b]
     [b][color=MAROON]([/color][/b]e 
       [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]setq SSX [b][color=RED]([/color][/b]ssget [color=#2f4f4f]"_X"[/color] [b][color=PURPLE]([/color][/b]list [b][color=TEAL]([/color][/b]cons 0 [color=#2f4f4f]"*TEXT"[/color][b][color=TEAL])[/color][/b] lyr[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
         [b][color=BLUE]([/color][/b]progn
           [b][color=RED]([/color][/b]repeat [b][color=PURPLE]([/color][/b]setq i [b][color=TEAL]([/color][/b]sslength SSX[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
             [b][color=PURPLE]([/color][/b]setq enx [b][color=TEAL]([/color][/b]entget [b][color=OLIVE]([/color][/b]setq e [b][color=GRAY]([/color][/b]ssname SSX [b][color=AQUA]([/color][/b]setq i [b][color=LIME]([/color][/b]1- i[b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
             [b][color=PURPLE]([/color][/b]setq Lst [b][color=TEAL]([/color][/b]cons [b][color=OLIVE]([/color][/b]cons e [b][color=GRAY]([/color][/b]cdr [b][color=AQUA]([/color][/b]assoc 1 enx[b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] Lst[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
           [b][color=RED])[/color][/b]
           [b][color=RED]([/color][/b]and
             [b][color=PURPLE]([/color][/b]setq lyrs
               [b][color=TEAL]([/color][/b]mapcar 'car 
                 [b][color=OLIVE]([/color][/b]vl-remove-if
                   [b][color=GRAY]([/color][/b]function [b][color=AQUA]([/color][/b]lambda [b][color=LIME]([/color][/b]x[b][color=LIME])[/color][/b] [b][color=LIME]([/color][/b]> morethan [b][color=SILVER]([/color][/b]cdr x[b][color=SILVER])[/color][/b][b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b]
                   [b][color=GRAY]([/color][/b]_TallyHo [b][color=AQUA]([/color][/b]mapcar 'cdr Lst[b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b]
                 [b][color=OLIVE])[/color][/b]
               [b][color=TEAL])[/color][/b]
             [b][color=PURPLE])[/color][/b]
             [b][color=PURPLE]([/color][/b]mapcar 
               [b][color=TEAL]([/color][/b]function [b][color=OLIVE]([/color][/b]lambda [b][color=GRAY]([/color][/b]x[b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]PutIndexColor [b][color=AQUA]([/color][/b]car x[b][color=AQUA])[/color][/b] 2[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] 
               [b][color=TEAL]([/color][/b]setq Lst [b][color=OLIVE]([/color][/b]vl-remove-if-not [b][color=GRAY]([/color][/b]function [b][color=AQUA]([/color][/b]lambda [b][color=LIME]([/color][/b]x[b][color=LIME])[/color][/b] [b][color=LIME]([/color][/b]member [b][color=SILVER]([/color][/b]cdr x[b][color=SILVER])[/color][/b] lyrs[b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b] Lst[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b]
             [b][color=PURPLE])[/color][/b]
             [b][color=PURPLE]([/color][/b]not [b][color=TEAL]([/color][/b]alert [b][color=OLIVE]([/color][/b]strcat [color=#2f4f4f]"\nFound "[/color] [b][color=GRAY]([/color][/b]itoa [b][color=AQUA]([/color][/b]length Lst[b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b] [color=#2f4f4f]" duplicate texts, that occur more than "[/color] [b][color=GRAY]([/color][/b]itoa morethan[b][color=GRAY])[/color][/b] [color=#2f4f4f]" times."[/color][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=GREEN])[/color][/b]
       [b][color=GREEN]([/color][/b]setvar 'errno 52[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]princ[b][color=FUCHSIA])[/color][/b]
 [b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]vl-load-com[b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]princ[b][color=BLACK])[/color][/b]
 
 [b][color=BLACK]([/color][/b]defun PutIndexColor [b][color=FUCHSIA]([/color][/b] e col / enx [b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]and 
   [b][color=NAVY]([/color][/b]eq 'ENAME [b][color=MAROON]([/color][/b]type e[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]eq 'INT [b][color=MAROON]([/color][/b]type col[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]<= 0 col 256[b][color=NAVY])[/color][/b]
   [b][color=NAVY]([/color][/b]setq enx [b][color=MAROON]([/color][/b]vl-remove-if [b][color=GREEN]([/color][/b]function [b][color=BLUE]([/color][/b]lambda [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]= 420 [b][color=PURPLE]([/color][/b]car x[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]entget e[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [color=#8b4513]; remove the true color if present[/color]
   [b][color=NAVY]([/color][/b]or
     [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]assoc 62 enx[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]entmod [b][color=BLUE]([/color][/b]subst [b][color=RED]([/color][/b]cons 62 col[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 62 enx[b][color=RED])[/color][/b] enx[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
     [b][color=MAROON]([/color][/b]entmod [b][color=GREEN]([/color][/b]append enx [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 62 col[b][color=RED])[/color][/b][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=BLACK])[/color][/b]


[color=#8b4513]; Michael Puckett's assembly:[/color]
[color=#8b4513];[b][color=BLACK]([/color][/b]_TallyHo[/color]
[color=#8b4513];  '[b][color=FUCHSIA]([/color][/b][/color]
[color=#8b4513];    [b][color=NAVY]([/color][/b][color=#2f4f4f]"A"[/color] [color=#2f4f4f]"B"[/color] 10[b][color=NAVY])[/color][/b][/color]
[color=#8b4513];    [b][color=NAVY]([/color][/b][color=#2f4f4f]"A"[/color] [color=#2f4f4f]"C"[/color] 20[b][color=NAVY])[/color][/b][/color]
[color=#8b4513];    [b][color=NAVY]([/color][/b][color=#2f4f4f]"B"[/color] [color=#2f4f4f]"C"[/color] 10[b][color=NAVY])[/color][/b][/color]
[color=#8b4513];    [b][color=NAVY]([/color][/b][color=#2f4f4f]"A"[/color] [color=#2f4f4f]"B"[/color] 10[b][color=NAVY])[/color][/b][/color]
[color=#8b4513];    [b][color=NAVY]([/color][/b][color=#2f4f4f]"A"[/color] [color=#2f4f4f]"C"[/color] 20[b][color=NAVY])[/color][/b][/color]
[color=#8b4513];    [b][color=NAVY]([/color][/b][color=#2f4f4f]"A"[/color] [color=#2f4f4f]"B"[/color] 10[b][color=NAVY])[/color][/b][/color]
[color=#8b4513];  [b][color=FUCHSIA])[/color][/b][/color]
[color=#8b4513];[b][color=BLACK])[/color][/b][/color]
[color=#8b4513];>>[/color]
[color=#8b4513];[b][color=BLACK]([/color][/b][/color]
[color=#8b4513];  [b][color=FUCHSIA]([/color][/b][b][color=NAVY]([/color][/b][color=#2f4f4f]"A"[/color] [color=#2f4f4f]"B"[/color] 10[b][color=NAVY])[/color][/b] . 3[b][color=FUCHSIA])[/color][/b][/color]
[color=#8b4513];  [b][color=FUCHSIA]([/color][/b][b][color=NAVY]([/color][/b][color=#2f4f4f]"A"[/color] [color=#2f4f4f]"C"[/color] 20[b][color=NAVY])[/color][/b] . 2[b][color=FUCHSIA])[/color][/b][/color]
[color=#8b4513];  [b][color=FUCHSIA]([/color][/b][b][color=NAVY]([/color][/b][color=#2f4f4f]"B"[/color] [color=#2f4f4f]"C"[/color] 10[b][color=NAVY])[/color][/b] . 1[b][color=FUCHSIA])[/color][/b][/color]
[color=#8b4513];[b][color=BLACK])[/color][/b][/color]
[b][color=BLACK]([/color][/b]defun _TallyHo [b][color=FUCHSIA]([/color][/b] lst [b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]defun _Positions [b][color=NAVY]([/color][/b] x lst / p [b][color=NAVY])[/color][/b]
   [color=#8b4513];;  find all the positions of x in lst[/color]
   [color=#8b4513];;  [b][color=NAVY]([/color][/b]_Positions 1 '[b][color=MAROON]([/color][/b]0 0 1 0 0 1[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] >> [b][color=NAVY]([/color][/b]2 5[b][color=NAVY])[/color][/b][/color]
   [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]setq p [b][color=GREEN]([/color][/b]vl-position x lst[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
     [b][color=MAROON]([/color][/b]   [b][color=GREEN]([/color][/b]lambda [b][color=BLUE]([/color][/b] lst result [b][color=BLUE])[/color][/b]
       [b][color=BLUE]([/color][/b]while [b][color=RED]([/color][/b]setq p [b][color=PURPLE]([/color][/b]vl-position x lst[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b]setq 
           result [b][color=PURPLE]([/color][/b]cons [b][color=TEAL]([/color][/b]+ 1 p [b][color=OLIVE]([/color][/b]car result[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] result[b][color=PURPLE])[/color][/b]
           lst    [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]member x lst[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]reverse result[b][color=BLUE])[/color][/b]
     [b][color=GREEN])[/color][/b]
     [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]member x lst[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
     [b][color=GREEN]([/color][/b]list p[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]defun _Tally [b][color=NAVY]([/color][/b] x lst [b][color=NAVY])[/color][/b]
   [color=#8b4513];;  count all the occurances of x in lst[/color]
   [color=#8b4513];;  [b][color=NAVY]([/color][/b]_Tally 1 '[b][color=MAROON]([/color][/b]0 0 1 0 0 1[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] >> 2[/color]
   [b][color=NAVY]([/color][/b]length [b][color=MAROON]([/color][/b]_Positions x lst[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
 [b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]defun _Distil [b][color=NAVY]([/color][/b] lst / result [b][color=NAVY])[/color][/b]
   [b][color=NAVY]([/color][/b]while lst
     [b][color=MAROON]([/color][/b]setq 
       result [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]car lst[b][color=BLUE])[/color][/b] result[b][color=GREEN])[/color][/b]
       lst    [b][color=GREEN]([/color][/b]vl-remove [b][color=BLUE]([/color][/b]car result[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr lst[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]reverse result[b][color=NAVY])[/color][/b]        
 [b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]mapcar
   [b][color=NAVY]([/color][/b]function [b][color=MAROON]([/color][/b]lambda [b][color=GREEN]([/color][/b]x[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons x [b][color=BLUE]([/color][/b]_Tally x lst[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]_Distil lst[b][color=NAVY])[/color][/b]
 [b][color=FUCHSIA])[/color][/b]
[b][color=BLACK])[/color][/b]

 

Sorry, It didn't work on any of my releases. I tried various combinations. -David

 

Sorry David,

I thought that layer filter group codes work similarly to the wcmatch function.

I'm out of ideas about it.

Link to comment
Share on other sites

I've given up on the ssget filter. Simply go thru the text twice.

 

In vanilla AutoLisp via an association list

 

[b][color=BLACK]([/color][/b]defun c:marktext [b][color=FUCHSIA]([/color][/b]/ sl fl la ss i en ed tv td[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not sl[b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq la
          [b][color=MAROON]([/color][/b]strcase
            [b][color=GREEN]([/color][/b]getstring
              [b][color=BLUE]([/color][/b]strcat
                [color=#2f4f4f]"\nLAyer To Search Text <"[/color] [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"CLAYER"[/color][b][color=RED])[/color][/b] [color=#2f4f4f]">:   "[/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]if [b][color=MAROON]([/color][/b]= la [color=#2f4f4f]""[/color][b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]setq la [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"CLAYER"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]tblsearch [color=#2f4f4f]"LAYER"[/color] la[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]setq sl la[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

  [b][color=FUCHSIA]([/color][/b]cond [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]setq ss [b][color=BLUE]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=PURPLE])[/color][/b][b][color=PURPLE]([/color][/b]cons 8 sl[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]alert [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"No TEXT Entities Found On LAyer "[/color] sl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]T
         [b][color=MAROON]([/color][/b]setq i 0[b][color=MAROON])[/color][/b]
         [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]setq en [b][color=BLUE]([/color][/b]ssname ss i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                [b][color=GREEN]([/color][/b]setq ed [b][color=BLUE]([/color][/b]entget en[b][color=BLUE])[/color][/b]
                      tv [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 1 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]not [b][color=RED]([/color][/b]assoc tv fl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                    [b][color=BLUE]([/color][/b]setq fl [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]cons tv 1[b][color=PURPLE])[/color][/b] fl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                    [b][color=BLUE]([/color][/b]setq fl [b][color=RED]([/color][/b]subst [b][color=PURPLE]([/color][/b]cons tv [b][color=TEAL]([/color][/b]1+ [b][color=OLIVE]([/color][/b]cdr [b][color=GRAY]([/color][/b]assoc tv fl[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
                                    [b][color=PURPLE]([/color][/b]assoc tv fl[b][color=PURPLE])[/color][/b] fl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]1+ i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]

         [b][color=MAROON]([/color][/b]setq ss [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=RED])[/color][/b]
                                   [b][color=RED]([/color][/b]cons 8 sl[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 i 0[b][color=MAROON])[/color][/b]
         [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]setq en [b][color=BLUE]([/color][/b]ssname ss i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                [b][color=GREEN]([/color][/b]setq ed [b][color=BLUE]([/color][/b]entget en[b][color=BLUE])[/color][/b]
                      tv [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 1 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]and [b][color=RED]([/color][/b]setq td [b][color=PURPLE]([/color][/b]assoc tv fl[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
                         [b][color=RED]([/color][/b]> [b][color=PURPLE]([/color][/b]cdr td[b][color=PURPLE])[/color][/b] 2[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                    [b][color=BLUE]([/color][/b]progn
                      [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]assoc 62 ed[b][color=PURPLE])[/color][/b]
                          [b][color=PURPLE]([/color][/b]setq ed [b][color=TEAL]([/color][/b]subst [b][color=OLIVE]([/color][/b]cons 62 2[b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]assoc 62 ed[b][color=OLIVE])[/color][/b] ed[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
                          [b][color=PURPLE]([/color][/b]setq ed [b][color=TEAL]([/color][/b]append ed [b][color=OLIVE]([/color][/b]list [b][color=GRAY]([/color][/b]cons 62 2[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
                      [b][color=RED]([/color][/b]entmod ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]1+ i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
         [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_.REGENALL"[/color][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

Link to comment
Share on other sites

@David:

Strange: I have just checked an old R12 manual and from that I conclude you should be able to use an ssget filter with wild card characters and that escaping with reverse quotes should be possible in the versions you use.

Link to comment
Share on other sites

@David:

Strange: I have just checked an old R12 manual and from that I conclude you should be able to use an ssget filter with wild card characters and that escaping with reverse quotes should be possible in the versions you use.

 

 

I know. There are some text/wildcard filters I use on a very regular basis. Just not brackets. I never did totally comprehend their syntax. -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...