<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Connect Block and Vertices with *Lines in Visual LISP, AutoLISP and General Customization Forum</title>
    <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/connect-block-and-vertices-with-lines/m-p/11582807#M37745</link>
    <description>&lt;P&gt;Something like this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun c:connect ( / ss i e plist p nextpt plist-sorted rtn pp )

  (while (or (prompt "\nSelect blocks or circles...") (not (setq ss (ssget))))
    (prompt "\nEmpty sel. set...")
    )

  (setq plist '())
  
  (repeat (setq i (sslength ss))
    (setq e (ssname ss (setq i (1- i))))
    (setq plist (append (mapcar 'cdr (vl-remove-if-not '(lambda (x) (vl-position (car x) '(10 11))) (entget e))) plist))
    )
  (setq p (getpoint "\nPick or specify start point - use osnap cen or ins : "))
  
  (defun nextpt ( p plist / car-sort pp )
    
    (defun car-sort ( l f / removenth r k )
      
      (defun removenth ( l n / k )
	(setq k -1)
	(vl-remove-if '(lambda ( x ) (= (setq k (1+ k)) n)) l)
	)
      
      (setq k -1)
      (vl-some '(lambda ( a ) (setq k (1+ k)) (if (vl-every '(lambda ( x ) (apply f (list a x))) (removenth l k)) (setq r a))) l)
      r
      )
    
    (setq plist (vl-remove-if '(lambda ( x ) (equal x p 1e-3)) plist))
    (setq pp (car-sort plist '(lambda ( a b ) (&amp;lt;= (distance p a) (distance p b)))))
    (list pp plist)
    )
  
  (if p
    (progn
      (while (cadr plist)
	(setq plist-sorted (cons p plist-sorted))
	(setq rtn (nextpt p plist))
	(setq pp (car rtn) plist (cadr rtn))
	(setq p pp)
	)
      (setq plist-sorted (cons (car plist) plist-sorted))
      (setq plist-sorted (reverse plist-sorted))
      (entmake
	(append
	  (list
	    '(0 . "LWPOLYLINE")
	    '(100 . "AcDbEntity")
	    '(100 . "AcDbPolyline")
	    (cons 90 (length plist-sorted))
	    (cons 70 (if (= 1 (getvar 'plinegen)) 128 0))
	    '(38 . 0.0)
	    )
	  (mapcar '(lambda ( p ) (cons 10 p)) plist-sorted)
	  (list '(210 0.0 0.0 1.0))
	  )
	)
      )
    )
  (princ)
  )&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 28 Nov 2022 16:26:40 GMT</pubDate>
    <dc:creator>ВeekeeCZ</dc:creator>
    <dc:date>2022-11-28T16:26:40Z</dc:date>
    <item>
      <title>Connect Block and Vertices with *Lines</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/connect-block-and-vertices-with-lines/m-p/11582766#M37744</link>
      <description>&lt;P&gt;Anyone could help me here? I found a Routine to connect blocks (attached)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;... but is there any method to connect each *Lines vertex and blocks? (spline, lines, 3D 2D polylines, etc)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jtm2020hyo_0-1669651613516.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1145230i365CCC7788FF12F7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jtm2020hyo_0-1669651613516.png" alt="jtm2020hyo_0-1669651613516.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jtm2020hyo_1-1669651653805.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1145233i1EFEC9793550D9E5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jtm2020hyo_1-1669651653805.png" alt="jtm2020hyo_1-1669651653805.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;attached drawing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 28 Nov 2022 16:22:04 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/connect-block-and-vertices-with-lines/m-p/11582766#M37744</guid>
      <dc:creator>jtm2020hyo</dc:creator>
      <dc:date>2022-11-28T16:22:04Z</dc:date>
    </item>
    <item>
      <title>Re: Connect Block and Vertices with *Lines</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/connect-block-and-vertices-with-lines/m-p/11582807#M37745</link>
      <description>&lt;P&gt;Something like this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun c:connect ( / ss i e plist p nextpt plist-sorted rtn pp )

  (while (or (prompt "\nSelect blocks or circles...") (not (setq ss (ssget))))
    (prompt "\nEmpty sel. set...")
    )

  (setq plist '())
  
  (repeat (setq i (sslength ss))
    (setq e (ssname ss (setq i (1- i))))
    (setq plist (append (mapcar 'cdr (vl-remove-if-not '(lambda (x) (vl-position (car x) '(10 11))) (entget e))) plist))
    )
  (setq p (getpoint "\nPick or specify start point - use osnap cen or ins : "))
  
  (defun nextpt ( p plist / car-sort pp )
    
    (defun car-sort ( l f / removenth r k )
      
      (defun removenth ( l n / k )
	(setq k -1)
	(vl-remove-if '(lambda ( x ) (= (setq k (1+ k)) n)) l)
	)
      
      (setq k -1)
      (vl-some '(lambda ( a ) (setq k (1+ k)) (if (vl-every '(lambda ( x ) (apply f (list a x))) (removenth l k)) (setq r a))) l)
      r
      )
    
    (setq plist (vl-remove-if '(lambda ( x ) (equal x p 1e-3)) plist))
    (setq pp (car-sort plist '(lambda ( a b ) (&amp;lt;= (distance p a) (distance p b)))))
    (list pp plist)
    )
  
  (if p
    (progn
      (while (cadr plist)
	(setq plist-sorted (cons p plist-sorted))
	(setq rtn (nextpt p plist))
	(setq pp (car rtn) plist (cadr rtn))
	(setq p pp)
	)
      (setq plist-sorted (cons (car plist) plist-sorted))
      (setq plist-sorted (reverse plist-sorted))
      (entmake
	(append
	  (list
	    '(0 . "LWPOLYLINE")
	    '(100 . "AcDbEntity")
	    '(100 . "AcDbPolyline")
	    (cons 90 (length plist-sorted))
	    (cons 70 (if (= 1 (getvar 'plinegen)) 128 0))
	    '(38 . 0.0)
	    )
	  (mapcar '(lambda ( p ) (cons 10 p)) plist-sorted)
	  (list '(210 0.0 0.0 1.0))
	  )
	)
      )
    )
  (princ)
  )&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 28 Nov 2022 16:26:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/connect-block-and-vertices-with-lines/m-p/11582807#M37745</guid>
      <dc:creator>ВeekeeCZ</dc:creator>
      <dc:date>2022-11-28T16:26:40Z</dc:date>
    </item>
  </channel>
</rss>

