明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1832|回复: 2

[求助]用vl-remove为什么不能删除这个表的元素?

[复制链接]
发表于 2009-6-13 09:05 | 显示全部楼层 |阅读模式

vl-remove 是删除表中的元素(包括表中相同的元素),可是我用(entget(car(entsel)))选择一条多段线,得到一个表,然后就用vl-remove删除这个表中的(10 754.87 579.916)元素,却不行,这是为什么呀?

比如:
(vl-remove '(10 754.87 579.916) '((-1 . <图元名: 7ef8b000>) (0 . "LWPOLYLINE") (330 . <图元名:
7ef6acf8>) (5 . "F8") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
(100 . "AcDbPolyline") (90 . 5) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10
754.87 579.916)
(40 . 0.0) (41 . 0.0) (42 . 0.0) (10 754.87 242.871) (40 . 0.0)
(41 . 0.0) (42 . 0.0) (10 1082.21 228.992) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10
1109.99 484.75) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 754.87 579.916) (40 . 0.0)
(41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0)))

得到的表然仍是一样,并没有删除其中的元素!

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-6-13 09:44 | 显示全部楼层

vl-remove只能删除具有 = 概念的子项,而不能删除 equal 概念的子项,看下面的示例:

(setq a (entget(car(entsel))))

(member '(10 754.87 579.916) a)--->nil

(= '(10 754.87 579.916) (assoc 10 a))--->nil

(equal '(10 754.87 579.916) (assoc 10 a) 0.00001)--->T

所以,CAD中的实数部分是存在精度差的

 楼主| 发表于 2009-6-13 10:38 | 显示全部楼层

谢谢版主回复,如果这样:

(vl-remove   (assoc 10 (setq a (entget(car(entsel)))))    (entget(car(entsel))))

就可以删除里面的那个【比如(10 681.833 -208.389)】元素

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

本版积分规则

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

GMT+8, 2024-5-12 05:19 , Processed in 0.137184 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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