明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1358|回复: 3

[讨论] 提取文件名并替换指定文本,求修改

[复制链接]
发表于 2019-11-21 23:35:08 | 显示全部楼层 |阅读模式

想实现提取文档名后,部份替换到指定的文本

比方说,打开的文档名为,abc#123

提取文档名后,只把123替换到指定的文本


无奈水平有限,望大佬们帮改改



  1. (defun c:tt ( / e22 e2 sn1 sn2  i)
  2.     (setq e22 nil)   
  3.     (while (or (= e22 nil) (/= (cdr (assoc '0 (entget (car e22)))) "TEXT"))
  4.                (setq e22 (entsel "选择要更改的文本"))
  5.     )
  6.       (setq e2 (entget (car e22)))
  7.       (setq sn1 (cdr (assoc '1  e2)))
  8.       (setq i 1)
  9.       (repeat (strlen sn1)
  10.         (cond
  11.                    ((= (substr sn1 i 1) "")   (setq sn2 (vl-filename-base  (getvar"dwgname"))))
  12. )
  13.     (entmod (setq e2 (subst (cons 1 sn2) (assoc 1 e2) e2))))
  14. (PRINC)
  15. )


发表于 2019-11-22 09:25:57 | 显示全部楼层
本帖最后由 gaics 于 2019-11-22 15:25 编辑

没看懂是要干什么,是把后三个字符替换?替换的原则又是什么?
发表于 2019-11-22 11:50:51 | 显示全部楼层
      (setq i 1)
      (repeat (strlen sn1)
        (cond
                   ((= (substr sn1 i 1) "")   (setq sn2 (vl-filename-base  (getvar"dwgname"))))
)
这一段不懂什么意思
      (repeat (strlen sn1)就是循环文字长度次,后面的(= (substr sn1 i 1) "")其实也是循环到最后才能为t吧?
而且循环这么多次后面的sn2其实每次取值不是一样的么?那干嘛还要费这个功夫?

另外你也没实现对文件名取部分啊?

分割文件名可以用正则表达式实现,论坛里有现成的函数.
 楼主| 发表于 2019-11-23 22:42:56 | 显示全部楼层
wyl219 发表于 2019-11-22 11:50
(setq i 1)
      (repeat (strlen sn1)
        (cond

谢谢提指点,以经弄好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 13:04 , Processed in 0.177280 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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