找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1427|回复: 7

[LISP函数]:移出指定名称XDATA

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-5 23:53:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1. ;|
  2. e -- entity appname --- regapp name
  3. |;
  4. (defun xd-xdata_remove (e appname)
  5.   (setq        ed  (entget e (list appname))
  6.         old (assoc -3 ed)
  7.         new (list -3 (list appname))
  8.         ed  (subst new old ed)
  9.   )
  10.   (entmod ed)
  11. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-6 00:53:21 | 显示全部楼层
其实有更简便的写法


  1.   [FONT=courier new]
  2. ;| 删除实体扩展数据单个项目.--ok--by 狂刀.2004.10
  3. 实例:
  4. (xd-remove e "xx")
  5. |;
  6. (defun xd-remove (e app)
  7.   (entmod (list (cons -1 e)(list -3 (list app))))
  8. )
  9.   [/FONT]


  1.   [FONT=courier new]
  2. ;| 删除实体扩展数据单个或多个项目.--ok--by 狂刀.2004.10
  3. 实例:
  4. (xd-xremove e "xx")
  5. (xd-xremove e '("xx" "xd"))
  6. |;
  7. (defun xd-xremove (e apps)
  8.   (if(not(listp apps))(setq apps(list apps)))
  9.   (entmod (list (cons -1 e)(list -3 (mapcar 'list apps))))
  10. )
  11.   [/FONT]

  1.   [FONT=courier new]
  2. ;; 删除实体所有扩展数据项目.--ok--by 狂刀.2004.10
  3. ;; 实例: (xd-clean e)
  4. (defun xd-clean (e)
  5.   (entmod (list (cons -1 e)(list -3 (mapcar 'list (mapcar 'car (cdr(assoc -3 (entget e '("*")))))))))
  6. )
  7. ;;或:
  8. (xd-xremove e (mapcar 'car (cdr(list -3 (entget e '("*"))))))
  9.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-4 16:44:05 | 显示全部楼层
2楼楼主,你这个好像不行:
(defun xd-remove (e app)
  (entmod (list (cons -1 e)(cons -3 (list app))))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-4 20:23:57 | 显示全部楼层
怎么不行?请说明
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-5 10:27:50 | 显示全部楼层
最初由 wmz_0211 发布
[B]2楼楼主,你这个好像不行:
(defun xd-remove (e app)
  (entmod (list (cons -1 e)(cons -3 (list app))))
) [/B]

执行后显示DXF组码错误!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-5 11:13:04 | 显示全部楼层
谢谢指出,程序中 cons应为list,已经修改。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2005-11-5 15:15:53 | 显示全部楼层
最初由 狂刀 发布
[B]其实有更简便的写法
;| 删除实体扩展数据单个或多个项目.--ok--by 狂刀.2004.10
实例:
(xd-xremove e "xx")
(xd-xremove e '("xx" "xd"))
|;
(defun xd-xremove (e apps)
  (if(not(listp apps))(setq apps(list apps)))
  (entmod (list (cons -1 e)(list -3 (mapcar 'list apps))))
)
[/B]


其实关键所在是:如果apps里包含有没注册的,或者这个实体没有的扩展,将会出错.
判断不应该写在外面,因为我有判断的时间,早就可以把它删了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-5 20:58:22 | 显示全部楼层
那个if不是用来判断是否已经注册的,而是判断是原子还是表。如果是原子则删除一个,如果是表则删除多个。
注册名应该是已知的,这个是前提,否则就没有意义
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 06:23 , Processed in 0.344839 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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