明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2652|回复: 8

[源码] 文字加前後綴(視窗化)..好用小程序

  [复制链接]
发表于 2014-1-6 03:41 | 显示全部楼层 |阅读模式
給需要的人使用...如有不周的地方..請給小弟批評指教,謝謝!!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

本帖被以下淘专辑推荐:

发表于 2014-1-6 07:52 | 显示全部楼层
感谢分享,好像挺好用的样子
另外,可以考虑增加多选功能
发表于 2014-1-6 17:55 | 显示全部楼层
  1. defun c:tt2 nil
  2.   ;(setvar "cmdecho" 0)
  3.   (TET_DL2)
  4.   (princ)
  5. )
  6. (defun TET_DL2(/ txt1 num1 txt2 en end_1 old_name new_name)
  7.     (setq dcl_id (load_dialog "TET.dcl"))
  8.     (new_dialog "tet" dcl_id)      
  9.     (action_tile "accept" "(ok_KK)(done_dialog 1)")
  10.      (setq dd(start_dialog))
  11.       (if (= dd 1)
  12.       (ok_ch2)
  13.       )   
  14.     (unload_dialog dcl_id)
  15.   )
  16. ;;------------------------------------------------
  17. (defun ok_KK()
  18.     (setq txt1 (get_tile "Text1"))   
  19.     (setq txt2 (get_tile "Text2"))   
  20.     (setq num1 (ATOF (get_tile "nume1") ))      
  21.   );;;ok_ext
  22. (defun ok_ch2()
  23.   (princ "\n按顺序选择:")
  24.    (if (setq ss(ssget '((0 . "*text"))))
  25.        (while(setq en (ssname ss 0))      
  26.        (setq en_1 (entget   en))
  27.        (setq old_name (assoc 1 en_1))
  28.    (cond
  29.          ((AND (/= txt1 "")  (/= txt2 "") (/= num1 0.0))
  30.            (setq new_name (strcat txt1 "-" (cdr old_name) "-" txt2 (RTOS num1 2) ))
  31.            )         
  32.          ((AND (/= txt1 "")(= txt2 "")(= num1 0.0))
  33.           (setq        new_name (strcat txt1 "-" (cdr old_name) ))
  34.            )        
  35.           ((AND (= txt1 "") (/= txt2 "") (/= num1 0.0))
  36.           (setq        new_name (strcat (cdr old_name) "-" TXT2 (RTOS num1 2) ))
  37.          )
  38.          ((AND (= txt1 "") (= txt2 "") (/= num1 0.0))
  39.           (setq        new_name (strcat (cdr old_name) "-" (RTOS num1 2) ))
  40.          )
  41.          ((AND (= txt1 "") (/= txt2 "") (= num1 0.0))
  42.           (setq        new_name (strcat (cdr old_name) "-" TXT2 ))
  43.          )
  44.    );;end cond
  45.          (setq en_1 (subst (cons 1 new_name) (assoc 1 en_1) en_1))
  46.          (entmod en_1)        
  47.          (if (/= num1 0.0)
  48.               (setq num1 (+ num1 1))
  49.              )
  50.          (setq ss(ssdel en ss))
  51.     );;end while
  52.      )
  53.        (princ)   
  54. )
  55. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  56. (defun c:tet nil
  57.   ;(setvar "cmdecho" 0)
  58.   (TET_DL)
  59.   (princ)
  60. )
  61. (defun TET_DL(/ txt1 num1 txt2 en end_1 old_name new_name)
  62.     (setq dcl_id (load_dialog "TET.dcl"))
  63.     (new_dialog "tet" dcl_id)      
  64.     (action_tile "accept" "(ok_KK)(done_dialog 1)")
  65.      (setq dd(start_dialog))
  66.       (if (= dd 1)
  67.       (ok_ch)
  68.       )   
  69.     (unload_dialog dcl_id)
  70.   );;end TET_DL
  71.   
  72. ;;------------------------------------------------
  73. (defun ok_ch()
  74.    (while
  75.       (setq en (entsel "\n 选取文字:"))
  76.        (setq en_1 (entget (car en)))
  77.        (setq old_name (assoc 1 en_1))
  78.    (cond
  79.          ((AND (/= txt1 "")  (/= txt2 "") (/= num1 0.0))
  80.            (setq new_name (strcat txt1 "-" (cdr old_name) "-" txt2 (RTOS num1 2) ))
  81.            )         
  82.          ((AND (/= txt1 "")(= txt2 "")(= num1 0.0))
  83.           (setq        new_name (strcat txt1 "-" (cdr old_name) ))
  84.            )        
  85.           ((AND (= txt1 "") (/= txt2 "") (/= num1 0.0))
  86.           (setq        new_name (strcat (cdr old_name) "-" TXT2 (RTOS num1 2) ))
  87.          )
  88.          ((AND (= txt1 "") (= txt2 "") (/= num1 0.0))
  89.           (setq        new_name (strcat (cdr old_name) "-" (RTOS num1 2) ))
  90.          )
  91.          ((AND (= txt1 "") (/= txt2 "") (= num1 0.0))
  92.           (setq        new_name (strcat (cdr old_name) "-" TXT2 ))
  93.          )
  94.    );;end cond
  95.          (setq en_1 (subst (cons 1 new_name) (assoc 1 en_1) en_1))
  96.          (entmod en_1)        
  97.          (if (/= num1 0.0)
  98.               (setq num1 (+ num1 1))
  99.              )                  
  100.     );;end while
  101.        (princ)   
  102. );;end ok_ch


====================================

  1. tet:dialog
  2. {
  3. label = "文字加前后缀";  
  4.     :boxed_column
  5.     {
  6.      label = "前缀:" ;
  7.      fixed_width = true ;
  8.      width = 10 ;
  9.         :edit_box
  10.         {
  11.             key = "Text1";
  12.             label = " 前缀英文或英数字:" ;
  13.             width = 8 ;
  14.             height = 1 ;
  15.             fixed_width = true ;            
  16.         }        
  17.         spacer_1;
  18.     }   
  19.     :boxed_column
  20.     {
  21.     label = "后缀:" ;
  22.     fixed_width = true ;
  23.     width = 10 ;
  24.         :edit_box
  25.         {
  26.             key = "Text2";
  27.             label = "                后缀英文:" ;
  28.             width = 8 ;
  29.             height = 1 ;
  30.             fixed_width = true ;
  31.         }
  32.         :edit_box
  33.         {
  34.             key = "nume1";
  35.             label = "                后缀数字:" ;
  36.             width = 8 ;
  37.             height = 1 ;
  38.             fixed_width = true ;
  39.         }
  40.         spacer_1;
  41.     }
  42.     spacer_1;
  43.     :text
  44.     {
  45.         key = "Label3" ;
  46.         value = "说明:您可加前后缀,或者只加前缀,或者只加后缀, 三种摸式" ;
  47.         fixed_width = true ;
  48.         fixed_height = true ;
  49.         width = 30 ;
  50.         height = 3 ;      
  51.     }
  52. ok_cancel ;
  53. }
发表于 2014-1-6 20:50 | 显示全部楼层
edata 发表于 2014-1-6 17:55
====================================

; error: no function definition: TET_DL2
发表于 2014-1-6 22:52 | 显示全部楼层
sachindkini 发表于 2014-1-6 20:50
; error: no function definition: TET_DL2

less a "("


  1. (defun c:tt2 nil

  2.   ;(setvar "cmdecho" 0)

  3.   (TET_DL2)

  4.   (princ)

  5. )

  6. (defun TET_DL2(/ txt1 num1 txt2 en end_1 old_name new_name)

  7.     (setq dcl_id (load_dialog "TET.dcl"))

  8.     (new_dialog "tet" dcl_id)      

  9.     (action_tile "accept" "(ok_KK)(done_dialog 1)")

  10.      (setq dd(start_dialog))

  11.       (if (= dd 1)

  12.       (ok_ch2)

  13.       )   

  14.     (unload_dialog dcl_id)

  15.   )

  16. ;;------------------------------------------------

  17. (defun ok_KK()

  18.     (setq txt1 (get_tile "Text1"))   

  19.     (setq txt2 (get_tile "Text2"))   

  20.     (setq num1 (ATOF (get_tile "nume1") ))      

  21.   );;;ok_ext

  22. (defun ok_ch2()

  23.   (princ "\n按顺序选择:")

  24.    (if (setq ss(ssget '((0 . "*text"))))

  25.        (while(setq en (ssname ss 0))      

  26.        (setq en_1 (entget   en))

  27.        (setq old_name (assoc 1 en_1))

  28.    (cond

  29.          ((AND (/= txt1 "")  (/= txt2 "") (/= num1 0.0))

  30.            (setq new_name (strcat txt1 "-" (cdr old_name) "-" txt2 (RTOS num1 2) ))

  31.            )         

  32.          ((AND (/= txt1 "")(= txt2 "")(= num1 0.0))

  33.           (setq        new_name (strcat txt1 "-" (cdr old_name) ))

  34.            )        

  35.           ((AND (= txt1 "") (/= txt2 "") (/= num1 0.0))

  36.           (setq        new_name (strcat (cdr old_name) "-" TXT2 (RTOS num1 2) ))

  37.          )

  38.          ((AND (= txt1 "") (= txt2 "") (/= num1 0.0))

  39.           (setq        new_name (strcat (cdr old_name) "-" (RTOS num1 2) ))

  40.          )

  41.          ((AND (= txt1 "") (/= txt2 "") (= num1 0.0))

  42.           (setq        new_name (strcat (cdr old_name) "-" TXT2 ))

  43.          )

  44.    );;end cond

  45.          (setq en_1 (subst (cons 1 new_name) (assoc 1 en_1) en_1))

  46.          (entmod en_1)        

  47.          (if (/= num1 0.0)

  48.               (setq num1 (+ num1 1))

  49.              )

  50.          (setq ss(ssdel en ss))

  51.     );;end while

  52.      )

  53.        (princ)   

  54. )

  55. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  56. (defun c:tet nil

  57.   ;(setvar "cmdecho" 0)

  58.   (TET_DL)

  59.   (princ)

  60. )

  61. (defun TET_DL(/ txt1 num1 txt2 en end_1 old_name new_name)

  62.     (setq dcl_id (load_dialog "TET.dcl"))

  63.     (new_dialog "tet" dcl_id)      

  64.     (action_tile "accept" "(ok_KK)(done_dialog 1)")

  65.      (setq dd(start_dialog))

  66.       (if (= dd 1)

  67.       (ok_ch)

  68.       )   

  69.     (unload_dialog dcl_id)

  70.   );;end TET_DL

  71.   

  72. ;;------------------------------------------------

  73. (defun ok_ch()

  74.    (while

  75.       (setq en (entsel "\n 选取文字:"))

  76.        (setq en_1 (entget (car en)))

  77.        (setq old_name (assoc 1 en_1))

  78.    (cond

  79.          ((AND (/= txt1 "")  (/= txt2 "") (/= num1 0.0))

  80.            (setq new_name (strcat txt1 "-" (cdr old_name) "-" txt2 (RTOS num1 2) ))

  81.            )         

  82.          ((AND (/= txt1 "")(= txt2 "")(= num1 0.0))

  83.           (setq        new_name (strcat txt1 "-" (cdr old_name) ))

  84.            )        

  85.           ((AND (= txt1 "") (/= txt2 "") (/= num1 0.0))

  86.           (setq        new_name (strcat (cdr old_name) "-" TXT2 (RTOS num1 2) ))

  87.          )

  88.          ((AND (= txt1 "") (= txt2 "") (/= num1 0.0))

  89.           (setq        new_name (strcat (cdr old_name) "-" (RTOS num1 2) ))

  90.          )

  91.          ((AND (= txt1 "") (/= txt2 "") (= num1 0.0))

  92.           (setq        new_name (strcat (cdr old_name) "-" TXT2 ))

  93.          )

  94.    );;end cond

  95.          (setq en_1 (subst (cons 1 new_name) (assoc 1 en_1) en_1))

  96.          (entmod en_1)        

  97.          (if (/= num1 0.0)

  98.               (setq num1 (+ num1 1))

  99.              )                  

  100.     );;end while

  101.        (princ)   

  102. );;end ok_ch
发表于 2014-1-8 13:58 | 显示全部楼层
批量操作才是王道
发表于 2016-3-16 15:50 | 显示全部楼层
楼主,程序很好,要做到加减前缀后缀都可以,这样进退自由想加就加想减就减,毕竟在工作需要中编辑文字没有固定式(不可能只加不减),框选批量修改才好,我看了你的截图,我想了想一个一的点文字多的话要到什么时候?希望楼主再接再厉完善程序,为在一线绘图的绘图员造福!!!!!
发表于 2016-5-25 17:27 | 显示全部楼层
刚看到,不知道能不能添加文字或者特殊符号,先顶!了
发表于 2019-8-27 07:02 | 显示全部楼层

批量操作才是王道
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-4 19:03 , Processed in 0.336218 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表