<?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: Lisp Routine for Connecting civil Points by description in Civil 3D Customization Forum</title>
    <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11197992#M5362</link>
    <description>&lt;P&gt;Are you using the full code I posted? I just ran all 5 of the JoinBy* commands and had no issues:&lt;/P&gt;
&lt;P&gt;Command: JOINBYDESCRIPTION&lt;/P&gt;
&lt;P&gt;Pick Cogo Point for description to filter by:&lt;BR /&gt;Command:&lt;BR /&gt;Command: JOINBYDESCRIPTION3D&lt;/P&gt;
&lt;P&gt;Pick Cogo Point for description to filter by:&lt;BR /&gt;Command:&lt;BR /&gt;Command: JOINBYDESCSEL3D&lt;/P&gt;
&lt;P&gt;Select Cogo Points join:&lt;BR /&gt;Select objects: Specify opposite corner: 20 found&lt;/P&gt;
&lt;P&gt;Select objects:&lt;BR /&gt;Pick Cogo Point for description to filter by:&lt;/P&gt;
&lt;P&gt;Command:&lt;BR /&gt;Command: JOINBYSELECTION&lt;/P&gt;
&lt;P&gt;Select Cogo Points join:&lt;BR /&gt;Select objects: Specify opposite corner: 25 found&lt;/P&gt;
&lt;P&gt;Select objects:&lt;/P&gt;
&lt;P&gt;Command:&lt;BR /&gt;Command: JOINBYSELECTION3D&lt;/P&gt;
&lt;P&gt;Select Cogo Points join:&lt;BR /&gt;Select objects: Specify opposite corner: 9 found&lt;/P&gt;
&lt;P&gt;Select objects:&lt;/P&gt;
&lt;P&gt;Command:&lt;/P&gt;</description>
    <pubDate>Fri, 27 May 2022 15:46:07 GMT</pubDate>
    <dc:creator>Jeff_M</dc:creator>
    <dc:date>2022-05-27T15:46:07Z</dc:date>
    <item>
      <title>Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11192737#M5355</link>
      <description>&lt;P&gt;Hello Everyone, New to forums was wondering if anyone could look at my code to see what might be wrong with this.&lt;/P&gt;&lt;P&gt;Two part program one to draw 2d poly between points that have the same raw description and the other one to draw a 3d poly between points with same raw description. Perhaps something already exists that is better than my code.&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;LI-CODE lang="general"&gt;(defun c:J2D (/ DESCENT FLT LOCS2D LOCS3D OBJ OBJS)
  (setq descEnt (car (entsel "\nPick Cogo Point for description to draw poly:")))
  (setq obj (ENAME-&amp;gt;VLA descEnt))
  (setq flt (vlax-get obj 'RAWDESCRIPTION))
  (setq ss (ENAME-&amp;gt;VLA (ssget "_A" '((0 . "AECC_COGO_POINT")))))
  (setq objs (JP:FilterCogoByRawDescription ss flt))
  (setq objs (vl-sort objs 'JP:CogoNumberComparer))
  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
  (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (JP:LWPoly locs2d)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun JP:LWPoly	 (lst)
  (entmakex (append (list (cons 0 "LWPOLYLINE")
			  (cons 100 "AcDbEntity")
			  (cons 100 "AcDbPolyline")
			  (cons 90 (length lst)))
		    (mapcar (function (lambda (p) (cons 10 p))) lst)))
 )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:J3D  (/ DESCENT FLT LOCS2D LOCS3D OBJ OBJS)
  (setq descEnt (car (entsel "\nPick Cogo Point for description to filter by:")))
  (setq obj (ENAME-&amp;gt;VLA descEnt))
  (setq flt (vlax-get obj 'RAWDESCRIPTION))
  (setq ss (ENAME-&amp;gt;VLA (ssget "_A" '((0 . "AECC_COGO_POINT")))))
  (setq objs (JP:FilterCogoByRawDescription ss flt))
  (setq objs (vl-sort objs 'JP:CogoNumberComparer))
  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (JP:make3dpoly locs3d)
 )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun JP:make3dpoly  (lst)
  (entmake (list (cons 0 "POLYLINE")
		 (cons 66 1)
		 (cons 100 "AcDb3dPolyline")
		 '(70 . 8)))
  (foreach pt  lst
    (entmake (list (cons 0 "VERTEX")
		   '(100 . "AcDb3dPolylineVertex")
		   '(70 . 32)
		   (cons 10 pt))))
  (entmake '((0 . "SEQEND"))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/LI-CODE&gt;</description>
      <pubDate>Wed, 25 May 2022 15:33:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11192737#M5355</guid>
      <dc:creator>RickfromtheNorth</dc:creator>
      <dc:date>2022-05-25T15:33:42Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11193967#M5356</link>
      <description>You didn't include 2 helper functions so cannot test what you posted.</description>
      <pubDate>Thu, 26 May 2022 04:06:25 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11193967#M5356</guid>
      <dc:creator>Jeff_M</dc:creator>
      <dc:date>2022-05-26T04:06:25Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11195105#M5357</link>
      <description>&lt;P&gt;Sorry Here is all the code.&amp;nbsp; Re-worked a bit I'm getting an error&amp;nbsp;&lt;/P&gt;&lt;P&gt;** Error: no function definition: ENAME-&amp;gt;VLA ** I'm using 2021 C3D&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;(defun c:JoinByDescription  (/ *error* DESCENT FLT LOCS2D LOCS3D OBJ OBJS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error*  (msg)
    (if	(and msg (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")))
      (princ (strcat "\n** Error: " msg " **")))
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ))
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (setq descEnt (car (entsel "\nPick Cogo Point for description to filter by:")))
  (setq obj (ENAME-&amp;gt;VLA descEnt))
  (setq flt (vlax-get obj 'RAWDESCRIPTION))
  (setq ss (ENAME-&amp;gt;VLA (ssget "_A" '((0 . "AECC_COGO_POINT")))))
  (setq objs (JP:FilterCogoByRawDescription ss flt))
  (setq objs (vl-sort objs 'JP:CogoNumberComparer))
  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
  (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (JP:EntmakeLWPoly locs2d)
  (*error* nil))

(defun c:JoinByDescription3D  (/ *error* DESCENT FLT LOCS2D LOCS3D OBJ OBJS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error*  (msg)
    (if	(and msg (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")))
      (princ (strcat "\n** Error: " msg " **")))
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ))
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (setq descEnt (car (entsel "\nPick Cogo Point for description to filter by:")))
  (setq obj (ENAME-&amp;gt;VLA descEnt))
  (setq flt (vlax-get obj 'RAWDESCRIPTION))
  (setq ss (ENAME-&amp;gt;VLA (ssget "_A" '((0 . "AECC_COGO_POINT")))))
  (setq objs (JP:FilterCogoByRawDescription ss flt))
  (setq objs (vl-sort objs 'JP:CogoNumberComparer))
  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
;;;  (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (JP:Entmake3dpoly locs3d)
  (*error* nil))

(defun c:JoinBySelection  (/ *error* LOCS2D LOCS3D OBJS SS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error*  (msg)
    (if	(and msg (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")))
      (princ (strcat "\n** Error: " msg " **")))
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ))
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (princ "\nSelect Cogo Points join:")
  (setq ss (ssget '((0 . "AECC_COGO_POINT"))))
  (if ss
    (progn (setq objs (ENAME-&amp;gt;VLA ss))
	   (setq objs (vl-sort objs 'JP:CogoNumberComparer))
	   (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
	   (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
	   (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
	   (JP:EntmakeLWPoly locs2d)))
  (*error* nil))
;;
(defun c:JoinBySelection3D  (/ *error* LOCS2D LOCS3D OBJS SS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error*  (msg)
    (if	(and msg (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")))
      (princ (strcat "\n** Error: " msg " **")))
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ))
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (princ "\nSelect Cogo Points join:")
  (setq ss (ssget '((0 . "AECC_COGO_POINT"))))
  (if ss
    (progn (setq objs (ENAME-&amp;gt;VLA ss))
	   (setq objs (vl-sort objs 'JP:CogoNumberComparer))
	   (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
;;;	   (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
	   (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
	   (JP:Entmake3dpoly locs3d)))
  (*error* nil))
;;;
(defun c:JoinByDescSel3D  (/ *error* DESCENT FLT LOCS2D LOCS3D OBJ OBJS SS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error*  (msg)
    (if	(and msg (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")))
      (princ (strcat "\n** Error: " msg " **")))
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ))
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (princ "\nSelect Cogo Points join:")
  (setq ss (ENAME-&amp;gt;VLA (ssget '((0 . "AECC_COGO_POINT")))))
  (setq descEnt (car (entsel "\nPick Cogo Point for description to filter by:")))
  (setq obj (ENAME-&amp;gt;VLA descEnt))
  (setq flt (vlax-get obj 'RAWDESCRIPTION))
;;;  (setq ss (ENAME-&amp;gt;VLA (ssget "_A" '((0 . "AECC_COGO_POINT")))))
  (setq objs (JP:FilterCogoByRawDescription ss flt))
  (setq objs (vl-sort objs 'JP:CogoNumberComparer))
  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
;;;  (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (JP:Entmake3dpoly locs3d)
  (*error* nil))




;;;
(defun JP:EntmakeLWPoly	 (lst)
  (entmakex (append (list (cons 0 "LWPOLYLINE")
			  (cons 100 "AcDbEntity")
			  (cons 100 "AcDbPolyline")
			  (cons 90 (length lst)))
		    (mapcar (function (lambda (p) (cons 10 p))) lst))))
;;
(defun JP:Entmake3dpoly  (lst)
  (entmake (list (cons 0 "POLYLINE")
		 (cons 66 1)
		 (cons 100 "AcDb3dPolyline")
		 '(70 . 8)))
  (foreach pt  lst
    (entmake (list (cons 0 "VERTEX")
		   '(100 . "AcDb3dPolylineVertex")
		   '(70 . 32)
		   (cons 10 pt))))
  (entmake '((0 . "SEQEND"))))
;;
(defun JP:CogoNumberComparer  (o1 o2 /)
  (&amp;lt; (vlax-get o1 'NUMBER) (vlax-get o2 'NUMBER)))
;;
(defun JP:FilterCogoByRawDescription  (objs rawDesc / C FILTERED)
  (foreach obj	objs
    (if	(and (not
	       (vl-catch-all-error-p
		 (setq c (vl-catch-all-apply 'vlax-get-property (list obj 'RawDescription)))))
	     (wcmatch c rawDesc))
      (setq filtered (append filtered (list obj)))))
  filtered)
;;
;;;(defun FilterCogoByRawDescription  (ss rawDesc / ADD E I O SS)
;;;  (setq add (ssadd))
;;;  (repeat (setq i (sslength ss))
;;;    (setq e (ssname ss (setq i (1- i)))
;;;	  o (vlax-ename-&amp;gt;vla-object e))
;;;    (if
;;;      (vl-some
;;;	'(lambda (prop / c)
;;;	   (and	(not (vl-catch-all-error-p
;;;		       (setq c (vl-catch-all-apply 'vlax-get-property (list o prop)))))
;;;		(wcmatch (strcase c) rawDesc)))
;;;	'(RawDescription))
;;;       (ssadd e add)))
;;;  (ename-&amp;gt;vla add))

;;;
;;;
;;;
;;;(setq objs (ENAME-&amp;gt;VLA (ssget)))
;;;
;;;
;;;(FILTERCOGOBYRAWDESCRIPTION objs "BUSH-LINE-6")
;;;
;;;
;;;
;;;(defun rtp  (/ LOCS2D LOCS3D OBJS SS)
;;;  (setq ss (ssget '((0 . "AECC_COGO_POINT"))))
;;;  (setq objs (ENAME-&amp;gt;VLA ss))
;;;  (setq objs (vl-sort objs 'CogoNumberComparer))
;;;  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
;;;;;;  (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x))) locs3d))
;;;  (foreach loc	locs3d
;;;    (setq loctxt (mapcar '(lambda (x) (rtos x 2 3)) loc))
;;;;;;    (setq txt (strcat (car loctxt) "," (cadr loctxt) "," (caddr loctxt) " "))
;;;    (setq txt (strcat (car loctxt) "," (cadr loctxt) " "))
;;;    (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) txt)))
;;;
;;;(vlax-add-cmd "rtp" 'rtp "rtp" ACRX_CMD_TRANSPARENT)
;;;
;;;
;;;(vlax-add-cmd "rtp" 'rtp "rtp" ACRX_CMD_TRANSPARENT)
;;;
;;;
;;;(command pt)
;;;
;;;(setq pts (list (getpoint) (getpoint)))
;;;
;;;(defun IssuePointAsCommand (pt)
;;;    (setq loctxt (mapcar '(lambda (x) (rtos x 2 16)) loc))
;;;    (setq txt (strcat (car loctxt) "," (cadr loctxt) " "))
;;;    (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) txt)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 26 May 2022 15:00:26 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11195105#M5357</guid>
      <dc:creator>RickfromtheNorth</dc:creator>
      <dc:date>2022-05-26T15:00:26Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11195766#M5358</link>
      <description>&lt;P&gt;I added the ENAME-&amp;gt;VLA function and made a few tweaks to the first (defun c:) which now works. I did not test the other (defun c:)'s.&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun c:JoinByDescription
       (/ *error* DESCENT FLT LOCS2D LOCS3D OBJ OBJS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error* (msg)
    (if	(and msg
	     (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
	)
      (princ (strcat "\n** Error: " msg " **"))
    )
    (vla-endundomark
      (vla-get-activedocument (vlax-get-acad-object))
    )
    (princ)
  )
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (setq
    descEnt (entsel "\nPick Cogo Point for description to filter by:")
  )
  (setq obj (ENAME-&amp;gt;VLA (car descEnt)))
  (setq flt (vlax-get obj 'RAWDESCRIPTION))
  (setq ss (ENAME-&amp;gt;VLA (ssget "_A" '((0 . "AECC_COGO_POINT")))))
  (setq objs (JP:FilterCogoByRawDescription ss flt))
  (setq objs (vl-sort objs 'JP:CogoNumberComparer))
  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
  (setq
    locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d)
  )
  (vla-startundomark
    (vla-get-activedocument (vlax-get-acad-object))
  )
  (JP:EntmakeLWPoly locs2d)
  (*error* nil)
)

(defun c:JoinByDescription3D
       (/ *error* DESCENT FLT LOCS2D LOCS3D OBJ OBJS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error* (msg)
    (if	(and msg
	     (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
	)
      (princ (strcat "\n** Error: " msg " **"))
    )
    (vla-endundomark
      (vla-get-activedocument (vlax-get-acad-object))
    )
    (princ)
  )
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (setq	descEnt
	 (car
	   (entsel "\nPick Cogo Point for description to filter by:")
	 )
  )
  (setq obj (ENAME-&amp;gt;VLA descEnt))
  (setq flt (vlax-get obj 'RAWDESCRIPTION))
  (setq ss (ENAME-&amp;gt;VLA (ssget "_A" '((0 . "AECC_COGO_POINT")))))
  (setq objs (JP:FilterCogoByRawDescription ss flt))
  (setq objs (vl-sort objs 'JP:CogoNumberComparer))
  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
;;;  (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
  (vla-startundomark
    (vla-get-activedocument (vlax-get-acad-object))
  )
  (JP:Entmake3dpoly locs3d)
  (*error* nil)
)

(defun c:JoinBySelection (/ *error* LOCS2D LOCS3D OBJS SS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error* (msg)
    (if	(and msg
	     (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
	)
      (princ (strcat "\n** Error: " msg " **"))
    )
    (vla-endundomark
      (vla-get-activedocument (vlax-get-acad-object))
    )
    (princ)
  )
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (princ "\nSelect Cogo Points join:")
  (setq ss (ssget '((0 . "AECC_COGO_POINT"))))
  (if ss
    (progn (setq objs (ENAME-&amp;gt;VLA ss))
	   (setq objs (vl-sort objs 'JP:CogoNumberComparer))
	   (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
	   (setq locs2d
		  (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d)
	   )
	   (vla-startundomark
	     (vla-get-activedocument (vlax-get-acad-object))
	   )
	   (JP:EntmakeLWPoly locs2d)
    )
  )
  (*error* nil)
)
;;
(defun c:JoinBySelection3D (/ *error* LOCS2D LOCS3D OBJS SS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error* (msg)
    (if	(and msg
	     (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
	)
      (princ (strcat "\n** Error: " msg " **"))
    )
    (vla-endundomark
      (vla-get-activedocument (vlax-get-acad-object))
    )
    (princ)
  )
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (princ "\nSelect Cogo Points join:")
  (setq ss (ssget '((0 . "AECC_COGO_POINT"))))
  (if ss
    (progn (setq objs (ENAME-&amp;gt;VLA ss))
	   (setq objs (vl-sort objs 'JP:CogoNumberComparer))
	   (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
;;;	   (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
	   (vla-startundomark
	     (vla-get-activedocument (vlax-get-acad-object))
	   )
	   (JP:Entmake3dpoly locs3d)
    )
  )
  (*error* nil)
)
;;;
(defun c:JoinByDescSel3D
       (/ *error* DESCENT FLT LOCS2D LOCS3D OBJ OBJS SS)
  ;;---------------------;;
  ;; Local Error Handler ;;
  ;;---------------------;;
  (defun *error* (msg)
    (if	(and msg
	     (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
	)
      (princ (strcat "\n** Error: " msg " **"))
    )
    (vla-endundomark
      (vla-get-activedocument (vlax-get-acad-object))
    )
    (princ)
  )
  ;;-----------;;
  ;; Main Code ;;
  ;;-----------;;
  (princ "\nSelect Cogo Points join:")
  (setq ss (ENAME-&amp;gt;VLA (ssget '((0 . "AECC_COGO_POINT")))))
  (setq
    descEnt (entsel "\nPick Cogo Point for description to filter by:")
  )
  (setq obj (ENAME-&amp;gt;VLA (car descEnt)))
  (setq flt (vlax-get obj 'RAWDESCRIPTION))
;;;  (setq ss (ENAME-&amp;gt;VLA (ssget "_A" '((0 . "AECC_COGO_POINT")))))
  (setq objs (JP:FilterCogoByRawDescription ss flt))
  (setq objs (vl-sort objs 'JP:CogoNumberComparer))
  (setq locs3d (mapcar '(lambda (x) (vlax-get x 'LOCATION)) objs))
;;;  (setq locs2d (mapcar '(lambda (x) (list (car x) (cadr x) 0.0)) locs3d))
  (vla-startundomark
    (vla-get-activedocument (vlax-get-acad-object))
  )
  (JP:Entmake3dpoly locs3d)
  (*error* nil)
)




;;;
(defun JP:EntmakeLWPoly	(lst)
  (entmakex
    (append (list (cons 0 "LWPOLYLINE")
		  (cons 100 "AcDbEntity")
		  (cons 100 "AcDbPolyline")
		  (cons 90 (length lst))
	    )
	    (mapcar (function (lambda (p) (cons 10 p))) lst)
    )
  )
)
;;
(defun JP:Entmake3dpoly	(lst)
  (entmake (list (cons 0 "POLYLINE")
		 (cons 66 1)
		 (cons 100 "AcDb3dPolyline")
		 '(70 . 8)
	   )
  )
  (foreach pt lst
    (entmake (list (cons 0 "VERTEX")
		   '(100 . "AcDb3dPolylineVertex")
		   '(70 . 32)
		   (cons 10 pt)
	     )
    )
  )
  (entmake '((0 . "SEQEND")))
)
;;
(defun JP:CogoNumberComparer (o1 o2 /)
  (&amp;lt; (vlax-get o1 'NUMBER) (vlax-get o2 'NUMBER))
)
;;
(defun JP:FilterCogoByRawDescription (objs rawDesc / C FILTERED)
  (foreach obj objs
    (if	(and (not
	       (vl-catch-all-error-p
		 (setq c (vl-catch-all-apply
			   'vlax-get-property
			   (list obj 'RawDescription)
			 )
		 )
	       )
	     )
	     (wcmatch c rawDesc)
	)
      (setq filtered (append filtered (list obj)))
    )
  )
  filtered
)

(defun ENAME-&amp;gt;VLA (ss)
  (cond	((= (type ss) 'PICKSET)
	 (setq idx -1)
	 (while	(setq ent (ssname ss (setq idx (1+ idx))))
	   (setq objs (cons (vlax-ename-&amp;gt;vla-object ent) objs))
	 )
	)
	((= (type ss) 'ENAME)
	 (setq objs (vlax-ename-&amp;gt;vla-object ss))
	)
	(t (setq objs nil))
  )
  objs
)

&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 26 May 2022 19:17:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11195766#M5358</guid>
      <dc:creator>Jeff_M</dc:creator>
      <dc:date>2022-05-26T19:17:00Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11196209#M5359</link>
      <description>&lt;P&gt;I get this error now.&lt;/P&gt;&lt;P&gt;** Error: bad argument type: consp #&amp;lt;VLA-OBJECT IAeccPoint 000001fc50311c80&amp;gt; **&lt;/P&gt;</description>
      <pubDate>Thu, 26 May 2022 22:49:44 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11196209#M5359</guid>
      <dc:creator>RickfromtheNorth</dc:creator>
      <dc:date>2022-05-26T22:49:44Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11196252#M5360</link>
      <description>&lt;P&gt;When do you get that? The first time run? Second time? Which command?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I did notice I didn't localize the variables:&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun ENAME-&amp;gt;VLA (ss / objs idx ent)
  (cond	((= (type ss) 'PICKSET)
	 (setq idx -1)
	 (while	(setq ent (ssname ss (setq idx (1+ idx))))
	   (setq objs (cons (vlax-ename-&amp;gt;vla-object ent) objs))
	 )
	)
	((= (type ss) 'ENAME)
	 (setq objs (vlax-ename-&amp;gt;vla-object ss))
	)
	(t (setq objs nil))
  )
  objs
)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 26 May 2022 23:30:37 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11196252#M5360</guid>
      <dc:creator>Jeff_M</dc:creator>
      <dc:date>2022-05-26T23:30:37Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11197790#M5361</link>
      <description>&lt;P&gt;I ran Joinpointsbydescription and got it right away after selecting the cogo point. Even with this new Defun I get the same error. Joinbyselection commands do work. It's just the joinbydescription and joinbydescription3d that do not work.&lt;/P&gt;</description>
      <pubDate>Fri, 27 May 2022 14:24:55 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11197790#M5361</guid>
      <dc:creator>RickfromtheNorth</dc:creator>
      <dc:date>2022-05-27T14:24:55Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11197992#M5362</link>
      <description>&lt;P&gt;Are you using the full code I posted? I just ran all 5 of the JoinBy* commands and had no issues:&lt;/P&gt;
&lt;P&gt;Command: JOINBYDESCRIPTION&lt;/P&gt;
&lt;P&gt;Pick Cogo Point for description to filter by:&lt;BR /&gt;Command:&lt;BR /&gt;Command: JOINBYDESCRIPTION3D&lt;/P&gt;
&lt;P&gt;Pick Cogo Point for description to filter by:&lt;BR /&gt;Command:&lt;BR /&gt;Command: JOINBYDESCSEL3D&lt;/P&gt;
&lt;P&gt;Select Cogo Points join:&lt;BR /&gt;Select objects: Specify opposite corner: 20 found&lt;/P&gt;
&lt;P&gt;Select objects:&lt;BR /&gt;Pick Cogo Point for description to filter by:&lt;/P&gt;
&lt;P&gt;Command:&lt;BR /&gt;Command: JOINBYSELECTION&lt;/P&gt;
&lt;P&gt;Select Cogo Points join:&lt;BR /&gt;Select objects: Specify opposite corner: 25 found&lt;/P&gt;
&lt;P&gt;Select objects:&lt;/P&gt;
&lt;P&gt;Command:&lt;BR /&gt;Command: JOINBYSELECTION3D&lt;/P&gt;
&lt;P&gt;Select Cogo Points join:&lt;BR /&gt;Select objects: Specify opposite corner: 9 found&lt;/P&gt;
&lt;P&gt;Select objects:&lt;/P&gt;
&lt;P&gt;Command:&lt;/P&gt;</description>
      <pubDate>Fri, 27 May 2022 15:46:07 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11197992#M5362</guid>
      <dc:creator>Jeff_M</dc:creator>
      <dc:date>2022-05-27T15:46:07Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp Routine for Connecting civil Points by description</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11198054#M5363</link>
      <description>&lt;P&gt;That's the ticket, all works now. Thanks a bunch Jeff your the best.&lt;/P&gt;</description>
      <pubDate>Fri, 27 May 2022 16:04:44 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/lisp-routine-for-connecting-civil-points-by-description/m-p/11198054#M5363</guid>
      <dc:creator>RickfromtheNorth</dc:creator>
      <dc:date>2022-05-27T16:04:44Z</dc:date>
    </item>
  </channel>
</rss>

