找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1076|回复: 10

[求助] [求助]:lisp问题

[复制链接]
发表于 2002-4-30 08:30:47 | 显示全部楼层 |阅读模式

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

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

×
(setq tb (tblnext "block" t ))=>
((0 . "BLOCK") (2 . "A$C72CE4FB1") (70 . 0) (10 0.0 0.0 0.0) (-2 . <Entity
name: 31c0658>))
(setq bent (cdr (assoc -2 tb)))=>
<Entity name: 31c0658>
(setq bentlst (entget bent))=>
((-1 . <Entity name: 31c0658>) (0 . "CIRCLE") (5 . "73") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (62 . 1) (100 . "AcDbCircle") (10 3.03038 1.41979 0.0) (40 .
0.983432) (210 0.0 0.0 1.0))
(entmod '((-1 . <Entity name: 31c0658>) (0 . "CIRCLE") (5 . "73") (100 . "AcDbEntity")
(67 . 0) (8 . "0")  (100 . "AcDbCircle") (10 3.03038 1.41979 0.0) (40 .
0.983432) (210 0.0 0.0 1.0)))
entmod中(62 . 1)项去掉了
可以调用成功但是 实际上没有修改图形数据库,图形没有发生变化
请教 到底问题出在哪里?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-30 08:38:42 | 显示全部楼层

Re: [求助]:lisp问题

最初由 fylinwater 发布
[B](setq tb (tblnext "block" t ))=>
((0 . "BLOCK") (2 . "A$C72CE4FB1") (70 . 0) (10 0.0 0.0 0.0) (-2 . <Entity
name: 31c0658>))
(setq bent (cdr (assoc -2 tb)))=>
<Entity name: 31c0658>
(setq bentl... [/B]


不知道你entmod后面的是自己手工输入的,还是为了模拟参数?

你应该:
(setq ed (subst new old ed))
(entmod ed)
这样的格式写。

如果象你那么直接在entmod后面写,肯定是不行的。因为他们虽然看起来相同,但是表使用的内存不同。

如果更新了块定义,那么INSERT实体要REGEN才能看到效果。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-4-30 08:45:07 | 显示全部楼层
为了把(62 . 1)去掉 就不能用(setq ed (subst new old ed))
用它可以通过比如用(62 . 2)替代 可以把图形改为黄色
其实我是想把会这里的实体的颜色把本来的红色修改为随层
我用了 一个去掉表指定项的函数 表数据处理没问题
就是图形把改变
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-30 08:52:10 | 显示全部楼层
最初由 fylinwater 发布
[B]为了把(62 . 1)去掉 就不能用(setq ed (subst new old ed))
用它可以通过比如用(62 . 2)替代 可以把图形改为黄色
其实我是想把会这里的实体的颜色把本来的红色修改为随层
我用了 一个去掉表指定项的函数 表数据?.. [/B]


你没有明白我的意思,就是你始终要操作(setq ed (entget e))这样得到的数据表,别自己写,你自己写的,LISP和实体联系不上的。
始终要对变量ed进行操作。

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

使用道具 举报

 楼主| 发表于 2002-4-30 09:03:02 | 显示全部楼层
对 我没有手写数据  现在的问题是我想去掉(62 。1)这个项
我现在有很多块被定义时被强制给了颜色
现在我想把它变为随层显示颜色
(setq bentls t (
*
(setq col
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-4-30 09:06:24 | 显示全部楼层
(setq colitem (assoc 62 bentlst))
(setq bentlst (append (reverse (cdr (member colitem (reverse  bentlst))))  (member colitem (cdr bentlst)) ))
(entmod bentlst)
语句是这样的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-30 09:13:28 | 显示全部楼层
最初由 fylinwater 发布
[B](setq colitem (assoc 62 bentlst))
(setq bentlst (append (reverse (cdr (member colitem (reverse  bentlst))))  (member colitem (cdr bentlst)) ))
(entmod bentlst)
语句是这样的 [/B]


你的意思是想从一个表中删除一个子表,参见下面代码:

说明:

blist--表
old --子表
(append (reverse (cdr (member old (reverse blist)))) (cdr (member old blist)))

你的代码:
member colitem (cdr bentlst)) ))
这部分有问题,应该先求member,然后求cdr,来把OLD项删除。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-4-30 09:22:57 | 显示全部楼层
不好意思
后面是笔误 我刚才现打的 打错了
程序里就是(append (reverse (cdr (member old (reverse blist)))) (cdr (member old blist)))
而且程序可以通过
entmod返回一个表 就是我们上面最后求得的表
但实际上图形没变
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-30 09:24:35 | 显示全部楼层
最初由 fylinwater 发布
[B]不好意思
后面是笔误 我刚才现打的 打错了
程序里就是(append (reverse (cdr (member old (reverse blist)))) (cdr (member old blist)))
而且程序可以通过
entmod返回一个表 就是我们上面最后求得的表
但实?.. [/B]


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

使用道具 举报

发表于 2002-4-30 11:18:51 | 显示全部楼层
色和线的bylayer的写法你可以:
(if (assoc 62 en)
        (setq en (subst '(62 . 256)(assoc 62 en) en)))
(if (assoc 6 en)
        (setq en (subst '(6 . "BYLAYER")(assoc 6 en) en)))

对于子实体的更新你要用entupd才能影响到他的“父”实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-20 11:06:32 | 显示全部楼层
entupd不能能影响到他的“父”实体。需要直接entupd引用它的实例的实体
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 20:05 , Processed in 0.536148 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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