Visual LISP, AutoLISP and General Customization
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Select Multiple text to heal instead of single text ?

2 REPLIES 2
Reply
Message 1 of 3
shehab10
1318 Views, 2 Replies

Select Multiple text to heal instead of single text ?

Hi, this code is used to fix specific font but its problem that it will prompt you to select single text 

i need to make it to select multiple text so it saves me a lot of time, 

thank you

 

 

 

 

;;; Process Individual request
(defun cht_ProcessIndividual ()
(setq sslen (sslength sset))
(while (> sslen 0)
(setq temp (ssname sset (setq sslen (1- sslen))))
(setq ow (cdr (assoc fld (entget temp))))
(if (= typ "Rotation")
(setq ow (/ (* ow 180.0) pi))
)
(initget 0)
(redraw (cdr (assoc -1 (entget temp))) 3)
(if (= typ "Style")
(progn
(setq nw (getstring (strcat "\n" prmpt " <" ow ">: ")))
)
(progn
(setq nw (getreal (strcat "\n" prmpt " <" (rtos ow 2) ">: ")))
)
)
(if (or (= nw "") (= nw nil))
(setq nw ow)
)
(if (= typ "Rotation")
(setq nw (* (/ nw 180.0) pi))
)
(entmod (subst (cons fld nw)
(assoc fld (setq ent (entget temp)))
ent
)
)
(redraw (cdr (assoc -1 (entget temp))) 1)
)
)

;;; Process the Select option
(defun cht_ProcessSelect ()
(princ "\nSearch for which Style name? <*>: ")
(setq sn (xstrcase (getstring))
n -1
nsset (ssadd)
ssl (1- (sslength sset))
)
(if (or (= sn "*") (null sn) (= sn ""))
(setq nsset sset sn "*")
(while (and sn (< n ssl))
(setq temp (ssname sset (setq n (1+ n))))
(if (= (cdr (assoc 7 (entget temp))) sn)
(ssadd temp nsset)
)
)
)

(princ (strcat "\nStyle: " sn))
(print (setq ssl (sslength nsset)))
(princ "objects found.")
)

;;; Check to see if AI_UTILS is loaded, If not, try to find it,
;;; and then try to load it. If it can't be found or can't be
;;; loaded, then abort the loading of this file immediately.
(cond
((and ai_dcl (listp ai_dcl))) ; it's already loaded.
((not (findfile "ai_utils.lsp")) ; find it
(ai_abort "CHT" nil)
)
((eq "failed" (load "ai_utils" "failed")) ; load it
(ai_abort "CHT" nil)
)
)


