vectra 发表于 2014-12-23 12:23:17

操作一次,多次使用的删除记录,有用的拿去(更新)

本帖最后由 vectra 于 2014-12-24 12:50 编辑

人家提来的条件图,每次都要删除一些无用的内容,当他修改版发来时,又要重复删除。所以,想操作一次,多次应用,就有了下面的代码,火热出炉。

2014-12-24
修改了记录文件的指定逻辑。

2014-12-23 初次发布


;; 删除操作记录器,方便重复删除

(defun get-recordfilename (filename)
(getfiled "操作记录文件"
            (if      (null filename)
            (strcat (getvar "DWGPREFIX")
                      (vl-filename-base (getvar "DWGNAME"))
            )
            filename
            )
            "txt"
            1
)
)

(defun c:rerf (/ filename)
(setq filename (get-recordfilename *erase-record-filename*))
(if (= 'str (type filename))
    (progn
      (setq *erase-record-filename* filename)
      (princ (strcat "\n已设置记录文件为 \"" *erase-record-filename* "\""))
    )
)
(princ)
)


(defun c:rer (/ file i id obj ss)
(setq ss (ssget))

(if (null *erase-record-filename*)
    (setq *erase-record-filename* (get-recordfilename *erase-record-filename*))
)
(if (and ss
         *erase-record-filename*
      )
    (progn
      (setq file (open *erase-record-filename* "A"))

      (repeat (setq i (sslength ss))
      (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i))))
            id(vla-get-handle obj)
      )
      (write-line id file)
      (vla-erase obj)
      )

      (close file)
      (princ (strcat "\n" (itoa (sslength ss)) " 个删除操作已记录。"))
      ;;(startapp "notepad" fname)
    )
)

(princ)
)


(defun c:der (/ file i id)

(if *erase-record-filename*
    (progn
      (setq file (open *erase-record-filename* "R")
            i         0
      )

      (while (setq id (read-line file))
      (if (setq id (handent id))
          (progn
            (entdel id)
            (setq i (1+ i))
          )
      )
      )

      (close file)
      (princ (strcat "\n" (itoa i) " 个删除操作已应用。"))
    )
    (princ "\n请先指定删除记录文件。")
)

(princ)
)

lucas_3333 发表于 2014-12-23 12:38:27

貌似没什么用

HGQ8888 发表于 2014-12-23 15:39:51

明白楼主的悥思,先做个记号.

tranney 发表于 2014-12-24 01:14:31

给排水专业的,觉得不错,但是也有点不足,就是如果很大的图要删除很多次就比较麻烦了,需要不停的存盘,确定,建议,按s设置并记录存储文件的位置及文件名,并能自动覆盖文件

vectra 发表于 2014-12-24 08:16:53

tranney 发表于 2014-12-24 01:14 static/image/common/back.gif
给排水专业的,觉得不错,但是也有点不足,就是如果很大的图要删除很多次就比较麻烦了,需要不停的存盘,确 ...

只要用rer命令进行的删除操作都会被追加记录到指定文件中去,当然这个十来分钟写的程序只是应急用,还没有去优化呢。

tranney 发表于 2014-12-24 11:48:53

哈哈,大哥抽个空优化一下哈,对于我们设备专业来说这个真是太有必要了,前段时间 建筑专业连续提了30多次图过来,哎,小院没规则,没办法,

伪书虫86 发表于 2014-12-24 15:18:04

设备专业必备软件啊赶紧试用去了

dragoon33333 发表于 2014-12-24 15:47:24

想法不错,看看

dwg001 发表于 2014-12-25 10:06:02

思路很好,赞一个。

phoevana 发表于 2014-12-25 12:41:40

很有实际意义
页: [1] 2
查看完整版本: 操作一次,多次使用的删除记录,有用的拿去(更新)