1. ;;--------------------=={ Chain Selection }==-----------------;;
    2. ;; ;;
    3. ;; Prompts the user to select an object and generates a ;;
    4. ;; selection chain of all objects sharing endpoints with ;;
    5. ;; objects in the accumulative selection. ;;
    6. ;;------------------------------------------------------------;;
    7. ;; Author: Lee Mac, Copyright ?2012 - www.lee-mac.com ;;
    8. ;;------------------------------------------------------------;;
    9. (defun c:cs ( / en fl in l1 l2 s1 s2 sf vl )
    10. (setq sf
    11. (list
    12. '(-4 . "<OR")
    13. '(0 . "LINE,ARC")
    14. '(-4 . "<AND")
    15. '(0 . "LWPOLYLINE,SPLINE")
    16. '(-4 . "<NOT")
    17. '(-4 . "&=")
    18. '(70 . 1)
    19. '(-4 . "NOT>")
    20. '(-4 . "AND>")
    21. '(-4 . "<AND")
    22. '(0 . "POLYLINE")
    23. '(-4 . "<NOT")
    24. '(-4 . "&")
    25. '(70 . 89)
    26. '(-4 . "NOT>")
    27. '(-4 . "AND>")
    28. '(-4 . "<AND")
    29. '(0 . "ELLIPSE")
    30. '(-4 . "<OR")
    31. '(-4 . "<>")
    32. '(41 . 0.0)
    33. '(-4 . "<>")
    34. (cons 42 (+ pi pi))
    35. '(-4 . "OR>")
    36. '(-4 . "AND>")
    37. '(-4 . "OR>")
    38. (if (= 1 (getvar 'cvport))
    39. (cons 410 (getvar 'ctab))
    40. '(410 . "Model")
    41. )
    42. )
    43. )
    44. (if (setq s1 (ssget "_X" sf))
    45. (if (setq en (ssget "_+.:E:S" sf))
    46. (progn
    47. (setq s2 (ssadd)
    48. en (ssname en 0)
    49. l1 (list (vlax-curve-getstartpoint en) (vlax-curve-getendpoint en))
    50. )
    51. (repeat (setq in (sslength s1))
    52. (setq en (ssname s1 (setq in (1- in)))
    53. vl (cons (list (vlax-curve-getstartpoint en) (vlax-curve-getendpoint en) en) vl)
    54. )
    55. )
    56. (while
    57. (progn
    58. (foreach v vl
    59. (if (vl-some '(lambda ( p ) (or (equal (car v) p 1e-8) (equal (cadr v) p 1e-8))) l1)
    60. (setq s2 (ssadd (caddr v) s2)
    61. l1 (vl-list* (car v) (cadr v) l1)
    62. fl t
    63. )
    64. (setq l2 (cons v l2))
    65. )
    66. )
    67. fl
    68. )
    69. (setq vl l2 l2 nil fl nil)
    70. )
    71. )
    72. )
    73. (princ "\nNo valid objects found.")
    74. )
    75. (sssetfirst nil s2)
    76. (princ)
    77. )
    78. (vl-load-com) (princ)