(defun insrt (s l n) (strcat (substr s 1 (1- n)) l (substr s (1+ n))))
(defun cgs (s os ns / sl osl nsl st si)
(setq osl (strlen os) nsl (strlen ns) si 1)
(while (= osl (setq sl (strlen (setq st (substr s si osl)))))
(if (= os st)
(setq s (strcat (substr s 1 (1- si)) ns (substr s (+ si osl)))
si (+ si nsl))
(setq si (1+ si)))) (eval s))
(defun chltr (s ltr1 ltr2 ltr3 ltr4 L L- -L- -L / cnt sltr prvl nxtl tn)
(setq cnt 1)
(while (= 1 (strlen (setq sltr (substr s cnt 1))))
(if (or (= ltr1 sltr) (= ltr2 sltr) (= ltr3 sltr) (= ltr4 sltr))
(progn
(if (= 1 cnt) (setq prvl "") (setq prvl (substr s (1- cnt) 1)))
(setq nxtl (substr s (1+ cnt) 1))
(if (or (= prvl "" ) (= prvl " ") (= prvl "H") (= prvl "h") (= prvl "X")
(= prvl "x") (= prvl "N") (= prvl "n") (= prvl "]") (= prvl "`")
(= prvl "V") (= prvl "v") (= prvl ">") (= prvl ",") (= prvl "C")
(= prvl "c") (= prvl "B") (= prvl "b") (= prvl "’") (= prvl "‘")
(= prvl "¥") (= prvl "¤") (= prvl "<") (= prvl ")") (= prvl "(")
(= prvl "!") (= prvl "?") (= prvl "%") (= nxlt "ً"))
(if (or (= nxtl "" ) (= nxtl " ") (= nxlt "<")
(= nxtl ")") (= nxtl "(") (= nxlt "!")
(= nxlt "?") (= nxlt "%") (= nxlt "ً"))
(setq s (insrt s L cnt)) (setq s (insrt s L- cnt)))
(if (or (= nxtl "" ) (= nxtl " ") (= nxlt "<")
(= nxtl ")") (= nxtl "(") (= nxlt "!")
(= nxlt "?") (= nxlt "%") (= nxlt "ً"))
(setq s (insrt s -L cnt)) (setq s (insrt s -L- cnt))))))
(setq cnt (1+ cnt))) (eval s))
(defun c:ct (/ s e os)
(setq e (entget (car (entsel "\nSelect text: "))))
(setq s (cdr (setq os (assoc 1 e))))
(setq s (chltr s "H" "H" "h" "h" "H" "H" "h" "h"))
(setq s (chltr s "X" "X" "x" "x" "X" "X" "x" "x"))
(setq s (chltr s "N" "N" "n" "n" "N" "N" "n" "n"))
(setq s (chltr s "F" "f" "f" "F" "F" "f" "f" "F"))
(setq s (chltr s "J" "j" "j" "J" "J" "j" "j" "J"))
(setq s (chltr s "E" "e" "e" "E" "E" "e" "e" "E"))
(setq s (chltr s "[" "{" "{" "°" "[" "{" "{" "°"))
(setq s (chltr s "P" "p" "p" "P" "P" "p" "p" "P"))
(setq s (chltr s "O" "o" "o" "²" "O" "o" "o" "²"))
(setq s (chltr s "S" "s" "s" "S" "S" "s" "s" "S"))
(setq s (chltr s "A" "a" "a" "A" "A" "a" "a" "A"))
(setq s (chltr s "W" "w" "w" "W" "W" "w" "w" "W"))
(setq s (chltr s "Q" "q" "q" "Q" "Q" "q" "q" "Q"))
(setq s (chltr s "U" "u" "–" "ڑ" "U" "u" "–" "ڑ"))
(setq s (chltr s "Y" "y" "ک" "‌" "Y" "y" "ک" "‌"))
(setq s (chltr s "T" "t" "œ" "ں" "T" "t" "œ" "ں"))
(setq s (chltr s "R" "r" "‍" "R" "R" "r" "‍" "R"))
(setq s (chltr s ";" ":" "ت" ";" ";" ":" "ت" ";"))
(setq s (chltr s "§" "§" "§" "§" "§" "§" "§" ";"))
(setq s (chltr s "G" "g" "g" "G" "G" "g" "g" "G"))
(setq s (chltr s "L" "l" "l" "â" "L" "l" "l" "â"))
(setq s (chltr s "K" "k" "k" "K" "K" "k" "k" "K"))
(setq s (chltr s "I" "i" "Œ" "چ" "I" "i" "Œ" "چ"))
(setq s (chltr s "D" "d" "d" "ه" "D" "d" "d" "ه"))
(setq s (chltr s "Z" "z" "z" "ë" "Z" "z" "z" "ë"))
(setq s (cgs s "gh" "b")) (setq s (cgs s "gx" "’"))
(setq s (cgs s "gn" "¥")) (setq s (cgs s "g¦" "½"))
(setq s (chltr s "B" "B" "b" "b" "B" "B" "b" "b"))
(setq s (chltr s "’" "’" "‘" "‘" "’" "’" "‘" "‘"))
(setq s (chltr s "¥" "¥" "¤" "¤" "¥" "¥" "¤" "¤"))
(setq s (chltr s "M" "M" "m" "m" "M" "j" "j" "m"))
(setq e (subst (cons 1 s) os e))
(entmod e)
(princ)
)

2 REPLIES 2
Message 2 of 3
Kent1Cooper
in reply to: shehab10


@shehab10 wrote:

Hi, this code is used to fix specific font but its problem that it will prompt you to select single text 

i need to make it to select multiple text so it saves me a lot of time, 

....


It looks like you should be able to do it this way:

....

(defun c:ct (/ ss e s os)

  (if (setq ss (ssget '((0 . "TEXT"))));;; for Text entities only, or "MTEXT" for Mtext only, or "*TEXT" for both

    (repeat (sslength ss); one of several ways to step through
      (setq e (entget (ssname ss 0)))
      (setq s (cdr (setq os (assoc 1 e))))
      (setq s (chltr s "H" "H" "h" "h" "H" "H" "h" "h"))
.... etc. ....

      (setq s (chltr s "M" "M" "m" "m" "M" "j" "j" "m"))
      (setq e (subst (cons 1 s) os e))
      (entmod e)

      (ssdel (ssname ss 0) ss)

    ); repeat

  ); if
(princ)
)

 

You can also include multiple variable settings in one (setq) function, if you like:

....

    (repeat (sslength ss); one of several ways to step through
      (setq

        e (entget (ssname ss 0))
        s (cdr (setq os (assoc 1 e)))
        s (chltr s "H" "H" "h" "h" "H" "H" "h" "h")
.... etc. ....

        s (chltr s "M" "M" "m" "m" "M" "j" "j" "m")
        e (subst (cons 1 s) os e)

      ); setq
      (entmod e)

      (ssdel (ssname ss 0) ss)

    ); repeat

....

Kent Cooper, AIA
Message 3 of 3
shehab10
in reply to: Kent1Cooper

It gives me to select objects by window but without executing command itself of healing as single text do,

is ther any problem ?

Here is video that could explains how the single selection made effect but window selection does not 

i need to make multi selection make effect ?

http://www.screencast.com/t/hKCR21Y37l0t

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost