司徒妙嘉 发表于 2017-12-1 09:53:55

[求助]删除一堆文件里面的所有类型属于"circle"的图元

每个文件都很简单, 但是逐个打开费时, 有可以批量处理的方法吗

碎玉す全瓦 发表于 2017-12-1 17:07:59

(defun c:delcircle (/ dir ndir files_list numfiles i file ss ys)
(setvar "CMDECHO" 0)
(setq        dir (getfiled "指定要操作的文件夹内任一文件"
                      "指指定要操作的文件夹内任一文件"
                      "dwg"
                      32
          )
)
(setq dir (vl-filename-directory dir))
(setq ndir (strcat dir "\\已处理"))
(if        (not (findfile (strcat ndir)))
      (vl-mkdir ndir)
    )
(setq files_list (vl-directory-files dir "*.dwg" 1)) ;文件名列表
(setq        numfiles (length files_list)
        i       0
)
(while (and (setq file (car files_list))
              (not (tblobjname "block" (vl-filename-base file)))
       )
    (setq ss (ssget "x" ()))                ;所有图元
    (command "erase" ss "")
    (command "-purge" "a" "*" "n" "")

    (setq filestr (strcat dir "\\" file))
    (command "-insert" filestr "0,0" 1 1 0 "") ;插入文件
    (command "explode" (entlast) "")
    (setq ss_circle (ssget "x" '((0 . "circle"))))
    (command "erase" ss_circle "")

    (command "wblock" (strcat ndir "\\" file) "" "0,0,0" (ssget "x" ()) "")

      (vl-file-delete filestr)

    (setq i (1+ i))
    (setq files_list (cdr files_list))
    (princ (strcat "\n该文件夹共计"
                   (itoa numfiles)
                   "个图形文件,当前已处理第 "
                   (itoa i)
                   " 个图形!"
           )
    )
)
(princ "\n END")
(setvar "CMDECHO" 1)
)




司徒妙嘉 发表于 2017-12-2 14:16:30

碎玉す全瓦 发表于 2017-12-1 17:07
(defun c:delcircle (/ dir ndir files_list numfiles i file ss ys)
(setvar "CMDECHO" 0)
(setq        di ...

耍不起来啊, "已处理"文件夹内是空的, 开始选择的时候怎么是选择单个文件?
页: [1]
查看完整版本: [求助]删除一堆文件里面的所有类型属于"circle"的图元