1. ;;说明:获取两个对象交点
    2. ;;参数:ent1:图元1
    3. ;;参数:ent2:图元2
    4. ;;返回:有交点则返回交点列表,没有交点则返回nil
    5. (defun InterWithPt(ent1 ent2 / bf-list-split-3d var)
    6. ;;;name:BF-list-split-3d
    7. ;;;desc:列表按顺序切分为3元素表组成的表,不足部分用nil表示
    8. ;;;arg:lst:列表
    9. ;;;return:((x x x )(x x x)...)
    10. ;;;example:(BF-list-split-3d '(1 2 3 4))
    11. (defun BF-list-split-3d (lst)
    12. (if lst
    13. (cons
    14. (list
    15. (car lst)
    16. (cadr lst)
    17. (caddr lst)
    18. )
    19. (BF-list-split-3d (cdddr lst))
    20. )
    21. )
    22. )
    23. (if (>
    24. (vlax-safearray-get-u-bound
    25. (setq
    26. var (vlax-variant-value
    27. (vla-IntersectWith (vlax-ename->vla-object ent1) (vlax-ename->vla-object ent2) acExtendNone)
    28. )
    29. )
    30. 1
    31. )
    32. 1
    33. )
    34. (BF-list-split-3d (vlax-safearray->list var))
    35. nil
    36. )
    37. )