求助:修改开金工具的文字查找
本帖最后由 ymcui 于 2014-7-10 09:56 编辑*fr:dialog{
label="《開金工具箱》--(查找/替换)文字功能(适用于text、mtext)";
spacer;
:column{
:boxed_row{
:text_part{
label="查找文字:";
key="cz";
}
:edit_box{
key="text_find";
edit_limit=80;
edit_width=65;
value="";
}
}
:boxed_row{
:text_part{
label="替换为:";
key="th";
}
:edit_box{
key="text_replace";
edit_limit=80;
edit_width=65;
value="";
}
}
spacer;
:boxed_row{
:button{
label="查找";
key="select";
}
}
:boxed_row{
:text_part{
label="-->共找到()组字符";
key="t3";
}
:button{
label="缩放为(ZOOM)-->";
key="selecta";
}
}
:boxed_row{
:button{
label="修改";
key="selectb";
}
:button{
label="全部修改";
key="selectc";
}
}
}
initial_focus=text_find;
spacer;
ok_cancel;
}
注:程序点击缩放时,点一次自动缩放下一个字符.谢谢;查找/替换文字
(defun c:KJ_WTH(/ msg_1 msg_2 dcl_file dcl_flag text_f text_r single ob_list ob_number
temp text_code
text_o text_e text_h length_e length_f total_o total_t text_s text_c)
(setvar "cmdecho" 0) ;指令执行过程不响应
(PRINC "\n【開金工具箱】---查找/替换文字功能")
(princ "\n-->请框选要查找替换的区域.....")
(defun dcl()
(setq dcl_file "fr")
(setq dcl_flag (load_dialog dcl_file))
(if (< dcl_flag 0) (exit))
(if (not (new_dialog "fr" dcl_flag)) (exit))
(set_tile "text_find" text_f)
(set_tile "text_replace" text_r)
(action_tile "text_find" "(setq text_f $$$$$$$$$$$$$$$$value)")
(action_tile "text_replace" "(setq text_r $$$$$$$$$$$$$$$$value)")
(action_tile "select" "(done_dialog 2)")
(action_tile "selecta" "(done_dialog 3)")
(action_tile "selectb" "(done_dialog 4)")
(action_tile "selectc" "(done_dialog 5)")
(action_tile "accept" "(do)")
(action_tile "cancel" "(done_dialog 0)")
(setq signal (start_dialog))
(if (= signal 2)
(setq ob_list (SSGET "x" '((0 . "*TEXT"))))
)
(if (= signal 3)
(command "zoom" "o" text_f "")
)
(if (= signal 4)
(command "zoom" "o" text_f "")
)
(if (= signal 5)
(command "zoom" "o" text_f "")
)
)
(defun do()
(cond
((= ob_list nil) (princ "\n未选择目标区域\n"))
((= text_f "") (princ "\n未输入目标字符\n"))
((= text_r "") (princ "\n未输入替代字符\n"))
((and (and (/= ob_list nil) (/= text_r "")) (/= text_f ""))
(main))
)
)
(defun main()
(setq ob_number (sslength ob_list))
(setq temp 1)
(setq total_o 0)
(setq total_t 0)
(repeat ob_number
(setq text_code (entget (ssname ob_list (- temp 1))))
(if
(or (= "TEXT" (cdr (assoc 0 text_code)))
(= "MTEXT" (cdr (assoc 0 text_code)))
)
(progn
(setq text_o (cdr (assoc 1 (entget (ssname ob_list (- temp
1))))))
(setq text_e text_o)
(setq text_h "")
(setq length_e (strlen text_e))
(setq length_f (strlen text_f))
(while
(and (<= length_f length_e) (/= length_e 0))
(setq text_s (substr text_e 1 length_f))
(if
(= text_s text_f)
(progn
(setq text_h (strcat text_h text_r))
(setq text_e (substr text_e (+ length_f 1)))
(setq total_t (+ total_t 1))
)
(progn
(setq text_s (substr text_e 1 1))
(setq text_h (strcat text_h text_s))
(setq text_e (substr text_e 2))
)
)
(setq length_e (strlen text_e))
)
(setq text_c (strcat text_h text_e))
(if
(/= text_c text_o)
(progn
(setq text_code (subst (cons 1 text_c) (assoc 1
text_code) text_code))
(entmod text_code)
(setq total_o (+ total_o 1))
)
)
)
)
(setq temp (+ 1 temp))
)
(done_dialog 1)
)
(setq text_r "")
(setq text_f "")
(dcl)
(while (= signal 2) (dcl))
(if (/= signal 0)
(progn
(princ "\n★★★欢迎使用--《開金工具箱》--★★★ 共修改了
")
(princ total_t)
(princ "个文字")
)
)
(unload_dialog dcl_flag)
(prin1)
)
页:
[1]