<?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: Path Array Lisp Routine in Visual LISP, AutoLISP and General Customization Forum</title>
    <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13105773#M7522</link>
    <description>&lt;P&gt;This is great, thanks so much!&lt;/P&gt;</description>
    <pubDate>Thu, 24 Oct 2024 13:14:32 GMT</pubDate>
    <dc:creator>jeff_Moskovciak</dc:creator>
    <dc:date>2024-10-24T13:14:32Z</dc:date>
    <item>
      <title>Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13100971#M7516</link>
      <description>&lt;P&gt;Hi, I'm having trouble with my lisp routine that is supposed to copy an object 6' from the end of a polyline, array that same object every 12' from that end, and offset a second object 6' from the other end of the polyline. Here is the routine and an example of what is happening:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;defun&lt;/SPAN&gt;&lt;SPAN&gt; c:op (/ obj obj2 polyline p1 p2)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;;; Prompt user for object to copy with base point&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;setq&lt;/SPAN&gt;&lt;SPAN&gt; obj (&lt;/SPAN&gt;&lt;SPAN&gt;car&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;entsel&lt;/SPAN&gt; &lt;SPAN&gt;"\nSelect first outlet to copy: "&lt;/SPAN&gt;&lt;SPAN&gt;)))&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;setq&lt;/SPAN&gt;&lt;SPAN&gt; obj2 (&lt;/SPAN&gt;&lt;SPAN&gt;car&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;entsel&lt;/SPAN&gt; &lt;SPAN&gt;"\nSelect last outlet to copy: "&lt;/SPAN&gt;&lt;SPAN&gt;)))&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;setq&lt;/SPAN&gt;&lt;SPAN&gt; polyline (&lt;/SPAN&gt;&lt;SPAN&gt;car&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;entsel&lt;/SPAN&gt; &lt;SPAN&gt;"\nSelect a polyline: "&lt;/SPAN&gt;&lt;SPAN&gt;)))&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;;(setq p1 (vlax-curve-getstartpoint polyline)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2 (vlax-curve-getendpoint polyline)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; polyline (&lt;/SPAN&gt;&lt;SPAN&gt;eq&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;cdr&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;assoc&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;entget&lt;/SPAN&gt;&lt;SPAN&gt; polyline))) &lt;/SPAN&gt;&lt;SPAN&gt;"LWPOLYLINE"&lt;/SPAN&gt;&lt;SPAN&gt;))&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;progn&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;;Copies first outlet 6' from end of polyline&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;initcommandversion&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;command&lt;/SPAN&gt; &lt;SPAN&gt;"_.arraypath"&lt;/SPAN&gt;&lt;SPAN&gt; obj &lt;/SPAN&gt;&lt;SPAN&gt;""&lt;/SPAN&gt;&lt;SPAN&gt; polyline &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;"m"&lt;/SPAN&gt; &lt;SPAN&gt;"m"&lt;/SPAN&gt; &lt;SPAN&gt;"as"&lt;/SPAN&gt; &lt;SPAN&gt;"n"&lt;/SPAN&gt; &lt;SPAN&gt;"a"&lt;/SPAN&gt; &lt;SPAN&gt;"y"&lt;/SPAN&gt; &lt;SPAN&gt;"i"&lt;/SPAN&gt; &lt;SPAN&gt;"e"&lt;/SPAN&gt; &lt;SPAN&gt;"6'"&lt;/SPAN&gt; &lt;SPAN&gt;"e"&lt;/SPAN&gt; &lt;SPAN&gt;"2"&lt;/SPAN&gt; &lt;SPAN&gt;"x"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;;Copies first outlet every 12' from end of polyline&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;initcommandversion&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;command&lt;/SPAN&gt; &lt;SPAN&gt;"_.arraypath"&lt;/SPAN&gt;&lt;SPAN&gt; obj &lt;/SPAN&gt;&lt;SPAN&gt;""&lt;/SPAN&gt;&lt;SPAN&gt; polyline &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;"m"&lt;/SPAN&gt; &lt;SPAN&gt;"m"&lt;/SPAN&gt; &lt;SPAN&gt;"as"&lt;/SPAN&gt; &lt;SPAN&gt;"n"&lt;/SPAN&gt; &lt;SPAN&gt;"a"&lt;/SPAN&gt; &lt;SPAN&gt;"y"&lt;/SPAN&gt; &lt;SPAN&gt;"i"&lt;/SPAN&gt; &lt;SPAN&gt;"e"&lt;/SPAN&gt; &lt;SPAN&gt;"12'"&lt;/SPAN&gt; &lt;SPAN&gt;"f"&lt;/SPAN&gt; &lt;SPAN&gt;"x"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;;Copies second outlet 6' from other end of polyline&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;initcommandversion&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;command&lt;/SPAN&gt; &lt;SPAN&gt;"_.arraypath"&lt;/SPAN&gt;&lt;SPAN&gt; obj2 &lt;/SPAN&gt;&lt;SPAN&gt;""&lt;/SPAN&gt;&lt;SPAN&gt; polyline &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;"m"&lt;/SPAN&gt; &lt;SPAN&gt;"m"&lt;/SPAN&gt; &lt;SPAN&gt;"as"&lt;/SPAN&gt; &lt;SPAN&gt;"n"&lt;/SPAN&gt; &lt;SPAN&gt;"a"&lt;/SPAN&gt; &lt;SPAN&gt;"y"&lt;/SPAN&gt; &lt;SPAN&gt;"i"&lt;/SPAN&gt; &lt;SPAN&gt;"e"&lt;/SPAN&gt; &lt;SPAN&gt;"6'"&lt;/SPAN&gt; &lt;SPAN&gt;"e"&lt;/SPAN&gt; &lt;SPAN&gt;"2"&lt;/SPAN&gt; &lt;SPAN&gt;"x"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;;Erases first outlet&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;command&lt;/SPAN&gt; &lt;SPAN&gt;"_.erase"&lt;/SPAN&gt;&lt;SPAN&gt; obj &lt;/SPAN&gt;&lt;SPAN&gt;""&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;;Erases second oulet&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;command&lt;/SPAN&gt; &lt;SPAN&gt;"_.erase"&lt;/SPAN&gt;&lt;SPAN&gt; obj2 &lt;/SPAN&gt;&lt;SPAN&gt;""&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;;Erases polyline&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;command&lt;/SPAN&gt; &lt;SPAN&gt;"_.erase"&lt;/SPAN&gt;&lt;SPAN&gt; polyline &lt;/SPAN&gt;&lt;SPAN&gt;""&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;princ&lt;/SPAN&gt; &lt;SPAN&gt;"\nOutlets have been placed. Adjust as needed per code and convenience"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; )&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;princ&lt;/SPAN&gt; &lt;SPAN&gt;"\nSelected entity is not a valid polyline."&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; )&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;princ&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN&gt;vl-load-com&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is the starting point:&lt;/DIV&gt;&lt;DIV&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeffrey_Moskovciak_1-1729614497931.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1424582i32A5455A8708774F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jeffrey_Moskovciak_1-1729614497931.png" alt="jeffrey_Moskovciak_1-1729614497931.png" /&gt;&lt;/span&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The magenta block arrays correctly, but the green one doesn't:&lt;/P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeffrey_Moskovciak_2-1729614509645.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1424583i56F89717329F22C9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jeffrey_Moskovciak_2-1729614509645.png" alt="jeffrey_Moskovciak_2-1729614509645.png" /&gt;&lt;/span&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;Thank you.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2024 16:31:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13100971#M7516</guid>
      <dc:creator>jeff_Moskovciak</dc:creator>
      <dc:date>2024-10-22T16:31:30Z</dc:date>
    </item>
    <item>
      <title>Re: Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13102006#M7517</link>
      <description>&lt;P&gt;I would redo the code and not use array path but rather the&amp;nbsp; VL "getpointatdist" which works out a point say along a pline at a given distance, its pretty easy if you have straight segments to work the 2 points per each segment.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ok you can code which direction a pline runs in by picking it near the end, you swap the co-ords of the vertices if needed.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This will give you the vertices as points just use in pairs.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;(setq plent (entsel "\nPick pline"))
