操作一次,多次使用的删除记录,有用的拿去(更新)
本帖最后由 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)
)
貌似没什么用 明白楼主的悥思,先做个记号. 给排水专业的,觉得不错,但是也有点不足,就是如果很大的图要删除很多次就比较麻烦了,需要不停的存盘,确定,建议,按s设置并记录存储文件的位置及文件名,并能自动覆盖文件 tranney 发表于 2014-12-24 01:14 static/image/common/back.gif
给排水专业的,觉得不错,但是也有点不足,就是如果很大的图要删除很多次就比较麻烦了,需要不停的存盘,确 ...
只要用rer命令进行的删除操作都会被追加记录到指定文件中去,当然这个十来分钟写的程序只是应急用,还没有去优化呢。 哈哈,大哥抽个空优化一下哈,对于我们设备专业来说这个真是太有必要了,前段时间 建筑专业连续提了30多次图过来,哎,小院没规则,没办法, 设备专业必备软件啊赶紧试用去了 想法不错,看看 思路很好,赞一个。 很有实际意义
页:
[1]
2