Jump to content

Match Text - Text Switch


Zorg

Recommended Posts

I have this code to MATCH the text of Mtext, Text, Attributes ect..

 

(defun c:tw  (/ cEnt mEnt)
 (if (and (setq cEnt (car (nentsel "\nSelect Source Text: ")))
          (member (cdr (assoc 0 (entget cEnt)))
                  '("TEXT" "MTEXT" "ATTRIB")))
   (progn
     (redraw cEnt 3)
     (while (and (setq mEnt (car (nentsel "\nSelect Destination Text: ")))
                 (member (cdr (assoc 0 (entget mEnt)))
                         '("TEXT" "MTEXT" "ATTRIB")))
       (entmod (subst (assoc 1 (entget cEnt))
                      (assoc 1 (entget mEnt))
                      (entget mEnt))))
     (redraw cEnt 4))
   (princ "\n<!> Incorrect Selection <!>"))
 (princ))

(defun c:mt2  (/ cEnt mEnt sLst)
 (if (and (setq cEnt (car (nentsel "\nSelect Source Text: ")))
          (member (cdr (assoc 0 (entget cEnt)))
                  '("TEXT" "MTEXT" "ATTRIB")))
   (progn
     (redraw cEnt 3)
     (if (setq ss (ssget "_X" '((-4 . "<NOT") (0 . "TEXT,MTEXT,INSERT") (-4 . "NOT>"))))
       (mapcar '(lambda (x) (redraw x 2)) (setq sLst (mapcar 'cadr (ssnamex ss)))))
     (while (and (setq mEnt (car (nentsel "\nSelect Destination Text: ")))
                 (member (cdr (assoc 0 (entget mEnt)))
                         '("TEXT" "MTEXT" "ATTRIB")))
       (entmod (subst (assoc 1 (entget cEnt))
                      (assoc 1 (entget mEnt))
                      (entget mEnt)))))
   (princ "\n<!> Incorrect Selection <!>"))
 (command "_regenall")
 (princ))

(defun c:mt3  (/ cEnt ss)
 (vl-load-com)
 (if (and (setq cEnt (car (nentsel "\nSelect Source Text: ")))
          (member (cdr (assoc 0 (entget cEnt)))
                  '("TEXT" "MTEXT" "ATTRIB")))
   (progn
     (redraw cEnt 3)
     (if (setq ss (ssget '((0 . "TEXT,MTEXT"))))
       (foreach x  (vl-remove-if 'listp
                     (mapcar 'cadr (ssnamex ss)))
         (entmod (subst (assoc 1 (entget cEnt))
                        (assoc 1 (entget x))
                        (entget x))))))
   (princ "\n<!> Incorrect Selection <!>"))
 (command "_regenall")
 (princ))

 

Can i modify this and how to match a text switch with would reverse 'Text A' & 'Text B'?

 

Z

Link to comment
Share on other sites

  • Replies 23
  • Created
  • Last Reply

Top Posters In This Topic

  • Lee Mac

    9

  • Zorg

    5

  • wizman

    4

  • alanjt

    4

Top Posters In This Topic

Surely this is better:

 

[Works with Attributes also]

 

[i][color=#990099];; Switch Text Values  by Lee McDonnell[/color][/i]
[i][color=#990099];; 08.06.2009[/color][/i]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:stv [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ent1 ent2 ObjLst[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent1 [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]nentsel[/color][/b] [b][color=#ff00ff]"\nSelect 1st Text or Attribute: "[/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]member[/color][/b] [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]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] ent1[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"MTEXT"[/color][/b] [b][color=#ff00ff]"TEXT"[/color][/b] [b][color=#ff00ff]"ATTRIB"[/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]princ[/color][/b] [b][color=#ff00ff]"\nMissed, Try Again."[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent2 [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]nentsel[/color][/b] [b][color=#ff00ff]"\nSelect 2nd Text or Attribute: "[/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]member[/color][/b] [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]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"MTEXT"[/color][/b] [b][color=#ff00ff]"TEXT"[/color][/b] [b][color=#ff00ff]"ATTRIB"[/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]princ[/color][/b] [b][color=#ff00ff]"\nMissed, Try Again."[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ObjLst [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] ent1 ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/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]Obj1 Str[b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]vla-put-TextString[/color][/b] Obj1 Str[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] ObjLst
   [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vla-get-TextString[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]reverse[/color][/b] ObjLst[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]
 

Link to comment
Share on other sites

Thanks for pointing lee, got to discard that one, but strange i remember using that one or maybe its another lisp.

Link to comment
Share on other sites

Thanks for pointing lee, got to discard that one, but strange i remember using that one or maybe its another lisp.

 

Well, for such a simple task the code can be condensed by quite a lot :D

Link to comment
Share on other sites

Well, for such a simple task the code can be condensed by quite a lot :D

 

 

i must be dreaming when i used that, haha, good job lee mac :D

Link to comment
Share on other sites

wow very nice! :shock: both of them, gonna experiment with them abit this afternoon, though lee's seems the soundest :wink:

 

Thanks again guys :lol:

 

Z

Link to comment
Share on other sites

wow very nice! :shock: both of them, gonna experiment with them abit this afternoon, though lee's seems the soundest :wink:

 

Thanks again guys :lol:

 

Z

 

Cheers mate o:)

Link to comment
Share on other sites

wow very nice! :shock: both of them, gonna experiment with them abit this afternoon, though lee's seems the soundest :wink:

 

Thanks again guys :lol:

 

Z

ouch, you cut me deep shreck

Link to comment
Share on other sites

Zorg, try this for an improvement :)

 

[i][color=#990099];; Switch/Match Text Values  by Lee McDonnell[/color][/i]
[i][color=#990099];; 09.06.2009[/color][/i]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:tv [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ent1 ent2 Str ss[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent1 [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]nentsel[/color][/b] [b][color=#ff00ff]"\nSelect Source Text: "[/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]member[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] ent1[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
                  [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"MTEXT"[/color][/b][b][color=#ff00ff]"TEXT"[/color][/b][b][color=#ff00ff]"ATTRIB"[/color][/b][b][color=#ff00ff]"MLEADER"[/color][/b][b][color=#ff00ff]"ATTDEF"[/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]princ[/color][/b] [b][color=#ff00ff]"\nMissed, Try Again. "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]initget[/color][/b] [b][color=#ff00ff]"Match"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent2 [b][color=RED]([/color][/b][b][color=BLUE]entsel[/color][/b] [b][color=#ff00ff]"\nSelect Text to Swap or <Match> : "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-consp[/color][/b] ent2[b][color=RED])[/color][/b]
                 [b][color=RED]([/color][/b][b][color=BLUE]member[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
                         [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"MTEXT"[/color][/b][b][color=#ff00ff]"TEXT"[/color][/b][b][color=#ff00ff]"ATTRIB"[/color][/b][b][color=#ff00ff]"MLEADER"[/color][/b][b][color=#ff00ff]"ATTDEF"[/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]setq[/color][/b] ent2 [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][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]not[/color][/b] ent2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=DARKRED]'[/color][/b]STR [b][color=RED]([/color][/b][b][color=BLUE]type[/color][/b] ent2[b][color=RED])[/color][/b][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]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/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=#ff00ff]"*TEXT,ATTRIB,MLEADER,ATTDEF"[/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]nil[/color][/b] [b][color=BLUE]t[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]T[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\nMissed, Try Again..."[/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]setq[/color][/b] Str [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TextString[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] ent1[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]  
 [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b]ss
        [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/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]x[b][color=RED])[/color][/b]
              [b][color=RED]([/color][/b][b][color=BLUE]vla-put-TextString[/color][/b] x Str[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
          [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b]
                  [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b]
                    [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[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]ent2
        [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Objlst [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] ent1 ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
        [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/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]Obj1 Str[b][color=RED])[/color][/b]
              [b][color=RED]([/color][/b][b][color=BLUE]vla-put-TextString[/color][/b] Obj1 Str[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] ObjLst
          [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vla-get-TextString[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]reverse[/color][/b] ObjLst[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]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

Link to comment
Share on other sites

Zorg, try this for an improvement :)

 

[i][color=#990099];; Switch/Match Text Values  by Lee McDonnell[/color][/i]
[i][color=#990099];; 09.06.2009[/color][/i]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:tv [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ent1 ent2 Str ss[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent1 [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]nentsel[/color][/b] [b][color=#ff00ff]"\nSelect Source Text: "[/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]member[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] ent1[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
                  [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"MTEXT"[/color][/b][b][color=#ff00ff]"TEXT"[/color][/b][b][color=#ff00ff]"ATTRIB"[/color][/b][b][color=#ff00ff]"MLEADER"[/color][/b][b][color=#ff00ff]"ATTDEF"[/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]princ[/color][/b] [b][color=#ff00ff]"\nMissed, Try Again. "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]initget[/color][/b] [b][color=#ff00ff]"Match"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent2 [b][color=RED]([/color][/b][b][color=BLUE]entsel[/color][/b] [b][color=#ff00ff]"\nSelect Text to Swap or <Match> : "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]listp[/color][/b] ent2[b][color=RED])[/color][/b]
                 [b][color=RED]([/color][/b][b][color=BLUE]member[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
                         [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"MTEXT"[/color][/b][b][color=#ff00ff]"TEXT"[/color][/b][b][color=#ff00ff]"ATTRIB"[/color][/b][b][color=#ff00ff]"MLEADER"[/color][/b][b][color=#ff00ff]"ATTDEF"[/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]setq[/color][/b] ent2 [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][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]not[/color][/b] ent2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=DARKRED]'[/color][/b]STR [b][color=RED]([/color][/b][b][color=BLUE]type[/color][/b] ent2[b][color=RED])[/color][/b][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]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/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=#ff00ff]"*TEXT,ATTRIB,MLEADER,ATTDEF"[/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]nil[/color][/b] [b][color=BLUE]t[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]T[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\nMissed, Try Again..."[/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]setq[/color][/b] Str [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TextString[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] ent1[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]  
 [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b]ss
        [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/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]x[b][color=RED])[/color][/b]
              [b][color=RED]([/color][/b][b][color=BLUE]vla-put-TextString[/color][/b] x Str[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
          [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b]
                  [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b]
                    [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[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]ent2
        [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Objlst [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] ent1 ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
        [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/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]Obj1 Str[b][color=RED])[/color][/b]
              [b][color=RED]([/color][/b][b][color=BLUE]vla-put-TextString[/color][/b] Obj1 Str[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] ObjLst
          [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vla-get-TextString[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]reverse[/color][/b] ObjLst[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]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 
 

 

you should replace the listp check in your cond with vl-consp. listp will return T if the variable is nil. right now, if you miss a target object, it errors out. granted, this will still switch ssget & matching if you miss a pick.

Link to comment
Share on other sites

Many thanks for the tip-off Alan, I did not know that listp returned T when supplied with a nil argument.

 

I'll make that change :)

 

EDIT: Code above updated ~ thanks once again Alan for looking over it :)

Link to comment
Share on other sites

Zorg,

No offense to the two great guys here, but this one from asmi are even better. It can cross match from dynamic block attributes to regular text too. I can not take any credit from it as it's created by ASMI.

 

;; ============================================================    ;;
;;                                                              ;;
;;  TTC.LSP - The program copies the text from: DText, MText,     ;;
;;            Tables, Dimensions, Attributes, Attributes,    ;;
;;            Attributes Definitions, DText, MText and inner    ;;
;;          block's DText and MText to: DText, MText, Tables,    ;;
;;          Attribures and Attributes Definitions. There are    ;;
;;           Multiple and Pair-wise modes.             ;;
;;                                                              ;;
;; ============================================================    ;;
;;                                                                ;;
;;  Command(s) to call: TTC                                       ;;
;;                                                              ;;
;; ============================================================    ;;
;;                                                                 ;;
;;  THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD    ;;
;;  ON ANY MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS    ;;
;;  PROGRAM OR PARTS OF IT ABSOLUTELY FREE.                     ;;
;;                                                              ;;
;;  THIS PROGRAM PROVIDES THIS PROGRAM 'AS IS' WITH ALL FAULTS    ;;
;;  AND SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF        ;;
;;  MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.            ;;
;;                                                                ;;
;; ============================================================    ;;
;;                                                              ;;
;;  V1.3, 29 November, 2005, Riga, Latvia                         ;;
;;  © Aleksandr Smirnov (ASMI)                              ;;
;;  For AutoCAD 2000 - 2008 (isn't tested in a next versions)    ;;
;;                                                              ;;
;;                             http://www.asmitools.com       ;;
;;                                                              ;;
;; ============================================================ ;;

(defun c:ttc (/ actDoc vlaObj sObj sText curObj oldForm
               oType oldMode conFlag errFlag *error*)

 (vl-load-com)

     (setq actDoc(vla-get-ActiveDocument
       (vlax-get-acad-object)))
         (vla-StartUndoMark actDoc)

 (defun TTC_Paste(pasteStr / nslLst vlaObj hitPt
                  hitRes Row Column)
   (setq errFlag nil)
   (if
    (setq nslLst(nentsel "\nPaste text >"))
      (progn
       (cond
         ((and
            (= 4(length nslLst))
            (= "DIMENSION"(cdr(assoc 0(entget(car(last nslLst))))))
           ); end and
            (setq vlaObj(vlax-ename->vla-object
               (cdr(assoc -1(entget(car(last nslLst)))))))
          (if
            (vl-catch-all-error-p
              (vl-catch-all-apply
                'vla-put-TextOverride(list vlaObj pasteStr)))
                  (progn
                    (princ "\n<!> Can't paste. Object may be on locked layer <!> ")
                    (setq errFlag T)
                   ); end progn
            ); end if
          ); end condition #1
         ((and
            (= 4(length nslLst))
            (= "ACAD_TABLE"(cdr(assoc 0(entget(car(last nslLst))))))
           ); end and
           (setq vlaObj
             (vlax-ename->vla-object
                (cdr(assoc -1(entget(car(last nslLst))))))
                 hitPt(vlax-3D-Point(trans(cadr nslLst)1 0))
                 hitRes(vla-HitTest vlaObj hitPt
                       (vlax-3D-Point '(0.0 0.0 1.0)) 'Row 'Column)
           ); end setq
           (if(= :vlax-true hitRes)
            (progn
              (if(vl-catch-all-error-p
                   (vl-catch-all-apply
                     'vla-SetText(list vlaObj Row Column pasteStr)))
            (progn
              (princ "\n<!> Can't paste. Object may be on locked layer <!> ")
              (setq errFlag T)
              ); end progn
             ); end if
            ); end progn
           ); end if
          ); end condition # 2
         ((and
             (= 4(length nslLst))
             (= "INSERT"(cdr(assoc 0(entget(car(last nslLst))))))
          ); end and
           (princ "\n<!> Can't paste to block's DText or MText <!> ")
           (setq errFlag T)
           ); end condition #3
        ((and
           (= 2(length nslLst))
           (member(cdr(assoc 0(entget(car nslLst))))
            '("TEXT" "MTEXT" "ATTRIB" "ATTDEF"))
          ); end and
        (setq vlaObj(vlax-ename->vla-object(car nslLst)))
       (if(vl-catch-all-error-p
            (vl-catch-all-apply
              'vla-put-TextString(list vlaObj pasteStr)))
            (progn
              (princ "\n<!> Error. Can't pase text <!> ")
              (setq errFlag T)
            ); end progn
           ); end if
         ); end condition #4
       (T
         (princ "\n<!> Can't paste. Invalid object <!> ")
         (setq errFlag T)
        ); end condition #5
       ); end cond
             T
      ); end progn
            nil
           ); end if
    ); end of TTC_Paste


   (defun TTC_MText_Clear(Mtext / Text Str)
     (setq Text "")
     (while(/= Mtext "")
       (cond
         ((wcmatch(strcase
          (setq Str
           (substr Mtext 1 2)))"\\[\\{}`~]")
           (setq Mtext(substr Mtext 3)
              Text(strcat Text Str)
              ); end setq
          ); end condition #1
        ((wcmatch(substr Mtext 1 1) "[{}]")
         (setq Mtext
         (substr Mtext 2))
         ); end condition #2
        ((and
         (wcmatch
          (strcase
            (substr Mtext 1 2)) "\\P")
              (/=(substr Mtext 3 1) " ")
          ); end and
        (setq Mtext (substr Mtext 3)
              Text (strcat Text " ")
              ); end setq
          ); end condition #3
       ((wcmatch
          (strcase
            (substr Mtext 1 2)) "\\[LOP]")
            (setq Mtext(substr Mtext 3))
          ); end condition #4
       ((wcmatch
          (strcase
            (substr Mtext 1 2)) "\\[ACFHQTW]")
          (setq Mtext
           (substr Mtext
            (+ 2(vl-string-search ";" Mtext))))
          ); end condition #5
       ((wcmatch
          (strcase (substr Mtext 1 2)) "\\S")
            (setq Str(substr Mtext 3 (- (vl-string-search ";" Mtext) 2))
                  Text(strcat Text (vl-string-translate "#^\\" " " Str))
                  Mtext(substr Mtext (+ 4 (strlen Str)))
             ); end setq
           (print Str)
         ); end condition #6
        (T(setq Text(strcat Text(substr Mtext 1 1))
                Mtext (substr Mtext 2)
                ); end setq
        ); end condition #7
      ); end cond
    ); end while
  Text
); end of TTC_MText_Clear


 (defun TTC_Copy (/ sObj sText tType actDoc)
  (if
   (and
    (setq sObj(car(nentsel "\nCopy text... ")))
    (member(setq tType(cdr(assoc 0(entget sObj))))
     '("TEXT" "MTEXT" "ATTRIB" "ATTDEF"))
    ); end and
   (progn
     (setq actDoc(vla-get-ActiveDocument
       (vlax-get-Acad-object))
           sText(vla-get-TextString
      (vlax-ename->vla-object sObj))
     ); end setq
     (if(= tType "MTEXT")
        (setq sText(TTC_MText_Clear sText))
       ); end if
     ); end progn
    ); end if
   sText
   ); end of TTC_Copy

 (defun CCT_Str_Echo(paseStr / comStr)
   (if(< 20(strlen paseStr))
     (setq comStr
      (strcat
        (substr paseStr 1 17)"..."))
     (setq comStr paseStr)
     ); end if
    (princ(strcat "\nText = \"" comStr "\""))
   (princ)
   ); end of CCT_Str_Echo

   (defun *error*(msg)
   (vla-EndUndoMark
     (vla-get-ActiveDocument
       (vlax-get-acad-object)))
    (princ "\nQuit TTC")
   (princ)
   ); end of *error*

   (if(not ttc:Mode)(setq ttc:Mode "Multiple"))
    (initget "Multiple Pair-wise")
    (setq oldMode ttc:Mode
          ttc:Mode(getkword
                    (strcat "\nSpecify mode [Multiple/Pair-wise] <"ttc:Mode">: "))
          conFlag T
          paseStr ""
         ); end setq
   (if(null ttc:Mode)(setq ttc:Mode oldMode))
   (if(= ttc:Mode "Multiple")
     (progn
       (if(and(setq paseStr(TTC_Copy))conFlag)
        (progn
         (CCT_Str_Echo paseStr)
        (while(setq conFlag(TTC_Paste paseStr))T
           ); end while
       ); end progn
     ); end if
   ); end progn
     (progn
       (while(and conFlag paseStr)
          (setq paseStr(TTC_Copy))
           (if(and paseStr conFlag)
             (progn
              (CCT_Str_Echo paseStr)
               (setq errFlag T)
                 (while errFlag
                   (setq conFlag(TTC_Paste paseStr))
               );end while
             ); end progn
           ); end if
         ); end while
       ); end progn
     ); end if
  (vla-EndUndoMark actDoc)
  (princ "\nQuit TTC")
 (princ)
 ); end c:ttc

(princ "\n*** Type TTC to run text to text copy tool *** ")

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