只需一步,快速开始
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)))
得到的表然仍是一样,并没有删除其中的元素!
使用道具 举报
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中的实数部分是存在精度差的
谢谢版主回复,如果这样:
(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-11-26 01:55 , Processed in 0.188419 second(s), 25 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.