你用一次zoom all就可以了,然后使用每个点循环使用如下函数
;功能:判断某个点周围是否有对象
;注意要先加载(vl-load-com)
;参数:
pt需判断的点
search_dist 每一点附近选择对象的距离,此参数可能影响速度,但一般大于下一个参数。
dec_dist 判断范围,即某点附近这个附近的距离是多少。
;返回:如有,返回T,否则返回nil
- (defun Dec (pt Search_Dist Dec_Dist / ss i ent entv rDist rVal)
- (setq ss (ssget "c"
- (polar pt (* 0.25 pi) Search_Dist)
- (polar pt (* 1.25 pi) Search_Dist)
- )
- )
- (setq i 0)
- (setq rVal nil)
- (if ss
- (while (< i (sslength ss))
- (setq ent (ssname ss i))
- (setq entv (vlax-ename->vla-object ent))
- (setq rDist (distance pt (vlax-curve-getClosestPointTo entv pt)))
- (if (<= rDist Dec_Dist)
- (progn
- (setq i (sslength ss))
- (setq rVal t)
- )
- )
- (setq i (1+ i))
- )
- )
- rVal
- )
|