(XD::Entity:AssIntersectEnts)获得从一个实体出发循环相交的所有实体
本帖最后由 Lispboy 于 2016-5-19 12:28 编辑(defun XD::Entity:AssIntersectEnts (e fillter offset / box elst n ss)
(setq box (xdrx_entity_box e)
offset (abs offset)
box (if (> offset 0)
(apply 'xdrx_points_offset (cons offset box))
box
)
ss (ssget "cp" (xd::PNTS:wcs2ucs box) (if fillter fillter nil))
)
(if (not (member e AssIntersectEnts))
(setq AssIntersectEnts (cons e AssIntersectEnts))
)
(if ss
(progn
(setq elst (xdrx_pickset->ents ss))
(foreach n elst
(if (not (member n AssIntersectEnts))
(progn
(XD::Entity:AssIntersectEnts n fillter offset)
)
)
)
)
)
AssIntersectEnts
)
(defun XD::Entity:AssIntersectEntsInit()
(setq AssIntersectEnts nil)
)
该函数有问题吧,函数名称为XD::Entity:AssIntersectEnts,在函数里面又引用了该函数(XD::Entity:AssIntersectEnts n fillter offset) dyjwyqz5221 发表于 2018-4-12 14:14
该函数有问题吧,函数名称为XD::Entity:AssIntersectEnts,在函数里面又引用了该函数(XD::Entity:AssInters ...
递归调用啊。
明白了,谢谢,还要继续学习
测试此函数过程中,fillter采用 \\\'((0 . "LINE,ARC")) 有问题,采用'((0 . "LINE,ARC"))就可以了,请教是否如此? 这个函数我用lisp写过了,效率很一般,不知道 arx是不是很快 有个缺陷,就是这样找出的实体是采用(ssget "cp")方式查找的,假如:cp范围内,有不相交、但是图层也相同的实体也包含在内了吧。并非真正的相交。
页:
[1]