自贡黄明儒 发表于 2014-7-9 11:32 
想法不错,有点类似我的分图http://bbs.mjtd.com/thread-108136-1-1.html
我借用了您分图的那个代码,我想改成不需要选择图形范围直接重命名文件。又因为可能有多个不同文件名的DWG文件中部件名称那一栏又是一样的,所以我将代码改动了一下,将需要提取的文字加到原有的文件名前面,这样避免重复的时候又要自己输入。我试过如果仅仅是改这里的话代码运行都没有问题,但是我想去掉图形范围选择,直接将文件名重命名,提示“错误:输入的列表有缺陷”,大神帮我看看是什么原因呢?然后'STR是什么意思呢?CAD不是我的专业,自己研究起来确实很困难。
 - (defun C:ft (/ ANSWER EN FLAG FLAG1 INITDIR NEWDNAME EE)
- (setq ee (GETVAR "DWGname"))
- (if (setq Initdir (getvar "dwgprefix"))
- nil
- (progn (princ "\n 文件未保存,不能分图") (exit))
- )
- (setq flag1 T)
- (while (and flag1
- (setq en (entsel "\n >拾取文件名 "))
- (setq en (nentselp (cadr en)))
- (setq NewDName (cdr (assoc 1 (entget (car en)))))
- (equal (type NewDName) 'STR)
- )
- (if (findfile (strcat Initdir NewDName ee))
- (setq flag T)
- )
- (while flag
- (princ
- (strcat "\n 文件名" NewDName "已经存在,请重输入文件名")
- )
- (setq NewDName (getstring "\n???输入文件名: "))
- (if (findfile (strcat Initdir NewDName ee))
- nil
- (setq flag nil)
- )
- )
- (vl-file-rename (strcat Initdir ee) (strcat Initdir NewDName ee))
|