(if plent (setq co-ord (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (car plent))))))&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Just use (repeat (- (length co-ord) 1) to loop through each segment.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Not sure if 1st image is correct, top right block, post a before and after dwg&lt;/P&gt;</description>
      <pubDate>Wed, 23 Oct 2024 05:00:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13102006#M7517</guid>
      <dc:creator>Sea-Haven</dc:creator>
      <dc:date>2024-10-23T05:00:17Z</dc:date>
    </item>
    <item>
      <title>Re: Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13102766#M7518</link>
      <description>&lt;P&gt;Thank you for this suggestion. The complexity is that I need the block to rotate along the pline and it will almost always be a pline with multiple vertices. This is why I went with the path array since it rotates the object automatically.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 23 Oct 2024 11:30:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13102766#M7518</guid>
      <dc:creator>jeff_Moskovciak</dc:creator>
      <dc:date>2024-10-23T11:30:30Z</dc:date>
    </item>
    <item>
      <title>Re: Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13104569#M7519</link>
      <description>&lt;P&gt;I did not on purpose add the comment about using&amp;nbsp;vlax-curve-getparamatpoint which amongst other things can return a angle of the pline at that point then would insert block plus 90 etc.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So again post a dwg before &amp;amp; after. Need to check the spacings you want, indicate those on the "after".&lt;/P&gt;&lt;P&gt;For your info.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;(defun alg-ang (obj pnt)
  (angle '(0. 0. 0.)
     (vlax-curve-getfirstderiv
       obj
       (vlax-curve-getparamatpoint
         obj
         pnt
       )
     )
  )
)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The angle of the plines does not matter.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Oct 2024 02:37:12 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13104569#M7519</guid>
      <dc:creator>Sea-Haven</dc:creator>
      <dc:date>2024-10-24T02:37:12Z</dc:date>
    </item>
    <item>
      <title>Re: Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13105526#M7520</link>
      <description>&lt;P&gt;So the spacing I would need is 6' from either end of the pline and then every 12' from the copied object. I can't post DWG files per my company's policy.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Oct 2024 11:35:26 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13105526#M7520</guid>
      <dc:creator>jeff_Moskovciak</dc:creator>
      <dc:date>2024-10-24T11:35:26Z</dc:date>
    </item>
    <item>
      <title>Re: Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13105759#M7521</link>
      <description>&lt;P&gt;My &lt;STRONG&gt;DIV+&lt;/STRONG&gt; command defined in &lt;STRONG&gt;DivideMeasurePlus.lsp&lt;/STRONG&gt;, &lt;A href="https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/share-your-favorite-usefull-lisp-files/m-p/8071104/highlight/true#M370151" target="_blank" rel="noopener"&gt;&amp;gt;here&amp;lt;&lt;/A&gt;, can give you the end ones &lt;STRONG&gt;&lt;EM&gt;inset from the ends&lt;/EM&gt;&lt;/STRONG&gt; of the path by your desired distance [6' in your description].&amp;nbsp; When it asks how many segments, you can ask for&amp;nbsp;&lt;STRONG&gt;1&lt;/STRONG&gt; [regular DIVIDE won't accept that].&lt;/P&gt;
&lt;P&gt;For the rest, you [or perhaps a routine] could make a temporary copy of the path, shorten it by your 6' inset distance from the ends [e.g. with LENGTHEN's Delta option at -6'], and use MEASURE [or &lt;STRONG&gt;MEA+&lt;/STRONG&gt; also defined in the same file] to place Blocks at 12' spacings from there.&lt;/P&gt;
&lt;P&gt;All have the option to align Block rotations with the path, but &lt;STRONG&gt;DIV+&lt;/STRONG&gt; [and also &lt;STRONG&gt;MEA+&lt;/STRONG&gt; in place of regular MEASURE, if you need this] have the option to use a &lt;STRONG&gt;&lt;EM&gt;Relative rotation&lt;/EM&gt;&lt;/STRONG&gt;.&amp;nbsp; So if MEASURE with the Align option aims them in some direction you don't want, &lt;STRONG&gt;DIV+&lt;/STRONG&gt; and &lt;STRONG&gt;MEA+&lt;/STRONG&gt; can let you turn them the right way without needing to redefine the Block.&lt;/P&gt;</description>
      <pubDate>Tue, 17 Dec 2024 15:47:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13105759#M7521</guid>
      <dc:creator>Kent1Cooper</dc:creator>
      <dc:date>2024-12-17T15:47:42Z</dc:date>
    </item>
    <item>
      <title>Re: Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13105773#M7522</link>
      <description>&lt;P&gt;This is great, thanks so much!&lt;/P&gt;</description>
      <pubDate>Thu, 24 Oct 2024 13:14:32 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13105773#M7522</guid>
      <dc:creator>jeff_Moskovciak</dc:creator>
      <dc:date>2024-10-24T13:14:32Z</dc:date>
    </item>
    <item>
      <title>Re: Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13106289#M7523</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/15866593"&gt;@jeff_Moskovciak&lt;/a&gt;&amp;nbsp; hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Check this DVOL command, prompt follow&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Command: DVOL&lt;BR /&gt;Pick your outlet&lt;BR /&gt;Select objects: 1 found&lt;/P&gt;&lt;P&gt;Select objects:&lt;BR /&gt;Pick polyline:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You start by selecting you outlet (it could be a block or free some objects) position at it start point, than pick the polyline close to starting working point (as required by DIVIDE\MEASURE commands)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if the polyline length does not exactly divide by 12', what do you expect happen?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;enjoy&lt;/P&gt;&lt;P&gt;Moshe&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="lisp"&gt;;;; dvol.lsp
;;; divide outlet

(vl-load-com)

(defun c:dvol (/ geometric ; local function
	         ss0 ss1 pick ename startCurve endCurve picked_pt points^ vert)

 (defun geometric (ent / curveLen lst cumulativeDist pt pr t0 t1 lst dir)
  (setq startCurve (vlax-curve-getStartPoint  ent))
  (setq endCurve   (vlax-curve-getEndPoint    ent))
  (setq curveLen   (vlax-curve-getDistAtPoint ent endCurve))
   
  (setq cumulativeDist 6.0) ; start cumulative distance

  (setq t1 (vlax-curve-getPointAtParam ent 1.0))
  (setq dir (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv ent 0)))
  (setq lst (cons (cons dir (list startCurve)) lst))
   
  (while (&amp;lt;= cumulativeDist (- curveLen 6.0))
   (setq pt (vlax-curve-getPointAtDist ent cumulativeDist))
   (setq pr (fix (vlax-curve-getParamAtPoint ent pt)))
   (setq dir (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv ent pr)))
   (setq lst (cons (cons dir (list pt)) lst))
   (setq cumulativeDist (+ cumulativeDist 12.0))
  ); while

  (setq pr (fix (vlax-curve-getParamAtPoint ent endCurve)))
  (setq t0 (vlax-curve-getPointAtParam ent (1- pr)))
  (setq dir (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv ent pr)))
   
  (cons (cons dir (list endCurve)) lst) ; return
 ); geometric
 

 ; here start c:dvol
 (setvar "cmdecho" 0)
 (command "._undo" "_begin")
  
 (if (and
       (not (prompt "\nPick your outlet"))
       (setq ss0 (ssget)) ; select any objects
       (setq pick (entsel "\nPick polyline: "))
       (setq ename (car pick))
       (wcmatch (cdr (assoc '0 (entget ename))) "POLYLINE,LWPOLYLINE")
     )
  (progn
   (setq startCurve (vlax-curve-getStartPoint ename))
   (setq endCurve   (vlax-curve-getEndPoint   ename))
   (setq picked_pt  (vlax-curve-getClosestPointTo ename (cadr pick)))
   ; set working start point
   (if (&amp;gt; (distance startCurve picked_pt) (distance endCurve picked_pt))
    (command "._pedit" ename "_Reverse" "")
   ); if

   (setq points^ (reverse (geometric ename)))

   (foreach vert (cdr points^)
    (setq ename (entlast))
    (command "._copy" "_si" ss0 (cadar points^) (cadr vert))
    (setq ss1 (ssadd))
    (while (setq ename (entnext ename)) (ssadd ename ss1))
    (command "._rotate" "_si" ss1 (cadr vert) (angtos (- (car vert) (caar points^)) 0 4))
    (setq ss1 nil) ; clear ss1
   ); foreach
  ); progn
 ); if

 (command "._undo" "_end")
 (setvar "cmdecho" 1)
  
 (princ)
); c:dvol&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Oct 2024 16:54:35 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13106289#M7523</guid>
      <dc:creator>Moshe-A</dc:creator>
      <dc:date>2024-10-24T16:54:35Z</dc:date>
    </item>
    <item>
      <title>Re: Path Array Lisp Routine</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13106298#M7524</link>
      <description>&lt;P&gt;Thank you for this as well!&lt;/P&gt;</description>
      <pubDate>Thu, 24 Oct 2024 16:58:51 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/path-array-lisp-routine/m-p/13106298#M7524</guid>
      <dc:creator>jeff_Moskovciak</dc:creator>
      <dc:date>2024-10-24T16:58:51Z</dc:date>
    </item>
  </channel>
</rss>

