Jump to content

single choice change to multi-choice !help me!


flyfox1047

Recommended Posts

The following code is Modify the text height ,but only Single Choice objects,

everyone can help me modify to multi-choice ?thank you!

 

(defun EF:UNDOBegin ()
(setvar "CMDECHO" 0 )
(command "_.undo" "_group")
(princ)
) ;end defun
(defun EF:UNDOEnd()
(setvar "CMDECHO" 0)
(command "_.undo" "_end")
(princ)
) ;end defun
(defun c:tt( / dcl_id1 oba ob1 obn obt ptn otxt txt sty styno lay cyn layno hig wid ang col cnu etlst style layer)
(graphscr)
(EF:UNDOBegin)
(setq olderr *error*)
(defun *error*(msg)
(princ "\n*ERROR*...")
(princ msg)
(princ)
);end defun error.
(defun set_color ( conm / costr )
(defun map_color ( ckey mno )
(start_image ckey)
(fill_image 0 0 (DimX_tile ckey) (DimY_tile ckey) mno)
(end_image)
) ;end defun
(cond ((= 0 conm)(setq costr "Byblock"))
((= 1 conm)(setq costr "Red"))
((= 2 conm)(setq costr "Yellow"))
((= 3 conm)(setq costr "Green"))
((= 4 conm)(setq costr "Cyan"))
((= 5 conm)(setq costr "Bule"))
((= 6 conm)(setq costr "Magenta"))
((= 7 conm)(setq costr "color"))
((= 256 conm)(setq costr "Bylayer"))
( t (setq costr ""))
) ;end cond
(cond ((= 0 col) (map_color "col" 7))
((= 256 col)(map_color "col" (cdr (assoc 62 (tblsearch "layer" lay)))))
(t (map_color "col" conm))
) ;end cond
(if (= 256 conm)
(set_tile "cnu" (strcat "<" (itoa (cdr (assoc 62 (tblsearch "layer" lay)))) ">" costr))
(set_tile "cnu" (strcat "<" (itoa conm) ">" costr))
) ;end if
) ;end set_color
(defun map_keylist( key keylst );set popuplist
(start_list key)
(mapcar 'add_list keylst)
(end_list)
);end map
(defun layer_get_all( / lay layer layname)
(setq layer nil ;;All layer
lay (tblnext "LAYER" T)
)
(while (/= lay nil)
(setq layname (cdr (assoc 2 lay))
layer (cons layname layer))
(setq lay (tblnext "LAYER"))
)
(setq layer (ACAD_Strlsort layer))
layer ;all layer.
) ;end defun
(defun style_get_all( / sty style sty_list)
(setq sty_list nil sty (tblnext "style" t))
(setq style (cdr (assoc 2 sty)))
(while style
(if (/= "" style)(setq sty_list (append sty_list (list style))))
(setq sty (tblnext "style"))
(setq style (cdr (assoc 2 sty)))
);end while]
(setq sty_list (ACAD_Strlsort sty_list))
sty_list
);end defun
(defun set_error(str)
(set_tile "error" str)
) ;end defun
(defun sub_mtext ( color entlist / ei newlist)
(setq ei 0 newlist nil)
(while (< ei (length entlist))
(setq newlist (cons (nth ei entlist) newlist))
(if (= 8 (car (nth ei entlist)))
(setq newlist (cons (cons 62 color) newlist))
) ;end if
(setq ei (1+ ei))
) ;end while
(reverse newlist) 
) ;end defun
(setq ob1 (entsel "\nChoose any text  to modify :"))
(SETQ obn (car ob1) ptn (car (cdr ob1 )))
(setq obt (car (nentselp ptn)))
(setq oba (cdr (assoc 0 (entget obt))))
(if (or (= oba "TEXT")(= oba "MTEXT")(= oba "ATTRIB"))
(setq otxt (cdr (assoc 1 (entget obt))))
) ;end if
(if (= oba "ATTDEF")
(setq otxt (cdr (assoc 2 (entget obt))))
) ;end if
(if otxt
(progn
(setq 
sty (cdr (assoc 7 (entget obt)))
lay (cdr (assoc 8 (entget obn)))
hig (cdr (assoc 40 (entget obt)))
wid (cdr (assoc 41 (entget obt)))
ang (cdr (assoc 50 (entget obt)))
) ;end setq
(if (or (= oba "TEXT")(= oba "MTEXT")(= oba "ATTRIB"))
(setq col (cdr (assoc 62 (entget obt))))
(setq col (cdr (assoc 62 (entget obn))))
) ;end if
(setq ang (* 180 (/ ang pi)))
(if (null col)(progn (setq cyn 0)(setq col 256))(setq cyn 1))
(setq style (style_get_all))
(setq layer (layer_get_all))
(setq styno (- (length style)(length (member sty style))))
(setq layno (- (length layer)(length (member lay layer))))
(setq dcl_id1 (load_dialog "tm.DCL"))
(if (not (new_dialog "tm" dcl_id1))(exit))
(set_color col)
(set_tile "text" otxt)
(set_tile "hig" (rtos hig 2 2))
(set_tile "wid" (rtos wid 2 2))
(set_tile "ang" (rtos ang 2 2))
(mode_tile "text" 2)
(map_keylist "sty" style)(set_tile "sty" (itoa styno))
(map_keylist "lay" layer)(set_tile "lay" (itoa layno))
(action_tile "text" "(setq txt $value)")
(action_tile "sty" "(setq styno (atoi $value))")
(action_tile "hig" "(setq hig (distof $value))(if (>= 0 hig)(progn (mode_tile \"hig\" 3)(mode_tile \"hig\" 2)(set_error \"Input error ! \"))(set_error \"\"))")
(action_tile "wid" "(setq wid (distof $value))(if (>= 0 wid)(progn (mode_tile \"wid\" 3)(mode_tile \"wid\" 2)(set_error \"Input error ! \"))(set_error \"\"))")
(action_tile "lay" "(setq layno (atoi $value))")
(action_tile "col" "(if (setq cnu (ACAD_ColorDlg col))(progn (setq col cnu)(set_color col)))")
(action_tile "ang" "(setq ang (distof $value))")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")

(if (= 1 (start_dialog))
(if txt
(progn
(setq sty (nth styno style))
(setq lay (nth layno layer))
(setq ang (* (/ ang 180) pi))
(setq etlst (entget obt))
(if (= oba "ATTDEF")
(setq etlst (subst (cons 2 txt)(assoc 2 etlst) etlst))
(setq etlst (subst (cons 1 txt)(assoc 1 etlst) etlst))
) ;end if
(setq etlst (subst (cons 7 sty)(assoc 7 etlst) etlst))
(setq etlst (subst (cons 40 hig)(assoc 40 etlst) etlst))
(setq etlst (subst (cons 41 wid)(assoc 41 etlst) etlst))
(setq etlst (subst (cons 50 ang)(assoc 50 etlst) etlst))
(if (= 1 cyn)
(setq etlst (subst (cons 62 col)(assoc 62 etlst) etlst))
(if (= "MTEXT" oba)
(setq etlst (sub_mtext col etlst))
(setq etlst (cons (cons 62 col) etlst))
) ;end if
) ;end if
(entmod etlst)
(setq etlst (subst (cons 8 lay)(assoc 8 (entget obn)) (entget obn)))
(entmod etlst)
(entupd obt)
(entupd obn)
)
) ;end if
);end if
(if (= 11 (start_dialog))(Command "_help"))
) ;end progn
) ;end if
(setq *error* olderr)
(EF:UNDOEnd)
(princ)
) ;end defun

 

 

