这很接近,但我需要帮助它扩展PLINE,使额外的点,而不是只有1相交。
- (defun sprinklers ( / ss1 ss2 x y len1 len2)
- (vl-load-com)
- (setq obj (entsel "\nPick 1st layer"))
- (setq lay1 (vla-get-layer (vlax-ename->vla-object (car obj))))
- (setq obj (entsel "\npick 2nd layer"))
- (setq lay2 (vla-get-layer (vlax-ename->vla-object (car obj))))
- (setq ss1 (ssget "X" (list (cons 8 lay1))))
- (setq ss2 (ssget "X" (list (cons 8 lay2))))
- (setq len1 (sslength ss1))
- (setq len2 (sslength ss2))
- (setq x 0
- total 0)
- (repeat len1
- (setq y 0)
- (setq obj1 (vlax-ename->vla-object(ssname ss1 x)))
- (repeat len2
- (setq obj2 (vlax-ename->vla-object (ssname ss2 y)))
- (setq pt (vla-intersectwith obj2 obj1 0))
- (if (/= pt nil)(setq total (+ total 1))(Princ "Miss"))
- (setq y (+ y 1))
- ) ; len2
- (setq x (+ x 1))
- ) ; len1
- (princ Total)
- ) ; defun
- (sprinklers)
|