| 自贡黄明儒 发表于 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))
 |