Following is DCL file

 

//SUPERDDEDIT
tm: dialog {
label = "Text editing...";
: boxed_radio_column {
label = "Super text editor...";
: edit_box { label= "text:"; key = "text"; edit_width = 50; }
: row {
: popup_list {label="Style"; key = "sty"; edit_width = 13; fixed_width = true;}
: edit_box {label="Height"; key = "hig"; edit_width = 7; fixed_width = true;}
: edit_box {label="Width"; key = "wid"; edit_width = 7; fixed_width = true;}
}
: row {
: popup_list {label="Layer"; key = "lay"; edit_width = 13; fixed_width = true;}
: image_button {key = "col"; width= 4; aspect_ratio = 0.75; fixed_width = true;}
: text_part {key = "cnu"; width= 12;fixed_width = true; }
: edit_box {label="Angle"; key = "ang"; edit_width = 7; fixed_width = true;}
}
spacer_1;
}
: row {
alignment = right;
: spacer {width = 1; fixed_width = true;}
ok_cancel;
}
errtile;
}

Edited by flyfox1047
Link to comment
Share on other sites

You just need to use a while loop so just pick any where on screen where there is nothing to exit

 

 

(while (/= (setq ob1 (entsel "\nChoose any text  to modify :")) nil)

your code


....find the correct spot in your code
) ; end while


Link to comment
Share on other sites

You just need to use a while loop so just pick any where on screen where there is nothing to exit

 

 

(while (/= (setq ob1 (entsel "\nChoose any text  to modify :")) nil)

your code


....find the correct spot in your code
) ; end while


 

 

appload ERROR :(

Link to comment
Share on other sites

flyfox1047,

 

I really don't see the point in doing this.

 

Instead of using that bit of Lisp, you can do the same simply by changing properties.

For example select as many text entities as you want, the grips will turn on. Issue command ch

Now in the property box you can change the heigth, the style whatever.

 

Modifying this program would be akin to recreate that functionnality.

 

ymg

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