Cogo points are
; ObjectName (RO) = "AeccDbCogoPoint"
(0 . "AECC_COGO_POINT")
(setq ss (ssget (list (cons 0 "AECC_COGO_POINT"))))
(sslength ss)
(setq plist (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (car (entsel)))))) ;;Select Polyline
(setq ss (ssget "_CP" plist '((0 . "AECC_COGO_POINT"))))
Point groups are based on a known fact and a polygon is not one of them, but you could then get the cogopoint numbers display it copy it and paste into the "Include" if it will let you. Yep it did. 1,3,5,6,7,23,34,35, etc its a string of the selection ptnumbers separated by a , If you want shorthand version 1-3,45-56 etc way harder.
you can just make a pline on the fly does not have to exist it would be a choice.
(defun c:ptspl ( / ss obj num ans)
(setq plist (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (car (entsel)))))) ;;Select Polyline
(setq ss (ssget "_CP" plist '((0 . "AECC_COGO_POINT"))))
(setq ans "")
(repeat (-(setq x (sslength ss)) 1)
(setq obj (setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1))))))
(setq num (rtos (vlax-get Obj 'Number) 2 0))
(setq ans (strcat ans num ","))
)
(setq obj (setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1))))))
(setq num (rtos (vlax-get Obj 'Number) 2 0))
(setq ans (strcat ans num ))
)
(c:ptspl)
If nothing appears type !ans
Also have, rotate civ3d point, change description, label Z, import new description key set.