也许是Distance的一点BUG
我想过滤800长度的线。但是用DISTANCE 水平。垂直线能过滤。长度相等的斜线不能过滤;用(equal b-x 800 0.000000000001)这个设置一点误差就行!(defun c:tt ()(setq ssad (ssadd))
(setq ss (ssget))
(setq i 0)
(repeat (sslength ss)
(setq SSB-en (ssname ss i)
i (1+ i)
)
(setq b-ent (entget SSB-en))
(setq pt10 (cdr (assoc 10 b-ent)))
(setq pt11 (cdr (assoc 11 b-ent)))
(setq b-x (distance pt10 pt11))
(if
;(= b-x 800 );不行
;(equal b-x 800 0.000000000001);行
(progn
(ssadd SSB-en ssad)
(setq ent1 (ssname ssad 0))
(command "chprop" ent1 "" "c" 1 "")
) ;progn
);if
);repeat
(princ)
) = 和equal本来是有区别的,两个函数就有两个的用法 自贡黄明儒 发表于 2014-10-22 15:03 static/image/common/back.gif
= 和equal本来是有区别的,两个函数就有两个的用法
谢谢指导。我的意思同样长度的线,不是水平,或垂直,就不能生效。用IF=判断。 一般我也都是用equa来判断l的,点坐标计算估计只会无限接近,不会完全相等,精度满足即可。 你试试降低精度看看,比如1e-6。 谢谢
页:
[1]