找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 521|回复: 0

[LISP函数]:同下面的功能相似,只不过改为批量加字尾罢了。

[复制链接]
发表于 2003-7-27 13:00:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
呵呵,不好意思,刚来,穷得紧,搞点爱心币再说...

addtxt1.lsp  在文本内容后加一段内容的批量修改

;;本文件用于批处理AUTOCAD中的文本内容修改,是chtext.lsp的简化。
;;主要语句取材chtext.lsp


(defun c:ctE (/ last_o tot_o ent o_str n_str st s_temp n_slen o_slen si chf chm cont ans class)
                       
                                                                  ;; Select objects if running standalone
  
  (setq objs (ssget))

  (setq chm 0)                                                               ;统计修改次数
  (if objs                        
    (progn                                                      ;; If any objects selected
      (if (= (type objs) 'ENAME)                                       ;如果objs为一个实体名
        (progn
          (setq ent (entget objs))                                     ;将以OBJS为名的表抽出放入ENT
          (princ (strcat "\nExisting string: " (cdr (assoc 1 ent))))
        )                                                        ;搜出ENT中的文字内容
        (if (= (sslength objs) 1)                                ;又或OBJS集合里只有一个内容
          (progn
            (setq ent (entget (ssname objs 0)))                 ;将集里的东西的表抽出
            (princ (strcat "\nExisting string: " (cdr (assoc 1 ent))))
          )                                                        ;将其文字内容搜出来
        )
      )
      
      (setq n_str (getstring "\nNew string     : " t))                ;输入!
      (setq n_slen (strlen n_str))                                ;求输入的字长
      (setq last_o 0
            tot_o  (if (= (type objs) 'ENAME)                ;tot_o设为集合的实体数量
                       1
                       (sslength objs)
                   )
      )
                                                                  ;; For each selected object...
      (while (< last_o tot_o)
            (setq class (cdr (assoc 0 (setq ent (entget (ssname objs last_o))))))
            (if (or (= "TEXT" class)                                ;ENT为被动手术的表
                    (= "MTEXT" class) )
              (progn
                (setq s_temp (cdr (assoc 1 ent)))                ;ENT中的文字内容放入s_temp
                (setq s_temp (strcat s_temp n_str))                ;合并成为新的内容
                              
                (entmod (subst (cons 1 s_temp) (assoc 1 ent) ent));; 修正 the TEXT 实体
                (setq chm (1+ chm))                                ;统计修改次数
              )
            )
            (setq last_o (1+ last_o))                                ;做下一个目标的手术
      )                                                        ;; else go on to the next line...
        
                                                               
    );PROGN
  );IF
  
  (if (/= (type objs) 'ENAME)
                                                                    ;; Print total lines changed
    (if (/= (sslength objs) 1)
      (princ (strcat (rtos chm 2 0) " text lines changed."))
    )
  )
  (terpri)
)
(princ "\n\t Add some new words behind the text that you select!")
(princ "\n\tCTE command loaded.")
(princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 14:27 , Processed in 0.171261 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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