明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3316|回复: 15

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

[复制链接]
发表于 2014-12-23 12:23:17 | 显示全部楼层 |阅读模式
本帖最后由 vectra 于 2014-12-24 12:50 编辑

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

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

2014-12-23 初次发布

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

  2. (defun get-recordfilename (filename)
  3.   (getfiled "操作记录文件"
  4.             (if        (null filename)
  5.               (strcat (getvar "DWGPREFIX")
  6.                       (vl-filename-base (getvar "DWGNAME"))
  7.               )
  8.               filename
  9.             )
  10.             "txt"
  11.             1
  12.   )
  13. )

  14. (defun c:rerf (/ filename)
  15.   (setq filename (get-recordfilename *erase-record-filename*))
  16.   (if (= 'str (type filename))
  17.     (progn
  18.       (setq *erase-record-filename* filename)
  19.       (princ (strcat "\n已设置记录文件为 \"" *erase-record-filename* "\""))
  20.     )
  21.   )
  22.   (princ)
  23. )


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

  26.   (if (null *erase-record-filename*)
  27.     (setq *erase-record-filename* (get-recordfilename *erase-record-filename*))
  28.   )
  29.   (if (and ss
  30.            *erase-record-filename*
  31.       )
  32.     (progn
  33.       (setq file (open *erase-record-filename* "A"))

  34.       (repeat (setq i (sslength ss))
  35.         (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i))))
  36.               id  (vla-get-handle obj)
  37.         )
  38.         (write-line id file)
  39.         (vla-erase obj)
  40.       )

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

  46.   (princ)
  47. )


  48. (defun c:der (/ file i id)

  49.   (if *erase-record-filename*
  50.     (progn
  51.       (setq file (open *erase-record-filename* "R")
  52.             i         0
  53.       )

  54.       (while (setq id (read-line file))
  55.         (if (setq id (handent id))
  56.           (progn
  57.             (entdel id)
  58.             (setq i (1+ i))
  59.           )
  60.         )
  61.       )

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

  67.   (princ)
  68. )

点评

非常好,请问开始的删除记录文件如何制作呢  发表于 2014-12-24 00:50

评分

参与人数 1明经币 +1 收起 理由
ucuc2003 + 1 很实用@

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2014-12-23 12:38:27 | 显示全部楼层
貌似没什么用
发表于 2014-12-23 15:39:51 | 显示全部楼层
明白楼主的悥思,先做个记号.
发表于 2014-12-24 01:14:31 | 显示全部楼层
给排水专业的,觉得不错,但是也有点不足,就是如果很大的图要删除很多次就比较麻烦了,需要不停的存盘,确定,建议,按s设置并记录存储文件的位置及文件名,并能自动覆盖文件
 楼主| 发表于 2014-12-24 08:16:53 | 显示全部楼层
tranney 发表于 2014-12-24 01:14
给排水专业的,觉得不错,但是也有点不足,就是如果很大的图要删除很多次就比较麻烦了,需要不停的存盘,确 ...

只要用rer命令进行的删除操作都会被追加记录到指定文件中去,当然这个十来分钟写的程序只是应急用,还没有去优化呢。
发表于 2014-12-24 11:48:53 | 显示全部楼层
哈哈,大哥抽个空优化一下哈,对于我们设备专业来说这个真是太有必要了,前段时间 建筑专业连续提了30多次图过来,哎,小院没规则,没办法,
发表于 2014-12-24 15:18:04 | 显示全部楼层
设备专业必备软件啊赶紧试用去了
发表于 2014-12-24 15:47:24 | 显示全部楼层
想法不错,看看
发表于 2014-12-25 10:06:02 | 显示全部楼层
思路很好,赞一个。
发表于 2014-12-25 12:41:40 | 显示全部楼层
很有实际意义
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 20:55 , Processed in 0.203814 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表